From 58ff8e973d4a70a083e7ee9abf0b3a6e664d5e81 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 5 Feb 2024 13:11:51 -0500 Subject: [PATCH 01/54] deps: use decaf377 0.8.0 --- poseidon-consistency/Cargo.toml | 2 +- poseidon377/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/poseidon-consistency/Cargo.toml b/poseidon-consistency/Cargo.toml index 8b4b70f..a485218 100644 --- a/poseidon-consistency/Cargo.toml +++ b/poseidon-consistency/Cargo.toml @@ -11,7 +11,7 @@ repository = "https://github.com/penumbra-zone/poseidon377" poseidon-parameters = { path = "../poseidon-parameters" } poseidon-paramgen = { path = "../poseidon-paramgen", default-features = false } poseidon-permutation = { path="../poseidon-permutation", default-features = false } -decaf377 = { version = "0.4", default-features = false } +decaf377 = { version = "0.8", default-features = false } [dev-dependencies] criterion = { version = "0.4", features=["html_reports"] } diff --git a/poseidon377/Cargo.toml b/poseidon377/Cargo.toml index 559fdb9..a2c7da0 100644 --- a/poseidon377/Cargo.toml +++ b/poseidon377/Cargo.toml @@ -13,7 +13,7 @@ ark-groth16 = { version = "0.4", default-features = false, optional=true } ark-r1cs-std = {version = "0.4", default-features = false, optional=true } ark-relations = { version="0.4", default-features = false, optional=true } ark-snark = { version = "0.4", default-features = false, optional=true } -decaf377 = { version="0.4", default-features = false, features = ["r1cs"] } +decaf377 = { version="0.8", default-features = false, features = ["r1cs"] } num-bigint = { version = "0.4.3", default-features = false } once_cell = { version = "1.8", default-features = false } poseidon-parameters = { version="0.4", path = "../poseidon-parameters", default-features = false } From b1959de1bd19989a68ed9bdf8ea2035b232e2a6e Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 5 Feb 2024 13:16:15 -0500 Subject: [PATCH 02/54] deps: add `arkworks` feature to `poseidon377` --- poseidon377/Cargo.toml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/poseidon377/Cargo.toml b/poseidon377/Cargo.toml index a2c7da0..a50af7d 100644 --- a/poseidon377/Cargo.toml +++ b/poseidon377/Cargo.toml @@ -35,17 +35,19 @@ rand_chacha = "0.3" ark-test-curves = { version = "0.4", features = ["bls12_381_curve", "mnt4_753_curve"]} [features] -default = ["std"] -std = [ +default = ["arkworks"] +arkworks = ["std", + "decaf377/arkworks", "ark-ff/std", "ark-groth16/std", "ark-r1cs-std", "ark-relations/std", - "num-bigint/std", - "once_cell/std", "ark-std/std", "ark-ec/std", - "ark-serialize/std", + "ark-serialize/std"] +std = [ + "num-bigint/std", + "once_cell/std", ] r1cs = [ "ark-groth16", From f7d1760f36ffdfc0476c6a97fece78862b7538da Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 5 Feb 2024 13:33:03 -0500 Subject: [PATCH 03/54] ci: add build without global allocator --- .github/workflows/rust.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 7ffae83..e99ce60 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -76,6 +76,23 @@ jobs: popd done + build_no_alloc: + name: build without alloc + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + - run: rustup target add thumbv7em-none-eabihf + - uses: Swatinem/rust-cache@v1 + - uses: actions-rs/cargo@v1 + with: + command: build + args: --package poseidon377 --target thumbv7em-none-eabihf --no-default-features + # clippy: # name: Clippy # runs-on: ubuntu-latest From 448ce3734845bc92561b108e45276cd600bdd437 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 5 Feb 2024 13:34:13 -0500 Subject: [PATCH 04/54] deps: add `alloc` feature to `poseidon377` --- poseidon377/Cargo.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/poseidon377/Cargo.toml b/poseidon377/Cargo.toml index a50af7d..74b4537 100644 --- a/poseidon377/Cargo.toml +++ b/poseidon377/Cargo.toml @@ -36,6 +36,7 @@ ark-test-curves = { version = "0.4", features = ["bls12_381_curve", "mnt4_753_cu [features] default = ["arkworks"] +alloc = ["once_cell/alloc",] arkworks = ["std", "decaf377/arkworks", "ark-ff/std", @@ -46,6 +47,7 @@ arkworks = ["std", "ark-ec/std", "ark-serialize/std"] std = [ + "alloc", "num-bigint/std", "once_cell/std", ] From 4154b962d27939f442f317586fc9e27a83d844ef Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 5 Feb 2024 17:25:59 -0500 Subject: [PATCH 05/54] test: fix r1cs tests in poseidon377 --- poseidon377/Cargo.toml | 1 + poseidon377/tests/r1cs.rs | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/poseidon377/Cargo.toml b/poseidon377/Cargo.toml index 74b4537..cbe0c4c 100644 --- a/poseidon377/Cargo.toml +++ b/poseidon377/Cargo.toml @@ -52,6 +52,7 @@ std = [ "once_cell/std", ] r1cs = [ + "arkworks", "ark-groth16", "ark-relations", "ark-snark", diff --git a/poseidon377/tests/r1cs.rs b/poseidon377/tests/r1cs.rs index f68f2f1..aaec18c 100644 --- a/poseidon377/tests/r1cs.rs +++ b/poseidon377/tests/r1cs.rs @@ -1,4 +1,4 @@ -use ark_ff::{One, PrimeField, Zero}; +use ark_ff::PrimeField; use ark_groth16::{r1cs_to_qap::LibsnarkReduction, Groth16, ProvingKey, VerifyingKey}; use ark_r1cs_std::prelude::{AllocVar, EqGadget}; use ark_relations::r1cs::{ConstraintSynthesizer, ToConstraintField}; @@ -12,7 +12,7 @@ use proptest::prelude::*; use rand_core::OsRng; // This is a domain separator we'll use as a constant in our circuits below. -static DOMAIN_SEP: Lazy = Lazy::new(|| Fq::from(666)); +static DOMAIN_SEP: Lazy = Lazy::new(|| Fq::from(666u64)); /// The maximum fixed-width Poseidon hash exposed to downstream users of this crate. const MAX_WIDTH_POSEIDON_HASH: usize = 7; @@ -141,8 +141,8 @@ impl ConstraintSynthesizer for PreimageCircuit { impl PreimageCircuit { fn generate_test_parameters() -> (ProvingKey, VerifyingKey) { let circuit = PreimageCircuit { - preimages: [Fq::from(2); MAX_WIDTH_POSEIDON_HASH], - hash_outputs: [Fq::from(2); MAX_WIDTH_POSEIDON_HASH], + preimages: [Fq::from(2u64); MAX_WIDTH_POSEIDON_HASH], + hash_outputs: [Fq::from(2u64); MAX_WIDTH_POSEIDON_HASH], }; let (pk, vk) = Groth16::::circuit_specific_setup(circuit, &mut OsRng) From 4969f9022c1c02cbea6857b48721f45b494b7a21 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 5 Feb 2024 17:35:06 -0500 Subject: [PATCH 06/54] deps: rearrange features in poseidon-parameters --- poseidon-parameters/Cargo.toml | 8 +++++++- poseidon377/Cargo.toml | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/poseidon-parameters/Cargo.toml b/poseidon-parameters/Cargo.toml index 4e75f2a..bf488e4 100644 --- a/poseidon-parameters/Cargo.toml +++ b/poseidon-parameters/Cargo.toml @@ -10,7 +10,7 @@ repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] anyhow = { version = "1", default-features = false } -ark-ff = { version = "^0.4.0", default-features = false } +ark-ff = { version = "^0.4.0", default-features = false, optional = true } num-integer = { version = "0.1.45", default-features = false } [dev-dependencies] @@ -18,6 +18,12 @@ ark-ed-on-bls12-377 = "0.4" proptest = "1" [features] +default = ["arkworks"] +alloc = [] +arkworks = [ + "std", + "ark-ff", +] std = [ "anyhow/std", "ark-ff/std", diff --git a/poseidon377/Cargo.toml b/poseidon377/Cargo.toml index cbe0c4c..7735b59 100644 --- a/poseidon377/Cargo.toml +++ b/poseidon377/Cargo.toml @@ -36,7 +36,7 @@ ark-test-curves = { version = "0.4", features = ["bls12_381_curve", "mnt4_753_cu [features] default = ["arkworks"] -alloc = ["once_cell/alloc",] +alloc = ["once_cell/alloc"] arkworks = ["std", "decaf377/arkworks", "ark-ff/std", From 5723ca577340ba10d666575be7463640c360e659 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 5 Feb 2024 17:40:32 -0500 Subject: [PATCH 07/54] poseidon-parameters: replace use of anyhow --- poseidon-parameters/Cargo.toml | 2 -- poseidon-parameters/src/arc_matrix.rs | 7 +++---- poseidon-parameters/src/error.rs | 16 ++++++++++++++++ poseidon-parameters/src/lib.rs | 1 + poseidon-parameters/src/matrix.rs | 12 ++++++------ poseidon-parameters/src/matrix_ops.rs | 18 ++++++++++-------- poseidon-parameters/src/mds_matrix.rs | 4 ++-- 7 files changed, 38 insertions(+), 22 deletions(-) create mode 100644 poseidon-parameters/src/error.rs diff --git a/poseidon-parameters/Cargo.toml b/poseidon-parameters/Cargo.toml index bf488e4..5da48ec 100644 --- a/poseidon-parameters/Cargo.toml +++ b/poseidon-parameters/Cargo.toml @@ -9,7 +9,6 @@ keywords = ["no_std"] repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] -anyhow = { version = "1", default-features = false } ark-ff = { version = "^0.4.0", default-features = false, optional = true } num-integer = { version = "0.1.45", default-features = false } @@ -25,7 +24,6 @@ arkworks = [ "ark-ff", ] std = [ - "anyhow/std", "ark-ff/std", "num-integer/std", ] diff --git a/poseidon-parameters/src/arc_matrix.rs b/poseidon-parameters/src/arc_matrix.rs index 45e8952..233110f 100644 --- a/poseidon-parameters/src/arc_matrix.rs +++ b/poseidon-parameters/src/arc_matrix.rs @@ -1,7 +1,6 @@ -use anyhow::Result; use ark_ff::{vec::Vec, PrimeField}; -use crate::{matrix::Matrix, matrix_ops::MatrixOperations}; +use crate::{error::PoseidonParameterError, matrix::Matrix, matrix_ops::MatrixOperations}; /// Represents an matrix of round constants. /// @@ -43,7 +42,7 @@ impl MatrixOperations for ArcMatrix { Self(self.0.transpose()) } - fn hadamard_product(&self, rhs: &Self) -> Result + fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized, { @@ -112,7 +111,7 @@ impl MatrixOperations for OptimizedArcMatrix { Self(self.0.transpose()) } - fn hadamard_product(&self, rhs: &Self) -> Result + fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized, { diff --git a/poseidon-parameters/src/error.rs b/poseidon-parameters/src/error.rs new file mode 100644 index 0000000..7688b94 --- /dev/null +++ b/poseidon-parameters/src/error.rs @@ -0,0 +1,16 @@ +#[derive(Debug)] +pub enum PoseidonParameterError { + InvalidMatrixDimensions, + NoMatrixInverse, +} + +impl core::fmt::Display for PoseidonParameterError { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let msg = match self { + Self::InvalidMatrixDimensions => "Invalid matrix dimensions", + Self::NoMatrixInverse => "No matrix inverse", + }; + + msg.fmt(f) + } +} diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index b91ba84..a0916c1 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -7,6 +7,7 @@ mod alpha; mod arc_matrix; +mod error; mod matrix; mod matrix_ops; mod mds_matrix; diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index c7e2d04..fe3507b 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -1,9 +1,9 @@ use core::ops::Mul; -use anyhow::{anyhow, Result}; use ark_ff::{vec, vec::Vec, PrimeField}; use num_integer::Roots; +use crate::error::PoseidonParameterError; use crate::matrix_ops::{mat_mul, MatrixOperations, SquareMatrixOperations}; /// Represents a matrix over `PrimeField` elements. @@ -67,12 +67,12 @@ impl MatrixOperations for Matrix { Self::new(self.n_cols, self.n_rows, transposed_elements) } - fn hadamard_product(&self, rhs: &Self) -> Result + fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized, { if self.n_rows != rhs.n_rows || self.n_cols != rhs.n_cols { - return Err(anyhow!("Hadamard product requires same shape matrices")); + return Err(PoseidonParameterError::InvalidMatrixDimensions); } let mut new_elements = Vec::with_capacity(self.n_rows * self.n_cols); @@ -145,7 +145,7 @@ impl MatrixOperations for SquareMatrix { Self(self.0.transpose()) } - fn hadamard_product(&self, rhs: &Self) -> Result + fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized, { @@ -155,7 +155,7 @@ impl MatrixOperations for SquareMatrix { impl SquareMatrixOperations for SquareMatrix { /// Compute the inverse of the matrix - fn inverse(&self) -> Result { + fn inverse(&self) -> Result { let identity = Self::identity(self.n_rows()); if self.n_rows() == 1 { @@ -167,7 +167,7 @@ impl SquareMatrixOperations for SquareMatrix { let determinant = self.determinant(); if determinant == F::zero() { - return Err(anyhow!("err: matrix has no inverse")); + return Err(PoseidonParameterError::NoMatrixInverse); } let minors = self.minors(); diff --git a/poseidon-parameters/src/matrix_ops.rs b/poseidon-parameters/src/matrix_ops.rs index 4f08959..4112fe5 100644 --- a/poseidon-parameters/src/matrix_ops.rs +++ b/poseidon-parameters/src/matrix_ops.rs @@ -1,8 +1,9 @@ use core::slice::Chunks; -use anyhow::{anyhow, Result}; use ark_ff::{vec::Vec, PrimeField}; +use crate::error::PoseidonParameterError; + pub trait MatrixOperations { /// Create a new matrix fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self; @@ -22,20 +23,21 @@ pub trait MatrixOperations { fn n_rows(&self) -> usize; /// Number of columns fn n_cols(&self) -> usize; - /// Take transpose of the matrix + /// Take transpose of the matrix fn transpose(&self) -> Self; /// Compute Hadamard (element-wise) product - fn hadamard_product(&self, rhs: &Self) -> Result + fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized; } /// Multiply two matrices -pub fn mat_mul>(lhs: &M, rhs: &M) -> Result { +pub fn mat_mul>( + lhs: &M, + rhs: &M, +) -> Result { if lhs.n_cols() != rhs.n_rows() { - return Err(anyhow!( - "matrix dimensions do not allow matrix multiplication" - )); + return Err(PoseidonParameterError::InvalidMatrixDimensions); } let rhs_T = rhs.transpose(); @@ -125,7 +127,7 @@ impl Polynomial { /// Matrix operations that are defined on square matrices. pub trait SquareMatrixOperations { /// Compute the matrix inverse, if it exists - fn inverse(&self) -> Result + fn inverse(&self) -> Result where Self: Sized; /// Construct an n x n identity matrix diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index 521c030..eba609a 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -1,7 +1,7 @@ -use anyhow::Result; use ark_ff::{vec::Vec, PrimeField}; use crate::{ + error::PoseidonParameterError, matrix::{Matrix, SquareMatrix}, matrix_ops::{MatrixOperations, SquareMatrixOperations}, }; @@ -43,7 +43,7 @@ impl MatrixOperations for MdsMatrix { Self(self.0.transpose()) } - fn hadamard_product(&self, rhs: &Self) -> Result + fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized, { From 074009e6246d168e1cc2e9b8fedd4f07e1f7dd7e Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 5 Feb 2024 18:22:26 -0500 Subject: [PATCH 08/54] chore: bump versions everywhere --- poseidon-parameters/CHANGELOG.md | 6 +++++- poseidon-parameters/Cargo.toml | 9 +++++++-- poseidon-parameters/src/arc_matrix.rs | 4 +--- poseidon-parameters/src/matrix.rs | 2 +- poseidon-parameters/src/matrix_ops.rs | 2 -- poseidon-parameters/src/mds_matrix.rs | 2 -- poseidon-paramgen/Cargo.toml | 2 +- poseidon-permutation/CHANGELOG.md | 4 ++++ poseidon-permutation/Cargo.toml | 4 ++-- poseidon377/CHANGELOG.md | 4 ++++ poseidon377/Cargo.toml | 6 +++--- 11 files changed, 28 insertions(+), 17 deletions(-) diff --git a/poseidon-parameters/CHANGELOG.md b/poseidon-parameters/CHANGELOG.md index d62292c..be30ae8 100644 --- a/poseidon-parameters/CHANGELOG.md +++ b/poseidon-parameters/CHANGELOG.md @@ -8,4 +8,8 @@ # 0.4.0 -* Add `v1` and `v2` APIs. \ No newline at end of file +* Add `v1` and `v2` APIs. + +# 1.0.0 + +* Remove Arkworks requirement \ No newline at end of file diff --git a/poseidon-parameters/Cargo.toml b/poseidon-parameters/Cargo.toml index 5da48ec..f1adc5d 100644 --- a/poseidon-parameters/Cargo.toml +++ b/poseidon-parameters/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "poseidon-parameters" -version = "0.4.0" +version = "1.0.0" edition = "2018" authors = [] description = "A crate for Poseidon parameters" @@ -11,6 +11,7 @@ repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] ark-ff = { version = "^0.4.0", default-features = false, optional = true } num-integer = { version = "0.1.45", default-features = false } +decaf377 = { version="0.8.0", default-features = false } [dev-dependencies] ark-ed-on-bls12-377 = "0.4" @@ -18,12 +19,16 @@ proptest = "1" [features] default = ["arkworks"] -alloc = [] +alloc = [ + "decaf377/alloc" +] arkworks = [ "std", "ark-ff", + "decaf377/arkworks", ] std = [ "ark-ff/std", "num-integer/std", + "decaf377/std", ] diff --git a/poseidon-parameters/src/arc_matrix.rs b/poseidon-parameters/src/arc_matrix.rs index 233110f..086b21c 100644 --- a/poseidon-parameters/src/arc_matrix.rs +++ b/poseidon-parameters/src/arc_matrix.rs @@ -1,5 +1,3 @@ -use ark_ff::{vec::Vec, PrimeField}; - use crate::{error::PoseidonParameterError, matrix::Matrix, matrix_ops::MatrixOperations}; /// Represents an matrix of round constants. @@ -7,7 +5,7 @@ use crate::{error::PoseidonParameterError, matrix::Matrix, matrix_ops::MatrixOpe /// Arc stands for `AddRoundConstant` which is the /// step in the permutation where this matrix is used. #[derive(Clone, Debug, PartialEq, Eq)] -pub struct ArcMatrix(pub Matrix); +pub struct ArcMatrix(pub Matrix); impl MatrixOperations for ArcMatrix { fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index fe3507b..41adf58 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -1,6 +1,6 @@ use core::ops::Mul; -use ark_ff::{vec, vec::Vec, PrimeField}; +// TODO: This library needs to be replaced use num_integer::Roots; use crate::error::PoseidonParameterError; diff --git a/poseidon-parameters/src/matrix_ops.rs b/poseidon-parameters/src/matrix_ops.rs index 4112fe5..91baaaa 100644 --- a/poseidon-parameters/src/matrix_ops.rs +++ b/poseidon-parameters/src/matrix_ops.rs @@ -1,7 +1,5 @@ use core::slice::Chunks; -use ark_ff::{vec::Vec, PrimeField}; - use crate::error::PoseidonParameterError; pub trait MatrixOperations { diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index eba609a..d487232 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -1,5 +1,3 @@ -use ark_ff::{vec::Vec, PrimeField}; - use crate::{ error::PoseidonParameterError, matrix::{Matrix, SquareMatrix}, diff --git a/poseidon-paramgen/Cargo.toml b/poseidon-paramgen/Cargo.toml index 319a074..d0458c8 100644 --- a/poseidon-paramgen/Cargo.toml +++ b/poseidon-paramgen/Cargo.toml @@ -17,7 +17,7 @@ num = { version = "0.4", default-features = false } num-bigint = { version = "0.4", default-features = false } rand_core = { version = "0.6.3", default-features = false, features = ["getrandom"] } -poseidon-parameters = { path = "../poseidon-parameters", default-features = false, version = "0.4" } +poseidon-parameters = { path = "../poseidon-parameters", default-features = false, version = "1.0" } [dev-dependencies] ark-bn254 = "0.4" diff --git a/poseidon-permutation/CHANGELOG.md b/poseidon-permutation/CHANGELOG.md index 92329ac..37dadee 100644 --- a/poseidon-permutation/CHANGELOG.md +++ b/poseidon-permutation/CHANGELOG.md @@ -19,3 +19,7 @@ # 0.5.0 * Fix: Removing unnecessary debug output. + +# 1.0.0 + +* Remove Arkworks requirement \ No newline at end of file diff --git a/poseidon-permutation/Cargo.toml b/poseidon-permutation/Cargo.toml index 6f3f0b8..76a0089 100644 --- a/poseidon-permutation/Cargo.toml +++ b/poseidon-permutation/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "poseidon-permutation" -version = "0.5.0" +version = "1.0.0" edition = "2018" authors = ["Penumbra ", "redshiftzero "] description = "An instantiation of the Poseidon permutation" @@ -13,7 +13,7 @@ ark-std = { version = "^0.4.0", default-features = false } ark-r1cs-std = {version = "0.4", default-features = false, optional=true } ark-relations = { version="0.4", default-features = false, optional=true } -poseidon-parameters = { path = "../poseidon-parameters", default-features = false, version = "0.4" } +poseidon-parameters = { path = "../poseidon-parameters", default-features = false, version = "1.0" } [features] default = ["std"] diff --git a/poseidon377/CHANGELOG.md b/poseidon377/CHANGELOG.md index f8d34b0..9942b95 100644 --- a/poseidon377/CHANGELOG.md +++ b/poseidon377/CHANGELOG.md @@ -22,3 +22,7 @@ # 0.6.0 * Use `poseidon-permutation` version 0.5.0 to avoid spurious debug output. + +# 1.0.0 + +* Remove Arkworks requirement \ No newline at end of file diff --git a/poseidon377/Cargo.toml b/poseidon377/Cargo.toml index 7735b59..d5ca827 100644 --- a/poseidon377/Cargo.toml +++ b/poseidon377/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "poseidon377" -version = "0.6.0" +version = "1.0.0" edition = "2018" authors = ["Penumbra ", "redshiftzero "] description = "An instantiation of the Poseidon hash for use with decaf377." @@ -16,8 +16,8 @@ ark-snark = { version = "0.4", default-features = false, optional=true } decaf377 = { version="0.8", default-features = false, features = ["r1cs"] } num-bigint = { version = "0.4.3", default-features = false } once_cell = { version = "1.8", default-features = false } -poseidon-parameters = { version="0.4", path = "../poseidon-parameters", default-features = false } -poseidon-permutation = { version="0.5", path = "../poseidon-permutation", default-features = false } +poseidon-parameters = { version="1.0", path = "../poseidon-parameters", default-features = false } +poseidon-permutation = { version="1.0", path = "../poseidon-permutation", default-features = false } # Dependencies added for ark-sponge vendoring ark-ec = { version = "0.4", default_features = false, optional=true } From bdcbbf275251925768154d0db3d051b0c64da275 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 5 Feb 2024 18:51:53 -0500 Subject: [PATCH 09/54] poseidon-parameters: remove `ark_ff::PrimeField` usage --- poseidon-parameters/src/arc_matrix.rs | 35 ++++++------ poseidon-parameters/src/matrix.rs | 80 ++++++++++++++------------- poseidon-parameters/src/matrix_ops.rs | 56 +++++++++---------- poseidon-parameters/src/mds_matrix.rs | 59 ++++++++++---------- poseidon-parameters/src/tests.rs | 28 +++++----- poseidon-parameters/src/v1.rs | 12 ++-- poseidon-parameters/src/v2.rs | 10 ++-- 7 files changed, 138 insertions(+), 142 deletions(-) diff --git a/poseidon-parameters/src/arc_matrix.rs b/poseidon-parameters/src/arc_matrix.rs index 086b21c..6bd26c9 100644 --- a/poseidon-parameters/src/arc_matrix.rs +++ b/poseidon-parameters/src/arc_matrix.rs @@ -1,30 +1,31 @@ use crate::{error::PoseidonParameterError, matrix::Matrix, matrix_ops::MatrixOperations}; +use decaf377::Fq; /// Represents an matrix of round constants. /// /// Arc stands for `AddRoundConstant` which is the /// step in the permutation where this matrix is used. #[derive(Clone, Debug, PartialEq, Eq)] -pub struct ArcMatrix(pub Matrix); +pub struct ArcMatrix(pub Matrix); -impl MatrixOperations for ArcMatrix { - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { +impl MatrixOperations for ArcMatrix { + fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { Self(Matrix::new(n_rows, n_cols, elements)) } - fn elements(&self) -> &Vec { + fn elements(&self) -> &Vec { self.0.elements() } - fn get_element(&self, i: usize, j: usize) -> F { + fn get_element(&self, i: usize, j: usize) -> Fq { self.0.get_element(i, j) } - fn set_element(&mut self, i: usize, j: usize, val: F) { + fn set_element(&mut self, i: usize, j: usize, val: Fq) { self.0.set_element(i, j, val) } - fn rows(&self) -> Vec<&[F]> { + fn rows(&self) -> Vec<&[Fq]> { self.0.rows() } @@ -48,9 +49,9 @@ impl MatrixOperations for ArcMatrix { } } -impl From> for Vec> { - fn from(arc: ArcMatrix) -> Self { - let mut rows = Vec::>::new(); +impl From for Vec> { + fn from(arc: ArcMatrix) -> Self { + let mut rows = Vec::>::new(); let m = &arc.0; for i in 0..arc.n_rows() { @@ -73,27 +74,27 @@ impl From> for Vec> { /// This method follows `calc_equivalent_constants` from Appendix B's /// `poseidonperm_x3_64_24_optimized.sage`. #[derive(Clone, Debug, PartialEq, Eq)] -pub struct OptimizedArcMatrix(pub ArcMatrix); +pub struct OptimizedArcMatrix(pub ArcMatrix); -impl MatrixOperations for OptimizedArcMatrix { +impl MatrixOperations for OptimizedArcMatrix { /// Create a `OptimizedArcMatrix` from its elements. - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { + fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { Self(ArcMatrix::new(n_rows, n_cols, elements)) } - fn elements(&self) -> &Vec { + fn elements(&self) -> &Vec { self.0.elements() } - fn get_element(&self, i: usize, j: usize) -> F { + fn get_element(&self, i: usize, j: usize) -> Fq { self.0.get_element(i, j) } - fn set_element(&mut self, i: usize, j: usize, val: F) { + fn set_element(&mut self, i: usize, j: usize, val: Fq) { self.0.set_element(i, j, val) } - fn rows(&self) -> Vec<&[F]> { + fn rows(&self) -> Vec<&[Fq]> { self.0.rows() } diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 41adf58..45634c8 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -5,23 +5,24 @@ use num_integer::Roots; use crate::error::PoseidonParameterError; use crate::matrix_ops::{mat_mul, MatrixOperations, SquareMatrixOperations}; +use decaf377::Fq; /// Represents a matrix over `PrimeField` elements. /// /// This matrix can be used to represent row or column /// vectors. #[derive(Clone, Debug, PartialEq, Eq)] -pub struct Matrix { +pub struct Matrix { /// Elements of the matrix. - pub elements: Vec, + pub elements: Vec, /// Number of columns. pub n_cols: usize, /// Number of rows. pub n_rows: usize, } -impl MatrixOperations for Matrix { - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { +impl MatrixOperations for Matrix { + fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { if elements.len() != n_rows * n_cols { panic!("Matrix has an insufficient number of elements") } @@ -32,19 +33,19 @@ impl MatrixOperations for Matrix { } } - fn elements(&self) -> &Vec { + fn elements(&self) -> &Vec { &self.elements } - fn get_element(&self, i: usize, j: usize) -> F { + fn get_element(&self, i: usize, j: usize) -> Fq { self.elements[i * self.n_cols + j] } - fn set_element(&mut self, i: usize, j: usize, val: F) { + fn set_element(&mut self, i: usize, j: usize, val: Fq) { self.elements[i * self.n_cols + j] = val } - fn rows(&self) -> Vec<&[F]> { + fn rows(&self) -> Vec<&[Fq]> { self.elements.chunks(self.n_cols).collect() } @@ -87,19 +88,19 @@ impl MatrixOperations for Matrix { } /// Multiply scalar by Matrix -impl Mul for Matrix { - type Output = Matrix; +impl Mul for Matrix { + type Output = Matrix; - fn mul(self, rhs: F) -> Self::Output { + fn mul(self, rhs: Fq) -> Self::Output { let elements = self.elements(); - let new_elements: Vec = elements.iter().map(|element| *element * rhs).collect(); + let new_elements: Vec = elements.iter().map(|element| *element * rhs).collect(); Self::new(self.n_rows(), self.n_cols(), new_elements) } } -impl Matrix { +impl Matrix { /// Get row vector at a specified row index - pub fn row_vector(&self, i: usize) -> Matrix { + pub fn row_vector(&self, i: usize) -> Matrix { let mut row_elements = Vec::with_capacity(self.n_cols); for j in 0..self.n_cols { row_elements.push(self.get_element(i, j)); @@ -110,26 +111,26 @@ impl Matrix { /// Represents a square matrix over `PrimeField` elements #[derive(Clone, Debug, PartialEq, Eq)] -pub struct SquareMatrix(pub Matrix); +pub struct SquareMatrix(pub Matrix); -impl MatrixOperations for SquareMatrix { - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { +impl MatrixOperations for SquareMatrix { + fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { Self(Matrix::new(n_rows, n_cols, elements)) } - fn elements(&self) -> &Vec { + fn elements(&self) -> &Vec { self.0.elements() } - fn get_element(&self, i: usize, j: usize) -> F { + fn get_element(&self, i: usize, j: usize) -> Fq { self.0.get_element(i, j) } - fn set_element(&mut self, i: usize, j: usize, val: F) { + fn set_element(&mut self, i: usize, j: usize, val: Fq) { self.0.set_element(i, j, val) } - fn rows(&self) -> Vec<&[F]> { + fn rows(&self) -> Vec<&[Fq]> { self.0.rows() } @@ -153,7 +154,7 @@ impl MatrixOperations for SquareMatrix { } } -impl SquareMatrixOperations for SquareMatrix { +impl SquareMatrixOperations for SquareMatrix { /// Compute the inverse of the matrix fn inverse(&self) -> Result { let identity = Self::identity(self.n_rows()); @@ -166,7 +167,7 @@ impl SquareMatrixOperations for SquareMatrix { } let determinant = self.determinant(); - if determinant == F::zero() { + if determinant == Fq::zero() { return Err(PoseidonParameterError::NoMatrixInverse); } @@ -176,7 +177,7 @@ impl SquareMatrixOperations for SquareMatrix { .hadamard_product(&cofactor_matrix) .expect("minor and cofactor matrix have correct dimensions"); let adj = signed_minors.transpose(); - let matrix_inverse = adj * (F::one() / determinant); + let matrix_inverse = adj * (Fq::one() / determinant); debug_assert_eq!( mat_mul(self, &matrix_inverse) @@ -188,11 +189,11 @@ impl SquareMatrixOperations for SquareMatrix { /// Construct a dim x dim identity matrix fn identity(dim: usize) -> Self { - let mut m = Self::from_vec(vec![F::zero(); dim * dim]); + let mut m = Self::from_vec(vec![Fq::zero(); dim * dim]); // Set diagonals to 1 for i in 0..dim { - m.set_element(i, i, F::one()); + m.set_element(i, i, Fq::one()); } m @@ -215,7 +216,7 @@ impl SquareMatrixOperations for SquareMatrix { let mut minor_matrix_elements = Vec::with_capacity(dim * dim); for i in 0..dim { for j in 0..dim { - let mut elements: Vec = Vec::new(); + let mut elements: Vec = Vec::new(); for k in 0..i { for l in 0..j { elements.push(self.get_element(k, l)) @@ -245,16 +246,17 @@ impl SquareMatrixOperations for SquareMatrix { fn cofactors(&self) -> Self { let dim = self.n_rows(); let mut elements = Vec::with_capacity(dim); + // TODO: non arkworks Fq::pow for i in 0..dim { for j in 0..dim { - elements.push((-F::one()).pow([(i + j) as u64])) + elements.push((-Fq::one()).pow([(i + j) as u64])) } } Self::from_vec(elements) } /// Compute the matrix determinant - fn determinant(&self) -> F { + fn determinant(&self) -> Fq { match self.n_cols() { 0 => panic!("matrix has no elements!"), 1 => self.get_element(0, 0), @@ -282,12 +284,12 @@ impl SquareMatrixOperations for SquareMatrix { } _ => { // Unoptimized, but MDS matrices are fairly small, so we do the naive thing - let mut det = F::zero(); + let mut det = Fq::zero(); let mut levi_civita = true; let dim = self.n_rows(); for i in 0..dim { - let mut elements: Vec = Vec::new(); + let mut elements: Vec = Vec::new(); for k in 0..i { for l in 1..dim { elements.push(self.get_element(k, l)) @@ -314,19 +316,19 @@ impl SquareMatrixOperations for SquareMatrix { } /// Multiply scalar by SquareMatrix -impl Mul for SquareMatrix { - type Output = SquareMatrix; +impl Mul for SquareMatrix { + type Output = SquareMatrix; - fn mul(self, rhs: F) -> Self::Output { + fn mul(self, rhs: Fq) -> Self::Output { let elements = self.0.elements(); - let new_elements: Vec = elements.iter().map(|element| *element * rhs).collect(); + let new_elements: Vec = elements.iter().map(|element| *element * rhs).collect(); Self::from_vec(new_elements) } } -impl SquareMatrix { +impl SquareMatrix { /// Create a `SquareMatrix` from a vector of elements. - pub fn from_vec(elements: Vec) -> Self { + pub fn from_vec(elements: Vec) -> Self { let dim = elements.len().sqrt(); if dim * dim != elements.len() { panic!("SquareMatrix must be square") @@ -335,12 +337,12 @@ impl SquareMatrix { } /// Get row vector at a specified row index. - pub fn row_vector(&self, i: usize) -> Matrix { + pub fn row_vector(&self, i: usize) -> Matrix { self.0.row_vector(i) } /// Create a 2x2 `SquareMatrix` from four elements. - pub fn new_2x2(a: F, b: F, c: F, d: F) -> SquareMatrix { + pub fn new_2x2(a: Fq, b: Fq, c: Fq, d: Fq) -> SquareMatrix { Self::from_vec(vec![a, b, c, d]) } } diff --git a/poseidon-parameters/src/matrix_ops.rs b/poseidon-parameters/src/matrix_ops.rs index 91baaaa..3ef1539 100644 --- a/poseidon-parameters/src/matrix_ops.rs +++ b/poseidon-parameters/src/matrix_ops.rs @@ -1,20 +1,21 @@ use core::slice::Chunks; use crate::error::PoseidonParameterError; +use decaf377::Fq; -pub trait MatrixOperations { +pub trait MatrixOperations { /// Create a new matrix - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self; + fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self; /// Access elements as a vector - fn elements(&self) -> &Vec; + fn elements(&self) -> &Vec; /// Get element[i,j] - fn get_element(&self, i: usize, j: usize) -> F; + fn get_element(&self, i: usize, j: usize) -> Fq; /// Set element[i,j] - fn set_element(&mut self, i: usize, j: usize, val: F); + fn set_element(&mut self, i: usize, j: usize, val: Fq); /// Get rows - fn rows(&self) -> Vec<&[F]>; + fn rows(&self) -> Vec<&[Fq]>; /// Get rows in chunks - fn iter_rows(&self) -> Chunks { + fn iter_rows(&self) -> Chunks { self.elements().chunks(self.n_cols()) } /// Number of rows @@ -30,10 +31,7 @@ pub trait MatrixOperations { } /// Multiply two matrices -pub fn mat_mul>( - lhs: &M, - rhs: &M, -) -> Result { +pub fn mat_mul(lhs: &M, rhs: &M) -> Result { if lhs.n_cols() != rhs.n_rows() { return Err(PoseidonParameterError::InvalidMatrixDimensions); } @@ -49,14 +47,14 @@ pub fn mat_mul>( rhs_T .iter_rows() .map(|column| dot_product(row, column)) - .collect::>() + .collect::>() }) .collect(), )) } /// Compute vector dot product -pub fn dot_product(a: &[F], b: &[F]) -> F { +pub fn dot_product(a: &[Fq], b: &[Fq]) -> Fq { if a.len() != b.len() { panic!("vecs not same len") } @@ -64,14 +62,14 @@ pub fn dot_product(a: &[F], b: &[F]) -> F { a.iter().zip(b.iter()).map(|(x, y)| *x * *y).sum() } -pub struct Polynomial { +pub struct Polynomial { /// The coefficients of the polynomial a_0, ..., a_i - pub coeffs: Vec, + pub coeffs: Vec, } -impl Polynomial { +impl Polynomial { /// Construct a new polynomial - pub fn new(coeffs: Vec) -> Self { + pub fn new(coeffs: Vec) -> Self { Self { coeffs } } @@ -81,24 +79,24 @@ impl Polynomial { } /// Evaluate the polynomial at a given point - pub fn evaluate(&self, x: F) -> F { + pub fn evaluate(&self, x: Fq) -> Fq { self.coeffs .iter() .rev() - .fold(F::zero(), |acc, coeff| acc * x + coeff) + .fold(Fq::zero(), |acc, coeff| acc * x + coeff) } /// Check if the polynomial is irreducible using Perron's irreducibility criterion. pub fn is_irreducible(&self) -> bool { // We first need to check the polynomial is monic. - if self.coeffs.last() != Some(&F::one()) { + if self.coeffs.last() != Some(&Fq::one()) { unimplemented!("polynomial is not monic, not sure how to check irreducibility") } else { // The polynomial is monic, so we can apply Perron's criterion. // See https://en.wikipedia.org/wiki/Perron%27s_irreducibility_criterion // for more details. let n = self.max_degree(); - let mut sum = F::one(); + let mut sum = Fq::one(); for i in 0..n - 1 { sum += self.coeffs[i]; } @@ -112,9 +110,9 @@ impl Polynomial { // AND // f(1) != 0 AND f(-1) != 0 coeff if coeff == sum => { - let f_of_1 = self.evaluate(F::one()); - let f_of_neg_1 = self.evaluate(-F::one()); - f_of_1 != F::zero() && f_of_neg_1 != F::zero() + let f_of_1 = self.evaluate(Fq::one()); + let f_of_neg_1 = self.evaluate(-Fq::one()); + f_of_1 != Fq::zero() && f_of_neg_1 != Fq::zero() } _ => false, } @@ -123,7 +121,7 @@ impl Polynomial { } /// Matrix operations that are defined on square matrices. -pub trait SquareMatrixOperations { +pub trait SquareMatrixOperations { /// Compute the matrix inverse, if it exists fn inverse(&self) -> Result where @@ -135,19 +133,19 @@ pub trait SquareMatrixOperations { /// Compute the matrix of cofactors fn cofactors(&self) -> Self; /// Compute the matrix determinant - fn determinant(&self) -> F; + fn determinant(&self) -> Fq; } #[cfg(test)] mod tests { use super::*; - use ark_ed_on_bls12_377::Fq; + use decaf377::Fq; #[test] fn poly_evaluate() { // f(x) = 1 + 2x + 3x^2 - let poly = Polynomial::new(vec![Fq::from(1), Fq::from(2), Fq::from(3)]); + let poly = Polynomial::new(vec![Fq::from(1u64), Fq::from(2u64), Fq::from(3u64)]); assert_eq!(poly.max_degree(), 2); - assert_eq!(poly.evaluate(Fq::from(2)), Fq::from(17)); + assert_eq!(poly.evaluate(Fq::from(2u64)), Fq::from(17u64)); } } diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index d487232..f268ff0 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -3,29 +3,30 @@ use crate::{ matrix::{Matrix, SquareMatrix}, matrix_ops::{MatrixOperations, SquareMatrixOperations}, }; +use decaf377::Fq; /// Represents an MDS (maximum distance separable) matrix. #[derive(Clone, Debug, PartialEq, Eq)] -pub struct MdsMatrix(pub SquareMatrix); +pub struct MdsMatrix(pub SquareMatrix); -impl MatrixOperations for MdsMatrix { - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { +impl MatrixOperations for MdsMatrix { + fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { Self(SquareMatrix::new(n_rows, n_cols, elements)) } - fn elements(&self) -> &Vec { + fn elements(&self) -> &Vec { self.0.elements() } - fn get_element(&self, i: usize, j: usize) -> F { + fn get_element(&self, i: usize, j: usize) -> Fq { self.0.get_element(i, j) } - fn set_element(&mut self, i: usize, j: usize, val: F) { + fn set_element(&mut self, i: usize, j: usize, val: Fq) { self.0.set_element(i, j, val) } - fn rows(&self) -> Vec<&[F]> { + fn rows(&self) -> Vec<&[Fq]> { self.0.rows() } @@ -49,7 +50,7 @@ impl MatrixOperations for MdsMatrix { } } -impl MdsMatrix { +impl MdsMatrix { /// Instantiate an MDS matrix from a list of elements. /// /// # Security @@ -58,12 +59,12 @@ impl MdsMatrix { /// using the Cauchy method in `fixed_cauchy_matrix` or /// using the random subsampling method described in the original /// paper. - pub fn from_elements(elements: Vec) -> Self { + pub fn from_elements(elements: Vec) -> Self { Self(SquareMatrix::from_vec(elements)) } /// Compute inverse of MDS matrix - pub fn inverse(&self) -> SquareMatrix { + pub fn inverse(&self) -> SquareMatrix { self.0 .inverse() .expect("all well-formed MDS matrices should have inverses") @@ -72,15 +73,15 @@ impl MdsMatrix { /// Return the elements M_{0,1} .. M_{0,t} from the first row /// /// Ref: p.20 of the Poseidon paper - pub fn v(&self) -> Matrix { - let elements: Vec = self.0 .0.elements()[1..self.0 .0.n_rows()].to_vec(); + pub fn v(&self) -> Matrix { + let elements: Vec = self.0 .0.elements()[1..self.0 .0.n_rows()].to_vec(); Matrix::new(1, self.0.n_rows() - 1, elements) } /// Return the elements M_{1,0} .. M_{t,0}from the first column /// /// Ref: p.20 of the Poseidon paper - pub fn w(&self) -> Matrix { + pub fn w(&self) -> Matrix { let mut elements = Vec::with_capacity(self.0.n_rows() - 1); for i in 1..self.n_rows() { elements.push(self.get_element(i, 0)) @@ -93,7 +94,7 @@ impl MdsMatrix { /// This is simply the MDS matrix with the first row and column removed /// /// Ref: p.20 of the Poseidon paper - pub fn hat(&self) -> SquareMatrix { + pub fn hat(&self) -> SquareMatrix { let dim = self.n_rows(); let mut mhat_elements = Vec::with_capacity((dim - 1) * (dim - 1)); for i in 1..dim { @@ -106,9 +107,9 @@ impl MdsMatrix { } } -impl From> for Vec> { - fn from(val: MdsMatrix) -> Self { - let mut rows = Vec::>::new(); +impl From for Vec> { + fn from(val: MdsMatrix) -> Self { + let mut rows = Vec::>::new(); for i in 0..val.0.n_rows() { let mut row = Vec::new(); for j in 0..val.0.n_rows() { @@ -122,27 +123,27 @@ impl From> for Vec> { /// Represents an optimized MDS (maximum distance separable) matrix. #[derive(Clone, Debug, PartialEq, Eq)] -pub struct OptimizedMdsMatrices { +pub struct OptimizedMdsMatrices { /// A (t - 1) x (t - 1) MDS submatrix derived from the MDS matrix. - pub M_hat: SquareMatrix, + pub M_hat: SquareMatrix, /// A 1 x (t - 1) (row) vector derived from the MDS matrix. - pub v: Matrix, + pub v: Matrix, /// A (t - 1) x 1 (column) vector derived from the MDS matrix. - pub w: Matrix, + pub w: Matrix, /// A matrix formed from Mhat (an MDS submatrix of the MDS matrix). - pub M_prime: SquareMatrix, + pub M_prime: SquareMatrix, /// A sparse matrix formed from M, - pub M_doubleprime: SquareMatrix, + pub M_doubleprime: SquareMatrix, /// The inverse of the t x t MDS matrix (needed to compute round constants). - pub M_inverse: SquareMatrix, + pub M_inverse: SquareMatrix, /// The inverse of the (t - 1) x (t - 1) Mhat matrix. - pub M_hat_inverse: SquareMatrix, + pub M_hat_inverse: SquareMatrix, /// Element at M00 - pub M_00: F, + pub M_00: Fq, /// M_i - pub M_i: Matrix, + pub M_i: Matrix, /// v_collection: one per round. - pub v_collection: Vec>, + pub v_collection: Vec, /// w_hat_collection: one per round - pub w_hat_collection: Vec>, + pub w_hat_collection: Vec, } diff --git a/poseidon-parameters/src/tests.rs b/poseidon-parameters/src/tests.rs index 76bb50a..624da7c 100644 --- a/poseidon-parameters/src/tests.rs +++ b/poseidon-parameters/src/tests.rs @@ -1,5 +1,4 @@ -use ark_ed_on_bls12_377::Fq; -use ark_ff::{vec, One, PrimeField, Zero}; +use decaf377::Fq; use proptest::prelude::*; use v1::Matrix; @@ -11,7 +10,7 @@ use crate::{matrix::SquareMatrix, matrix_ops::SquareMatrixOperations}; #[test] fn identity_matrix() { - let identity = SquareMatrix::::identity(2); + let identity = SquareMatrix::identity(2); assert_eq!(identity.get_element(0, 0), Fq::one()); assert_eq!(identity.get_element(0, 1), Fq::zero()); assert_eq!(identity.get_element(1, 1), Fq::one()); @@ -20,7 +19,7 @@ fn identity_matrix() { #[test] fn square_matmul() { - let identity = SquareMatrix::::identity(2); + let identity = SquareMatrix::identity(2); let matrix_2x2 = SquareMatrix::from_vec(vec![ Fq::one(), @@ -127,37 +126,36 @@ fn transpose() { #[test] fn cofactors() { - let identity_1x1 = SquareMatrix::::identity(1); - let expected_res = SquareMatrix::::from_vec(vec![Fq::one()]); + let identity_1x1 = SquareMatrix::identity(1); + let expected_res = SquareMatrix::from_vec(vec![Fq::one()]); assert_eq!(identity_1x1.cofactors(), expected_res); - let identity_2x2 = SquareMatrix::::identity(2); - let expected_res = - SquareMatrix::::from_vec(vec![Fq::one(), -Fq::one(), -Fq::one(), Fq::one()]); + let identity_2x2 = SquareMatrix::identity(2); + let expected_res = SquareMatrix::from_vec(vec![Fq::one(), -Fq::one(), -Fq::one(), Fq::one()]); assert_eq!(identity_2x2.cofactors(), expected_res); } fn fq_strategy() -> BoxedStrategy { - any::<[u8; 32]>() - .prop_map(|bytes| Fq::from_le_bytes_mod_order(&bytes[..])) + any::<[u64; 4]>() + .prop_map(|limbs| Fq::from_le_limbs(limbs)) .boxed() } proptest! { #[test] fn inverse_2x2(a in fq_strategy(), b in fq_strategy(), c in fq_strategy(), d in fq_strategy()) { - let matrix_2x2 = SquareMatrix::::from_vec(vec![ + let matrix_2x2 = SquareMatrix::from_vec(vec![ a,b,c,d ]); let res = matrix_2x2.inverse().unwrap(); - assert_eq!(mat_mul(&matrix_2x2, &res).unwrap(), SquareMatrix::::identity(2)); + assert_eq!(mat_mul(&matrix_2x2, &res).unwrap(), SquareMatrix::identity(2)); } } #[test] fn inverse() { - let matrix_1x1 = SquareMatrix::::from_vec(vec![Fq::from(2u64)]); + let matrix_1x1 = SquareMatrix::from_vec(vec![Fq::from(2u64)]); let res = matrix_1x1.inverse().unwrap(); assert_eq!( mat_mul(&matrix_1x1, &res).unwrap(), @@ -177,7 +175,7 @@ fn inverse() { SquareMatrix::identity(2) ); - let identity_3x3 = SquareMatrix::::identity(3); + let identity_3x3 = SquareMatrix::identity(3); assert_eq!(identity_3x3, identity_3x3.inverse().unwrap()); let matrix_3x3 = SquareMatrix::from_vec(vec![ diff --git a/poseidon-parameters/src/v1.rs b/poseidon-parameters/src/v1.rs index a3b55f1..d483ea3 100644 --- a/poseidon-parameters/src/v1.rs +++ b/poseidon-parameters/src/v1.rs @@ -1,5 +1,3 @@ -use ark_ff::PrimeField; - pub use crate::alpha::Alpha; pub use crate::round_numbers::RoundNumbers; @@ -13,7 +11,7 @@ pub use crate::{ // TODO: arc and mds could be collections /// A set of Poseidon1 parameters for a given set of input parameters. #[derive(Clone, Debug)] -pub struct PoseidonParameters { +pub struct PoseidonParameters { // Input parameters. /// Security level. pub M: usize, @@ -28,14 +26,14 @@ pub struct PoseidonParameters { pub rounds: RoundNumbers, /// `t x t` MDS matrix used in the `MixLayer` step - pub mds: MdsMatrix, + pub mds: MdsMatrix, /// `num_total_rounds x t` matrix of constants used in the `AddRoundConstant` step - pub arc: ArcMatrix, + pub arc: ArcMatrix, /// Optimized round constants. - pub optimized_arc: OptimizedArcMatrix, + pub optimized_arc: OptimizedArcMatrix, /// Optimized MDS matrices. - pub optimized_mds: OptimizedMdsMatrices, + pub optimized_mds: OptimizedMdsMatrices, } diff --git a/poseidon-parameters/src/v2.rs b/poseidon-parameters/src/v2.rs index f97a6a6..054e4d2 100644 --- a/poseidon-parameters/src/v2.rs +++ b/poseidon-parameters/src/v2.rs @@ -1,5 +1,3 @@ -use ark_ff::PrimeField; - pub use crate::alpha::Alpha; pub use crate::arc_matrix::ArcMatrix; pub use crate::matrix::SquareMatrix; @@ -11,7 +9,7 @@ pub use crate::{ /// A set of Poseidon2 parameters for a given set of input parameters. #[derive(Clone, Debug)] -pub struct PoseidonParameters { +pub struct PoseidonParameters { // Input parameters. /// Security level. pub M: usize, @@ -26,11 +24,11 @@ pub struct PoseidonParameters { pub rounds: RoundNumbers, /// External matrix - pub m_e: SquareMatrix, + pub m_e: SquareMatrix, /// Internal matrix - pub m_i: SquareMatrix, + pub m_i: SquareMatrix, /// Round constants - pub arc: ArcMatrix, + pub arc: ArcMatrix, } From 392b4cb22a2dbd664e811c4c0637ddb33634e54b Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 7 Feb 2024 17:02:40 -0500 Subject: [PATCH 10/54] hack: impl Fq::pow which needs to exist upstream --- poseidon-parameters/src/lib.rs | 18 ++++++++++++++++++ poseidon-parameters/src/matrix.rs | 1 + 2 files changed, 19 insertions(+) diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index a0916c1..bfb1c8c 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -5,6 +5,8 @@ //! The API here is split into [`v1`] and [`v2`] to avoid confusion //! between the two versions. +use decaf377::Fq; + mod alpha; mod arc_matrix; mod error; @@ -21,3 +23,19 @@ pub mod v1; /// Structures related to Poseidon version 2 parameters. pub mod v2; + +pub trait StuffThatNeedsToGoInDecaf377 { + fn pow>(&self, exp: S) -> Self; +} + +// TEMP +impl StuffThatNeedsToGoInDecaf377 for Fq { + fn pow>(&self, exp: S) -> Self { + let mut res = Fq::one(); + let exp_u64 = exp.as_ref(); + for _ in 0..exp_u64[0] { + res *= self; + } + res + } +} diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 45634c8..a26d079 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -247,6 +247,7 @@ impl SquareMatrixOperations for SquareMatrix { let dim = self.n_rows(); let mut elements = Vec::with_capacity(dim); // TODO: non arkworks Fq::pow + use crate::StuffThatNeedsToGoInDecaf377; for i in 0..dim { for j in 0..dim { elements.push((-Fq::one()).pow([(i + j) as u64])) From 584513bf5241b483500378b85ef59c4416f90323 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 7 Feb 2024 17:09:01 -0500 Subject: [PATCH 11/54] poseidon-parameters: remove num-integer dependency --- poseidon-parameters/Cargo.toml | 2 -- poseidon-parameters/src/matrix.rs | 8 +++----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/poseidon-parameters/Cargo.toml b/poseidon-parameters/Cargo.toml index f1adc5d..2097106 100644 --- a/poseidon-parameters/Cargo.toml +++ b/poseidon-parameters/Cargo.toml @@ -10,7 +10,6 @@ repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] ark-ff = { version = "^0.4.0", default-features = false, optional = true } -num-integer = { version = "0.1.45", default-features = false } decaf377 = { version="0.8.0", default-features = false } [dev-dependencies] @@ -29,6 +28,5 @@ arkworks = [ ] std = [ "ark-ff/std", - "num-integer/std", "decaf377/std", ] diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index a26d079..fceef56 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -1,8 +1,5 @@ use core::ops::Mul; -// TODO: This library needs to be replaced -use num_integer::Roots; - use crate::error::PoseidonParameterError; use crate::matrix_ops::{mat_mul, MatrixOperations, SquareMatrixOperations}; use decaf377::Fq; @@ -330,8 +327,9 @@ impl Mul for SquareMatrix { impl SquareMatrix { /// Create a `SquareMatrix` from a vector of elements. pub fn from_vec(elements: Vec) -> Self { - let dim = elements.len().sqrt(); - if dim * dim != elements.len() { + let length_of_elements_vec = elements.len(); + let dim = (length_of_elements_vec as f64).sqrt() as usize; + if dim * dim != length_of_elements_vec { panic!("SquareMatrix must be square") } Self(Matrix::new(dim, dim, elements)) From 8bade817487bd2523c1253f055d82e078a7cc3e8 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 7 Feb 2024 18:43:29 -0500 Subject: [PATCH 12/54] poseidon-parameters: replace all vec operations --- poseidon-parameters/Cargo.toml | 1 + poseidon-parameters/src/arc_matrix.rs | 21 ++++--- poseidon-parameters/src/lib.rs | 2 + poseidon-parameters/src/matrix.rs | 88 +++++++++++++++++---------- poseidon-parameters/src/matrix_ops.rs | 20 +++--- poseidon-parameters/src/mds_matrix.rs | 29 +++++---- 6 files changed, 99 insertions(+), 62 deletions(-) diff --git a/poseidon-parameters/Cargo.toml b/poseidon-parameters/Cargo.toml index 2097106..e1c53e0 100644 --- a/poseidon-parameters/Cargo.toml +++ b/poseidon-parameters/Cargo.toml @@ -11,6 +11,7 @@ repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] ark-ff = { version = "^0.4.0", default-features = false, optional = true } decaf377 = { version="0.8.0", default-features = false } +heapless = { version="0.8.0" } [dev-dependencies] ark-ed-on-bls12-377 = "0.4" diff --git a/poseidon-parameters/src/arc_matrix.rs b/poseidon-parameters/src/arc_matrix.rs index 6bd26c9..c5d9639 100644 --- a/poseidon-parameters/src/arc_matrix.rs +++ b/poseidon-parameters/src/arc_matrix.rs @@ -1,5 +1,8 @@ -use crate::{error::PoseidonParameterError, matrix::Matrix, matrix_ops::MatrixOperations}; +use crate::{ + error::PoseidonParameterError, matrix::Matrix, matrix_ops::MatrixOperations, MAX_DIMENSION, +}; use decaf377::Fq; +use heapless::Vec; /// Represents an matrix of round constants. /// @@ -9,11 +12,11 @@ use decaf377::Fq; pub struct ArcMatrix(pub Matrix); impl MatrixOperations for ArcMatrix { - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { + fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { Self(Matrix::new(n_rows, n_cols, elements)) } - fn elements(&self) -> &Vec { + fn elements(&self) -> &Vec { self.0.elements() } @@ -25,7 +28,7 @@ impl MatrixOperations for ArcMatrix { self.0.set_element(i, j, val) } - fn rows(&self) -> Vec<&[Fq]> { + fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION> { self.0.rows() } @@ -49,9 +52,9 @@ impl MatrixOperations for ArcMatrix { } } -impl From for Vec> { +impl From for Vec, MAX_DIMENSION> { fn from(arc: ArcMatrix) -> Self { - let mut rows = Vec::>::new(); + let mut rows = Vec::, MAX_DIMENSION>::new(); let m = &arc.0; for i in 0..arc.n_rows() { @@ -78,11 +81,11 @@ pub struct OptimizedArcMatrix(pub ArcMatrix); impl MatrixOperations for OptimizedArcMatrix { /// Create a `OptimizedArcMatrix` from its elements. - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { + fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { Self(ArcMatrix::new(n_rows, n_cols, elements)) } - fn elements(&self) -> &Vec { + fn elements(&self) -> &Vec { self.0.elements() } @@ -94,7 +97,7 @@ impl MatrixOperations for OptimizedArcMatrix { self.0.set_element(i, j, val) } - fn rows(&self) -> Vec<&[Fq]> { + fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION> { self.0.rows() } diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index bfb1c8c..9b40008 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -18,6 +18,8 @@ mod round_numbers; #[cfg(test)] mod tests; +const MAX_DIMENSION: usize = 100; + /// Structures related to Poseidon version 1 parameters. pub mod v1; diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index fceef56..7982511 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -1,7 +1,9 @@ use core::ops::Mul; +use heapless::Vec; use crate::error::PoseidonParameterError; use crate::matrix_ops::{mat_mul, MatrixOperations, SquareMatrixOperations}; +use crate::MAX_DIMENSION; use decaf377::Fq; /// Represents a matrix over `PrimeField` elements. @@ -11,7 +13,7 @@ use decaf377::Fq; #[derive(Clone, Debug, PartialEq, Eq)] pub struct Matrix { /// Elements of the matrix. - pub elements: Vec, + pub elements: Vec, /// Number of columns. pub n_cols: usize, /// Number of rows. @@ -19,7 +21,7 @@ pub struct Matrix { } impl MatrixOperations for Matrix { - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { + fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { if elements.len() != n_rows * n_cols { panic!("Matrix has an insufficient number of elements") } @@ -30,7 +32,7 @@ impl MatrixOperations for Matrix { } } - fn elements(&self) -> &Vec { + fn elements(&self) -> &Vec { &self.elements } @@ -42,7 +44,7 @@ impl MatrixOperations for Matrix { self.elements[i * self.n_cols + j] = val } - fn rows(&self) -> Vec<&[Fq]> { + fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION> { self.elements.chunks(self.n_cols).collect() } @@ -55,11 +57,11 @@ impl MatrixOperations for Matrix { } fn transpose(&self) -> Self { - let mut transposed_elements = Vec::with_capacity(self.n_rows * self.n_cols); + let mut transposed_elements = Vec::::new(); for j in 0..self.n_cols { for i in 0..self.n_rows { - transposed_elements.push(self.get_element(i, j)) + transposed_elements.push(self.get_element(i, j)); } } Self::new(self.n_cols, self.n_rows, transposed_elements) @@ -73,7 +75,7 @@ impl MatrixOperations for Matrix { return Err(PoseidonParameterError::InvalidMatrixDimensions); } - let mut new_elements = Vec::with_capacity(self.n_rows * self.n_cols); + let mut new_elements = Vec::::new(); for i in 0..self.n_rows { for j in 0..self.n_cols { new_elements.push(self.get_element(i, j) * rhs.get_element(i, j)); @@ -90,7 +92,8 @@ impl Mul for Matrix { fn mul(self, rhs: Fq) -> Self::Output { let elements = self.elements(); - let new_elements: Vec = elements.iter().map(|element| *element * rhs).collect(); + let new_elements: Vec = + elements.iter().map(|element| *element * rhs).collect(); Self::new(self.n_rows(), self.n_cols(), new_elements) } } @@ -98,7 +101,7 @@ impl Mul for Matrix { impl Matrix { /// Get row vector at a specified row index pub fn row_vector(&self, i: usize) -> Matrix { - let mut row_elements = Vec::with_capacity(self.n_cols); + let mut row_elements = Vec::::new(); for j in 0..self.n_cols { row_elements.push(self.get_element(i, j)); } @@ -111,11 +114,11 @@ impl Matrix { pub struct SquareMatrix(pub Matrix); impl MatrixOperations for SquareMatrix { - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { + fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { Self(Matrix::new(n_rows, n_cols, elements)) } - fn elements(&self) -> &Vec { + fn elements(&self) -> &Vec { self.0.elements() } @@ -127,7 +130,7 @@ impl MatrixOperations for SquareMatrix { self.0.set_element(i, j, val) } - fn rows(&self) -> Vec<&[Fq]> { + fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION> { self.0.rows() } @@ -157,10 +160,13 @@ impl SquareMatrixOperations for SquareMatrix { let identity = Self::identity(self.n_rows()); if self.n_rows() == 1 { - return Ok(Self::from_vec(vec![self - .get_element(0, 0) - .inverse() - .expect("inverse of single element must exist for 1x1 matrix")])); + let mut elements = Vec::::new(); + elements.push( + self.get_element(0, 0) + .inverse() + .expect("inverse of single element must exist for 1x1 matrix"), + ); + return Ok(Self::from_vec(elements)); } let determinant = self.determinant(); @@ -186,7 +192,13 @@ impl SquareMatrixOperations for SquareMatrix { /// Construct a dim x dim identity matrix fn identity(dim: usize) -> Self { - let mut m = Self::from_vec(vec![Fq::zero(); dim * dim]); + let mut elements = Vec::::new(); + for _ in 0..dim { + for _ in 0..dim { + elements.push(Fq::zero()); + } + } + let mut m = Self::from_vec(elements); // Set diagonals to 1 for i in 0..dim { @@ -200,34 +212,40 @@ impl SquareMatrixOperations for SquareMatrix { fn minors(&self) -> Self { match self.n_cols() { 0 => panic!("matrix has no elements!"), - 1 => Self::from_vec(vec![self.get_element(0, 0)]), + 1 => { + let mut elements = Vec::::new(); + elements.push(self.get_element(0, 0)); + Self::from_vec(elements) + } 2 => { + let mut elements = Vec::::new(); let a = self.get_element(0, 0); let b = self.get_element(0, 1); let c = self.get_element(1, 0); let d = self.get_element(1, 1); - Self::from_vec(vec![d, c, b, a]) + elements.extend_from_slice(&[a, c, b, a]); + Self::from_vec(elements) } _ => { let dim = self.n_rows(); - let mut minor_matrix_elements = Vec::with_capacity(dim * dim); + let mut minor_matrix_elements = Vec::::new(); for i in 0..dim { for j in 0..dim { - let mut elements: Vec = Vec::new(); + let mut elements: Vec = Vec::new(); for k in 0..i { for l in 0..j { - elements.push(self.get_element(k, l)) + elements.push(self.get_element(k, l)); } for l in (j + 1)..dim { - elements.push(self.get_element(k, l)) + elements.push(self.get_element(k, l)); } } for k in i + 1..dim { for l in 0..j { - elements.push(self.get_element(k, l)) + elements.push(self.get_element(k, l)); } for l in (j + 1)..dim { - elements.push(self.get_element(k, l)) + elements.push(self.get_element(k, l)); } } let minor = Self::from_vec(elements); @@ -242,12 +260,13 @@ impl SquareMatrixOperations for SquareMatrix { /// Compute the cofactor matrix, i.e. $C_{ij} = (-1)^{i+j}$ fn cofactors(&self) -> Self { let dim = self.n_rows(); - let mut elements = Vec::with_capacity(dim); + let mut elements = Vec::::new(); + // TODO: non arkworks Fq::pow use crate::StuffThatNeedsToGoInDecaf377; for i in 0..dim { for j in 0..dim { - elements.push((-Fq::one()).pow([(i + j) as u64])) + elements.push((-Fq::one()).pow([(i + j) as u64])); } } Self::from_vec(elements) @@ -287,15 +306,15 @@ impl SquareMatrixOperations for SquareMatrix { let dim = self.n_rows(); for i in 0..dim { - let mut elements: Vec = Vec::new(); + let mut elements: Vec = Vec::new(); for k in 0..i { for l in 1..dim { - elements.push(self.get_element(k, l)) + elements.push(self.get_element(k, l)); } } for k in i + 1..dim { for l in 1..dim { - elements.push(self.get_element(k, l)) + elements.push(self.get_element(k, l)); } } let minor = Self::from_vec(elements); @@ -319,14 +338,15 @@ impl Mul for SquareMatrix { fn mul(self, rhs: Fq) -> Self::Output { let elements = self.0.elements(); - let new_elements: Vec = elements.iter().map(|element| *element * rhs).collect(); + let new_elements: Vec = + elements.iter().map(|element| *element * rhs).collect(); Self::from_vec(new_elements) } } impl SquareMatrix { /// Create a `SquareMatrix` from a vector of elements. - pub fn from_vec(elements: Vec) -> Self { + pub fn from_vec(elements: Vec) -> Self { let length_of_elements_vec = elements.len(); let dim = (length_of_elements_vec as f64).sqrt() as usize; if dim * dim != length_of_elements_vec { @@ -342,6 +362,8 @@ impl SquareMatrix { /// Create a 2x2 `SquareMatrix` from four elements. pub fn new_2x2(a: Fq, b: Fq, c: Fq, d: Fq) -> SquareMatrix { - Self::from_vec(vec![a, b, c, d]) + let mut elements = Vec::::new(); + elements.extend_from_slice(&[a, b, c, d]); + Self::from_vec(elements) } } diff --git a/poseidon-parameters/src/matrix_ops.rs b/poseidon-parameters/src/matrix_ops.rs index 3ef1539..5ca6edc 100644 --- a/poseidon-parameters/src/matrix_ops.rs +++ b/poseidon-parameters/src/matrix_ops.rs @@ -1,19 +1,21 @@ use core::slice::Chunks; +use heapless::Vec; use crate::error::PoseidonParameterError; +use crate::MAX_DIMENSION; use decaf377::Fq; pub trait MatrixOperations { /// Create a new matrix - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self; + fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self; /// Access elements as a vector - fn elements(&self) -> &Vec; + fn elements(&self) -> &Vec; /// Get element[i,j] fn get_element(&self, i: usize, j: usize) -> Fq; /// Set element[i,j] fn set_element(&mut self, i: usize, j: usize, val: Fq); /// Get rows - fn rows(&self) -> Vec<&[Fq]>; + fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION>; /// Get rows in chunks fn iter_rows(&self) -> Chunks { self.elements().chunks(self.n_cols()) @@ -47,7 +49,7 @@ pub fn mat_mul(lhs: &M, rhs: &M) -> Result>() + .collect::>() }) .collect(), )) @@ -64,12 +66,12 @@ pub fn dot_product(a: &[Fq], b: &[Fq]) -> Fq { pub struct Polynomial { /// The coefficients of the polynomial a_0, ..., a_i - pub coeffs: Vec, + pub coeffs: Vec, } impl Polynomial { /// Construct a new polynomial - pub fn new(coeffs: Vec) -> Self { + pub fn new(coeffs: Vec) -> Self { Self { coeffs } } @@ -144,7 +146,11 @@ mod tests { #[test] fn poly_evaluate() { // f(x) = 1 + 2x + 3x^2 - let poly = Polynomial::new(vec![Fq::from(1u64), Fq::from(2u64), Fq::from(3u64)]); + let mut coeffs_vec = Vec::::new(); + coeffs_vec.push(Fq::from(1u64)); + coeffs_vec.push(Fq::from(2u64)); + coeffs_vec.push(Fq::from(3u64)); + let poly = Polynomial::new(coeffs_vec); assert_eq!(poly.max_degree(), 2); assert_eq!(poly.evaluate(Fq::from(2u64)), Fq::from(17u64)); } diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index f268ff0..22dac81 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -2,19 +2,21 @@ use crate::{ error::PoseidonParameterError, matrix::{Matrix, SquareMatrix}, matrix_ops::{MatrixOperations, SquareMatrixOperations}, + MAX_DIMENSION, }; use decaf377::Fq; +use heapless::Vec; /// Represents an MDS (maximum distance separable) matrix. #[derive(Clone, Debug, PartialEq, Eq)] pub struct MdsMatrix(pub SquareMatrix); impl MatrixOperations for MdsMatrix { - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { + fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { Self(SquareMatrix::new(n_rows, n_cols, elements)) } - fn elements(&self) -> &Vec { + fn elements(&self) -> &Vec { self.0.elements() } @@ -26,7 +28,7 @@ impl MatrixOperations for MdsMatrix { self.0.set_element(i, j, val) } - fn rows(&self) -> Vec<&[Fq]> { + fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION> { self.0.rows() } @@ -59,7 +61,7 @@ impl MdsMatrix { /// using the Cauchy method in `fixed_cauchy_matrix` or /// using the random subsampling method described in the original /// paper. - pub fn from_elements(elements: Vec) -> Self { + pub fn from_elements(elements: Vec) -> Self { Self(SquareMatrix::from_vec(elements)) } @@ -74,7 +76,8 @@ impl MdsMatrix { /// /// Ref: p.20 of the Poseidon paper pub fn v(&self) -> Matrix { - let elements: Vec = self.0 .0.elements()[1..self.0 .0.n_rows()].to_vec(); + let mut elements = Vec::::new(); + elements.extend_from_slice(&self.0 .0.elements()[1..self.0 .0.n_rows()]); Matrix::new(1, self.0.n_rows() - 1, elements) } @@ -82,9 +85,9 @@ impl MdsMatrix { /// /// Ref: p.20 of the Poseidon paper pub fn w(&self) -> Matrix { - let mut elements = Vec::with_capacity(self.0.n_rows() - 1); + let mut elements = Vec::::new(); for i in 1..self.n_rows() { - elements.push(self.get_element(i, 0)) + elements.push(self.get_element(i, 0)); } Matrix::new(&self.n_rows() - 1, 1, elements) } @@ -96,10 +99,10 @@ impl MdsMatrix { /// Ref: p.20 of the Poseidon paper pub fn hat(&self) -> SquareMatrix { let dim = self.n_rows(); - let mut mhat_elements = Vec::with_capacity((dim - 1) * (dim - 1)); + let mut mhat_elements = Vec::::new(); for i in 1..dim { for j in 1..dim { - mhat_elements.push(self.0.get_element(i, j)) + mhat_elements.push(self.0.get_element(i, j)); } } @@ -107,9 +110,9 @@ impl MdsMatrix { } } -impl From for Vec> { +impl From for Vec, MAX_DIMENSION> { fn from(val: MdsMatrix) -> Self { - let mut rows = Vec::>::new(); + let mut rows = Vec::, MAX_DIMENSION>::new(); for i in 0..val.0.n_rows() { let mut row = Vec::new(); for j in 0..val.0.n_rows() { @@ -143,7 +146,7 @@ pub struct OptimizedMdsMatrices { /// M_i pub M_i: Matrix, /// v_collection: one per round. - pub v_collection: Vec, + pub v_collection: Vec, /// w_hat_collection: one per round - pub w_hat_collection: Vec, + pub w_hat_collection: Vec, } From 956e04ee85cb0e07c03381cb435e2427c6cbc6ad Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Thu, 8 Feb 2024 12:01:37 -0500 Subject: [PATCH 13/54] ci: ledger uses thumbv8m.main-none-eabi --- .github/workflows/rust.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index e99ce60..74bea5f 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -86,12 +86,12 @@ jobs: profile: minimal toolchain: stable override: true - - run: rustup target add thumbv7em-none-eabihf + - run: rustup target add thumbv8m.main-none-eabi - uses: Swatinem/rust-cache@v1 - uses: actions-rs/cargo@v1 with: command: build - args: --package poseidon377 --target thumbv7em-none-eabihf --no-default-features + args: --package poseidon377 --target thumbv8m.main-none-eabi --no-default-features # clippy: # name: Clippy From d5acc20eebf617a9762493e57a23ae643eb347b2 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Thu, 8 Feb 2024 13:14:12 -0500 Subject: [PATCH 14/54] poseidon-parameters: get tests running using heapless --- poseidon-parameters/Cargo.toml | 10 +-- poseidon-parameters/src/lib.rs | 2 +- poseidon-parameters/src/tests.rs | 136 ++++++++++++++++--------------- 3 files changed, 74 insertions(+), 74 deletions(-) diff --git a/poseidon-parameters/Cargo.toml b/poseidon-parameters/Cargo.toml index e1c53e0..d02836e 100644 --- a/poseidon-parameters/Cargo.toml +++ b/poseidon-parameters/Cargo.toml @@ -9,25 +9,19 @@ keywords = ["no_std"] repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] -ark-ff = { version = "^0.4.0", default-features = false, optional = true } decaf377 = { version="0.8.0", default-features = false } heapless = { version="0.8.0" } [dev-dependencies] +ark-ff = { version = "^0.4.0", default-features = false } ark-ed-on-bls12-377 = "0.4" proptest = "1" [features] -default = ["arkworks"] +default = ["std"] alloc = [ "decaf377/alloc" ] -arkworks = [ - "std", - "ark-ff", - "decaf377/arkworks", -] std = [ - "ark-ff/std", "decaf377/std", ] diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index 9b40008..9d7e734 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -18,7 +18,7 @@ mod round_numbers; #[cfg(test)] mod tests; -const MAX_DIMENSION: usize = 100; +pub const MAX_DIMENSION: usize = 100; /// Structures related to Poseidon version 1 parameters. pub mod v1; diff --git a/poseidon-parameters/src/tests.rs b/poseidon-parameters/src/tests.rs index 624da7c..093b234 100644 --- a/poseidon-parameters/src/tests.rs +++ b/poseidon-parameters/src/tests.rs @@ -3,9 +3,11 @@ use proptest::prelude::*; use v1::Matrix; use super::*; +use heapless::Vec; use crate::matrix_ops::mat_mul; use crate::matrix_ops::MatrixOperations; +use crate::MAX_DIMENSION; use crate::{matrix::SquareMatrix, matrix_ops::SquareMatrixOperations}; #[test] @@ -21,12 +23,9 @@ fn identity_matrix() { fn square_matmul() { let identity = SquareMatrix::identity(2); - let matrix_2x2 = SquareMatrix::from_vec(vec![ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - ]); + let mut elements = Vec::::new(); + elements.extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]); + let matrix_2x2 = SquareMatrix::from_vec(elements); let res = mat_mul(&matrix_2x2, &identity).unwrap(); assert_eq!(res.get_element(0, 0), Fq::one()); @@ -37,14 +36,15 @@ fn square_matmul() { #[test] fn nonsquare_matmul() { - let test_elements = vec![ + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[ Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64), Fq::from(5u64), Fq::from(6u64), - ]; + ]); let matrix_2x3 = Matrix::new(3, 2, test_elements); let res = mat_mul(&matrix_2x3, &matrix_2x3); @@ -65,14 +65,15 @@ fn nonsquare_matmul() { #[test] fn hadamard_product() { - let test_elements = vec![ + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[ Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64), Fq::from(5u64), Fq::from(6u64), - ]; + ]); let matrix_2x3 = Matrix::new(3, 2, test_elements); let res = matrix_2x3.hadamard_product(&matrix_2x3).expect("is ok"); @@ -86,18 +87,16 @@ fn hadamard_product() { #[test] fn transpose() { - let matrix_2x3 = Matrix::new( - 3, - 2, - vec![ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - Fq::from(5u64), - Fq::from(6u64), - ], - ); + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[ + Fq::one(), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + Fq::from(5u64), + Fq::from(6u64), + ]); + let matrix_2x3 = Matrix::new(3, 2, test_elements); assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); assert_eq!(matrix_2x3.get_element(1, 0), Fq::from(3u64)); assert_eq!(matrix_2x3.get_element(1, 1), Fq::from(4u64)); @@ -110,12 +109,9 @@ fn transpose() { assert_eq!(res.get_element(0, 2), Fq::from(5u64)); assert_eq!(res.get_element(1, 2), Fq::from(6u64)); - let matrix_2x2 = SquareMatrix::from_vec(vec![ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - ]); + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]); + let matrix_2x2 = SquareMatrix::from_vec(test_elements); let res = matrix_2x2.transpose(); assert_eq!(res.get_element(0, 0), Fq::one()); @@ -127,11 +123,15 @@ fn transpose() { #[test] fn cofactors() { let identity_1x1 = SquareMatrix::identity(1); - let expected_res = SquareMatrix::from_vec(vec![Fq::one()]); + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[Fq::one()]); + let expected_res = SquareMatrix::from_vec(test_elements); assert_eq!(identity_1x1.cofactors(), expected_res); let identity_2x2 = SquareMatrix::identity(2); - let expected_res = SquareMatrix::from_vec(vec![Fq::one(), -Fq::one(), -Fq::one(), Fq::one()]); + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[Fq::one(), -Fq::one(), -Fq::one(), Fq::one()]); + let expected_res = SquareMatrix::from_vec(test_elements); assert_eq!(identity_2x2.cofactors(), expected_res); } @@ -144,9 +144,9 @@ fn fq_strategy() -> BoxedStrategy { proptest! { #[test] fn inverse_2x2(a in fq_strategy(), b in fq_strategy(), c in fq_strategy(), d in fq_strategy()) { - let matrix_2x2 = SquareMatrix::from_vec(vec![ - a,b,c,d - ]); + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[a, b, c, d]); + let matrix_2x2 = SquareMatrix::from_vec(test_elements); let res = matrix_2x2.inverse().unwrap(); assert_eq!(mat_mul(&matrix_2x2, &res).unwrap(), SquareMatrix::identity(2)); @@ -155,19 +155,18 @@ proptest! { #[test] fn inverse() { - let matrix_1x1 = SquareMatrix::from_vec(vec![Fq::from(2u64)]); + let mut test_elements = Vec::::new(); + test_elements.push(Fq::from(2u64)); + let matrix_1x1 = SquareMatrix::from_vec(test_elements); let res = matrix_1x1.inverse().unwrap(); assert_eq!( mat_mul(&matrix_1x1, &res).unwrap(), SquareMatrix::identity(1) ); - let matrix_2x2 = SquareMatrix::from_vec(vec![ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - ]); + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]); + let matrix_2x2 = SquareMatrix::from_vec(test_elements); let res = matrix_2x2.inverse().unwrap(); assert_eq!( @@ -178,7 +177,8 @@ fn inverse() { let identity_3x3 = SquareMatrix::identity(3); assert_eq!(identity_3x3, identity_3x3.inverse().unwrap()); - let matrix_3x3 = SquareMatrix::from_vec(vec![ + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[ Fq::from(3u64), Fq::from(0u64), Fq::from(2u64), @@ -189,12 +189,14 @@ fn inverse() { Fq::from(1u64), Fq::from(1u64), ]); + let matrix_3x3 = SquareMatrix::from_vec(test_elements); let res = matrix_3x3.inverse().unwrap(); assert_eq!( mat_mul(&matrix_3x3, &res).unwrap(), SquareMatrix::identity(3) ); - let expected_res = SquareMatrix::from_vec(vec![ + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[ Fq::from(2u64), Fq::from(2u64), Fq::from(0u64), @@ -204,35 +206,31 @@ fn inverse() { Fq::from(2u64), -Fq::from(3u64), Fq::from(0u64), - ]) * (Fq::one() / Fq::from(10u64)); + ]); + let expected_res = SquareMatrix::from_vec(test_elements) * (Fq::one() / Fq::from(10u64)); assert_eq!(res, expected_res); } #[test] fn create_matrix_from_vec() { - let matrix_2x2 = SquareMatrix::from_vec(vec![ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - ]); + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]); + let matrix_2x2 = SquareMatrix::from_vec(test_elements); assert_eq!(matrix_2x2.get_element(0, 0), Fq::one()); assert_eq!(matrix_2x2.get_element(0, 1), Fq::from(2u64)); assert_eq!(matrix_2x2.get_element(1, 0), Fq::from(3u64)); assert_eq!(matrix_2x2.get_element(1, 1), Fq::from(4u64)); - let matrix_2x3 = Matrix::new( - 2, - 3, - vec![ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - Fq::from(5u64), - Fq::from(6u64), - ], - ); + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[ + Fq::one(), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + Fq::from(5u64), + Fq::from(6u64), + ]); + let matrix_2x3 = Matrix::new(2, 3, test_elements); assert_eq!(matrix_2x3.get_element(0, 0), Fq::one()); assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); assert_eq!(matrix_2x3.get_element(0, 2), Fq::from(3u64)); @@ -243,14 +241,18 @@ fn create_matrix_from_vec() { #[test] fn determinant() { - let matrix_1x1 = SquareMatrix::from_vec(vec![Fq::one()]); + let mut test_elements = Vec::::new(); + test_elements.push(Fq::one()); + let matrix_1x1 = SquareMatrix::from_vec(test_elements); assert_eq!(matrix_1x1.determinant(), Fq::one()); let a = Fq::one(); let b = Fq::one() + Fq::one(); let c = Fq::from(3u64); let d = Fq::from(4u64); - let matrix_2x2 = SquareMatrix::from_vec(vec![a, b, c, d]); + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[a, b, c, d]); + let matrix_2x2 = SquareMatrix::from_vec(test_elements); assert_eq!(matrix_2x2.determinant(), -Fq::from(2u64)); let e = Fq::from(5u64); @@ -258,12 +260,16 @@ fn determinant() { let g = Fq::from(7u64); let h = Fq::from(8u64); let i = Fq::from(9u64); - let matrix_3x3 = SquareMatrix::from_vec(vec![a, b, c, d, e, f, g, h, i]); + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[a, b, c, d, e, f, g, h, i]); + let matrix_3x3 = SquareMatrix::from_vec(test_elements); assert_eq!(matrix_3x3.determinant(), Fq::from(0u64)); let elem = Fq::from(10u64); - let matrix_4x4 = SquareMatrix::from_vec(vec![ + let mut test_elements = Vec::::new(); + test_elements.extend_from_slice(&[ a, b, c, d, e, f, g, h, i, elem, elem, elem, elem, elem, elem, elem, ]); + let matrix_4x4 = SquareMatrix::from_vec(test_elements); assert_eq!(matrix_4x4.determinant(), Fq::from(0u64)); } From e03561cffa123ae2a1bd988fa771697f67928582 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Thu, 8 Feb 2024 13:58:01 -0500 Subject: [PATCH 15/54] fix: 2x2 matrix inverse --- poseidon-parameters/src/matrix.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 7982511..2369830 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -223,7 +223,7 @@ impl SquareMatrixOperations for SquareMatrix { let b = self.get_element(0, 1); let c = self.get_element(1, 0); let d = self.get_element(1, 1); - elements.extend_from_slice(&[a, c, b, a]); + elements.extend_from_slice(&[d, c, b, a]); Self::from_vec(elements) } _ => { From 0bd5f2d3aab16ca42e3ed3ac4b68954dee227754 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Thu, 8 Feb 2024 14:02:56 -0500 Subject: [PATCH 16/54] poseidon-parameters: heapless Vec operations are fallible --- poseidon-parameters/src/arc_matrix.rs | 5 +- poseidon-parameters/src/matrix.rs | 72 ++++++++--- poseidon-parameters/src/matrix_ops.rs | 12 +- poseidon-parameters/src/mds_matrix.rs | 17 ++- poseidon-parameters/src/tests.rs | 174 +++++++++++++++----------- 5 files changed, 179 insertions(+), 101 deletions(-) diff --git a/poseidon-parameters/src/arc_matrix.rs b/poseidon-parameters/src/arc_matrix.rs index c5d9639..cec01af 100644 --- a/poseidon-parameters/src/arc_matrix.rs +++ b/poseidon-parameters/src/arc_matrix.rs @@ -60,9 +60,10 @@ impl From for Vec, MAX_DIMENSION> { for i in 0..arc.n_rows() { let mut row = Vec::new(); for j in 0..arc.n_cols() { - row.push(m.get_element(i, j)); + row.push(m.get_element(i, j)) + .expect("capacity should not be exceeded"); } - rows.push(row); + rows.push(row).expect("capacity should not be exceeded"); } rows } diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 2369830..cb0b399 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -61,7 +61,9 @@ impl MatrixOperations for Matrix { for j in 0..self.n_cols { for i in 0..self.n_rows { - transposed_elements.push(self.get_element(i, j)); + transposed_elements + .push(self.get_element(i, j)) + .expect("capacity should not be exceeded"); } } Self::new(self.n_cols, self.n_rows, transposed_elements) @@ -78,7 +80,9 @@ impl MatrixOperations for Matrix { let mut new_elements = Vec::::new(); for i in 0..self.n_rows { for j in 0..self.n_cols { - new_elements.push(self.get_element(i, j) * rhs.get_element(i, j)); + new_elements + .push(self.get_element(i, j) * rhs.get_element(i, j)) + .expect("capacity should not be exceeded"); } } @@ -103,7 +107,9 @@ impl Matrix { pub fn row_vector(&self, i: usize) -> Matrix { let mut row_elements = Vec::::new(); for j in 0..self.n_cols { - row_elements.push(self.get_element(i, j)); + row_elements + .push(self.get_element(i, j)) + .expect("capacity should not be exceeded"); } Matrix::new(1, self.n_cols, row_elements) } @@ -161,11 +167,13 @@ impl SquareMatrixOperations for SquareMatrix { if self.n_rows() == 1 { let mut elements = Vec::::new(); - elements.push( - self.get_element(0, 0) - .inverse() - .expect("inverse of single element must exist for 1x1 matrix"), - ); + elements + .push( + self.get_element(0, 0) + .inverse() + .expect("inverse of single element must exist for 1x1 matrix"), + ) + .expect("capacity should not be exceeded"); return Ok(Self::from_vec(elements)); } @@ -195,7 +203,9 @@ impl SquareMatrixOperations for SquareMatrix { let mut elements = Vec::::new(); for _ in 0..dim { for _ in 0..dim { - elements.push(Fq::zero()); + elements + .push(Fq::zero()) + .expect("capacity should not be exceeded"); } } let mut m = Self::from_vec(elements); @@ -214,7 +224,9 @@ impl SquareMatrixOperations for SquareMatrix { 0 => panic!("matrix has no elements!"), 1 => { let mut elements = Vec::::new(); - elements.push(self.get_element(0, 0)); + elements + .push(self.get_element(0, 0)) + .expect("capacity should not be exceeded"); Self::from_vec(elements) } 2 => { @@ -223,7 +235,9 @@ impl SquareMatrixOperations for SquareMatrix { let b = self.get_element(0, 1); let c = self.get_element(1, 0); let d = self.get_element(1, 1); - elements.extend_from_slice(&[d, c, b, a]); + elements + .extend_from_slice(&[d, c, b, a]) + .expect("capacity should not be exceeded"); Self::from_vec(elements) } _ => { @@ -234,22 +248,32 @@ impl SquareMatrixOperations for SquareMatrix { let mut elements: Vec = Vec::new(); for k in 0..i { for l in 0..j { - elements.push(self.get_element(k, l)); + elements + .push(self.get_element(k, l)) + .expect("capacity should not be exceeded"); } for l in (j + 1)..dim { - elements.push(self.get_element(k, l)); + elements + .push(self.get_element(k, l)) + .expect("capacity should not be exceeded"); } } for k in i + 1..dim { for l in 0..j { - elements.push(self.get_element(k, l)); + elements + .push(self.get_element(k, l)) + .expect("capacity should not be exceeded"); } for l in (j + 1)..dim { - elements.push(self.get_element(k, l)); + elements + .push(self.get_element(k, l)) + .expect("capacity should not be exceeded"); } } let minor = Self::from_vec(elements); - minor_matrix_elements.push(minor.determinant()); + minor_matrix_elements + .push(minor.determinant()) + .expect("capacity should not be exceeded"); } } Self::from_vec(minor_matrix_elements) @@ -266,7 +290,9 @@ impl SquareMatrixOperations for SquareMatrix { use crate::StuffThatNeedsToGoInDecaf377; for i in 0..dim { for j in 0..dim { - elements.push((-Fq::one()).pow([(i + j) as u64])); + elements + .push((-Fq::one()).pow([(i + j) as u64])) + .expect("capacity should not be exceeded"); } } Self::from_vec(elements) @@ -309,12 +335,16 @@ impl SquareMatrixOperations for SquareMatrix { let mut elements: Vec = Vec::new(); for k in 0..i { for l in 1..dim { - elements.push(self.get_element(k, l)); + elements + .push(self.get_element(k, l)) + .expect("capacity should not be exceeded"); } } for k in i + 1..dim { for l in 1..dim { - elements.push(self.get_element(k, l)); + elements + .push(self.get_element(k, l)) + .expect("capacity should not be exceeded"); } } let minor = Self::from_vec(elements); @@ -363,7 +393,9 @@ impl SquareMatrix { /// Create a 2x2 `SquareMatrix` from four elements. pub fn new_2x2(a: Fq, b: Fq, c: Fq, d: Fq) -> SquareMatrix { let mut elements = Vec::::new(); - elements.extend_from_slice(&[a, b, c, d]); + elements + .extend_from_slice(&[a, b, c, d]) + .expect("capacity should not be exceeded"); Self::from_vec(elements) } } diff --git a/poseidon-parameters/src/matrix_ops.rs b/poseidon-parameters/src/matrix_ops.rs index 5ca6edc..531ef71 100644 --- a/poseidon-parameters/src/matrix_ops.rs +++ b/poseidon-parameters/src/matrix_ops.rs @@ -147,9 +147,15 @@ mod tests { fn poly_evaluate() { // f(x) = 1 + 2x + 3x^2 let mut coeffs_vec = Vec::::new(); - coeffs_vec.push(Fq::from(1u64)); - coeffs_vec.push(Fq::from(2u64)); - coeffs_vec.push(Fq::from(3u64)); + coeffs_vec + .push(Fq::from(1u64)) + .expect("capacity should not be exceeded"); + coeffs_vec + .push(Fq::from(2u64)) + .expect("capacity should not be exceeded"); + coeffs_vec + .push(Fq::from(3u64)) + .expect("capacity should not be exceeded"); let poly = Polynomial::new(coeffs_vec); assert_eq!(poly.max_degree(), 2); assert_eq!(poly.evaluate(Fq::from(2u64)), Fq::from(17u64)); diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index 22dac81..c1cbd8f 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -77,7 +77,9 @@ impl MdsMatrix { /// Ref: p.20 of the Poseidon paper pub fn v(&self) -> Matrix { let mut elements = Vec::::new(); - elements.extend_from_slice(&self.0 .0.elements()[1..self.0 .0.n_rows()]); + elements + .extend_from_slice(&self.0 .0.elements()[1..self.0 .0.n_rows()]) + .expect("capacity should not be exceeded"); Matrix::new(1, self.0.n_rows() - 1, elements) } @@ -87,7 +89,9 @@ impl MdsMatrix { pub fn w(&self) -> Matrix { let mut elements = Vec::::new(); for i in 1..self.n_rows() { - elements.push(self.get_element(i, 0)); + elements + .push(self.get_element(i, 0)) + .expect("capacity should not be exceeded"); } Matrix::new(&self.n_rows() - 1, 1, elements) } @@ -102,7 +106,9 @@ impl MdsMatrix { let mut mhat_elements = Vec::::new(); for i in 1..dim { for j in 1..dim { - mhat_elements.push(self.0.get_element(i, j)); + mhat_elements + .push(self.0.get_element(i, j)) + .expect("capacity should not be exceeded"); } } @@ -116,9 +122,10 @@ impl From for Vec, MAX_DIMENSION> { for i in 0..val.0.n_rows() { let mut row = Vec::new(); for j in 0..val.0.n_rows() { - row.push(val.0 .0.get_element(i, j)); + row.push(val.0 .0.get_element(i, j)) + .expect("capacity should not be exceeded"); } - rows.push(row); + rows.push(row).expect("capacity should not be exceeded"); } rows } diff --git a/poseidon-parameters/src/tests.rs b/poseidon-parameters/src/tests.rs index 093b234..83da81d 100644 --- a/poseidon-parameters/src/tests.rs +++ b/poseidon-parameters/src/tests.rs @@ -24,7 +24,9 @@ fn square_matmul() { let identity = SquareMatrix::identity(2); let mut elements = Vec::::new(); - elements.extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]); + elements + .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) + .expect("capacity should not be exceeded"); let matrix_2x2 = SquareMatrix::from_vec(elements); let res = mat_mul(&matrix_2x2, &identity).unwrap(); @@ -37,14 +39,16 @@ fn square_matmul() { #[test] fn nonsquare_matmul() { let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - Fq::from(5u64), - Fq::from(6u64), - ]); + test_elements + .extend_from_slice(&[ + Fq::one(), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + Fq::from(5u64), + Fq::from(6u64), + ]) + .expect("capacity should not be exceeded"); let matrix_2x3 = Matrix::new(3, 2, test_elements); let res = mat_mul(&matrix_2x3, &matrix_2x3); @@ -66,14 +70,16 @@ fn nonsquare_matmul() { #[test] fn hadamard_product() { let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - Fq::from(5u64), - Fq::from(6u64), - ]); + test_elements + .extend_from_slice(&[ + Fq::one(), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + Fq::from(5u64), + Fq::from(6u64), + ]) + .expect("capacity should not be exceeded"); let matrix_2x3 = Matrix::new(3, 2, test_elements); let res = matrix_2x3.hadamard_product(&matrix_2x3).expect("is ok"); @@ -88,14 +94,16 @@ fn hadamard_product() { #[test] fn transpose() { let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - Fq::from(5u64), - Fq::from(6u64), - ]); + test_elements + .extend_from_slice(&[ + Fq::one(), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + Fq::from(5u64), + Fq::from(6u64), + ]) + .expect("capacity should not be exceeded"); let matrix_2x3 = Matrix::new(3, 2, test_elements); assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); assert_eq!(matrix_2x3.get_element(1, 0), Fq::from(3u64)); @@ -110,7 +118,9 @@ fn transpose() { assert_eq!(res.get_element(1, 2), Fq::from(6u64)); let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]); + test_elements + .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) + .expect("capacity should not be exceeded"); let matrix_2x2 = SquareMatrix::from_vec(test_elements); let res = matrix_2x2.transpose(); @@ -124,28 +134,30 @@ fn transpose() { fn cofactors() { let identity_1x1 = SquareMatrix::identity(1); let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[Fq::one()]); + test_elements + .extend_from_slice(&[Fq::one()]) + .expect("capacity should not be exceeded"); let expected_res = SquareMatrix::from_vec(test_elements); assert_eq!(identity_1x1.cofactors(), expected_res); let identity_2x2 = SquareMatrix::identity(2); let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[Fq::one(), -Fq::one(), -Fq::one(), Fq::one()]); + test_elements + .extend_from_slice(&[Fq::one(), -Fq::one(), -Fq::one(), Fq::one()]) + .expect("capacity should not be exceeded"); let expected_res = SquareMatrix::from_vec(test_elements); assert_eq!(identity_2x2.cofactors(), expected_res); } fn fq_strategy() -> BoxedStrategy { - any::<[u64; 4]>() - .prop_map(|limbs| Fq::from_le_limbs(limbs)) - .boxed() + any::<[u64; 4]>().prop_map(Fq::from_le_limbs).boxed() } proptest! { #[test] fn inverse_2x2(a in fq_strategy(), b in fq_strategy(), c in fq_strategy(), d in fq_strategy()) { let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[a, b, c, d]); + test_elements.extend_from_slice(&[a, b, c, d]).expect("capacity should not be exceeded"); let matrix_2x2 = SquareMatrix::from_vec(test_elements); let res = matrix_2x2.inverse().unwrap(); @@ -156,7 +168,9 @@ proptest! { #[test] fn inverse() { let mut test_elements = Vec::::new(); - test_elements.push(Fq::from(2u64)); + test_elements + .push(Fq::from(2u64)) + .expect("capacity should not be exceeded"); let matrix_1x1 = SquareMatrix::from_vec(test_elements); let res = matrix_1x1.inverse().unwrap(); assert_eq!( @@ -165,7 +179,9 @@ fn inverse() { ); let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]); + test_elements + .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) + .expect("capacity should not be exceeded"); let matrix_2x2 = SquareMatrix::from_vec(test_elements); let res = matrix_2x2.inverse().unwrap(); @@ -178,17 +194,19 @@ fn inverse() { assert_eq!(identity_3x3, identity_3x3.inverse().unwrap()); let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[ - Fq::from(3u64), - Fq::from(0u64), - Fq::from(2u64), - Fq::from(2u64), - Fq::from(0u64), - -Fq::from(2u64), - Fq::from(0u64), - Fq::from(1u64), - Fq::from(1u64), - ]); + test_elements + .extend_from_slice(&[ + Fq::from(3u64), + Fq::from(0u64), + Fq::from(2u64), + Fq::from(2u64), + Fq::from(0u64), + -Fq::from(2u64), + Fq::from(0u64), + Fq::from(1u64), + Fq::from(1u64), + ]) + .expect("capacity should not be exceeded"); let matrix_3x3 = SquareMatrix::from_vec(test_elements); let res = matrix_3x3.inverse().unwrap(); assert_eq!( @@ -196,17 +214,19 @@ fn inverse() { SquareMatrix::identity(3) ); let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[ - Fq::from(2u64), - Fq::from(2u64), - Fq::from(0u64), - -Fq::from(2u64), - Fq::from(3u64), - Fq::from(10u64), - Fq::from(2u64), - -Fq::from(3u64), - Fq::from(0u64), - ]); + test_elements + .extend_from_slice(&[ + Fq::from(2u64), + Fq::from(2u64), + Fq::from(0u64), + -Fq::from(2u64), + Fq::from(3u64), + Fq::from(10u64), + Fq::from(2u64), + -Fq::from(3u64), + Fq::from(0u64), + ]) + .expect("capacity should not be exceeded"); let expected_res = SquareMatrix::from_vec(test_elements) * (Fq::one() / Fq::from(10u64)); assert_eq!(res, expected_res); } @@ -214,7 +234,9 @@ fn inverse() { #[test] fn create_matrix_from_vec() { let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]); + test_elements + .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) + .expect("capacity should not be exceeded"); let matrix_2x2 = SquareMatrix::from_vec(test_elements); assert_eq!(matrix_2x2.get_element(0, 0), Fq::one()); assert_eq!(matrix_2x2.get_element(0, 1), Fq::from(2u64)); @@ -222,14 +244,16 @@ fn create_matrix_from_vec() { assert_eq!(matrix_2x2.get_element(1, 1), Fq::from(4u64)); let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - Fq::from(5u64), - Fq::from(6u64), - ]); + test_elements + .extend_from_slice(&[ + Fq::one(), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + Fq::from(5u64), + Fq::from(6u64), + ]) + .expect("capacity should not be exceeded"); let matrix_2x3 = Matrix::new(2, 3, test_elements); assert_eq!(matrix_2x3.get_element(0, 0), Fq::one()); assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); @@ -242,7 +266,9 @@ fn create_matrix_from_vec() { #[test] fn determinant() { let mut test_elements = Vec::::new(); - test_elements.push(Fq::one()); + test_elements + .push(Fq::one()) + .expect("capacity should not be exceeded"); let matrix_1x1 = SquareMatrix::from_vec(test_elements); assert_eq!(matrix_1x1.determinant(), Fq::one()); @@ -251,7 +277,9 @@ fn determinant() { let c = Fq::from(3u64); let d = Fq::from(4u64); let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[a, b, c, d]); + test_elements + .extend_from_slice(&[a, b, c, d]) + .expect("capacity should not be exceeded"); let matrix_2x2 = SquareMatrix::from_vec(test_elements); assert_eq!(matrix_2x2.determinant(), -Fq::from(2u64)); @@ -261,15 +289,19 @@ fn determinant() { let h = Fq::from(8u64); let i = Fq::from(9u64); let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[a, b, c, d, e, f, g, h, i]); + test_elements + .extend_from_slice(&[a, b, c, d, e, f, g, h, i]) + .expect("capacity should not be exceeded"); let matrix_3x3 = SquareMatrix::from_vec(test_elements); assert_eq!(matrix_3x3.determinant(), Fq::from(0u64)); let elem = Fq::from(10u64); let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[ - a, b, c, d, e, f, g, h, i, elem, elem, elem, elem, elem, elem, elem, - ]); + test_elements + .extend_from_slice(&[ + a, b, c, d, e, f, g, h, i, elem, elem, elem, elem, elem, elem, elem, + ]) + .expect("capacity should not be exceeded"); let matrix_4x4 = SquareMatrix::from_vec(test_elements); assert_eq!(matrix_4x4.determinant(), Fq::from(0u64)); } From 318bcb2d67d0633517014b628f5d59a6497771a2 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 20 Feb 2024 12:28:03 -0500 Subject: [PATCH 17/54] wip: Vec interface --- poseidon-parameters/Cargo.toml | 1 - poseidon-parameters/src/arc_matrix.rs | 2 +- poseidon-parameters/src/lib.rs | 3 ++ poseidon-parameters/src/matrix.rs | 2 +- poseidon-parameters/src/matrix_ops.rs | 2 +- poseidon-parameters/src/mds_matrix.rs | 2 +- poseidon-parameters/src/vec.rs | 52 +++++++++++++++++++++++++++ 7 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 poseidon-parameters/src/vec.rs diff --git a/poseidon-parameters/Cargo.toml b/poseidon-parameters/Cargo.toml index d02836e..7f00a66 100644 --- a/poseidon-parameters/Cargo.toml +++ b/poseidon-parameters/Cargo.toml @@ -10,7 +10,6 @@ repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] decaf377 = { version="0.8.0", default-features = false } -heapless = { version="0.8.0" } [dev-dependencies] ark-ff = { version = "^0.4.0", default-features = false } diff --git a/poseidon-parameters/src/arc_matrix.rs b/poseidon-parameters/src/arc_matrix.rs index cec01af..3590c2f 100644 --- a/poseidon-parameters/src/arc_matrix.rs +++ b/poseidon-parameters/src/arc_matrix.rs @@ -1,8 +1,8 @@ +use crate::Vec; use crate::{ error::PoseidonParameterError, matrix::Matrix, matrix_ops::MatrixOperations, MAX_DIMENSION, }; use decaf377::Fq; -use heapless::Vec; /// Represents an matrix of round constants. /// diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index 9d7e734..4298496 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -14,6 +14,7 @@ mod matrix; mod matrix_ops; mod mds_matrix; mod round_numbers; +mod vec; #[cfg(test)] mod tests; @@ -26,6 +27,8 @@ pub mod v1; /// Structures related to Poseidon version 2 parameters. pub mod v2; +pub use vec::Vec; + pub trait StuffThatNeedsToGoInDecaf377 { fn pow>(&self, exp: S) -> Self; } diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index cb0b399..78a8625 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -1,5 +1,5 @@ +use crate::Vec; use core::ops::Mul; -use heapless::Vec; use crate::error::PoseidonParameterError; use crate::matrix_ops::{mat_mul, MatrixOperations, SquareMatrixOperations}; diff --git a/poseidon-parameters/src/matrix_ops.rs b/poseidon-parameters/src/matrix_ops.rs index 531ef71..d345fb8 100644 --- a/poseidon-parameters/src/matrix_ops.rs +++ b/poseidon-parameters/src/matrix_ops.rs @@ -1,5 +1,5 @@ +use crate::Vec; use core::slice::Chunks; -use heapless::Vec; use crate::error::PoseidonParameterError; use crate::MAX_DIMENSION; diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index c1cbd8f..5841b77 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -1,3 +1,4 @@ +use crate::Vec; use crate::{ error::PoseidonParameterError, matrix::{Matrix, SquareMatrix}, @@ -5,7 +6,6 @@ use crate::{ MAX_DIMENSION, }; use decaf377::Fq; -use heapless::Vec; /// Represents an MDS (maximum distance separable) matrix. #[derive(Clone, Debug, PartialEq, Eq)] diff --git a/poseidon-parameters/src/vec.rs b/poseidon-parameters/src/vec.rs new file mode 100644 index 0000000..af3cd7a --- /dev/null +++ b/poseidon-parameters/src/vec.rs @@ -0,0 +1,52 @@ +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct Vec { + data: [Option; N], + length: usize, +} + +impl Vec { + // Create a new Vec with a fixed capacity + pub fn new() -> Self { + Self { + data: [None; N], + length: 0, + } + } + + // Add an element to the end of the collection + pub fn push(&mut self, element: T) -> Result<(), &'static str> { + if self.length >= N { + Err("Vec is full") + } else { + self.data[self.length] = Some(element); + self.length += 1; + Ok(()) + } + } + + // Extend the collection with the elements from a slice + pub fn extend_from_slice(&mut self, slice: &[T]) -> Result<(), &'static str> { + if self.length + slice.len() > N { + return Err("Vec does not have enough capacity"); + } + + for &item in slice { + if self.length < N { + self.data[self.length] = Some(item); + self.length += 1; + } + } + + Ok(()) + } + + // Helper method to retrieve the current length of the collection + pub fn len(&self) -> usize { + self.length + } + + // Check if the collection is empty + pub fn is_empty(&self) -> bool { + self.length == 0 + } +} From 12b0266de28bd7bb01bc0cbd75758e2ae5acc048 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 21 Feb 2024 19:22:44 -0500 Subject: [PATCH 18/54] poseidon-parameters: add round_numbers --- poseidon-parameters/src/lib.rs | 15 +- poseidon-parameters/src/round_numbers.rs | 4 +- poseidon-parameters/src/tests.rs | 547 +++++++++++------------ poseidon-parameters/src/vec.rs | 52 --- 4 files changed, 281 insertions(+), 337 deletions(-) delete mode 100644 poseidon-parameters/src/vec.rs diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index 4298496..8253609 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -8,13 +8,12 @@ use decaf377::Fq; mod alpha; -mod arc_matrix; +// mod arc_matrix; mod error; -mod matrix; -mod matrix_ops; -mod mds_matrix; +// mod matrix; +// mod matrix_ops; +// mod mds_matrix; mod round_numbers; -mod vec; #[cfg(test)] mod tests; @@ -22,12 +21,10 @@ mod tests; pub const MAX_DIMENSION: usize = 100; /// Structures related to Poseidon version 1 parameters. -pub mod v1; +// pub mod v1; /// Structures related to Poseidon version 2 parameters. -pub mod v2; - -pub use vec::Vec; +// pub mod v2; pub trait StuffThatNeedsToGoInDecaf377 { fn pow>(&self, exp: S) -> Self; diff --git a/poseidon-parameters/src/round_numbers.rs b/poseidon-parameters/src/round_numbers.rs index 84698a0..96e1e78 100644 --- a/poseidon-parameters/src/round_numbers.rs +++ b/poseidon-parameters/src/round_numbers.rs @@ -8,7 +8,7 @@ pub struct RoundNumbers { } impl RoundNumbers { - /// Number of full rounds. + /// Number of full rounds. pub fn full(&self) -> usize { self.r_F } @@ -18,7 +18,7 @@ impl RoundNumbers { &mut self.r_F } - /// Number of partial rounds. + /// Number of partial rounds. pub fn partial(&self) -> usize { self.r_P } diff --git a/poseidon-parameters/src/tests.rs b/poseidon-parameters/src/tests.rs index 83da81d..51cdaae 100644 --- a/poseidon-parameters/src/tests.rs +++ b/poseidon-parameters/src/tests.rs @@ -1,307 +1,306 @@ use decaf377::Fq; use proptest::prelude::*; -use v1::Matrix; use super::*; -use heapless::Vec; -use crate::matrix_ops::mat_mul; -use crate::matrix_ops::MatrixOperations; -use crate::MAX_DIMENSION; -use crate::{matrix::SquareMatrix, matrix_ops::SquareMatrixOperations}; +// use crate::matrix_ops::mat_mul; +// use crate::matrix_ops::MatrixOperations; +// use crate::MAX_DIMENSION; +// use crate::{matrix::SquareMatrix, matrix_ops::SquareMatrixOperations}; +// use v1::Matrix; -#[test] -fn identity_matrix() { - let identity = SquareMatrix::identity(2); - assert_eq!(identity.get_element(0, 0), Fq::one()); - assert_eq!(identity.get_element(0, 1), Fq::zero()); - assert_eq!(identity.get_element(1, 1), Fq::one()); - assert_eq!(identity.get_element(1, 0), Fq::zero()); -} +// #[test] +// fn identity_matrix() { +// let identity = SquareMatrix::identity(2); +// assert_eq!(identity.get_element(0, 0), Fq::one()); +// assert_eq!(identity.get_element(0, 1), Fq::zero()); +// assert_eq!(identity.get_element(1, 1), Fq::one()); +// assert_eq!(identity.get_element(1, 0), Fq::zero()); +// } -#[test] -fn square_matmul() { - let identity = SquareMatrix::identity(2); +// #[test] +// fn square_matmul() { +// let identity = SquareMatrix::identity(2); - let mut elements = Vec::::new(); - elements - .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) - .expect("capacity should not be exceeded"); - let matrix_2x2 = SquareMatrix::from_vec(elements); +// let mut elements = Vec::::new(); +// elements +// .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) +// .expect("capacity should not be exceeded"); +// let matrix_2x2 = SquareMatrix::from_vec(elements); - let res = mat_mul(&matrix_2x2, &identity).unwrap(); - assert_eq!(res.get_element(0, 0), Fq::one()); - assert_eq!(res.get_element(0, 1), Fq::from(2u64)); - assert_eq!(res.get_element(1, 0), Fq::from(3u64)); - assert_eq!(res.get_element(1, 1), Fq::from(4u64)); -} +// let res = mat_mul(&matrix_2x2, &identity).unwrap(); +// assert_eq!(res.get_element(0, 0), Fq::one()); +// assert_eq!(res.get_element(0, 1), Fq::from(2u64)); +// assert_eq!(res.get_element(1, 0), Fq::from(3u64)); +// assert_eq!(res.get_element(1, 1), Fq::from(4u64)); +// } -#[test] -fn nonsquare_matmul() { - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - Fq::from(5u64), - Fq::from(6u64), - ]) - .expect("capacity should not be exceeded"); - let matrix_2x3 = Matrix::new(3, 2, test_elements); +// #[test] +// fn nonsquare_matmul() { +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[ +// Fq::one(), +// Fq::from(2u64), +// Fq::from(3u64), +// Fq::from(4u64), +// Fq::from(5u64), +// Fq::from(6u64), +// ]) +// .expect("capacity should not be exceeded"); +// let matrix_2x3 = Matrix::new(3, 2, test_elements); - let res = mat_mul(&matrix_2x3, &matrix_2x3); - assert!(res.is_err()); +// let res = mat_mul(&matrix_2x3, &matrix_2x3); +// assert!(res.is_err()); - let matrix_3x2 = matrix_2x3.transpose(); - let res = mat_mul(&matrix_2x3, &matrix_3x2).expect("is ok"); - assert_eq!(res.get_element(0, 0), Fq::from(5u64)); - assert_eq!(res.get_element(0, 1), Fq::from(11u64)); - assert_eq!(res.get_element(0, 2), Fq::from(17u64)); - assert_eq!(res.get_element(1, 0), Fq::from(11u64)); - assert_eq!(res.get_element(1, 1), Fq::from(25u64)); - assert_eq!(res.get_element(1, 2), Fq::from(39u64)); - assert_eq!(res.get_element(2, 0), Fq::from(17u64)); - assert_eq!(res.get_element(2, 1), Fq::from(39u64)); - assert_eq!(res.get_element(2, 2), Fq::from(61u64)); -} +// let matrix_3x2 = matrix_2x3.transpose(); +// let res = mat_mul(&matrix_2x3, &matrix_3x2).expect("is ok"); +// assert_eq!(res.get_element(0, 0), Fq::from(5u64)); +// assert_eq!(res.get_element(0, 1), Fq::from(11u64)); +// assert_eq!(res.get_element(0, 2), Fq::from(17u64)); +// assert_eq!(res.get_element(1, 0), Fq::from(11u64)); +// assert_eq!(res.get_element(1, 1), Fq::from(25u64)); +// assert_eq!(res.get_element(1, 2), Fq::from(39u64)); +// assert_eq!(res.get_element(2, 0), Fq::from(17u64)); +// assert_eq!(res.get_element(2, 1), Fq::from(39u64)); +// assert_eq!(res.get_element(2, 2), Fq::from(61u64)); +// } -#[test] -fn hadamard_product() { - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - Fq::from(5u64), - Fq::from(6u64), - ]) - .expect("capacity should not be exceeded"); - let matrix_2x3 = Matrix::new(3, 2, test_elements); +// #[test] +// fn hadamard_product() { +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[ +// Fq::one(), +// Fq::from(2u64), +// Fq::from(3u64), +// Fq::from(4u64), +// Fq::from(5u64), +// Fq::from(6u64), +// ]) +// .expect("capacity should not be exceeded"); +// let matrix_2x3 = Matrix::new(3, 2, test_elements); - let res = matrix_2x3.hadamard_product(&matrix_2x3).expect("is ok"); - assert_eq!(res.get_element(0, 0), Fq::from(1u64)); - assert_eq!(res.get_element(0, 1), Fq::from(4u64)); - assert_eq!(res.get_element(1, 0), Fq::from(9u64)); - assert_eq!(res.get_element(1, 1), Fq::from(16u64)); - assert_eq!(res.get_element(2, 0), Fq::from(25u64)); - assert_eq!(res.get_element(2, 1), Fq::from(36u64)); -} +// let res = matrix_2x3.hadamard_product(&matrix_2x3).expect("is ok"); +// assert_eq!(res.get_element(0, 0), Fq::from(1u64)); +// assert_eq!(res.get_element(0, 1), Fq::from(4u64)); +// assert_eq!(res.get_element(1, 0), Fq::from(9u64)); +// assert_eq!(res.get_element(1, 1), Fq::from(16u64)); +// assert_eq!(res.get_element(2, 0), Fq::from(25u64)); +// assert_eq!(res.get_element(2, 1), Fq::from(36u64)); +// } -#[test] -fn transpose() { - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - Fq::from(5u64), - Fq::from(6u64), - ]) - .expect("capacity should not be exceeded"); - let matrix_2x3 = Matrix::new(3, 2, test_elements); - assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); - assert_eq!(matrix_2x3.get_element(1, 0), Fq::from(3u64)); - assert_eq!(matrix_2x3.get_element(1, 1), Fq::from(4u64)); - assert_eq!(matrix_2x3.get_element(2, 0), Fq::from(5u64)); - assert_eq!(matrix_2x3.get_element(2, 1), Fq::from(6u64)); - let res = matrix_2x3.transpose(); - assert_eq!(res.get_element(1, 0), Fq::from(2u64)); - assert_eq!(res.get_element(0, 1), Fq::from(3u64)); - assert_eq!(res.get_element(1, 1), Fq::from(4u64)); - assert_eq!(res.get_element(0, 2), Fq::from(5u64)); - assert_eq!(res.get_element(1, 2), Fq::from(6u64)); +// #[test] +// fn transpose() { +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[ +// Fq::one(), +// Fq::from(2u64), +// Fq::from(3u64), +// Fq::from(4u64), +// Fq::from(5u64), +// Fq::from(6u64), +// ]) +// .expect("capacity should not be exceeded"); +// let matrix_2x3 = Matrix::new(3, 2, test_elements); +// assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); +// assert_eq!(matrix_2x3.get_element(1, 0), Fq::from(3u64)); +// assert_eq!(matrix_2x3.get_element(1, 1), Fq::from(4u64)); +// assert_eq!(matrix_2x3.get_element(2, 0), Fq::from(5u64)); +// assert_eq!(matrix_2x3.get_element(2, 1), Fq::from(6u64)); +// let res = matrix_2x3.transpose(); +// assert_eq!(res.get_element(1, 0), Fq::from(2u64)); +// assert_eq!(res.get_element(0, 1), Fq::from(3u64)); +// assert_eq!(res.get_element(1, 1), Fq::from(4u64)); +// assert_eq!(res.get_element(0, 2), Fq::from(5u64)); +// assert_eq!(res.get_element(1, 2), Fq::from(6u64)); - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) - .expect("capacity should not be exceeded"); - let matrix_2x2 = SquareMatrix::from_vec(test_elements); +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) +// .expect("capacity should not be exceeded"); +// let matrix_2x2 = SquareMatrix::from_vec(test_elements); - let res = matrix_2x2.transpose(); - assert_eq!(res.get_element(0, 0), Fq::one()); - assert_eq!(res.get_element(0, 1), Fq::from(3u64)); - assert_eq!(res.get_element(1, 0), Fq::from(2u64)); - assert_eq!(res.get_element(1, 1), Fq::from(4u64)); -} +// let res = matrix_2x2.transpose(); +// assert_eq!(res.get_element(0, 0), Fq::one()); +// assert_eq!(res.get_element(0, 1), Fq::from(3u64)); +// assert_eq!(res.get_element(1, 0), Fq::from(2u64)); +// assert_eq!(res.get_element(1, 1), Fq::from(4u64)); +// } -#[test] -fn cofactors() { - let identity_1x1 = SquareMatrix::identity(1); - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[Fq::one()]) - .expect("capacity should not be exceeded"); - let expected_res = SquareMatrix::from_vec(test_elements); - assert_eq!(identity_1x1.cofactors(), expected_res); +// #[test] +// fn cofactors() { +// let identity_1x1 = SquareMatrix::identity(1); +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[Fq::one()]) +// .expect("capacity should not be exceeded"); +// let expected_res = SquareMatrix::from_vec(test_elements); +// assert_eq!(identity_1x1.cofactors(), expected_res); - let identity_2x2 = SquareMatrix::identity(2); - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[Fq::one(), -Fq::one(), -Fq::one(), Fq::one()]) - .expect("capacity should not be exceeded"); - let expected_res = SquareMatrix::from_vec(test_elements); - assert_eq!(identity_2x2.cofactors(), expected_res); -} +// let identity_2x2 = SquareMatrix::identity(2); +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[Fq::one(), -Fq::one(), -Fq::one(), Fq::one()]) +// .expect("capacity should not be exceeded"); +// let expected_res = SquareMatrix::from_vec(test_elements); +// assert_eq!(identity_2x2.cofactors(), expected_res); +// } -fn fq_strategy() -> BoxedStrategy { - any::<[u64; 4]>().prop_map(Fq::from_le_limbs).boxed() -} +// fn fq_strategy() -> BoxedStrategy { +// any::<[u64; 4]>().prop_map(Fq::from_le_limbs).boxed() +// } -proptest! { - #[test] - fn inverse_2x2(a in fq_strategy(), b in fq_strategy(), c in fq_strategy(), d in fq_strategy()) { - let mut test_elements = Vec::::new(); - test_elements.extend_from_slice(&[a, b, c, d]).expect("capacity should not be exceeded"); - let matrix_2x2 = SquareMatrix::from_vec(test_elements); +// proptest! { +// #[test] +// fn inverse_2x2(a in fq_strategy(), b in fq_strategy(), c in fq_strategy(), d in fq_strategy()) { +// let mut test_elements = Vec::::new(); +// test_elements.extend_from_slice(&[a, b, c, d]).expect("capacity should not be exceeded"); +// let matrix_2x2 = SquareMatrix::from_vec(test_elements); - let res = matrix_2x2.inverse().unwrap(); - assert_eq!(mat_mul(&matrix_2x2, &res).unwrap(), SquareMatrix::identity(2)); - } -} +// let res = matrix_2x2.inverse().unwrap(); +// assert_eq!(mat_mul(&matrix_2x2, &res).unwrap(), SquareMatrix::identity(2)); +// } +// } -#[test] -fn inverse() { - let mut test_elements = Vec::::new(); - test_elements - .push(Fq::from(2u64)) - .expect("capacity should not be exceeded"); - let matrix_1x1 = SquareMatrix::from_vec(test_elements); - let res = matrix_1x1.inverse().unwrap(); - assert_eq!( - mat_mul(&matrix_1x1, &res).unwrap(), - SquareMatrix::identity(1) - ); +// #[test] +// fn inverse() { +// let mut test_elements = Vec::::new(); +// test_elements +// .push(Fq::from(2u64)) +// .expect("capacity should not be exceeded"); +// let matrix_1x1 = SquareMatrix::from_vec(test_elements); +// let res = matrix_1x1.inverse().unwrap(); +// assert_eq!( +// mat_mul(&matrix_1x1, &res).unwrap(), +// SquareMatrix::identity(1) +// ); - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) - .expect("capacity should not be exceeded"); - let matrix_2x2 = SquareMatrix::from_vec(test_elements); +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) +// .expect("capacity should not be exceeded"); +// let matrix_2x2 = SquareMatrix::from_vec(test_elements); - let res = matrix_2x2.inverse().unwrap(); - assert_eq!( - mat_mul(&matrix_2x2, &res).unwrap(), - SquareMatrix::identity(2) - ); +// let res = matrix_2x2.inverse().unwrap(); +// assert_eq!( +// mat_mul(&matrix_2x2, &res).unwrap(), +// SquareMatrix::identity(2) +// ); - let identity_3x3 = SquareMatrix::identity(3); - assert_eq!(identity_3x3, identity_3x3.inverse().unwrap()); +// let identity_3x3 = SquareMatrix::identity(3); +// assert_eq!(identity_3x3, identity_3x3.inverse().unwrap()); - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[ - Fq::from(3u64), - Fq::from(0u64), - Fq::from(2u64), - Fq::from(2u64), - Fq::from(0u64), - -Fq::from(2u64), - Fq::from(0u64), - Fq::from(1u64), - Fq::from(1u64), - ]) - .expect("capacity should not be exceeded"); - let matrix_3x3 = SquareMatrix::from_vec(test_elements); - let res = matrix_3x3.inverse().unwrap(); - assert_eq!( - mat_mul(&matrix_3x3, &res).unwrap(), - SquareMatrix::identity(3) - ); - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[ - Fq::from(2u64), - Fq::from(2u64), - Fq::from(0u64), - -Fq::from(2u64), - Fq::from(3u64), - Fq::from(10u64), - Fq::from(2u64), - -Fq::from(3u64), - Fq::from(0u64), - ]) - .expect("capacity should not be exceeded"); - let expected_res = SquareMatrix::from_vec(test_elements) * (Fq::one() / Fq::from(10u64)); - assert_eq!(res, expected_res); -} +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[ +// Fq::from(3u64), +// Fq::from(0u64), +// Fq::from(2u64), +// Fq::from(2u64), +// Fq::from(0u64), +// -Fq::from(2u64), +// Fq::from(0u64), +// Fq::from(1u64), +// Fq::from(1u64), +// ]) +// .expect("capacity should not be exceeded"); +// let matrix_3x3 = SquareMatrix::from_vec(test_elements); +// let res = matrix_3x3.inverse().unwrap(); +// assert_eq!( +// mat_mul(&matrix_3x3, &res).unwrap(), +// SquareMatrix::identity(3) +// ); +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[ +// Fq::from(2u64), +// Fq::from(2u64), +// Fq::from(0u64), +// -Fq::from(2u64), +// Fq::from(3u64), +// Fq::from(10u64), +// Fq::from(2u64), +// -Fq::from(3u64), +// Fq::from(0u64), +// ]) +// .expect("capacity should not be exceeded"); +// let expected_res = SquareMatrix::from_vec(test_elements) * (Fq::one() / Fq::from(10u64)); +// assert_eq!(res, expected_res); +// } -#[test] -fn create_matrix_from_vec() { - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) - .expect("capacity should not be exceeded"); - let matrix_2x2 = SquareMatrix::from_vec(test_elements); - assert_eq!(matrix_2x2.get_element(0, 0), Fq::one()); - assert_eq!(matrix_2x2.get_element(0, 1), Fq::from(2u64)); - assert_eq!(matrix_2x2.get_element(1, 0), Fq::from(3u64)); - assert_eq!(matrix_2x2.get_element(1, 1), Fq::from(4u64)); +// #[test] +// fn create_matrix_from_vec() { +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) +// .expect("capacity should not be exceeded"); +// let matrix_2x2 = SquareMatrix::from_vec(test_elements); +// assert_eq!(matrix_2x2.get_element(0, 0), Fq::one()); +// assert_eq!(matrix_2x2.get_element(0, 1), Fq::from(2u64)); +// assert_eq!(matrix_2x2.get_element(1, 0), Fq::from(3u64)); +// assert_eq!(matrix_2x2.get_element(1, 1), Fq::from(4u64)); - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[ - Fq::one(), - Fq::from(2u64), - Fq::from(3u64), - Fq::from(4u64), - Fq::from(5u64), - Fq::from(6u64), - ]) - .expect("capacity should not be exceeded"); - let matrix_2x3 = Matrix::new(2, 3, test_elements); - assert_eq!(matrix_2x3.get_element(0, 0), Fq::one()); - assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); - assert_eq!(matrix_2x3.get_element(0, 2), Fq::from(3u64)); - assert_eq!(matrix_2x3.get_element(1, 0), Fq::from(4u64)); - assert_eq!(matrix_2x3.get_element(1, 1), Fq::from(5u64)); - assert_eq!(matrix_2x3.get_element(1, 2), Fq::from(6u64)); -} +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[ +// Fq::one(), +// Fq::from(2u64), +// Fq::from(3u64), +// Fq::from(4u64), +// Fq::from(5u64), +// Fq::from(6u64), +// ]) +// .expect("capacity should not be exceeded"); +// let matrix_2x3 = Matrix::new(2, 3, test_elements); +// assert_eq!(matrix_2x3.get_element(0, 0), Fq::one()); +// assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); +// assert_eq!(matrix_2x3.get_element(0, 2), Fq::from(3u64)); +// assert_eq!(matrix_2x3.get_element(1, 0), Fq::from(4u64)); +// assert_eq!(matrix_2x3.get_element(1, 1), Fq::from(5u64)); +// assert_eq!(matrix_2x3.get_element(1, 2), Fq::from(6u64)); +// } -#[test] -fn determinant() { - let mut test_elements = Vec::::new(); - test_elements - .push(Fq::one()) - .expect("capacity should not be exceeded"); - let matrix_1x1 = SquareMatrix::from_vec(test_elements); - assert_eq!(matrix_1x1.determinant(), Fq::one()); +// #[test] +// fn determinant() { +// let mut test_elements = Vec::::new(); +// test_elements +// .push(Fq::one()) +// .expect("capacity should not be exceeded"); +// let matrix_1x1 = SquareMatrix::from_vec(test_elements); +// assert_eq!(matrix_1x1.determinant(), Fq::one()); - let a = Fq::one(); - let b = Fq::one() + Fq::one(); - let c = Fq::from(3u64); - let d = Fq::from(4u64); - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[a, b, c, d]) - .expect("capacity should not be exceeded"); - let matrix_2x2 = SquareMatrix::from_vec(test_elements); - assert_eq!(matrix_2x2.determinant(), -Fq::from(2u64)); +// let a = Fq::one(); +// let b = Fq::one() + Fq::one(); +// let c = Fq::from(3u64); +// let d = Fq::from(4u64); +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[a, b, c, d]) +// .expect("capacity should not be exceeded"); +// let matrix_2x2 = SquareMatrix::from_vec(test_elements); +// assert_eq!(matrix_2x2.determinant(), -Fq::from(2u64)); - let e = Fq::from(5u64); - let f = Fq::from(6u64); - let g = Fq::from(7u64); - let h = Fq::from(8u64); - let i = Fq::from(9u64); - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[a, b, c, d, e, f, g, h, i]) - .expect("capacity should not be exceeded"); - let matrix_3x3 = SquareMatrix::from_vec(test_elements); - assert_eq!(matrix_3x3.determinant(), Fq::from(0u64)); +// let e = Fq::from(5u64); +// let f = Fq::from(6u64); +// let g = Fq::from(7u64); +// let h = Fq::from(8u64); +// let i = Fq::from(9u64); +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[a, b, c, d, e, f, g, h, i]) +// .expect("capacity should not be exceeded"); +// let matrix_3x3 = SquareMatrix::from_vec(test_elements); +// assert_eq!(matrix_3x3.determinant(), Fq::from(0u64)); - let elem = Fq::from(10u64); - let mut test_elements = Vec::::new(); - test_elements - .extend_from_slice(&[ - a, b, c, d, e, f, g, h, i, elem, elem, elem, elem, elem, elem, elem, - ]) - .expect("capacity should not be exceeded"); - let matrix_4x4 = SquareMatrix::from_vec(test_elements); - assert_eq!(matrix_4x4.determinant(), Fq::from(0u64)); -} +// let elem = Fq::from(10u64); +// let mut test_elements = Vec::::new(); +// test_elements +// .extend_from_slice(&[ +// a, b, c, d, e, f, g, h, i, elem, elem, elem, elem, elem, elem, elem, +// ]) +// .expect("capacity should not be exceeded"); +// let matrix_4x4 = SquareMatrix::from_vec(test_elements); +// assert_eq!(matrix_4x4.determinant(), Fq::from(0u64)); +// } diff --git a/poseidon-parameters/src/vec.rs b/poseidon-parameters/src/vec.rs deleted file mode 100644 index af3cd7a..0000000 --- a/poseidon-parameters/src/vec.rs +++ /dev/null @@ -1,52 +0,0 @@ -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct Vec { - data: [Option; N], - length: usize, -} - -impl Vec { - // Create a new Vec with a fixed capacity - pub fn new() -> Self { - Self { - data: [None; N], - length: 0, - } - } - - // Add an element to the end of the collection - pub fn push(&mut self, element: T) -> Result<(), &'static str> { - if self.length >= N { - Err("Vec is full") - } else { - self.data[self.length] = Some(element); - self.length += 1; - Ok(()) - } - } - - // Extend the collection with the elements from a slice - pub fn extend_from_slice(&mut self, slice: &[T]) -> Result<(), &'static str> { - if self.length + slice.len() > N { - return Err("Vec does not have enough capacity"); - } - - for &item in slice { - if self.length < N { - self.data[self.length] = Some(item); - self.length += 1; - } - } - - Ok(()) - } - - // Helper method to retrieve the current length of the collection - pub fn len(&self) -> usize { - self.length - } - - // Check if the collection is empty - pub fn is_empty(&self) -> bool { - self.length == 0 - } -} From 9e6d2a076c13846d9af884dd6255dfd799f384a9 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 21 Feb 2024 21:14:41 -0500 Subject: [PATCH 19/54] matrix_ops (except mat_mul) --- poseidon-parameters/src/lib.rs | 2 +- poseidon-parameters/src/matrix.rs | 1 - poseidon-parameters/src/matrix_ops.rs | 115 ++------------------------ 3 files changed, 6 insertions(+), 112 deletions(-) diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index 8253609..a0dda0f 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -11,7 +11,7 @@ mod alpha; // mod arc_matrix; mod error; // mod matrix; -// mod matrix_ops; +mod matrix_ops; // mod mds_matrix; mod round_numbers; diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 78a8625..0821e24 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -1,4 +1,3 @@ -use crate::Vec; use core::ops::Mul; use crate::error::PoseidonParameterError; diff --git a/poseidon-parameters/src/matrix_ops.rs b/poseidon-parameters/src/matrix_ops.rs index d345fb8..9539b10 100644 --- a/poseidon-parameters/src/matrix_ops.rs +++ b/poseidon-parameters/src/matrix_ops.rs @@ -1,21 +1,19 @@ -use crate::Vec; use core::slice::Chunks; use crate::error::PoseidonParameterError; -use crate::MAX_DIMENSION; use decaf377::Fq; pub trait MatrixOperations { /// Create a new matrix - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self; - /// Access elements as a vector - fn elements(&self) -> &Vec; + fn new(elements: &[Fq]) -> Self; + /// Access elements as an array of arrays + fn elements(&self) -> &[Fq]; /// Get element[i,j] fn get_element(&self, i: usize, j: usize) -> Fq; /// Set element[i,j] fn set_element(&mut self, i: usize, j: usize, val: Fq); /// Get rows - fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION>; + fn rows(&self) -> &[&[Fq]]; /// Get rows in chunks fn iter_rows(&self) -> Chunks { self.elements().chunks(self.n_cols()) @@ -32,28 +30,7 @@ pub trait MatrixOperations { Self: Sized; } -/// Multiply two matrices -pub fn mat_mul(lhs: &M, rhs: &M) -> Result { - if lhs.n_cols() != rhs.n_rows() { - return Err(PoseidonParameterError::InvalidMatrixDimensions); - } - - let rhs_T = rhs.transpose(); - - Ok(M::new( - lhs.n_rows(), - rhs.n_cols(), - lhs.iter_rows() - .flat_map(|row| { - // Rows of the transposed matrix are the columns of the original matrix - rhs_T - .iter_rows() - .map(|column| dot_product(row, column)) - .collect::>() - }) - .collect(), - )) -} +// TODO: mat_mul /// Compute vector dot product pub fn dot_product(a: &[Fq], b: &[Fq]) -> Fq { @@ -64,64 +41,6 @@ pub fn dot_product(a: &[Fq], b: &[Fq]) -> Fq { a.iter().zip(b.iter()).map(|(x, y)| *x * *y).sum() } -pub struct Polynomial { - /// The coefficients of the polynomial a_0, ..., a_i - pub coeffs: Vec, -} - -impl Polynomial { - /// Construct a new polynomial - pub fn new(coeffs: Vec) -> Self { - Self { coeffs } - } - - /// Degree of the polynomial - pub fn max_degree(&self) -> usize { - self.coeffs.len() - 1 - } - - /// Evaluate the polynomial at a given point - pub fn evaluate(&self, x: Fq) -> Fq { - self.coeffs - .iter() - .rev() - .fold(Fq::zero(), |acc, coeff| acc * x + coeff) - } - - /// Check if the polynomial is irreducible using Perron's irreducibility criterion. - pub fn is_irreducible(&self) -> bool { - // We first need to check the polynomial is monic. - if self.coeffs.last() != Some(&Fq::one()) { - unimplemented!("polynomial is not monic, not sure how to check irreducibility") - } else { - // The polynomial is monic, so we can apply Perron's criterion. - // See https://en.wikipedia.org/wiki/Perron%27s_irreducibility_criterion - // for more details. - let n = self.max_degree(); - let mut sum = Fq::one(); - for i in 0..n - 1 { - sum += self.coeffs[i]; - } - - match self.coeffs[n - 1] { - // Condition 1: - // $\abs{a_{n-1}} > 1 + \abs{a_{n-2}} + ... + \abs{a_0}$ - coeff if coeff > sum => true, - // Condition 2: - // $\abs{a_{n-1}} = 1 + \abs{a_{n-2}} + ... + \abs{a_0}$ - // AND - // f(1) != 0 AND f(-1) != 0 - coeff if coeff == sum => { - let f_of_1 = self.evaluate(Fq::one()); - let f_of_neg_1 = self.evaluate(-Fq::one()); - f_of_1 != Fq::zero() && f_of_neg_1 != Fq::zero() - } - _ => false, - } - } - } -} - /// Matrix operations that are defined on square matrices. pub trait SquareMatrixOperations { /// Compute the matrix inverse, if it exists @@ -137,27 +56,3 @@ pub trait SquareMatrixOperations { /// Compute the matrix determinant fn determinant(&self) -> Fq; } - -#[cfg(test)] -mod tests { - use super::*; - use decaf377::Fq; - - #[test] - fn poly_evaluate() { - // f(x) = 1 + 2x + 3x^2 - let mut coeffs_vec = Vec::::new(); - coeffs_vec - .push(Fq::from(1u64)) - .expect("capacity should not be exceeded"); - coeffs_vec - .push(Fq::from(2u64)) - .expect("capacity should not be exceeded"); - coeffs_vec - .push(Fq::from(3u64)) - .expect("capacity should not be exceeded"); - let poly = Polynomial::new(coeffs_vec); - assert_eq!(poly.max_degree(), 2); - assert_eq!(poly.evaluate(Fq::from(2u64)), Fq::from(17u64)); - } -} From db10d987239375d2fe784da10fec5a3642251faf Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 21 Feb 2024 21:40:31 -0500 Subject: [PATCH 20/54] poseidon-parameters: `Matrix` Hadamard product --- poseidon-parameters/src/lib.rs | 2 +- poseidon-parameters/src/matrix.rs | 700 +++++++++++++++--------------- poseidon-parameters/src/tests.rs | 44 +- 3 files changed, 373 insertions(+), 373 deletions(-) diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index a0dda0f..02ff365 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -10,7 +10,7 @@ use decaf377::Fq; mod alpha; // mod arc_matrix; mod error; -// mod matrix; +mod matrix; mod matrix_ops; // mod mds_matrix; mod round_numbers; diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 0821e24..32ec0f2 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -1,8 +1,8 @@ +use core::convert::TryInto; use core::ops::Mul; use crate::error::PoseidonParameterError; -use crate::matrix_ops::{mat_mul, MatrixOperations, SquareMatrixOperations}; -use crate::MAX_DIMENSION; +use crate::matrix_ops::{MatrixOperations, SquareMatrixOperations}; use decaf377::Fq; /// Represents a matrix over `PrimeField` elements. @@ -10,391 +10,395 @@ use decaf377::Fq; /// This matrix can be used to represent row or column /// vectors. #[derive(Clone, Debug, PartialEq, Eq)] -pub struct Matrix { - /// Elements of the matrix. - pub elements: Vec, - /// Number of columns. - pub n_cols: usize, - /// Number of rows. - pub n_rows: usize, +pub struct Matrix { + /// Elements of the matrix, stored in a fixed-size array. + /// + pub elements: [Fq; N_ELEMENTS], } -impl MatrixOperations for Matrix { - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { - if elements.len() != n_rows * n_cols { +impl MatrixOperations + for Matrix +{ + fn new(elements: &[Fq]) -> Self { + // Note: We use a third const generic to denote the number of elements in the + // matrix here due to `generic_const_exprs` being an unstable Rust feature at + // the time of writing. + if N_ELEMENTS != N_ROWS * N_COLS { panic!("Matrix has an insufficient number of elements") } - Self { - elements, - n_cols, - n_rows, - } + + let elements: [Fq; N_ELEMENTS] = elements + .try_into() + .expect("Matrix has the correct number of elements"); + + Self { elements } } - fn elements(&self) -> &Vec { + fn elements(&self) -> &[Fq] { &self.elements } fn get_element(&self, i: usize, j: usize) -> Fq { - self.elements[i * self.n_cols + j] + self.elements[i * N_COLS + j] } fn set_element(&mut self, i: usize, j: usize, val: Fq) { - self.elements[i * self.n_cols + j] = val + self.elements[i * N_COLS + j] = val } - fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION> { - self.elements.chunks(self.n_cols).collect() + fn rows(&self) -> &[&[Fq]] { + // self.elements.chunks(self.n_cols()).collect() + todo!() } fn n_rows(&self) -> usize { - self.n_rows + N_ROWS } fn n_cols(&self) -> usize { - self.n_cols + N_COLS } fn transpose(&self) -> Self { - let mut transposed_elements = Vec::::new(); + let mut transposed_elements = [Fq::default(); N_ELEMENTS]; - for j in 0..self.n_cols { - for i in 0..self.n_rows { - transposed_elements - .push(self.get_element(i, j)) - .expect("capacity should not be exceeded"); + let mut index = 0; + for j in 0..self.n_cols() { + for i in 0..self.n_rows() { + transposed_elements[index] = self.get_element(i, j); + index += 1; } } - Self::new(self.n_cols, self.n_rows, transposed_elements) + Self::new(&transposed_elements) } fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized, { - if self.n_rows != rhs.n_rows || self.n_cols != rhs.n_cols { + if self.n_rows() != rhs.n_rows() || self.n_cols() != rhs.n_cols() { return Err(PoseidonParameterError::InvalidMatrixDimensions); } - let mut new_elements = Vec::::new(); - for i in 0..self.n_rows { - for j in 0..self.n_cols { - new_elements - .push(self.get_element(i, j) * rhs.get_element(i, j)) - .expect("capacity should not be exceeded"); - } - } - - Ok(Self::new(self.n_rows, self.n_cols, new_elements)) - } -} - -/// Multiply scalar by Matrix -impl Mul for Matrix { - type Output = Matrix; - - fn mul(self, rhs: Fq) -> Self::Output { - let elements = self.elements(); - let new_elements: Vec = - elements.iter().map(|element| *element * rhs).collect(); - Self::new(self.n_rows(), self.n_cols(), new_elements) - } -} - -impl Matrix { - /// Get row vector at a specified row index - pub fn row_vector(&self, i: usize) -> Matrix { - let mut row_elements = Vec::::new(); - for j in 0..self.n_cols { - row_elements - .push(self.get_element(i, j)) - .expect("capacity should not be exceeded"); - } - Matrix::new(1, self.n_cols, row_elements) - } -} - -/// Represents a square matrix over `PrimeField` elements -#[derive(Clone, Debug, PartialEq, Eq)] -pub struct SquareMatrix(pub Matrix); - -impl MatrixOperations for SquareMatrix { - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { - Self(Matrix::new(n_rows, n_cols, elements)) - } - - fn elements(&self) -> &Vec { - self.0.elements() - } - - fn get_element(&self, i: usize, j: usize) -> Fq { - self.0.get_element(i, j) - } - - fn set_element(&mut self, i: usize, j: usize, val: Fq) { - self.0.set_element(i, j, val) - } - - fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION> { - self.0.rows() - } - - fn n_rows(&self) -> usize { - self.0.n_rows - } - - fn n_cols(&self) -> usize { - self.0.n_cols - } - - fn transpose(&self) -> Self { - Self(self.0.transpose()) - } - - fn hadamard_product(&self, rhs: &Self) -> Result - where - Self: Sized, - { - Ok(Self(self.0.hadamard_product(&rhs.0)?)) - } -} - -impl SquareMatrixOperations for SquareMatrix { - /// Compute the inverse of the matrix - fn inverse(&self) -> Result { - let identity = Self::identity(self.n_rows()); - - if self.n_rows() == 1 { - let mut elements = Vec::::new(); - elements - .push( - self.get_element(0, 0) - .inverse() - .expect("inverse of single element must exist for 1x1 matrix"), - ) - .expect("capacity should not be exceeded"); - return Ok(Self::from_vec(elements)); - } - - let determinant = self.determinant(); - if determinant == Fq::zero() { - return Err(PoseidonParameterError::NoMatrixInverse); - } - - let minors = self.minors(); - let cofactor_matrix = self.cofactors(); - let signed_minors = minors - .hadamard_product(&cofactor_matrix) - .expect("minor and cofactor matrix have correct dimensions"); - let adj = signed_minors.transpose(); - let matrix_inverse = adj * (Fq::one() / determinant); - - debug_assert_eq!( - mat_mul(self, &matrix_inverse) - .expect("matrix and its inverse should have same dimensions"), - identity - ); - Ok(matrix_inverse) - } - - /// Construct a dim x dim identity matrix - fn identity(dim: usize) -> Self { - let mut elements = Vec::::new(); - for _ in 0..dim { - for _ in 0..dim { - elements - .push(Fq::zero()) - .expect("capacity should not be exceeded"); + let mut new_elements = [Fq::default(); N_ELEMENTS]; + let mut index = 0; + for i in 0..self.n_rows() { + for j in 0..self.n_cols() { + new_elements[index] = self.get_element(i, j) * rhs.get_element(i, j); + index += 1; } } - let mut m = Self::from_vec(elements); - - // Set diagonals to 1 - for i in 0..dim { - m.set_element(i, i, Fq::one()); - } - - m - } - /// Compute the (unsigned) minors of this matrix - fn minors(&self) -> Self { - match self.n_cols() { - 0 => panic!("matrix has no elements!"), - 1 => { - let mut elements = Vec::::new(); - elements - .push(self.get_element(0, 0)) - .expect("capacity should not be exceeded"); - Self::from_vec(elements) - } - 2 => { - let mut elements = Vec::::new(); - let a = self.get_element(0, 0); - let b = self.get_element(0, 1); - let c = self.get_element(1, 0); - let d = self.get_element(1, 1); - elements - .extend_from_slice(&[d, c, b, a]) - .expect("capacity should not be exceeded"); - Self::from_vec(elements) - } - _ => { - let dim = self.n_rows(); - let mut minor_matrix_elements = Vec::::new(); - for i in 0..dim { - for j in 0..dim { - let mut elements: Vec = Vec::new(); - for k in 0..i { - for l in 0..j { - elements - .push(self.get_element(k, l)) - .expect("capacity should not be exceeded"); - } - for l in (j + 1)..dim { - elements - .push(self.get_element(k, l)) - .expect("capacity should not be exceeded"); - } - } - for k in i + 1..dim { - for l in 0..j { - elements - .push(self.get_element(k, l)) - .expect("capacity should not be exceeded"); - } - for l in (j + 1)..dim { - elements - .push(self.get_element(k, l)) - .expect("capacity should not be exceeded"); - } - } - let minor = Self::from_vec(elements); - minor_matrix_elements - .push(minor.determinant()) - .expect("capacity should not be exceeded"); - } - } - Self::from_vec(minor_matrix_elements) - } - } - } - - /// Compute the cofactor matrix, i.e. $C_{ij} = (-1)^{i+j}$ - fn cofactors(&self) -> Self { - let dim = self.n_rows(); - let mut elements = Vec::::new(); - - // TODO: non arkworks Fq::pow - use crate::StuffThatNeedsToGoInDecaf377; - for i in 0..dim { - for j in 0..dim { - elements - .push((-Fq::one()).pow([(i + j) as u64])) - .expect("capacity should not be exceeded"); - } - } - Self::from_vec(elements) - } - - /// Compute the matrix determinant - fn determinant(&self) -> Fq { - match self.n_cols() { - 0 => panic!("matrix has no elements!"), - 1 => self.get_element(0, 0), - 2 => { - let a11 = self.get_element(0, 0); - let a12 = self.get_element(0, 1); - let a21 = self.get_element(1, 0); - let a22 = self.get_element(1, 1); - a11 * a22 - a21 * a12 - } - 3 => { - let a11 = self.get_element(0, 0); - let a12 = self.get_element(0, 1); - let a13 = self.get_element(0, 2); - let a21 = self.get_element(1, 0); - let a22 = self.get_element(1, 1); - let a23 = self.get_element(1, 2); - let a31 = self.get_element(2, 0); - let a32 = self.get_element(2, 1); - let a33 = self.get_element(2, 2); - - a11 * (Self::new_2x2(a22, a23, a32, a33).determinant()) - - a12 * (Self::new_2x2(a21, a23, a31, a33).determinant()) - + a13 * (Self::new_2x2(a21, a22, a31, a32).determinant()) - } - _ => { - // Unoptimized, but MDS matrices are fairly small, so we do the naive thing - let mut det = Fq::zero(); - let mut levi_civita = true; - let dim = self.n_rows(); - - for i in 0..dim { - let mut elements: Vec = Vec::new(); - for k in 0..i { - for l in 1..dim { - elements - .push(self.get_element(k, l)) - .expect("capacity should not be exceeded"); - } - } - for k in i + 1..dim { - for l in 1..dim { - elements - .push(self.get_element(k, l)) - .expect("capacity should not be exceeded"); - } - } - let minor = Self::from_vec(elements); - if levi_civita { - det += self.get_element(i, 0) * minor.determinant(); - } else { - det -= self.get_element(i, 0) * minor.determinant(); - } - levi_civita = !levi_civita; - } - - det - } - } - } -} - -/// Multiply scalar by SquareMatrix -impl Mul for SquareMatrix { - type Output = SquareMatrix; - - fn mul(self, rhs: Fq) -> Self::Output { - let elements = self.0.elements(); - let new_elements: Vec = - elements.iter().map(|element| *element * rhs).collect(); - Self::from_vec(new_elements) + Ok(Self::new(&new_elements)) } } -impl SquareMatrix { - /// Create a `SquareMatrix` from a vector of elements. - pub fn from_vec(elements: Vec) -> Self { - let length_of_elements_vec = elements.len(); - let dim = (length_of_elements_vec as f64).sqrt() as usize; - if dim * dim != length_of_elements_vec { - panic!("SquareMatrix must be square") - } - Self(Matrix::new(dim, dim, elements)) - } - - /// Get row vector at a specified row index. - pub fn row_vector(&self, i: usize) -> Matrix { - self.0.row_vector(i) - } - - /// Create a 2x2 `SquareMatrix` from four elements. - pub fn new_2x2(a: Fq, b: Fq, c: Fq, d: Fq) -> SquareMatrix { - let mut elements = Vec::::new(); - elements - .extend_from_slice(&[a, b, c, d]) - .expect("capacity should not be exceeded"); - Self::from_vec(elements) - } -} +// /// Multiply scalar by Matrix +// impl Mul for Matrix { +// type Output = Matrix; + +// fn mul(self, rhs: Fq) -> Self::Output { +// let elements = self.elements(); +// let new_elements: Vec = +// elements.iter().map(|element| *element * rhs).collect(); +// Self::new(self.n_rows(), self.n_cols(), new_elements) +// } +// } + +// impl Matrix { +// /// Get row vector at a specified row index +// pub fn row_vector(&self, i: usize) -> Matrix { +// let mut row_elements = Vec::::new(); +// for j in 0..self.n_cols { +// row_elements +// .push(self.get_element(i, j)) +// .expect("capacity should not be exceeded"); +// } +// Matrix::new(1, self.n_cols, row_elements) +// } +// } + +// /// Represents a square matrix over `PrimeField` elements +// #[derive(Clone, Debug, PartialEq, Eq)] +// pub struct SquareMatrix(pub Matrix); + +// impl MatrixOperations for SquareMatrix { +// fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { +// Self(Matrix::new(n_rows, n_cols, elements)) +// } + +// fn elements(&self) -> &Vec { +// self.0.elements() +// } + +// fn get_element(&self, i: usize, j: usize) -> Fq { +// self.0.get_element(i, j) +// } + +// fn set_element(&mut self, i: usize, j: usize, val: Fq) { +// self.0.set_element(i, j, val) +// } + +// fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION> { +// self.0.rows() +// } + +// fn n_rows(&self) -> usize { +// self.0.n_rows +// } + +// fn n_cols(&self) -> usize { +// self.0.n_cols +// } + +// fn transpose(&self) -> Self { +// Self(self.0.transpose()) +// } + +// fn hadamard_product(&self, rhs: &Self) -> Result +// where +// Self: Sized, +// { +// Ok(Self(self.0.hadamard_product(&rhs.0)?)) +// } +// } + +// impl SquareMatrixOperations for SquareMatrix { +// /// Compute the inverse of the matrix +// fn inverse(&self) -> Result { +// let identity = Self::identity(self.n_rows()); + +// if self.n_rows() == 1 { +// let mut elements = Vec::::new(); +// elements +// .push( +// self.get_element(0, 0) +// .inverse() +// .expect("inverse of single element must exist for 1x1 matrix"), +// ) +// .expect("capacity should not be exceeded"); +// return Ok(Self::from_vec(elements)); +// } + +// let determinant = self.determinant(); +// if determinant == Fq::zero() { +// return Err(PoseidonParameterError::NoMatrixInverse); +// } + +// let minors = self.minors(); +// let cofactor_matrix = self.cofactors(); +// let signed_minors = minors +// .hadamard_product(&cofactor_matrix) +// .expect("minor and cofactor matrix have correct dimensions"); +// let adj = signed_minors.transpose(); +// let matrix_inverse = adj * (Fq::one() / determinant); + +// debug_assert_eq!( +// mat_mul(self, &matrix_inverse) +// .expect("matrix and its inverse should have same dimensions"), +// identity +// ); +// Ok(matrix_inverse) +// } + +// /// Construct a dim x dim identity matrix +// fn identity(dim: usize) -> Self { +// let mut elements = Vec::::new(); +// for _ in 0..dim { +// for _ in 0..dim { +// elements +// .push(Fq::zero()) +// .expect("capacity should not be exceeded"); +// } +// } +// let mut m = Self::from_vec(elements); + +// // Set diagonals to 1 +// for i in 0..dim { +// m.set_element(i, i, Fq::one()); +// } + +// m +// } + +// /// Compute the (unsigned) minors of this matrix +// fn minors(&self) -> Self { +// match self.n_cols() { +// 0 => panic!("matrix has no elements!"), +// 1 => { +// let mut elements = Vec::::new(); +// elements +// .push(self.get_element(0, 0)) +// .expect("capacity should not be exceeded"); +// Self::from_vec(elements) +// } +// 2 => { +// let mut elements = Vec::::new(); +// let a = self.get_element(0, 0); +// let b = self.get_element(0, 1); +// let c = self.get_element(1, 0); +// let d = self.get_element(1, 1); +// elements +// .extend_from_slice(&[d, c, b, a]) +// .expect("capacity should not be exceeded"); +// Self::from_vec(elements) +// } +// _ => { +// let dim = self.n_rows(); +// let mut minor_matrix_elements = Vec::::new(); +// for i in 0..dim { +// for j in 0..dim { +// let mut elements: Vec = Vec::new(); +// for k in 0..i { +// for l in 0..j { +// elements +// .push(self.get_element(k, l)) +// .expect("capacity should not be exceeded"); +// } +// for l in (j + 1)..dim { +// elements +// .push(self.get_element(k, l)) +// .expect("capacity should not be exceeded"); +// } +// } +// for k in i + 1..dim { +// for l in 0..j { +// elements +// .push(self.get_element(k, l)) +// .expect("capacity should not be exceeded"); +// } +// for l in (j + 1)..dim { +// elements +// .push(self.get_element(k, l)) +// .expect("capacity should not be exceeded"); +// } +// } +// let minor = Self::from_vec(elements); +// minor_matrix_elements +// .push(minor.determinant()) +// .expect("capacity should not be exceeded"); +// } +// } +// Self::from_vec(minor_matrix_elements) +// } +// } +// } + +// /// Compute the cofactor matrix, i.e. $C_{ij} = (-1)^{i+j}$ +// fn cofactors(&self) -> Self { +// let dim = self.n_rows(); +// let mut elements = Vec::::new(); + +// // TODO: non arkworks Fq::pow +// use crate::StuffThatNeedsToGoInDecaf377; +// for i in 0..dim { +// for j in 0..dim { +// elements +// .push((-Fq::one()).pow([(i + j) as u64])) +// .expect("capacity should not be exceeded"); +// } +// } +// Self::from_vec(elements) +// } + +// /// Compute the matrix determinant +// fn determinant(&self) -> Fq { +// match self.n_cols() { +// 0 => panic!("matrix has no elements!"), +// 1 => self.get_element(0, 0), +// 2 => { +// let a11 = self.get_element(0, 0); +// let a12 = self.get_element(0, 1); +// let a21 = self.get_element(1, 0); +// let a22 = self.get_element(1, 1); +// a11 * a22 - a21 * a12 +// } +// 3 => { +// let a11 = self.get_element(0, 0); +// let a12 = self.get_element(0, 1); +// let a13 = self.get_element(0, 2); +// let a21 = self.get_element(1, 0); +// let a22 = self.get_element(1, 1); +// let a23 = self.get_element(1, 2); +// let a31 = self.get_element(2, 0); +// let a32 = self.get_element(2, 1); +// let a33 = self.get_element(2, 2); + +// a11 * (Self::new_2x2(a22, a23, a32, a33).determinant()) +// - a12 * (Self::new_2x2(a21, a23, a31, a33).determinant()) +// + a13 * (Self::new_2x2(a21, a22, a31, a32).determinant()) +// } +// _ => { +// // Unoptimized, but MDS matrices are fairly small, so we do the naive thing +// let mut det = Fq::zero(); +// let mut levi_civita = true; +// let dim = self.n_rows(); + +// for i in 0..dim { +// let mut elements: Vec = Vec::new(); +// for k in 0..i { +// for l in 1..dim { +// elements +// .push(self.get_element(k, l)) +// .expect("capacity should not be exceeded"); +// } +// } +// for k in i + 1..dim { +// for l in 1..dim { +// elements +// .push(self.get_element(k, l)) +// .expect("capacity should not be exceeded"); +// } +// } +// let minor = Self::from_vec(elements); +// if levi_civita { +// det += self.get_element(i, 0) * minor.determinant(); +// } else { +// det -= self.get_element(i, 0) * minor.determinant(); +// } +// levi_civita = !levi_civita; +// } + +// det +// } +// } +// } +// } + +// /// Multiply scalar by SquareMatrix +// impl Mul for SquareMatrix { +// type Output = SquareMatrix; + +// fn mul(self, rhs: Fq) -> Self::Output { +// let elements = self.0.elements(); +// let new_elements: Vec = +// elements.iter().map(|element| *element * rhs).collect(); +// Self::from_vec(new_elements) +// } +// } + +// impl SquareMatrix { +// /// Create a `SquareMatrix` from a vector of elements. +// pub fn from_vec(elements: Vec) -> Self { +// let length_of_elements_vec = elements.len(); +// let dim = (length_of_elements_vec as f64).sqrt() as usize; +// if dim * dim != length_of_elements_vec { +// panic!("SquareMatrix must be square") +// } +// Self(Matrix::new(dim, dim, elements)) +// } + +// /// Get row vector at a specified row index. +// pub fn row_vector(&self, i: usize) -> Matrix { +// self.0.row_vector(i) +// } + +// /// Create a 2x2 `SquareMatrix` from four elements. +// pub fn new_2x2(a: Fq, b: Fq, c: Fq, d: Fq) -> SquareMatrix { +// let mut elements = Vec::::new(); +// elements +// .extend_from_slice(&[a, b, c, d]) +// .expect("capacity should not be exceeded"); +// Self::from_vec(elements) +// } +// } diff --git a/poseidon-parameters/src/tests.rs b/poseidon-parameters/src/tests.rs index 51cdaae..7d5174a 100644 --- a/poseidon-parameters/src/tests.rs +++ b/poseidon-parameters/src/tests.rs @@ -4,8 +4,7 @@ use proptest::prelude::*; use super::*; // use crate::matrix_ops::mat_mul; -// use crate::matrix_ops::MatrixOperations; -// use crate::MAX_DIMENSION; +use crate::{matrix::Matrix, matrix_ops::MatrixOperations}; // use crate::{matrix::SquareMatrix, matrix_ops::SquareMatrixOperations}; // use v1::Matrix; @@ -66,29 +65,26 @@ use super::*; // assert_eq!(res.get_element(2, 2), Fq::from(61u64)); // } -// #[test] -// fn hadamard_product() { -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[ -// Fq::one(), -// Fq::from(2u64), -// Fq::from(3u64), -// Fq::from(4u64), -// Fq::from(5u64), -// Fq::from(6u64), -// ]) -// .expect("capacity should not be exceeded"); -// let matrix_2x3 = Matrix::new(3, 2, test_elements); +#[test] +fn hadamard_product() { + let test_elements: [Fq; 6] = [ + Fq::one(), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + Fq::from(5u64), + Fq::from(6u64), + ]; + let matrix_3x2 = Matrix::<3, 2, 6>::new(&test_elements); -// let res = matrix_2x3.hadamard_product(&matrix_2x3).expect("is ok"); -// assert_eq!(res.get_element(0, 0), Fq::from(1u64)); -// assert_eq!(res.get_element(0, 1), Fq::from(4u64)); -// assert_eq!(res.get_element(1, 0), Fq::from(9u64)); -// assert_eq!(res.get_element(1, 1), Fq::from(16u64)); -// assert_eq!(res.get_element(2, 0), Fq::from(25u64)); -// assert_eq!(res.get_element(2, 1), Fq::from(36u64)); -// } + let res = matrix_3x2.hadamard_product(&matrix_3x2).expect("is ok"); + assert_eq!(res.get_element(0, 0), Fq::from(1u64)); + assert_eq!(res.get_element(0, 1), Fq::from(4u64)); + assert_eq!(res.get_element(1, 0), Fq::from(9u64)); + assert_eq!(res.get_element(1, 1), Fq::from(16u64)); + assert_eq!(res.get_element(2, 0), Fq::from(25u64)); + assert_eq!(res.get_element(2, 1), Fq::from(36u64)); +} // #[test] // fn transpose() { From 2bb0b3d192f1d39228b5626fcc39853b955ffcc4 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 21 Feb 2024 21:46:34 -0500 Subject: [PATCH 21/54] poseidon-parameters: scalar mult, const generic `SquareMatrix` --- poseidon-parameters/src/matrix.rs | 124 ++++++++++++++++-------------- 1 file changed, 68 insertions(+), 56 deletions(-) diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 32ec0f2..05d6464 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -93,17 +93,21 @@ impl MatrixOp } } -// /// Multiply scalar by Matrix -// impl Mul for Matrix { -// type Output = Matrix; - -// fn mul(self, rhs: Fq) -> Self::Output { -// let elements = self.elements(); -// let new_elements: Vec = -// elements.iter().map(|element| *element * rhs).collect(); -// Self::new(self.n_rows(), self.n_cols(), new_elements) -// } -// } +/// Multiply scalar by Matrix +impl Mul + for Matrix +{ + type Output = Matrix; + + fn mul(self, rhs: Fq) -> Self::Output { + let elements = self.elements(); + let mut new_elements = [Fq::default(); N_ELEMENTS]; + for (i, &element) in elements.iter().enumerate() { + new_elements[i] = element * rhs; + } + Self::new(&new_elements) + } +} // impl Matrix { // /// Get row vector at a specified row index @@ -118,50 +122,54 @@ impl MatrixOp // } // } -// /// Represents a square matrix over `PrimeField` elements -// #[derive(Clone, Debug, PartialEq, Eq)] -// pub struct SquareMatrix(pub Matrix); +/// Represents a square matrix over `PrimeField` elements +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct SquareMatrix( + pub Matrix, +); -// impl MatrixOperations for SquareMatrix { -// fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { -// Self(Matrix::new(n_rows, n_cols, elements)) -// } +impl MatrixOperations + for SquareMatrix +{ + fn new(elements: &[Fq]) -> Self { + Self(Matrix::new(elements)) + } -// fn elements(&self) -> &Vec { -// self.0.elements() -// } + fn elements(&self) -> &[Fq] { + self.0.elements() + } -// fn get_element(&self, i: usize, j: usize) -> Fq { -// self.0.get_element(i, j) -// } + fn get_element(&self, i: usize, j: usize) -> Fq { + self.0.get_element(i, j) + } -// fn set_element(&mut self, i: usize, j: usize, val: Fq) { -// self.0.set_element(i, j, val) -// } + fn set_element(&mut self, i: usize, j: usize, val: Fq) { + self.0.set_element(i, j, val) + } -// fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION> { -// self.0.rows() -// } + fn rows(&self) -> &[&[Fq]] { + todo!() + } -// fn n_rows(&self) -> usize { -// self.0.n_rows -// } + fn n_rows(&self) -> usize { + N_ROWS + } -// fn n_cols(&self) -> usize { -// self.0.n_cols -// } + fn n_cols(&self) -> usize { + N_COLS + } -// fn transpose(&self) -> Self { -// Self(self.0.transpose()) -// } + fn transpose(&self) -> Self { + Self(self.0.transpose()) + } -// fn hadamard_product(&self, rhs: &Self) -> Result -// where -// Self: Sized, -// { -// Ok(Self(self.0.hadamard_product(&rhs.0)?)) -// } -// } + fn hadamard_product(&self, rhs: &Self) -> Result + where + Self: Sized, + { + Ok(Self(self.0.hadamard_product(&rhs.0)?)) + } +} // impl SquareMatrixOperations for SquareMatrix { // /// Compute the inverse of the matrix @@ -365,17 +373,21 @@ impl MatrixOp // } // } -// /// Multiply scalar by SquareMatrix -// impl Mul for SquareMatrix { -// type Output = SquareMatrix; +/// Multiply scalar by SquareMatrix +impl Mul + for SquareMatrix +{ + type Output = SquareMatrix; -// fn mul(self, rhs: Fq) -> Self::Output { -// let elements = self.0.elements(); -// let new_elements: Vec = -// elements.iter().map(|element| *element * rhs).collect(); -// Self::from_vec(new_elements) -// } -// } + fn mul(self, rhs: Fq) -> Self::Output { + let elements = self.elements(); + let mut new_elements = [Fq::default(); N_ELEMENTS]; + for (i, &element) in elements.iter().enumerate() { + new_elements[i] = element * rhs; + } + Self::new(&new_elements) + } +} // impl SquareMatrix { // /// Create a `SquareMatrix` from a vector of elements. From 615c48ab6a4979b331ca2c4f8b7d339ee452b4fc Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 21 Feb 2024 21:56:28 -0500 Subject: [PATCH 22/54] poseidon-parameters: `Matrix`, `SquareMatrix` helper methods --- poseidon-parameters/src/matrix.rs | 60 +++++++++++++------------------ 1 file changed, 24 insertions(+), 36 deletions(-) diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 05d6464..61a6eb9 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -109,18 +109,18 @@ impl Mul } } -// impl Matrix { -// /// Get row vector at a specified row index -// pub fn row_vector(&self, i: usize) -> Matrix { -// let mut row_elements = Vec::::new(); -// for j in 0..self.n_cols { -// row_elements -// .push(self.get_element(i, j)) -// .expect("capacity should not be exceeded"); -// } -// Matrix::new(1, self.n_cols, row_elements) -// } -// } +impl + Matrix +{ + /// Get row vector at a specified row index + pub fn row_vector(&self, i: usize) -> Matrix<1, N_COLS, N_ELEMENTS> { + let mut row_elements = [Fq::default(); N_COLS]; + for j in 0..N_COLS { + row_elements[j] = self.get_element(i, j); + } + Matrix::new(&row_elements) + } +} /// Represents a square matrix over `PrimeField` elements #[derive(Clone, Debug, PartialEq, Eq)] @@ -389,28 +389,16 @@ impl Mul } } -// impl SquareMatrix { -// /// Create a `SquareMatrix` from a vector of elements. -// pub fn from_vec(elements: Vec) -> Self { -// let length_of_elements_vec = elements.len(); -// let dim = (length_of_elements_vec as f64).sqrt() as usize; -// if dim * dim != length_of_elements_vec { -// panic!("SquareMatrix must be square") -// } -// Self(Matrix::new(dim, dim, elements)) -// } - -// /// Get row vector at a specified row index. -// pub fn row_vector(&self, i: usize) -> Matrix { -// self.0.row_vector(i) -// } +impl + SquareMatrix +{ + /// Get row vector at a specified row index. + pub fn row_vector(&self, i: usize) -> Matrix<1, N_COLS, N_ELEMENTS> { + self.0.row_vector(i) + } -// /// Create a 2x2 `SquareMatrix` from four elements. -// pub fn new_2x2(a: Fq, b: Fq, c: Fq, d: Fq) -> SquareMatrix { -// let mut elements = Vec::::new(); -// elements -// .extend_from_slice(&[a, b, c, d]) -// .expect("capacity should not be exceeded"); -// Self::from_vec(elements) -// } -// } + /// Create a 2x2 `SquareMatrix` from four elements. + pub fn new_2x2(a: Fq, b: Fq, c: Fq, d: Fq) -> SquareMatrix<2, 2, 4> { + SquareMatrix::<2, 2, 4>::new(&[a, b, c, d]) + } +} From 7f0dbb1701c7dcfd5f1b20533018e04705e2f753 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 21 Feb 2024 22:08:48 -0500 Subject: [PATCH 23/54] poseidon-parameters: `SquareMatrix` inverse, cofactors, determinant --- poseidon-parameters/src/matrix.rs | 388 +++++++++++++------------- poseidon-parameters/src/matrix_ops.rs | 4 +- poseidon-parameters/src/v1.rs | 1 - 3 files changed, 189 insertions(+), 204 deletions(-) diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 61a6eb9..f4684dc 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -171,207 +171,193 @@ impl MatrixOp } } -// impl SquareMatrixOperations for SquareMatrix { -// /// Compute the inverse of the matrix -// fn inverse(&self) -> Result { -// let identity = Self::identity(self.n_rows()); - -// if self.n_rows() == 1 { -// let mut elements = Vec::::new(); -// elements -// .push( -// self.get_element(0, 0) -// .inverse() -// .expect("inverse of single element must exist for 1x1 matrix"), -// ) -// .expect("capacity should not be exceeded"); -// return Ok(Self::from_vec(elements)); -// } - -// let determinant = self.determinant(); -// if determinant == Fq::zero() { -// return Err(PoseidonParameterError::NoMatrixInverse); -// } - -// let minors = self.minors(); -// let cofactor_matrix = self.cofactors(); -// let signed_minors = minors -// .hadamard_product(&cofactor_matrix) -// .expect("minor and cofactor matrix have correct dimensions"); -// let adj = signed_minors.transpose(); -// let matrix_inverse = adj * (Fq::one() / determinant); - -// debug_assert_eq!( -// mat_mul(self, &matrix_inverse) -// .expect("matrix and its inverse should have same dimensions"), -// identity -// ); -// Ok(matrix_inverse) -// } - -// /// Construct a dim x dim identity matrix -// fn identity(dim: usize) -> Self { -// let mut elements = Vec::::new(); -// for _ in 0..dim { -// for _ in 0..dim { -// elements -// .push(Fq::zero()) -// .expect("capacity should not be exceeded"); -// } -// } -// let mut m = Self::from_vec(elements); - -// // Set diagonals to 1 -// for i in 0..dim { -// m.set_element(i, i, Fq::one()); -// } - -// m -// } - -// /// Compute the (unsigned) minors of this matrix -// fn minors(&self) -> Self { -// match self.n_cols() { -// 0 => panic!("matrix has no elements!"), -// 1 => { -// let mut elements = Vec::::new(); -// elements -// .push(self.get_element(0, 0)) -// .expect("capacity should not be exceeded"); -// Self::from_vec(elements) -// } -// 2 => { -// let mut elements = Vec::::new(); -// let a = self.get_element(0, 0); -// let b = self.get_element(0, 1); -// let c = self.get_element(1, 0); -// let d = self.get_element(1, 1); -// elements -// .extend_from_slice(&[d, c, b, a]) -// .expect("capacity should not be exceeded"); -// Self::from_vec(elements) -// } -// _ => { -// let dim = self.n_rows(); -// let mut minor_matrix_elements = Vec::::new(); -// for i in 0..dim { -// for j in 0..dim { -// let mut elements: Vec = Vec::new(); -// for k in 0..i { -// for l in 0..j { -// elements -// .push(self.get_element(k, l)) -// .expect("capacity should not be exceeded"); -// } -// for l in (j + 1)..dim { -// elements -// .push(self.get_element(k, l)) -// .expect("capacity should not be exceeded"); -// } -// } -// for k in i + 1..dim { -// for l in 0..j { -// elements -// .push(self.get_element(k, l)) -// .expect("capacity should not be exceeded"); -// } -// for l in (j + 1)..dim { -// elements -// .push(self.get_element(k, l)) -// .expect("capacity should not be exceeded"); -// } -// } -// let minor = Self::from_vec(elements); -// minor_matrix_elements -// .push(minor.determinant()) -// .expect("capacity should not be exceeded"); -// } -// } -// Self::from_vec(minor_matrix_elements) -// } -// } -// } - -// /// Compute the cofactor matrix, i.e. $C_{ij} = (-1)^{i+j}$ -// fn cofactors(&self) -> Self { -// let dim = self.n_rows(); -// let mut elements = Vec::::new(); - -// // TODO: non arkworks Fq::pow -// use crate::StuffThatNeedsToGoInDecaf377; -// for i in 0..dim { -// for j in 0..dim { -// elements -// .push((-Fq::one()).pow([(i + j) as u64])) -// .expect("capacity should not be exceeded"); -// } -// } -// Self::from_vec(elements) -// } - -// /// Compute the matrix determinant -// fn determinant(&self) -> Fq { -// match self.n_cols() { -// 0 => panic!("matrix has no elements!"), -// 1 => self.get_element(0, 0), -// 2 => { -// let a11 = self.get_element(0, 0); -// let a12 = self.get_element(0, 1); -// let a21 = self.get_element(1, 0); -// let a22 = self.get_element(1, 1); -// a11 * a22 - a21 * a12 -// } -// 3 => { -// let a11 = self.get_element(0, 0); -// let a12 = self.get_element(0, 1); -// let a13 = self.get_element(0, 2); -// let a21 = self.get_element(1, 0); -// let a22 = self.get_element(1, 1); -// let a23 = self.get_element(1, 2); -// let a31 = self.get_element(2, 0); -// let a32 = self.get_element(2, 1); -// let a33 = self.get_element(2, 2); - -// a11 * (Self::new_2x2(a22, a23, a32, a33).determinant()) -// - a12 * (Self::new_2x2(a21, a23, a31, a33).determinant()) -// + a13 * (Self::new_2x2(a21, a22, a31, a32).determinant()) -// } -// _ => { -// // Unoptimized, but MDS matrices are fairly small, so we do the naive thing -// let mut det = Fq::zero(); -// let mut levi_civita = true; -// let dim = self.n_rows(); - -// for i in 0..dim { -// let mut elements: Vec = Vec::new(); -// for k in 0..i { -// for l in 1..dim { -// elements -// .push(self.get_element(k, l)) -// .expect("capacity should not be exceeded"); -// } -// } -// for k in i + 1..dim { -// for l in 1..dim { -// elements -// .push(self.get_element(k, l)) -// .expect("capacity should not be exceeded"); -// } -// } -// let minor = Self::from_vec(elements); -// if levi_civita { -// det += self.get_element(i, 0) * minor.determinant(); -// } else { -// det -= self.get_element(i, 0) * minor.determinant(); -// } -// levi_civita = !levi_civita; -// } - -// det -// } -// } -// } -// } +impl SquareMatrixOperations + for SquareMatrix +{ + /// Compute the inverse of the matrix + fn inverse(&self) -> Result { + let identity = Self::identity(); + + if self.n_rows() == 1 { + let elements = [self + .get_element(0, 0) + .inverse() + .expect("inverse of single element must exist for 1x1 matrix")]; + return Ok(Self::new(&elements)); + } + + let determinant = self.determinant(); + if determinant == Fq::zero() { + return Err(PoseidonParameterError::NoMatrixInverse); + } + + let minors = self.minors(); + let cofactor_matrix = self.cofactors(); + let signed_minors = minors + .hadamard_product(&cofactor_matrix) + .expect("minor and cofactor matrix have correct dimensions"); + let adj = signed_minors.transpose(); + let matrix_inverse = adj * (Fq::one() / determinant); + + // debug_assert_eq!( + // mat_mul(self, &matrix_inverse) + // .expect("matrix and its inverse should have same dimensions"), + // identity + // ); + Ok(matrix_inverse) + } + + /// Construct an identity matrix + fn identity() -> Self { + let mut elements = [Fq::zero(); N_ELEMENTS]; + let mut m = Self::new(&elements); + + // Set diagonals to 1 + for i in 0..N_COLS { + m.set_element(i, i, Fq::one()); + } + + m + } + + /// Compute the (unsigned) minors of this matrix + fn minors(&self) -> Self { + match N_COLS { + 0 => panic!("matrix has no elements!"), + 1 => Self::new(&[self.get_element(0, 0)]), + 2 => { + let a = self.get_element(0, 0); + let b = self.get_element(0, 1); + let c = self.get_element(1, 0); + let d = self.get_element(1, 1); + Self::new(&[d, c, b, a]) + } + _ => { + // // Tricky because we can't do the const expression N_ROWS - 1 + // // to actually construct the minor matrix... + // let dim = self.n_rows(); + // let mut minor_matrix_elements = Vec::::new(); + // for i in 0..dim { + // for j in 0..dim { + // let mut elements: Vec = Vec::new(); + // for k in 0..i { + // for l in 0..j { + // elements + // .push(self.get_element(k, l)) + // .expect("capacity should not be exceeded"); + // } + // for l in (j + 1)..dim { + // elements + // .push(self.get_element(k, l)) + // .expect("capacity should not be exceeded"); + // } + // } + // for k in i + 1..dim { + // for l in 0..j { + // elements + // .push(self.get_element(k, l)) + // .expect("capacity should not be exceeded"); + // } + // for l in (j + 1)..dim { + // elements + // .push(self.get_element(k, l)) + // .expect("capacity should not be exceeded"); + // } + // } + // let minor = Self::from_vec(elements); + // minor_matrix_elements + // .push(minor.determinant()) + // .expect("capacity should not be exceeded"); + // } + // } + // SquareMatrix::::new(&minor_matrix_elements) + todo!() + } + } + } + + /// Compute the cofactor matrix, i.e. $C_{ij} = (-1)^{i+j}$ + fn cofactors(&self) -> Self { + let dim = self.n_rows(); + let mut elements = [Fq::zero(); N_ELEMENTS]; + + // TODO: non arkworks Fq::pow + use crate::StuffThatNeedsToGoInDecaf377; + let mut index = 0; + for i in 0..dim { + for j in 0..dim { + elements[index] = (-Fq::one()).pow([(i + j) as u64]); + index += 1; + } + } + Self::new(&elements) + } + + /// Compute the matrix determinant + fn determinant(&self) -> Fq { + match self.n_cols() { + 0 => panic!("matrix has no elements!"), + 1 => self.get_element(0, 0), + 2 => { + let a11 = self.get_element(0, 0); + let a12 = self.get_element(0, 1); + let a21 = self.get_element(1, 0); + let a22 = self.get_element(1, 1); + a11 * a22 - a21 * a12 + } + 3 => { + let a11 = self.get_element(0, 0); + let a12 = self.get_element(0, 1); + let a13 = self.get_element(0, 2); + let a21 = self.get_element(1, 0); + let a22 = self.get_element(1, 1); + let a23 = self.get_element(1, 2); + let a31 = self.get_element(2, 0); + let a32 = self.get_element(2, 1); + let a33 = self.get_element(2, 2); + + a11 * (Self::new_2x2(a22, a23, a32, a33).determinant()) + - a12 * (Self::new_2x2(a21, a23, a31, a33).determinant()) + + a13 * (Self::new_2x2(a21, a22, a31, a32).determinant()) + } + _ => { + // Unoptimized, but MDS matrices are fairly small, so we do the naive thing + // Again tricky because this is an arbitrary matrix size + // let mut det = Fq::zero(); + // let mut levi_civita = true; + // let dim = self.n_rows(); + + // for i in 0..dim { + // let mut elements: Vec = Vec::new(); + // for k in 0..i { + // for l in 1..dim { + // elements + // .push(self.get_element(k, l)) + // .expect("capacity should not be exceeded"); + // } + // } + // for k in i + 1..dim { + // for l in 1..dim { + // elements + // .push(self.get_element(k, l)) + // .expect("capacity should not be exceeded"); + // } + // } + // let minor = Self::from_vec(elements); + // if levi_civita { + // det += self.get_element(i, 0) * minor.determinant(); + // } else { + // det -= self.get_element(i, 0) * minor.determinant(); + // } + // levi_civita = !levi_civita; + // } + + // det + todo!() + } + } + } +} /// Multiply scalar by SquareMatrix impl Mul diff --git a/poseidon-parameters/src/matrix_ops.rs b/poseidon-parameters/src/matrix_ops.rs index 9539b10..b6fba53 100644 --- a/poseidon-parameters/src/matrix_ops.rs +++ b/poseidon-parameters/src/matrix_ops.rs @@ -47,8 +47,8 @@ pub trait SquareMatrixOperations { fn inverse(&self) -> Result where Self: Sized; - /// Construct an n x n identity matrix - fn identity(n: usize) -> Self; + /// Construct an identity matrix + fn identity() -> Self; /// Compute the matrix of minors fn minors(&self) -> Self; /// Compute the matrix of cofactors diff --git a/poseidon-parameters/src/v1.rs b/poseidon-parameters/src/v1.rs index d483ea3..73d8abc 100644 --- a/poseidon-parameters/src/v1.rs +++ b/poseidon-parameters/src/v1.rs @@ -8,7 +8,6 @@ pub use crate::{ matrix_ops::SquareMatrixOperations, mds_matrix::MdsMatrix, mds_matrix::OptimizedMdsMatrices, }; -// TODO: arc and mds could be collections /// A set of Poseidon1 parameters for a given set of input parameters. #[derive(Clone, Debug)] pub struct PoseidonParameters { From 4a3416d3cd8e7200eb65693bd9107b92fa2585d1 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Thu, 22 Feb 2024 17:35:13 -0500 Subject: [PATCH 24/54] poseidon-parameters: `ArcMatrix`, `OptimizedArcMatrix` --- poseidon-parameters/src/arc_matrix.rs | 69 ++++++++++++++------------- poseidon-parameters/src/lib.rs | 2 +- 2 files changed, 38 insertions(+), 33 deletions(-) diff --git a/poseidon-parameters/src/arc_matrix.rs b/poseidon-parameters/src/arc_matrix.rs index 3590c2f..fd9c247 100644 --- a/poseidon-parameters/src/arc_matrix.rs +++ b/poseidon-parameters/src/arc_matrix.rs @@ -1,7 +1,4 @@ -use crate::Vec; -use crate::{ - error::PoseidonParameterError, matrix::Matrix, matrix_ops::MatrixOperations, MAX_DIMENSION, -}; +use crate::{error::PoseidonParameterError, matrix::Matrix, matrix_ops::MatrixOperations}; use decaf377::Fq; /// Represents an matrix of round constants. @@ -9,14 +6,18 @@ use decaf377::Fq; /// Arc stands for `AddRoundConstant` which is the /// step in the permutation where this matrix is used. #[derive(Clone, Debug, PartialEq, Eq)] -pub struct ArcMatrix(pub Matrix); +pub struct ArcMatrix( + pub Matrix, +); -impl MatrixOperations for ArcMatrix { - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { - Self(Matrix::new(n_rows, n_cols, elements)) +impl MatrixOperations + for ArcMatrix +{ + fn new(elements: &[Fq]) -> Self { + Self(Matrix::new(elements)) } - fn elements(&self) -> &Vec { + fn elements(&self) -> &[Fq] { self.0.elements() } @@ -28,7 +29,7 @@ impl MatrixOperations for ArcMatrix { self.0.set_element(i, j, val) } - fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION> { + fn rows(&self) -> &[&[Fq]] { self.0.rows() } @@ -52,22 +53,22 @@ impl MatrixOperations for ArcMatrix { } } -impl From for Vec, MAX_DIMENSION> { - fn from(arc: ArcMatrix) -> Self { - let mut rows = Vec::, MAX_DIMENSION>::new(); - let m = &arc.0; - - for i in 0..arc.n_rows() { - let mut row = Vec::new(); - for j in 0..arc.n_cols() { - row.push(m.get_element(i, j)) - .expect("capacity should not be exceeded"); - } - rows.push(row).expect("capacity should not be exceeded"); - } - rows - } -} +// impl From for Vec, MAX_DIMENSION> { +// fn from(arc: ArcMatrix) -> Self { +// let mut rows = Vec::, MAX_DIMENSION>::new(); +// let m = &arc.0; + +// for i in 0..arc.n_rows() { +// let mut row = Vec::new(); +// for j in 0..arc.n_cols() { +// row.push(m.get_element(i, j)) +// .expect("capacity should not be exceeded"); +// } +// rows.push(row).expect("capacity should not be exceeded"); +// } +// rows +// } +// } /// Represents an optimized matrix of round constants. /// @@ -78,15 +79,19 @@ impl From for Vec, MAX_DIMENSION> { /// This method follows `calc_equivalent_constants` from Appendix B's /// `poseidonperm_x3_64_24_optimized.sage`. #[derive(Clone, Debug, PartialEq, Eq)] -pub struct OptimizedArcMatrix(pub ArcMatrix); +pub struct OptimizedArcMatrix( + pub ArcMatrix, +); -impl MatrixOperations for OptimizedArcMatrix { +impl MatrixOperations + for OptimizedArcMatrix +{ /// Create a `OptimizedArcMatrix` from its elements. - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { - Self(ArcMatrix::new(n_rows, n_cols, elements)) + fn new(elements: &[Fq]) -> Self { + Self(ArcMatrix::new(elements)) } - fn elements(&self) -> &Vec { + fn elements(&self) -> &[Fq] { self.0.elements() } @@ -98,7 +103,7 @@ impl MatrixOperations for OptimizedArcMatrix { self.0.set_element(i, j, val) } - fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION> { + fn rows(&self) -> &[&[Fq]] { self.0.rows() } diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index 02ff365..25e857d 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -8,7 +8,7 @@ use decaf377::Fq; mod alpha; -// mod arc_matrix; +mod arc_matrix; mod error; mod matrix; mod matrix_ops; From 894b51008657282664e2067c721a12da49db0c4d Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Thu, 22 Feb 2024 21:50:21 -0500 Subject: [PATCH 25/54] poseidon-parameters: `MdsMatrix` --- poseidon-parameters/src/lib.rs | 4 +- poseidon-parameters/src/matrix.rs | 35 +++--- poseidon-parameters/src/mds_matrix.rs | 147 ++++++++++++++------------ 3 files changed, 95 insertions(+), 91 deletions(-) diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index 25e857d..ad5677c 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -12,14 +12,12 @@ mod arc_matrix; mod error; mod matrix; mod matrix_ops; -// mod mds_matrix; +mod mds_matrix; mod round_numbers; #[cfg(test)] mod tests; -pub const MAX_DIMENSION: usize = 100; - /// Structures related to Poseidon version 1 parameters. // pub mod v1; diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index f4684dc..67b87b0 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -124,12 +124,12 @@ impl /// Represents a square matrix over `PrimeField` elements #[derive(Clone, Debug, PartialEq, Eq)] -pub struct SquareMatrix( - pub Matrix, +pub struct SquareMatrix( + pub Matrix, ); -impl MatrixOperations - for SquareMatrix +impl MatrixOperations + for SquareMatrix { fn new(elements: &[Fq]) -> Self { Self(Matrix::new(elements)) @@ -156,7 +156,8 @@ impl MatrixOp } fn n_cols(&self) -> usize { - N_COLS + // Matrix is square + N_ROWS } fn transpose(&self) -> Self { @@ -171,8 +172,8 @@ impl MatrixOp } } -impl SquareMatrixOperations - for SquareMatrix +impl SquareMatrixOperations + for SquareMatrix { /// Compute the inverse of the matrix fn inverse(&self) -> Result { @@ -213,7 +214,7 @@ impl SquareMa let mut m = Self::new(&elements); // Set diagonals to 1 - for i in 0..N_COLS { + for i in 0..N_ROWS { m.set_element(i, i, Fq::one()); } @@ -222,7 +223,7 @@ impl SquareMa /// Compute the (unsigned) minors of this matrix fn minors(&self) -> Self { - match N_COLS { + match N_ROWS { 0 => panic!("matrix has no elements!"), 1 => Self::new(&[self.get_element(0, 0)]), 2 => { @@ -360,10 +361,8 @@ impl SquareMa } /// Multiply scalar by SquareMatrix -impl Mul - for SquareMatrix -{ - type Output = SquareMatrix; +impl Mul for SquareMatrix { + type Output = SquareMatrix; fn mul(self, rhs: Fq) -> Self::Output { let elements = self.elements(); @@ -375,16 +374,14 @@ impl Mul } } -impl - SquareMatrix -{ +impl SquareMatrix { /// Get row vector at a specified row index. - pub fn row_vector(&self, i: usize) -> Matrix<1, N_COLS, N_ELEMENTS> { + pub fn row_vector(&self, i: usize) -> Matrix<1, N_ROWS, N_ELEMENTS> { self.0.row_vector(i) } /// Create a 2x2 `SquareMatrix` from four elements. - pub fn new_2x2(a: Fq, b: Fq, c: Fq, d: Fq) -> SquareMatrix<2, 2, 4> { - SquareMatrix::<2, 2, 4>::new(&[a, b, c, d]) + pub fn new_2x2(a: Fq, b: Fq, c: Fq, d: Fq) -> SquareMatrix<2, 4> { + SquareMatrix::<2, 4>::new(&[a, b, c, d]) } } diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index 5841b77..bcbc7bb 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -1,22 +1,28 @@ -use crate::Vec; use crate::{ error::PoseidonParameterError, matrix::{Matrix, SquareMatrix}, matrix_ops::{MatrixOperations, SquareMatrixOperations}, - MAX_DIMENSION, }; use decaf377::Fq; /// Represents an MDS (maximum distance separable) matrix. #[derive(Clone, Debug, PartialEq, Eq)] -pub struct MdsMatrix(pub SquareMatrix); - -impl MatrixOperations for MdsMatrix { - fn new(n_rows: usize, n_cols: usize, elements: Vec) -> Self { - Self(SquareMatrix::new(n_rows, n_cols, elements)) +pub struct MdsMatrix< + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_ELEMENTS: usize, +>(pub SquareMatrix); + +impl + MatrixOperations for MdsMatrix +{ + fn new(elements: &[Fq]) -> Self { + assert!(STATE_SIZE == STATE_SIZE_MINUS_1 + 1); + assert!(STATE_SIZE * STATE_SIZE == NUM_ELEMENTS); + Self(SquareMatrix::new(elements)) } - fn elements(&self) -> &Vec { + fn elements(&self) -> &[Fq] { self.0.elements() } @@ -28,7 +34,7 @@ impl MatrixOperations for MdsMatrix { self.0.set_element(i, j, val) } - fn rows(&self) -> Vec<&[Fq], MAX_DIMENSION> { + fn rows(&self) -> &[&[Fq]] { self.0.rows() } @@ -52,7 +58,9 @@ impl MatrixOperations for MdsMatrix { } } -impl MdsMatrix { +impl + MdsMatrix +{ /// Instantiate an MDS matrix from a list of elements. /// /// # Security @@ -61,12 +69,12 @@ impl MdsMatrix { /// using the Cauchy method in `fixed_cauchy_matrix` or /// using the random subsampling method described in the original /// paper. - pub fn from_elements(elements: Vec) -> Self { - Self(SquareMatrix::from_vec(elements)) + pub fn from_elements(elements: &[Fq]) -> Self { + Self(SquareMatrix::new(elements)) } /// Compute inverse of MDS matrix - pub fn inverse(&self) -> SquareMatrix { + pub fn inverse(&self) -> SquareMatrix { self.0 .inverse() .expect("all well-formed MDS matrices should have inverses") @@ -75,85 +83,86 @@ impl MdsMatrix { /// Return the elements M_{0,1} .. M_{0,t} from the first row /// /// Ref: p.20 of the Poseidon paper - pub fn v(&self) -> Matrix { - let mut elements = Vec::::new(); - elements - .extend_from_slice(&self.0 .0.elements()[1..self.0 .0.n_rows()]) - .expect("capacity should not be exceeded"); - Matrix::new(1, self.0.n_rows() - 1, elements) + pub fn v(&self) -> Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1> { + let elements = &self.0 .0.elements()[1..self.0 .0.n_rows()]; + Matrix::new(&elements) } - /// Return the elements M_{1,0} .. M_{t,0}from the first column + /// Return the elements M_{1,0} .. M_{t,0} from the first column /// /// Ref: p.20 of the Poseidon paper - pub fn w(&self) -> Matrix { - let mut elements = Vec::::new(); + pub fn w(&self) -> Matrix { + let mut elements = [Fq::zero(); STATE_SIZE_MINUS_1]; for i in 1..self.n_rows() { - elements - .push(self.get_element(i, 0)) - .expect("capacity should not be exceeded"); + elements[i - 1] = self.get_element(i, 0); } - Matrix::new(&self.n_rows() - 1, 1, elements) + Matrix::new(&elements) } - /// Compute the (t - 1) x (t - 1) Mhat matrix from the MDS matrix - /// - /// This is simply the MDS matrix with the first row and column removed - /// - /// Ref: p.20 of the Poseidon paper - pub fn hat(&self) -> SquareMatrix { - let dim = self.n_rows(); - let mut mhat_elements = Vec::::new(); - for i in 1..dim { - for j in 1..dim { - mhat_elements - .push(self.0.get_element(i, j)) - .expect("capacity should not be exceeded"); - } - } - - SquareMatrix::from_vec(mhat_elements) - } + // /// Compute the (t - 1) x (t - 1) Mhat matrix from the MDS matrix + // /// + // /// This is simply the MDS matrix with the first row and column removed + // /// + // /// Ref: p.20 of the Poseidon paper + // TODO: Need a const generic parameter for the number of elements in the Mhat matrix + // pub fn hat(&self) -> SquareMatrix { + // let dim = self.n_rows(); + // let mut mhat_elements = Vec::::new(); + // for i in 1..dim { + // for j in 1..dim { + // mhat_elements + // .push(self.0.get_element(i, j)) + // .expect("capacity should not be exceeded"); + // } + // } + // SquareMatrix::from_vec(mhat_elements) + // } } -impl From for Vec, MAX_DIMENSION> { - fn from(val: MdsMatrix) -> Self { - let mut rows = Vec::, MAX_DIMENSION>::new(); - for i in 0..val.0.n_rows() { - let mut row = Vec::new(); - for j in 0..val.0.n_rows() { - row.push(val.0 .0.get_element(i, j)) - .expect("capacity should not be exceeded"); - } - rows.push(row).expect("capacity should not be exceeded"); - } - rows - } -} +// impl From for Vec, MAX_DIMENSION> { +// fn from(val: MdsMatrix) -> Self { +// let mut rows = Vec::, MAX_DIMENSION>::new(); +// for i in 0..val.0.n_rows() { +// let mut row = Vec::new(); +// for j in 0..val.0.n_rows() { +// row.push(val.0 .0.get_element(i, j)) +// .expect("capacity should not be exceeded"); +// } +// rows.push(row).expect("capacity should not be exceeded"); +// } +// rows +// } +// } /// Represents an optimized MDS (maximum distance separable) matrix. #[derive(Clone, Debug, PartialEq, Eq)] -pub struct OptimizedMdsMatrices { +pub struct OptimizedMdsMatrices< + const N_ROUNDS: usize, + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_ELEMENTS_STATE_SIZE_2: usize, + const NUM_ELEMENTS_STATE_SIZE_MINUS_1_2: usize, +> { /// A (t - 1) x (t - 1) MDS submatrix derived from the MDS matrix. - pub M_hat: SquareMatrix, + pub M_hat: SquareMatrix, /// A 1 x (t - 1) (row) vector derived from the MDS matrix. - pub v: Matrix, + pub v: Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1>, /// A (t - 1) x 1 (column) vector derived from the MDS matrix. - pub w: Matrix, + pub w: Matrix, /// A matrix formed from Mhat (an MDS submatrix of the MDS matrix). - pub M_prime: SquareMatrix, + pub M_prime: SquareMatrix, /// A sparse matrix formed from M, - pub M_doubleprime: SquareMatrix, + pub M_doubleprime: SquareMatrix, /// The inverse of the t x t MDS matrix (needed to compute round constants). - pub M_inverse: SquareMatrix, + pub M_inverse: SquareMatrix, /// The inverse of the (t - 1) x (t - 1) Mhat matrix. - pub M_hat_inverse: SquareMatrix, + pub M_hat_inverse: SquareMatrix, /// Element at M00 pub M_00: Fq, /// M_i - pub M_i: Matrix, + pub M_i: Matrix, /// v_collection: one per round. - pub v_collection: Vec, + pub v_collection: [Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1>; N_ROUNDS], /// w_hat_collection: one per round - pub w_hat_collection: Vec, + pub w_hat_collection: [Matrix; N_ROUNDS], } From 0c8dceca5e437c7ea7d5c07c313a3e7dbc305675 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Thu, 22 Feb 2024 21:58:03 -0500 Subject: [PATCH 26/54] poseidon-parameters: v2 --- poseidon-parameters/src/lib.rs | 2 +- poseidon-parameters/src/v2.rs | 26 +++++++++++++++++--------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index ad5677c..dd1bc52 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -22,7 +22,7 @@ mod tests; // pub mod v1; /// Structures related to Poseidon version 2 parameters. -// pub mod v2; +pub mod v2; pub trait StuffThatNeedsToGoInDecaf377 { fn pow>(&self, exp: S) -> Self; diff --git a/poseidon-parameters/src/v2.rs b/poseidon-parameters/src/v2.rs index 054e4d2..6826d3e 100644 --- a/poseidon-parameters/src/v2.rs +++ b/poseidon-parameters/src/v2.rs @@ -3,18 +3,26 @@ pub use crate::arc_matrix::ArcMatrix; pub use crate::matrix::SquareMatrix; pub use crate::round_numbers::RoundNumbers; -pub use crate::{ - matrix_ops::MatrixOperations, matrix_ops::Polynomial, matrix_ops::SquareMatrixOperations, -}; +pub use crate::{matrix_ops::MatrixOperations, matrix_ops::SquareMatrixOperations}; /// A set of Poseidon2 parameters for a given set of input parameters. +/// +/// The const `STATE_SIZE` corresponds to $t$ in the paper, the width of the hash function, +/// e.g. $t=3$ corresponds to a 2-to-1 hash. +/// +/// The const `NUM_MDS_ELEMENTS` corresponds to the number of elements in the MDS matrices, which +/// should equal `STATE_SIZE * STATE_SIZE`. #[derive(Clone, Debug)] -pub struct PoseidonParameters { +pub struct PoseidonParameters< + const STATE_SIZE: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_ROUND_ROWS: usize, + const NUM_ROUND_COLS: usize, + const NUM_ROUND_ELEMENTS: usize, +> { // Input parameters. /// Security level. pub M: usize, - /// Width of desired hash function, e.g. $t=3$ corresponds to a 2-to-1 hash. - pub t: usize, // Generated parameters. /// Exponent of the Sbox, i.e. S-box(x) = x^{\alpha} used in the `SubWords` step @@ -24,11 +32,11 @@ pub struct PoseidonParameters { pub rounds: RoundNumbers, /// External matrix - pub m_e: SquareMatrix, + pub m_e: SquareMatrix, /// Internal matrix - pub m_i: SquareMatrix, + pub m_i: SquareMatrix, /// Round constants - pub arc: ArcMatrix, + pub arc: ArcMatrix, } From 604b6b9e9915691cd1ed8b74fbf7fdca1adb26ab Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Thu, 22 Feb 2024 23:11:09 -0500 Subject: [PATCH 27/54] poseidon-parameters: v1 --- poseidon-parameters/src/lib.rs | 2 +- poseidon-parameters/src/v1.rs | 30 ++++++++++++++++++++---------- poseidon-parameters/src/v2.rs | 3 +++ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index dd1bc52..bfb1c8c 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -19,7 +19,7 @@ mod round_numbers; mod tests; /// Structures related to Poseidon version 1 parameters. -// pub mod v1; +pub mod v1; /// Structures related to Poseidon version 2 parameters. pub mod v2; diff --git a/poseidon-parameters/src/v1.rs b/poseidon-parameters/src/v1.rs index 73d8abc..538e15a 100644 --- a/poseidon-parameters/src/v1.rs +++ b/poseidon-parameters/src/v1.rs @@ -1,7 +1,9 @@ pub use crate::alpha::Alpha; pub use crate::round_numbers::RoundNumbers; -pub use crate::{matrix::Matrix, matrix::SquareMatrix, matrix_ops::mat_mul}; +pub use crate::{matrix::Matrix, matrix::SquareMatrix}; + +// pub use crate::matrix_ops::mat_mul; pub use crate::{ arc_matrix::ArcMatrix, arc_matrix::OptimizedArcMatrix, matrix_ops::MatrixOperations, @@ -9,13 +11,21 @@ pub use crate::{ }; /// A set of Poseidon1 parameters for a given set of input parameters. +/// +/// The const `STATE_SIZE` corresponds to $t$ in the paper, the width of the hash function, +/// e.g. $t=3$ corresponds to a 2-to-1 hash. #[derive(Clone, Debug)] -pub struct PoseidonParameters { +pub struct PoseidonParameters< + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_ROUND_ROWS: usize, + const NUM_ROUND_COLS: usize, + const NUM_ROUND_ELEMENTS: usize, +> { // Input parameters. /// Security level. pub M: usize, - /// Width of desired hash function, e.g. $t=3$ corresponds to a 2-to-1 hash. - pub t: usize, // Generated parameters. /// Exponent of the Sbox, i.e. S-box(x) = x^{\alpha} used in the `SubWords` step @@ -25,14 +35,14 @@ pub struct PoseidonParameters { pub rounds: RoundNumbers, /// `t x t` MDS matrix used in the `MixLayer` step - pub mds: MdsMatrix, + pub mds: MdsMatrix, /// `num_total_rounds x t` matrix of constants used in the `AddRoundConstant` step - pub arc: ArcMatrix, + pub arc: ArcMatrix, /// Optimized round constants. - pub optimized_arc: OptimizedArcMatrix, - - /// Optimized MDS matrices. - pub optimized_mds: OptimizedMdsMatrices, + pub optimized_arc: OptimizedArcMatrix, + // TODO: + // /// Optimized MDS matrices. + //pub optimized_mds: OptimizedMdsMatrices, } diff --git a/poseidon-parameters/src/v2.rs b/poseidon-parameters/src/v2.rs index 6826d3e..a44a10e 100644 --- a/poseidon-parameters/src/v2.rs +++ b/poseidon-parameters/src/v2.rs @@ -12,6 +12,9 @@ pub use crate::{matrix_ops::MatrixOperations, matrix_ops::SquareMatrixOperations /// /// The const `NUM_MDS_ELEMENTS` corresponds to the number of elements in the MDS matrices, which /// should equal `STATE_SIZE * STATE_SIZE`. +/// +/// The const `NUM_ROUND_ROWS`, `NUM_ROUND_COLS`, and `NUM_ROUND_ELEMENTS` correspond to the number +/// of rows in the round constants matrix. #[derive(Clone, Debug)] pub struct PoseidonParameters< const STATE_SIZE: usize, From cee2e75b68ab70edac4e97bd510b156301ea0548 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Fri, 23 Feb 2024 12:44:03 -0500 Subject: [PATCH 28/54] poseidon-parameters: re-enable identity, cofactor, transpose tests --- poseidon-parameters/src/matrix.rs | 2 +- poseidon-parameters/src/tests.rs | 113 +++++++++++++----------------- 2 files changed, 51 insertions(+), 64 deletions(-) diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 67b87b0..f64e52f 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -210,7 +210,7 @@ impl SquareMatrixOperations /// Construct an identity matrix fn identity() -> Self { - let mut elements = [Fq::zero(); N_ELEMENTS]; + let elements = [Fq::zero(); N_ELEMENTS]; let mut m = Self::new(&elements); // Set diagonals to 1 diff --git a/poseidon-parameters/src/tests.rs b/poseidon-parameters/src/tests.rs index 7d5174a..a097713 100644 --- a/poseidon-parameters/src/tests.rs +++ b/poseidon-parameters/src/tests.rs @@ -5,17 +5,16 @@ use super::*; // use crate::matrix_ops::mat_mul; use crate::{matrix::Matrix, matrix_ops::MatrixOperations}; -// use crate::{matrix::SquareMatrix, matrix_ops::SquareMatrixOperations}; -// use v1::Matrix; +use crate::{matrix::SquareMatrix, matrix_ops::SquareMatrixOperations}; -// #[test] -// fn identity_matrix() { -// let identity = SquareMatrix::identity(2); -// assert_eq!(identity.get_element(0, 0), Fq::one()); -// assert_eq!(identity.get_element(0, 1), Fq::zero()); -// assert_eq!(identity.get_element(1, 1), Fq::one()); -// assert_eq!(identity.get_element(1, 0), Fq::zero()); -// } +#[test] +fn identity_matrix() { + let identity = SquareMatrix::<2, 4>::identity(); + assert_eq!(identity.get_element(0, 0), Fq::one()); + assert_eq!(identity.get_element(0, 1), Fq::zero()); + assert_eq!(identity.get_element(1, 1), Fq::one()); + assert_eq!(identity.get_element(1, 0), Fq::zero()); +} // #[test] // fn square_matmul() { @@ -86,63 +85,51 @@ fn hadamard_product() { assert_eq!(res.get_element(2, 1), Fq::from(36u64)); } -// #[test] -// fn transpose() { -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[ -// Fq::one(), -// Fq::from(2u64), -// Fq::from(3u64), -// Fq::from(4u64), -// Fq::from(5u64), -// Fq::from(6u64), -// ]) -// .expect("capacity should not be exceeded"); -// let matrix_2x3 = Matrix::new(3, 2, test_elements); -// assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); -// assert_eq!(matrix_2x3.get_element(1, 0), Fq::from(3u64)); -// assert_eq!(matrix_2x3.get_element(1, 1), Fq::from(4u64)); -// assert_eq!(matrix_2x3.get_element(2, 0), Fq::from(5u64)); -// assert_eq!(matrix_2x3.get_element(2, 1), Fq::from(6u64)); -// let res = matrix_2x3.transpose(); -// assert_eq!(res.get_element(1, 0), Fq::from(2u64)); -// assert_eq!(res.get_element(0, 1), Fq::from(3u64)); -// assert_eq!(res.get_element(1, 1), Fq::from(4u64)); -// assert_eq!(res.get_element(0, 2), Fq::from(5u64)); -// assert_eq!(res.get_element(1, 2), Fq::from(6u64)); +#[test] +fn transpose() { + let test_elements = &[ + Fq::one(), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + Fq::from(5u64), + Fq::from(6u64), + ]; + let matrix_2x3 = Matrix::<3, 2, 6>::new(test_elements); + assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); + assert_eq!(matrix_2x3.get_element(1, 0), Fq::from(3u64)); + assert_eq!(matrix_2x3.get_element(1, 1), Fq::from(4u64)); + assert_eq!(matrix_2x3.get_element(2, 0), Fq::from(5u64)); + assert_eq!(matrix_2x3.get_element(2, 1), Fq::from(6u64)); + let res = matrix_2x3.transpose(); + assert_eq!(res.get_element(1, 0), Fq::from(2u64)); + assert_eq!(res.get_element(0, 1), Fq::from(3u64)); + assert_eq!(res.get_element(1, 1), Fq::from(4u64)); + assert_eq!(res.get_element(0, 2), Fq::from(5u64)); + assert_eq!(res.get_element(1, 2), Fq::from(6u64)); -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) -// .expect("capacity should not be exceeded"); -// let matrix_2x2 = SquareMatrix::from_vec(test_elements); + let test_elements = &[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]; + let matrix_2x2 = SquareMatrix::<2, 4>::new(test_elements); -// let res = matrix_2x2.transpose(); -// assert_eq!(res.get_element(0, 0), Fq::one()); -// assert_eq!(res.get_element(0, 1), Fq::from(3u64)); -// assert_eq!(res.get_element(1, 0), Fq::from(2u64)); -// assert_eq!(res.get_element(1, 1), Fq::from(4u64)); -// } + let res = matrix_2x2.transpose(); + assert_eq!(res.get_element(0, 0), Fq::one()); + assert_eq!(res.get_element(0, 1), Fq::from(3u64)); + assert_eq!(res.get_element(1, 0), Fq::from(2u64)); + assert_eq!(res.get_element(1, 1), Fq::from(4u64)); +} -// #[test] -// fn cofactors() { -// let identity_1x1 = SquareMatrix::identity(1); -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[Fq::one()]) -// .expect("capacity should not be exceeded"); -// let expected_res = SquareMatrix::from_vec(test_elements); -// assert_eq!(identity_1x1.cofactors(), expected_res); +#[test] +fn cofactors() { + let identity_1x1 = SquareMatrix::<1, 1>::identity(); + let test_elements = &[Fq::one()]; + let expected_res = SquareMatrix::new(test_elements); + assert_eq!(identity_1x1.cofactors(), expected_res); -// let identity_2x2 = SquareMatrix::identity(2); -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[Fq::one(), -Fq::one(), -Fq::one(), Fq::one()]) -// .expect("capacity should not be exceeded"); -// let expected_res = SquareMatrix::from_vec(test_elements); -// assert_eq!(identity_2x2.cofactors(), expected_res); -// } + let identity_2x2 = SquareMatrix::<2, 4>::identity(); + let test_elements = &[Fq::one(), -Fq::one(), -Fq::one(), Fq::one()]; + let expected_res = SquareMatrix::new(test_elements); + assert_eq!(identity_2x2.cofactors(), expected_res); +} // fn fq_strategy() -> BoxedStrategy { // any::<[u64; 4]>().prop_map(Fq::from_le_limbs).boxed() From cb941bac7b9522082ca40dbda03e4c41f1a3a638 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 26 Feb 2024 16:38:35 -0500 Subject: [PATCH 29/54] poseidon-parameters: move transpose out from trait, add mat_mul (if we keep transpose on the MatrixOperations trait, then we need to have const generic parameters on there) --- poseidon-parameters/src/arc_matrix.rs | 24 +++-- poseidon-parameters/src/matrix.rs | 71 +++++++++---- poseidon-parameters/src/matrix_ops.rs | 4 - poseidon-parameters/src/mds_matrix.rs | 8 +- poseidon-parameters/src/tests.rs | 140 ++++++++++---------------- 5 files changed, 128 insertions(+), 119 deletions(-) diff --git a/poseidon-parameters/src/arc_matrix.rs b/poseidon-parameters/src/arc_matrix.rs index fd9c247..a18cd83 100644 --- a/poseidon-parameters/src/arc_matrix.rs +++ b/poseidon-parameters/src/arc_matrix.rs @@ -10,6 +10,14 @@ pub struct ArcMatrix, ); +impl + ArcMatrix +{ + pub fn transpose(&self) -> ArcMatrix { + ArcMatrix(self.0.transpose()) + } +} + impl MatrixOperations for ArcMatrix { @@ -41,10 +49,6 @@ impl MatrixOp self.0.n_cols() } - fn transpose(&self) -> Self { - Self(self.0.transpose()) - } - fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized, @@ -83,6 +87,14 @@ pub struct OptimizedArcMatrix, ); +impl + OptimizedArcMatrix +{ + pub fn transpose(&self) -> OptimizedArcMatrix { + OptimizedArcMatrix(self.0.transpose()) + } +} + impl MatrixOperations for OptimizedArcMatrix { @@ -115,10 +127,6 @@ impl MatrixOp self.0.n_cols() } - fn transpose(&self) -> Self { - Self(self.0.transpose()) - } - fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized, diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index f64e52f..c4b62b7 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -2,7 +2,7 @@ use core::convert::TryInto; use core::ops::Mul; use crate::error::PoseidonParameterError; -use crate::matrix_ops::{MatrixOperations, SquareMatrixOperations}; +use crate::matrix_ops::{dot_product, MatrixOperations, SquareMatrixOperations}; use decaf377::Fq; /// Represents a matrix over `PrimeField` elements. @@ -16,6 +16,23 @@ pub struct Matrix + Matrix +{ + pub fn transpose(&self) -> Matrix { + let mut transposed_elements = [Fq::default(); N_ELEMENTS]; + + let mut index = 0; + for j in 0..self.n_cols() { + for i in 0..self.n_rows() { + transposed_elements[index] = self.get_element(i, j); + index += 1; + } + } + Matrix::::new(&transposed_elements) + } +} + impl MatrixOperations for Matrix { @@ -59,19 +76,6 @@ impl MatrixOp N_COLS } - fn transpose(&self) -> Self { - let mut transposed_elements = [Fq::default(); N_ELEMENTS]; - - let mut index = 0; - for j in 0..self.n_cols() { - for i in 0..self.n_rows() { - transposed_elements[index] = self.get_element(i, j); - index += 1; - } - } - Self::new(&transposed_elements) - } - fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized, @@ -93,6 +97,35 @@ impl MatrixOp } } +/// Multiply two matrices +pub fn mat_mul< + const LHS_N_ROWS: usize, + const LHS_N_COLS: usize, + const LHS_N_ELEMENTS: usize, + const RHS_N_ROWS: usize, + const RHS_N_COLS: usize, + const RHS_N_ELEMENTS: usize, + const RESULT_N_ELEMENTS: usize, +>( + lhs: &Matrix, + rhs: &Matrix, +) -> Matrix { + let rhs_T = rhs.transpose(); + + let mut new_elements = [Fq::default(); RESULT_N_ELEMENTS]; + + let mut index = 0; + for row in lhs.iter_rows() { + // Rows of the transposed matrix are the columns of the original matrix + for column in rhs_T.iter_rows() { + new_elements[index] = dot_product(row, column); + index += 1; + } + } + + Matrix::::new(&new_elements) +} + /// Multiply scalar by Matrix impl Mul for Matrix @@ -122,6 +155,12 @@ impl } } +impl SquareMatrix { + pub fn transpose(&self) -> Self { + Self(self.0.transpose()) + } +} + /// Represents a square matrix over `PrimeField` elements #[derive(Clone, Debug, PartialEq, Eq)] pub struct SquareMatrix( @@ -160,10 +199,6 @@ impl MatrixOperations N_ROWS } - fn transpose(&self) -> Self { - Self(self.0.transpose()) - } - fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized, diff --git a/poseidon-parameters/src/matrix_ops.rs b/poseidon-parameters/src/matrix_ops.rs index b6fba53..73da335 100644 --- a/poseidon-parameters/src/matrix_ops.rs +++ b/poseidon-parameters/src/matrix_ops.rs @@ -22,16 +22,12 @@ pub trait MatrixOperations { fn n_rows(&self) -> usize; /// Number of columns fn n_cols(&self) -> usize; - /// Take transpose of the matrix - fn transpose(&self) -> Self; /// Compute Hadamard (element-wise) product fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized; } -// TODO: mat_mul - /// Compute vector dot product pub fn dot_product(a: &[Fq], b: &[Fq]) -> Fq { if a.len() != b.len() { diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index bcbc7bb..58b310e 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -46,10 +46,6 @@ impl Self { - Self(self.0.transpose()) - } - fn hadamard_product(&self, rhs: &Self) -> Result where Self: Sized, @@ -73,6 +69,10 @@ impl Self { + Self(self.0.transpose()) + } + /// Compute inverse of MDS matrix pub fn inverse(&self) -> SquareMatrix { self.0 diff --git a/poseidon-parameters/src/tests.rs b/poseidon-parameters/src/tests.rs index a097713..8d4e62f 100644 --- a/poseidon-parameters/src/tests.rs +++ b/poseidon-parameters/src/tests.rs @@ -3,7 +3,7 @@ use proptest::prelude::*; use super::*; -// use crate::matrix_ops::mat_mul; +use crate::matrix::mat_mul; use crate::{matrix::Matrix, matrix_ops::MatrixOperations}; use crate::{matrix::SquareMatrix, matrix_ops::SquareMatrixOperations}; @@ -33,36 +33,30 @@ fn identity_matrix() { // assert_eq!(res.get_element(1, 1), Fq::from(4u64)); // } -// #[test] -// fn nonsquare_matmul() { -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[ -// Fq::one(), -// Fq::from(2u64), -// Fq::from(3u64), -// Fq::from(4u64), -// Fq::from(5u64), -// Fq::from(6u64), -// ]) -// .expect("capacity should not be exceeded"); -// let matrix_2x3 = Matrix::new(3, 2, test_elements); - -// let res = mat_mul(&matrix_2x3, &matrix_2x3); -// assert!(res.is_err()); +#[test] +fn nonsquare_matmul_happy() { + let test_elements = &[ + Fq::one(), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + Fq::from(5u64), + Fq::from(6u64), + ]; + let matrix_2x3 = Matrix::<3, 2, 6>::new(test_elements); -// let matrix_3x2 = matrix_2x3.transpose(); -// let res = mat_mul(&matrix_2x3, &matrix_3x2).expect("is ok"); -// assert_eq!(res.get_element(0, 0), Fq::from(5u64)); -// assert_eq!(res.get_element(0, 1), Fq::from(11u64)); -// assert_eq!(res.get_element(0, 2), Fq::from(17u64)); -// assert_eq!(res.get_element(1, 0), Fq::from(11u64)); -// assert_eq!(res.get_element(1, 1), Fq::from(25u64)); -// assert_eq!(res.get_element(1, 2), Fq::from(39u64)); -// assert_eq!(res.get_element(2, 0), Fq::from(17u64)); -// assert_eq!(res.get_element(2, 1), Fq::from(39u64)); -// assert_eq!(res.get_element(2, 2), Fq::from(61u64)); -// } + let matrix_3x2 = matrix_2x3.transpose(); + let res: matrix::Matrix<3, 3, 9> = mat_mul(&matrix_2x3, &matrix_3x2); + assert_eq!(res.get_element(0, 0), Fq::from(5u64)); + assert_eq!(res.get_element(0, 1), Fq::from(11u64)); + assert_eq!(res.get_element(0, 2), Fq::from(17u64)); + assert_eq!(res.get_element(1, 0), Fq::from(11u64)); + assert_eq!(res.get_element(1, 1), Fq::from(25u64)); + assert_eq!(res.get_element(1, 2), Fq::from(39u64)); + assert_eq!(res.get_element(2, 0), Fq::from(17u64)); + assert_eq!(res.get_element(2, 1), Fq::from(39u64)); + assert_eq!(res.get_element(2, 2), Fq::from(61u64)); +} #[test] fn hadamard_product() { @@ -138,9 +132,8 @@ fn cofactors() { // proptest! { // #[test] // fn inverse_2x2(a in fq_strategy(), b in fq_strategy(), c in fq_strategy(), d in fq_strategy()) { -// let mut test_elements = Vec::::new(); -// test_elements.extend_from_slice(&[a, b, c, d]).expect("capacity should not be exceeded"); -// let matrix_2x2 = SquareMatrix::from_vec(test_elements); +// let mut test_elements = &[a, b, c, d]; +// let matrix_2x2 = SquareMatrix::new(test_elements); // let res = matrix_2x2.inverse().unwrap(); // assert_eq!(mat_mul(&matrix_2x2, &res).unwrap(), SquareMatrix::identity(2)); @@ -213,56 +206,41 @@ fn cofactors() { // assert_eq!(res, expected_res); // } -// #[test] -// fn create_matrix_from_vec() { -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) -// .expect("capacity should not be exceeded"); -// let matrix_2x2 = SquareMatrix::from_vec(test_elements); -// assert_eq!(matrix_2x2.get_element(0, 0), Fq::one()); -// assert_eq!(matrix_2x2.get_element(0, 1), Fq::from(2u64)); -// assert_eq!(matrix_2x2.get_element(1, 0), Fq::from(3u64)); -// assert_eq!(matrix_2x2.get_element(1, 1), Fq::from(4u64)); +#[test] +fn create_matrix_from_array() { + let matrix_2x2 = + SquareMatrix::<2, 4>::new(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]); + assert_eq!(matrix_2x2.get_element(0, 0), Fq::one()); + assert_eq!(matrix_2x2.get_element(0, 1), Fq::from(2u64)); + assert_eq!(matrix_2x2.get_element(1, 0), Fq::from(3u64)); + assert_eq!(matrix_2x2.get_element(1, 1), Fq::from(4u64)); -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[ -// Fq::one(), -// Fq::from(2u64), -// Fq::from(3u64), -// Fq::from(4u64), -// Fq::from(5u64), -// Fq::from(6u64), -// ]) -// .expect("capacity should not be exceeded"); -// let matrix_2x3 = Matrix::new(2, 3, test_elements); -// assert_eq!(matrix_2x3.get_element(0, 0), Fq::one()); -// assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); -// assert_eq!(matrix_2x3.get_element(0, 2), Fq::from(3u64)); -// assert_eq!(matrix_2x3.get_element(1, 0), Fq::from(4u64)); -// assert_eq!(matrix_2x3.get_element(1, 1), Fq::from(5u64)); -// assert_eq!(matrix_2x3.get_element(1, 2), Fq::from(6u64)); -// } + let matrix_2x3 = Matrix::<2, 3, 6>::new(&[ + Fq::one(), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + Fq::from(5u64), + Fq::from(6u64), + ]); + assert_eq!(matrix_2x3.get_element(0, 0), Fq::one()); + assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); + assert_eq!(matrix_2x3.get_element(0, 2), Fq::from(3u64)); + assert_eq!(matrix_2x3.get_element(1, 0), Fq::from(4u64)); + assert_eq!(matrix_2x3.get_element(1, 1), Fq::from(5u64)); + assert_eq!(matrix_2x3.get_element(1, 2), Fq::from(6u64)); +} // #[test] // fn determinant() { -// let mut test_elements = Vec::::new(); -// test_elements -// .push(Fq::one()) -// .expect("capacity should not be exceeded"); -// let matrix_1x1 = SquareMatrix::from_vec(test_elements); +// let matrix_1x1 = SquareMatrix::<1, 1>::new(&[Fq::one()]); // assert_eq!(matrix_1x1.determinant(), Fq::one()); // let a = Fq::one(); // let b = Fq::one() + Fq::one(); // let c = Fq::from(3u64); // let d = Fq::from(4u64); -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[a, b, c, d]) -// .expect("capacity should not be exceeded"); -// let matrix_2x2 = SquareMatrix::from_vec(test_elements); +// let matrix_2x2 = SquareMatrix::<2, 4>::new(&[a, b, c, d]); // assert_eq!(matrix_2x2.determinant(), -Fq::from(2u64)); // let e = Fq::from(5u64); @@ -270,20 +248,12 @@ fn cofactors() { // let g = Fq::from(7u64); // let h = Fq::from(8u64); // let i = Fq::from(9u64); -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[a, b, c, d, e, f, g, h, i]) -// .expect("capacity should not be exceeded"); -// let matrix_3x3 = SquareMatrix::from_vec(test_elements); +// let matrix_3x3 = SquareMatrix::<3, 9>::new(&[a, b, c, d, e, f, g, h, i]); // assert_eq!(matrix_3x3.determinant(), Fq::from(0u64)); // let elem = Fq::from(10u64); -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[ -// a, b, c, d, e, f, g, h, i, elem, elem, elem, elem, elem, elem, elem, -// ]) -// .expect("capacity should not be exceeded"); -// let matrix_4x4 = SquareMatrix::from_vec(test_elements); +// let matrix_4x4 = SquareMatrix::<4, 16>::new(&[ +// a, b, c, d, e, f, g, h, i, elem, elem, elem, elem, elem, elem, elem, +// ]); // assert_eq!(matrix_4x4.determinant(), Fq::from(0u64)); // } From 1edbd2c56cf94c62c6bc7ca35b889d1bf519c96b Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 26 Feb 2024 16:43:10 -0500 Subject: [PATCH 30/54] poseidon-parameters: square mat_mul It would be much better to have mat_mul implemented on MatrixOperations --- poseidon-parameters/src/matrix.rs | 27 +++++++++++++++++++++++++++ poseidon-parameters/src/mds_matrix.rs | 4 ++-- poseidon-parameters/src/tests.rs | 27 ++++++++++++--------------- 3 files changed, 41 insertions(+), 17 deletions(-) diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index c4b62b7..d0d1bb7 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -420,3 +420,30 @@ impl SquareMatrix::new(&[a, b, c, d]) } } + +/// Multiply two matrices +pub fn square_mat_mul< + const LHS_N_ROWS: usize, + const LHS_N_ELEMENTS: usize, + const RHS_N_ROWS: usize, + const RHS_N_ELEMENTS: usize, + const RESULT_N_ELEMENTS: usize, +>( + lhs: &SquareMatrix, + rhs: &SquareMatrix, +) -> SquareMatrix { + let rhs_T = rhs.transpose(); + + let mut new_elements = [Fq::default(); RESULT_N_ELEMENTS]; + + let mut index = 0; + for row in lhs.iter_rows() { + // Rows of the transposed matrix are the columns of the original matrix + for column in rhs_T.iter_rows() { + new_elements[index] = dot_product(row, column); + index += 1; + } + } + + SquareMatrix::::new(&new_elements) +} diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index 58b310e..160c69e 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -69,7 +69,7 @@ impl Self { + pub fn transpose(&self) -> Self { Self(self.0.transpose()) } @@ -85,7 +85,7 @@ impl Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1> { let elements = &self.0 .0.elements()[1..self.0 .0.n_rows()]; - Matrix::new(&elements) + Matrix::new(elements) } /// Return the elements M_{1,0} .. M_{t,0} from the first column diff --git a/poseidon-parameters/src/tests.rs b/poseidon-parameters/src/tests.rs index 8d4e62f..a55cfa9 100644 --- a/poseidon-parameters/src/tests.rs +++ b/poseidon-parameters/src/tests.rs @@ -3,7 +3,7 @@ use proptest::prelude::*; use super::*; -use crate::matrix::mat_mul; +use crate::matrix::{mat_mul, square_mat_mul}; use crate::{matrix::Matrix, matrix_ops::MatrixOperations}; use crate::{matrix::SquareMatrix, matrix_ops::SquareMatrixOperations}; @@ -16,22 +16,19 @@ fn identity_matrix() { assert_eq!(identity.get_element(1, 0), Fq::zero()); } -// #[test] -// fn square_matmul() { -// let identity = SquareMatrix::identity(2); +#[test] +fn square_matmul() { + let identity = SquareMatrix::<2, 4>::identity(); -// let mut elements = Vec::::new(); -// elements -// .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) -// .expect("capacity should not be exceeded"); -// let matrix_2x2 = SquareMatrix::from_vec(elements); + let elements = &[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]; + let matrix_2x2 = SquareMatrix::<2, 4>::new(elements); -// let res = mat_mul(&matrix_2x2, &identity).unwrap(); -// assert_eq!(res.get_element(0, 0), Fq::one()); -// assert_eq!(res.get_element(0, 1), Fq::from(2u64)); -// assert_eq!(res.get_element(1, 0), Fq::from(3u64)); -// assert_eq!(res.get_element(1, 1), Fq::from(4u64)); -// } + let res: SquareMatrix<2, 4> = square_mat_mul(&matrix_2x2, &identity); + assert_eq!(res.get_element(0, 0), Fq::one()); + assert_eq!(res.get_element(0, 1), Fq::from(2u64)); + assert_eq!(res.get_element(1, 0), Fq::from(3u64)); + assert_eq!(res.get_element(1, 1), Fq::from(4u64)); +} #[test] fn nonsquare_matmul_happy() { From a662faf646ec7415ad0168d7debb4f627a66ec4b Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 26 Feb 2024 16:56:45 -0500 Subject: [PATCH 31/54] poseidon-parameters: this check is now done at compile time --- poseidon-parameters/src/matrix.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index d0d1bb7..92cd1b0 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -80,10 +80,6 @@ impl MatrixOp where Self: Sized, { - if self.n_rows() != rhs.n_rows() || self.n_cols() != rhs.n_cols() { - return Err(PoseidonParameterError::InvalidMatrixDimensions); - } - let mut new_elements = [Fq::default(); N_ELEMENTS]; let mut index = 0; for i in 0..self.n_rows() { From cea3926f69444d402efe334af9c46b2f8f92fb64 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 26 Feb 2024 17:13:59 -0500 Subject: [PATCH 32/54] poseidon-parameters: impl Mhat matrix --- poseidon-parameters/src/matrix.rs | 2 - poseidon-parameters/src/mds_matrix.rs | 54 ++++++++++++++++----------- poseidon-parameters/src/v1.rs | 8 +++- 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 92cd1b0..556269e 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -383,8 +383,6 @@ impl SquareMatrixOperations // } // levi_civita = !levi_civita; // } - - // det todo!() } } diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index 160c69e..2f290c8 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -11,14 +11,21 @@ pub struct MdsMatrix< const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_ELEMENTS: usize, + const NUM_ELEMENTS_STATE_SIZE_MINUS_1_2: usize, >(pub SquareMatrix); -impl - MatrixOperations for MdsMatrix +impl< + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_ELEMENTS: usize, + const NUM_ELEMENTS_STATE_SIZE_MINUS_1_2: usize, + > MatrixOperations + for MdsMatrix { fn new(elements: &[Fq]) -> Self { assert!(STATE_SIZE == STATE_SIZE_MINUS_1 + 1); assert!(STATE_SIZE * STATE_SIZE == NUM_ELEMENTS); + assert!(STATE_SIZE_MINUS_1 * STATE_SIZE_MINUS_1 == NUM_ELEMENTS_STATE_SIZE_MINUS_1_2); Self(SquareMatrix::new(elements)) } @@ -54,8 +61,12 @@ impl - MdsMatrix +impl< + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_ELEMENTS: usize, + const NUM_ELEMENTS_STATE_SIZE_MINUS_1_2: usize, + > MdsMatrix { /// Instantiate an MDS matrix from a list of elements. /// @@ -99,24 +110,23 @@ impl SquareMatrix { - // let dim = self.n_rows(); - // let mut mhat_elements = Vec::::new(); - // for i in 1..dim { - // for j in 1..dim { - // mhat_elements - // .push(self.0.get_element(i, j)) - // .expect("capacity should not be exceeded"); - // } - // } - // SquareMatrix::from_vec(mhat_elements) - // } + /// Compute the (t - 1) x (t - 1) Mhat matrix from the MDS matrix + /// + /// This is simply the MDS matrix with the first row and column removed + /// + /// Ref: p.20 of the Poseidon paper + pub fn hat(&self) -> SquareMatrix { + let dim = self.n_rows(); + let mut mhat_elements = [Fq::zero(); NUM_ELEMENTS_STATE_SIZE_MINUS_1_2]; + let mut index = 0; + for i in 1..dim { + for j in 1..dim { + mhat_elements[index] = self.0.get_element(i, j); + index += 1; + } + } + SquareMatrix::new(&mhat_elements) + } } // impl From for Vec, MAX_DIMENSION> { diff --git a/poseidon-parameters/src/v1.rs b/poseidon-parameters/src/v1.rs index 538e15a..fd99ac8 100644 --- a/poseidon-parameters/src/v1.rs +++ b/poseidon-parameters/src/v1.rs @@ -19,6 +19,7 @@ pub struct PoseidonParameters< const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, + const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize, const NUM_ROUND_ROWS: usize, const NUM_ROUND_COLS: usize, const NUM_ROUND_ELEMENTS: usize, @@ -35,7 +36,12 @@ pub struct PoseidonParameters< pub rounds: RoundNumbers, /// `t x t` MDS matrix used in the `MixLayer` step - pub mds: MdsMatrix, + pub mds: MdsMatrix< + STATE_SIZE, + STATE_SIZE_MINUS_1, + NUM_MDS_ELEMENTS, + NUM_STATE_SIZE_MINUS_1_ELEMENTS, + >, /// `num_total_rounds x t` matrix of constants used in the `AddRoundConstant` step pub arc: ArcMatrix, From 8019903a1dcda66d5e3a9ac632ca654d1835d60b Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 26 Feb 2024 18:39:20 -0500 Subject: [PATCH 33/54] poseidon-parameters: matrix determinant for fixed sizes ugly, could be refactored w/ a macro? --- poseidon-parameters/src/matrix.rs | 434 +++++++++++++++++++++++++++--- poseidon-parameters/src/tests.rs | 79 ++++-- 2 files changed, 448 insertions(+), 65 deletions(-) diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 556269e..8c8149a 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -231,11 +231,7 @@ impl SquareMatrixOperations let adj = signed_minors.transpose(); let matrix_inverse = adj * (Fq::one() / determinant); - // debug_assert_eq!( - // mat_mul(self, &matrix_inverse) - // .expect("matrix and its inverse should have same dimensions"), - // identity - // ); + debug_assert_eq!(square_mat_mul(self, &matrix_inverse), identity); Ok(matrix_inverse) } @@ -352,38 +348,404 @@ impl SquareMatrixOperations - a12 * (Self::new_2x2(a21, a23, a31, a33).determinant()) + a13 * (Self::new_2x2(a21, a22, a31, a32).determinant()) } + 4 => { + let a11 = self.get_element(0, 0); + let a12 = self.get_element(0, 1); + let a13 = self.get_element(0, 2); + let a14 = self.get_element(0, 3); + let a21 = self.get_element(1, 0); + let a22 = self.get_element(1, 1); + let a23 = self.get_element(1, 2); + let a24 = self.get_element(1, 3); + let a31 = self.get_element(2, 0); + let a32 = self.get_element(2, 1); + let a33 = self.get_element(2, 2); + let a34 = self.get_element(2, 3); + let a41 = self.get_element(3, 0); + let a42 = self.get_element(3, 1); + let a43 = self.get_element(3, 2); + let a44 = self.get_element(3, 3); + + a11 * (SquareMatrix::<3, 9>::new(&[a22, a23, a24, a32, a33, a34, a42, a43, a44]) + .determinant()) + - a12 + * (SquareMatrix::<3, 9>::new(&[ + a21, a23, a24, a31, a33, a34, a41, a43, a44, + ]) + .determinant()) + + a13 + * (SquareMatrix::<3, 9>::new(&[ + a21, a22, a24, a31, a32, a34, a41, a42, a44, + ]) + .determinant()) + - a14 + * (SquareMatrix::<3, 9>::new(&[ + a21, a22, a23, a31, a32, a33, a41, a42, a43, + ]) + .determinant()) + } + 5 => { + let a11 = self.get_element(0, 0); + let a12 = self.get_element(0, 1); + let a13 = self.get_element(0, 2); + let a14 = self.get_element(0, 3); + let a15 = self.get_element(0, 4); + let a21 = self.get_element(1, 0); + let a22 = self.get_element(1, 1); + let a23 = self.get_element(1, 2); + let a24 = self.get_element(1, 3); + let a25 = self.get_element(1, 4); + let a31 = self.get_element(2, 0); + let a32 = self.get_element(2, 1); + let a33 = self.get_element(2, 2); + let a34 = self.get_element(2, 3); + let a35 = self.get_element(2, 4); + let a41 = self.get_element(3, 0); + let a42 = self.get_element(3, 1); + let a43 = self.get_element(3, 2); + let a44 = self.get_element(3, 3); + let a45 = self.get_element(3, 4); + let a51 = self.get_element(4, 0); + let a52 = self.get_element(4, 1); + let a53 = self.get_element(4, 2); + let a54 = self.get_element(4, 3); + let a55 = self.get_element(4, 4); + + a11 * (SquareMatrix::<4, 16>::new(&[ + a22, a23, a24, a25, a32, a33, a34, a35, a42, a43, a44, a45, a52, a53, a54, a55, + ]) + .determinant()) + - a12 + * (SquareMatrix::<4, 16>::new(&[ + a21, a23, a24, a25, a31, a33, a34, a35, a41, a43, a44, a45, a51, a53, + a54, a55, + ]) + .determinant()) + + a13 + * (SquareMatrix::<4, 16>::new(&[ + a21, a22, a24, a25, a31, a32, a34, a35, a41, a42, a44, a45, a51, a52, + a54, a55, + ]) + .determinant()) + - a14 + * (SquareMatrix::<4, 16>::new(&[ + a21, a22, a23, a25, a31, a32, a33, a35, a41, a42, a43, a45, a51, a52, + a53, a55, + ]) + .determinant()) + + a15 + * (SquareMatrix::<4, 16>::new(&[ + a21, a22, a23, a24, a31, a32, a33, a34, a41, a42, a43, a44, a51, a52, + a53, a54, + ]) + .determinant()) + } + 6 => { + let a11 = self.get_element(0, 0); + let a12 = self.get_element(0, 1); + let a13 = self.get_element(0, 2); + let a14 = self.get_element(0, 3); + let a15 = self.get_element(0, 4); + let a16 = self.get_element(0, 5); + let a21 = self.get_element(1, 0); + let a22 = self.get_element(1, 1); + let a23 = self.get_element(1, 2); + let a24 = self.get_element(1, 3); + let a25 = self.get_element(1, 4); + let a26 = self.get_element(1, 5); + let a31 = self.get_element(2, 0); + let a32 = self.get_element(2, 1); + let a33 = self.get_element(2, 2); + let a34 = self.get_element(2, 3); + let a35 = self.get_element(2, 4); + let a36 = self.get_element(2, 5); + let a41 = self.get_element(3, 0); + let a42 = self.get_element(3, 1); + let a43 = self.get_element(3, 2); + let a44 = self.get_element(3, 3); + let a45 = self.get_element(3, 4); + let a46 = self.get_element(3, 5); + let a51 = self.get_element(4, 0); + let a52 = self.get_element(4, 1); + let a53 = self.get_element(4, 2); + let a54 = self.get_element(4, 3); + let a55 = self.get_element(4, 4); + let a56 = self.get_element(4, 5); + let a61 = self.get_element(5, 0); + let a62 = self.get_element(5, 1); + let a63 = self.get_element(5, 2); + let a64 = self.get_element(5, 3); + let a65 = self.get_element(5, 4); + let a66 = self.get_element(5, 5); + + a11 * (SquareMatrix::<5, 25>::new(&[ + a22, a23, a24, a25, a26, a32, a33, a34, a35, a36, a42, a43, a44, a45, a46, a52, + a53, a54, a55, a56, a62, a63, a64, a65, a66, + ]) + .determinant()) + - a12 + * (SquareMatrix::<5, 25>::new(&[ + a21, a23, a24, a25, a26, a31, a33, a34, a35, a36, a41, a43, a44, a45, + a46, a51, a53, a54, a55, a56, a61, a63, a64, a65, a66, + ]) + .determinant()) + + a13 + * (SquareMatrix::<5, 25>::new(&[ + a21, a22, a24, a25, a26, a31, a32, a34, a35, a36, a41, a42, a44, a45, + a46, a51, a52, a54, a55, a56, a61, a62, a64, a65, a66, + ]) + .determinant()) + - a14 + * (SquareMatrix::<5, 25>::new(&[ + a21, a22, a23, a25, a26, a31, a32, a33, a35, a36, a41, a42, a43, a45, + a46, a51, a52, a53, a55, a56, a61, a62, a63, a65, a66, + ]) + .determinant()) + + a15 + * (SquareMatrix::<5, 25>::new(&[ + a21, a22, a23, a24, a26, a31, a32, a33, a34, a36, a41, a42, a43, a44, + a46, a51, a52, a53, a54, a56, a61, a62, a63, a64, a66, + ]) + .determinant()) + - a16 + * (SquareMatrix::<5, 25>::new(&[ + a21, a22, a23, a24, a25, a31, a32, a33, a34, a35, a41, a42, a43, a44, + a45, a51, a52, a53, a54, a56, a61, a62, a63, a64, a66, + ]) + .determinant()) + } + 7 => { + let a11 = self.get_element(0, 0); + let a12 = self.get_element(0, 1); + let a13 = self.get_element(0, 2); + let a14 = self.get_element(0, 3); + let a15 = self.get_element(0, 4); + let a16 = self.get_element(0, 5); + let a17 = self.get_element(0, 6); + let a21 = self.get_element(1, 0); + let a22 = self.get_element(1, 1); + let a23 = self.get_element(1, 2); + let a24 = self.get_element(1, 3); + let a25 = self.get_element(1, 4); + let a26 = self.get_element(1, 5); + let a27 = self.get_element(1, 6); + let a31 = self.get_element(2, 0); + let a32 = self.get_element(2, 1); + let a33 = self.get_element(2, 2); + let a34 = self.get_element(2, 3); + let a35 = self.get_element(2, 4); + let a36 = self.get_element(2, 5); + let a37 = self.get_element(2, 6); + let a41 = self.get_element(3, 0); + let a42 = self.get_element(3, 1); + let a43 = self.get_element(3, 2); + let a44 = self.get_element(3, 3); + let a45 = self.get_element(3, 4); + let a46 = self.get_element(3, 5); + let a47 = self.get_element(3, 6); + let a51 = self.get_element(4, 0); + let a52 = self.get_element(4, 1); + let a53 = self.get_element(4, 2); + let a54 = self.get_element(4, 3); + let a55 = self.get_element(4, 4); + let a56 = self.get_element(4, 5); + let a57 = self.get_element(4, 6); + let a61 = self.get_element(5, 0); + let a62 = self.get_element(5, 1); + let a63 = self.get_element(5, 2); + let a64 = self.get_element(5, 3); + let a65 = self.get_element(5, 4); + let a66 = self.get_element(5, 5); + let a67 = self.get_element(5, 6); + let a71 = self.get_element(6, 0); + let a72 = self.get_element(6, 1); + let a73 = self.get_element(6, 2); + let a74 = self.get_element(6, 3); + let a75 = self.get_element(6, 4); + let a76 = self.get_element(6, 5); + let a77 = self.get_element(6, 6); + + a11 * (SquareMatrix::<6, 36>::new(&[ + a22, a23, a24, a25, a26, a27, a32, a33, a34, a35, a36, a37, a42, a43, a44, a45, + a46, a47, a52, a53, a54, a55, a56, a57, a62, a63, a64, a65, a66, a67, a72, a73, + a74, a75, a76, a77, + ]) + .determinant()) + - a12 + * (SquareMatrix::<6, 36>::new(&[ + a21, a23, a24, a25, a26, a27, a31, a33, a34, a35, a36, a37, a41, a43, + a44, a45, a46, a47, a51, a53, a54, a55, a56, a57, a61, a63, a64, a65, + a66, a67, a71, a73, a74, a75, a76, a77, + ]) + .determinant()) + + a13 + * (SquareMatrix::<6, 36>::new(&[ + a21, a22, a24, a25, a26, a27, a31, a32, a34, a35, a36, a37, a41, a42, + a44, a45, a46, a47, a51, a52, a54, a55, a56, a57, a61, a62, a64, a65, + a66, a67, a71, a72, a74, a75, a76, a77, + ]) + .determinant()) + - a14 + * (SquareMatrix::<6, 36>::new(&[ + a21, a22, a23, a25, a26, a27, a31, a32, a33, a35, a36, a37, a41, a42, + a43, a45, a46, a47, a51, a52, a53, a55, a56, a57, a61, a62, a63, a65, + a66, a67, a71, a72, a73, a75, a76, a77, + ]) + .determinant()) + + a15 + * (SquareMatrix::<6, 36>::new(&[ + a21, a22, a23, a24, a26, a27, a31, a32, a33, a34, a36, a37, a41, a42, + a43, a44, a46, a47, a51, a52, a53, a54, a56, a57, a61, a62, a63, a64, + a66, a67, a71, a72, a73, a74, a76, a77, + ]) + .determinant()) + - a16 + * (SquareMatrix::<6, 36>::new(&[ + a21, a22, a23, a24, a25, a27, a31, a32, a33, a34, a35, a37, a41, a42, + a43, a44, a45, a47, a51, a52, a53, a54, a55, a57, a61, a62, a63, a64, + a65, a67, a71, a72, a73, a74, a75, a77, + ]) + .determinant()) + + a17 + * (SquareMatrix::<6, 36>::new(&[ + a21, a22, a23, a24, a25, a26, a31, a32, a33, a34, a35, a36, a41, a42, + a43, a44, a45, a46, a51, a52, a53, a54, a55, a56, a61, a62, a63, a64, + a65, a66, a71, a72, a73, a74, a75, a76, + ]) + .determinant()) + } + 8 => { + let a11 = self.get_element(0, 0); + let a12 = self.get_element(0, 1); + let a13 = self.get_element(0, 2); + let a14 = self.get_element(0, 3); + let a15 = self.get_element(0, 4); + let a16 = self.get_element(0, 5); + let a17 = self.get_element(0, 6); + let a18 = self.get_element(0, 7); + let a21 = self.get_element(1, 0); + let a22 = self.get_element(1, 1); + let a23 = self.get_element(1, 2); + let a24 = self.get_element(1, 3); + let a25 = self.get_element(1, 4); + let a26 = self.get_element(1, 5); + let a27 = self.get_element(1, 6); + let a28 = self.get_element(1, 7); + let a31 = self.get_element(2, 0); + let a32 = self.get_element(2, 1); + let a33 = self.get_element(2, 2); + let a34 = self.get_element(2, 3); + let a35 = self.get_element(2, 4); + let a36 = self.get_element(2, 5); + let a37 = self.get_element(2, 6); + let a38 = self.get_element(2, 7); + let a41 = self.get_element(3, 0); + let a42 = self.get_element(3, 1); + let a43 = self.get_element(3, 2); + let a44 = self.get_element(3, 3); + let a45 = self.get_element(3, 4); + let a46 = self.get_element(3, 5); + let a47 = self.get_element(3, 6); + let a48 = self.get_element(3, 7); + let a51 = self.get_element(4, 0); + let a52 = self.get_element(4, 1); + let a53 = self.get_element(4, 2); + let a54 = self.get_element(4, 3); + let a55 = self.get_element(4, 4); + let a56 = self.get_element(4, 5); + let a57 = self.get_element(4, 6); + let a58 = self.get_element(4, 7); + let a61 = self.get_element(5, 0); + let a62 = self.get_element(5, 1); + let a63 = self.get_element(5, 2); + let a64 = self.get_element(5, 3); + let a65 = self.get_element(5, 4); + let a66 = self.get_element(5, 5); + let a67 = self.get_element(5, 6); + let a68 = self.get_element(5, 7); + let a71 = self.get_element(6, 0); + let a72 = self.get_element(6, 1); + let a73 = self.get_element(6, 2); + let a74 = self.get_element(6, 3); + let a75 = self.get_element(6, 4); + let a76 = self.get_element(6, 5); + let a77 = self.get_element(6, 6); + let a78 = self.get_element(6, 7); + let a81 = self.get_element(7, 0); + let a82 = self.get_element(7, 1); + let a83 = self.get_element(7, 2); + let a84 = self.get_element(7, 3); + let a85 = self.get_element(7, 4); + let a86 = self.get_element(7, 5); + let a87 = self.get_element(7, 6); + let a88 = self.get_element(7, 7); + + a11 * (SquareMatrix::<7, 49>::new(&[ + a22, a23, a24, a25, a26, a27, a28, a32, a33, a34, a35, a36, a37, a38, a42, a43, + a44, a45, a46, a47, a48, a52, a53, a54, a55, a56, a57, a58, a62, a63, a64, a65, + a66, a67, a68, a72, a73, a74, a75, a76, a77, a78, a82, a83, a84, a85, a86, a87, + a88, + ]) + .determinant()) + - a12 + * (SquareMatrix::<7, 49>::new(&[ + a21, a23, a24, a25, a26, a27, a28, a31, a33, a34, a35, a36, a37, a38, + a41, a43, a44, a45, a46, a47, a48, a51, a53, a54, a55, a56, a57, a58, + a61, a63, a64, a65, a66, a67, a68, a71, a73, a74, a75, a76, a77, a78, + a81, a83, a84, a85, a86, a87, a88, + ]) + .determinant()) + + a13 + * (SquareMatrix::<7, 49>::new(&[ + a21, a22, a24, a25, a26, a27, a28, a31, a32, a34, a35, a36, a37, a38, + a41, a42, a44, a45, a46, a47, a48, a51, a52, a54, a55, a56, a57, a58, + a61, a62, a64, a65, a66, a67, a68, a71, a72, a74, a75, a76, a77, a78, + a81, a82, a84, a85, a86, a87, a88, + ]) + .determinant()) + - a14 + * (SquareMatrix::<7, 49>::new(&[ + a21, a22, a23, a25, a26, a27, a28, a31, a32, a33, a35, a36, a37, a38, + a41, a42, a43, a45, a46, a47, a48, a51, a52, a53, a55, a56, a57, a58, + a61, a62, a63, a65, a66, a67, a68, a71, a72, a73, a75, a76, a77, a78, + a81, a82, a83, a85, a86, a87, a88, + ]) + .determinant()) + + a15 + * (SquareMatrix::<7, 49>::new(&[ + a21, a22, a23, a24, a26, a27, a28, a31, a32, a33, a34, a36, a37, a38, + a41, a42, a43, a44, a46, a47, a48, a51, a52, a53, a54, a56, a57, a58, + a61, a62, a63, a64, a66, a67, a68, a71, a72, a73, a74, a76, a77, a78, + a81, a82, a83, a84, a86, a87, a88, + ]) + .determinant()) + - a16 + * (SquareMatrix::<7, 49>::new(&[ + a21, a22, a23, a24, a25, a27, a28, a31, a32, a33, a34, a35, a37, a38, + a41, a42, a43, a44, a45, a47, a48, a51, a52, a53, a54, a55, a57, a58, + a61, a62, a63, a64, a65, a67, a68, a71, a72, a73, a74, a75, a77, a78, + a81, a82, a83, a84, a85, a87, a88, + ]) + .determinant()) + + a17 + * (SquareMatrix::<7, 49>::new(&[ + a21, a22, a23, a24, a25, a26, a28, a31, a32, a33, a34, a35, a36, a38, + a41, a42, a43, a44, a45, a46, a48, a51, a52, a53, a54, a55, a56, a58, + a61, a62, a63, a64, a65, a66, a68, a71, a72, a73, a74, a75, a76, a78, + a81, a82, a83, a84, a85, a86, a88, + ]) + .determinant()) + - a18 + * (SquareMatrix::<7, 49>::new(&[ + a21, a22, a23, a24, a25, a26, a27, a31, a32, a33, a34, a35, a36, a37, + a41, a42, a43, a44, a45, a46, a47, a51, a52, a53, a54, a55, a56, a57, + a61, a62, a63, a64, a65, a66, a67, a71, a72, a73, a74, a75, a76, a77, + a81, a82, a83, a84, a85, a86, a87, + ]) + .determinant()) + } _ => { - // Unoptimized, but MDS matrices are fairly small, so we do the naive thing - // Again tricky because this is an arbitrary matrix size - // let mut det = Fq::zero(); - // let mut levi_civita = true; - // let dim = self.n_rows(); - - // for i in 0..dim { - // let mut elements: Vec = Vec::new(); - // for k in 0..i { - // for l in 1..dim { - // elements - // .push(self.get_element(k, l)) - // .expect("capacity should not be exceeded"); - // } - // } - // for k in i + 1..dim { - // for l in 1..dim { - // elements - // .push(self.get_element(k, l)) - // .expect("capacity should not be exceeded"); - // } - // } - // let minor = Self::from_vec(elements); - // if levi_civita { - // det += self.get_element(i, 0) * minor.determinant(); - // } else { - // det -= self.get_element(i, 0) * minor.determinant(); - // } - // levi_civita = !levi_civita; - // } - todo!() + unimplemented!("poseidon-parameters only supports square matrices up to 8") } } } diff --git a/poseidon-parameters/src/tests.rs b/poseidon-parameters/src/tests.rs index a55cfa9..3218aec 100644 --- a/poseidon-parameters/src/tests.rs +++ b/poseidon-parameters/src/tests.rs @@ -122,9 +122,9 @@ fn cofactors() { assert_eq!(identity_2x2.cofactors(), expected_res); } -// fn fq_strategy() -> BoxedStrategy { -// any::<[u64; 4]>().prop_map(Fq::from_le_limbs).boxed() -// } +fn fq_strategy() -> BoxedStrategy { + any::<[u64; 4]>().prop_map(Fq::from_le_limbs).boxed() +} // proptest! { // #[test] @@ -228,29 +228,50 @@ fn create_matrix_from_array() { assert_eq!(matrix_2x3.get_element(1, 2), Fq::from(6u64)); } -// #[test] -// fn determinant() { -// let matrix_1x1 = SquareMatrix::<1, 1>::new(&[Fq::one()]); -// assert_eq!(matrix_1x1.determinant(), Fq::one()); - -// let a = Fq::one(); -// let b = Fq::one() + Fq::one(); -// let c = Fq::from(3u64); -// let d = Fq::from(4u64); -// let matrix_2x2 = SquareMatrix::<2, 4>::new(&[a, b, c, d]); -// assert_eq!(matrix_2x2.determinant(), -Fq::from(2u64)); - -// let e = Fq::from(5u64); -// let f = Fq::from(6u64); -// let g = Fq::from(7u64); -// let h = Fq::from(8u64); -// let i = Fq::from(9u64); -// let matrix_3x3 = SquareMatrix::<3, 9>::new(&[a, b, c, d, e, f, g, h, i]); -// assert_eq!(matrix_3x3.determinant(), Fq::from(0u64)); - -// let elem = Fq::from(10u64); -// let matrix_4x4 = SquareMatrix::<4, 16>::new(&[ -// a, b, c, d, e, f, g, h, i, elem, elem, elem, elem, elem, elem, elem, -// ]); -// assert_eq!(matrix_4x4.determinant(), Fq::from(0u64)); -// } +#[test] +fn determinant() { + let matrix_1x1 = SquareMatrix::<1, 1>::new(&[Fq::one()]); + assert_eq!(matrix_1x1.determinant(), Fq::one()); + + let a = Fq::one(); + let b = Fq::one() + Fq::one(); + let c = Fq::from(3u64); + let d = Fq::from(4u64); + let matrix_2x2 = SquareMatrix::<2, 4>::new(&[a, b, c, d]); + assert_eq!(matrix_2x2.determinant(), -Fq::from(2u64)); + + let e = Fq::from(5u64); + let f = Fq::from(6u64); + let g = Fq::from(7u64); + let h = Fq::from(8u64); + let i = Fq::from(9u64); + let matrix_3x3 = SquareMatrix::<3, 9>::new(&[a, b, c, d, e, f, g, h, i]); + assert_eq!(matrix_3x3.determinant(), Fq::from(0u64)); + + let elem = Fq::from(10u64); + let matrix_4x4 = SquareMatrix::<4, 16>::new(&[ + a, b, c, d, e, f, g, h, i, elem, elem, elem, elem, elem, elem, elem, + ]); + assert_eq!(matrix_4x4.determinant(), Fq::from(0u64)); + + let matrix_5x5 = SquareMatrix::<5, 25>::new(&[ + a, b, c, d, e, f, g, h, i, elem, elem, elem, elem, elem, elem, elem, elem, elem, elem, + elem, elem, elem, elem, elem, elem, + ]); + assert_eq!(matrix_5x5.determinant(), Fq::from(0u64)); + + let mut elements = vec![a, b, c, d, e, f, g, h, i]; + elements.extend_from_slice(&[elem; 27]); + let matrix_6x6 = SquareMatrix::<6, 36>::new(&elements[..]); + assert_eq!(matrix_6x6.determinant(), Fq::from(0u64)); + + let mut elements = vec![a, b, c, d, e, f, g, h, i]; + elements.extend_from_slice(&[elem; 40]); + let matrix_7x7 = SquareMatrix::<7, 49>::new(&elements[..]); + assert_eq!(matrix_7x7.determinant(), Fq::from(0u64)); + + let mut elements = vec![a, b, c, d, e, f, g, h, i]; + elements.extend_from_slice(&[elem; 55]); + let matrix_8x8 = SquareMatrix::<8, 64>::new(&elements[..]); + assert_eq!(matrix_8x8.determinant(), Fq::from(0u64)); +} From 946cbb362e63f21d976a232cfe084794d89633cc Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 26 Feb 2024 21:01:25 -0500 Subject: [PATCH 34/54] poseidon-parameters: renable rest of tests --- poseidon-parameters/src/tests.rs | 137 ++++++++++++++----------------- 1 file changed, 61 insertions(+), 76 deletions(-) diff --git a/poseidon-parameters/src/tests.rs b/poseidon-parameters/src/tests.rs index 3218aec..6732299 100644 --- a/poseidon-parameters/src/tests.rs +++ b/poseidon-parameters/src/tests.rs @@ -126,82 +126,67 @@ fn fq_strategy() -> BoxedStrategy { any::<[u64; 4]>().prop_map(Fq::from_le_limbs).boxed() } -// proptest! { -// #[test] -// fn inverse_2x2(a in fq_strategy(), b in fq_strategy(), c in fq_strategy(), d in fq_strategy()) { -// let mut test_elements = &[a, b, c, d]; -// let matrix_2x2 = SquareMatrix::new(test_elements); - -// let res = matrix_2x2.inverse().unwrap(); -// assert_eq!(mat_mul(&matrix_2x2, &res).unwrap(), SquareMatrix::identity(2)); -// } -// } - -// #[test] -// fn inverse() { -// let mut test_elements = Vec::::new(); -// test_elements -// .push(Fq::from(2u64)) -// .expect("capacity should not be exceeded"); -// let matrix_1x1 = SquareMatrix::from_vec(test_elements); -// let res = matrix_1x1.inverse().unwrap(); -// assert_eq!( -// mat_mul(&matrix_1x1, &res).unwrap(), -// SquareMatrix::identity(1) -// ); - -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]) -// .expect("capacity should not be exceeded"); -// let matrix_2x2 = SquareMatrix::from_vec(test_elements); - -// let res = matrix_2x2.inverse().unwrap(); -// assert_eq!( -// mat_mul(&matrix_2x2, &res).unwrap(), -// SquareMatrix::identity(2) -// ); - -// let identity_3x3 = SquareMatrix::identity(3); -// assert_eq!(identity_3x3, identity_3x3.inverse().unwrap()); - -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[ -// Fq::from(3u64), -// Fq::from(0u64), -// Fq::from(2u64), -// Fq::from(2u64), -// Fq::from(0u64), -// -Fq::from(2u64), -// Fq::from(0u64), -// Fq::from(1u64), -// Fq::from(1u64), -// ]) -// .expect("capacity should not be exceeded"); -// let matrix_3x3 = SquareMatrix::from_vec(test_elements); -// let res = matrix_3x3.inverse().unwrap(); -// assert_eq!( -// mat_mul(&matrix_3x3, &res).unwrap(), -// SquareMatrix::identity(3) -// ); -// let mut test_elements = Vec::::new(); -// test_elements -// .extend_from_slice(&[ -// Fq::from(2u64), -// Fq::from(2u64), -// Fq::from(0u64), -// -Fq::from(2u64), -// Fq::from(3u64), -// Fq::from(10u64), -// Fq::from(2u64), -// -Fq::from(3u64), -// Fq::from(0u64), -// ]) -// .expect("capacity should not be exceeded"); -// let expected_res = SquareMatrix::from_vec(test_elements) * (Fq::one() / Fq::from(10u64)); -// assert_eq!(res, expected_res); -// } +proptest! { + #[test] + fn inverse_2x2(a in fq_strategy(), b in fq_strategy(), c in fq_strategy(), d in fq_strategy()) { + let matrix_2x2 = SquareMatrix::<2, 4>::new(&[a, b, c, d]); + + let res = matrix_2x2.inverse().unwrap(); + assert_eq!(square_mat_mul(&matrix_2x2, &res), SquareMatrix::<2, 4>::identity()); + } +} + +#[test] +fn inverse() { + let matrix_1x1 = SquareMatrix::<1, 1>::new(&[Fq::from(2u64)]); + let res = matrix_1x1.inverse().unwrap(); + assert_eq!( + square_mat_mul(&matrix_1x1, &res), + SquareMatrix::<1, 1>::identity() + ); + + let matrix_2x2 = + SquareMatrix::<2, 4>::new(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]); + + let res = matrix_2x2.inverse().unwrap(); + assert_eq!( + square_mat_mul(&matrix_2x2, &res), + SquareMatrix::<2, 4>::identity() + ); + + let identity_3x3 = SquareMatrix::<3, 9>::identity(); + assert_eq!(identity_3x3, identity_3x3.inverse().unwrap()); + + let matrix_3x3 = SquareMatrix::<3, 9>::new(&[ + Fq::from(3u64), + Fq::from(0u64), + Fq::from(2u64), + Fq::from(2u64), + Fq::from(0u64), + -Fq::from(2u64), + Fq::from(0u64), + Fq::from(1u64), + Fq::from(1u64), + ]); + let res = matrix_3x3.inverse().unwrap(); + assert_eq!( + square_mat_mul(&matrix_3x3, &res), + SquareMatrix::<3, 9>::identity() + ); + + let expected_res = SquareMatrix::<3, 9>::new(&[ + Fq::from(2u64), + Fq::from(2u64), + Fq::from(0u64), + -Fq::from(2u64), + Fq::from(3u64), + Fq::from(10u64), + Fq::from(2u64), + -Fq::from(3u64), + Fq::from(0u64), + ]) * (Fq::one() / Fq::from(10u64)); + assert_eq!(res, expected_res); +} #[test] fn create_matrix_from_array() { From cda761732a46438d3615a746b9c8ec0fdd786e82 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 27 Feb 2024 11:42:23 -0500 Subject: [PATCH 35/54] poseidon-parameters: matrix minors --- poseidon-parameters/src/matrix.rs | 89 +++++++++++++++++-------------- 1 file changed, 50 insertions(+), 39 deletions(-) diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 8c8149a..5764a2f 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -260,46 +260,14 @@ impl SquareMatrixOperations let d = self.get_element(1, 1); Self::new(&[d, c, b, a]) } + 3 => minor_matrix::(self), + 4 => minor_matrix::(self), + 5 => minor_matrix::(self), + 6 => minor_matrix::(self), + 7 => minor_matrix::(self), + 8 => minor_matrix::(self), _ => { - // // Tricky because we can't do the const expression N_ROWS - 1 - // // to actually construct the minor matrix... - // let dim = self.n_rows(); - // let mut minor_matrix_elements = Vec::::new(); - // for i in 0..dim { - // for j in 0..dim { - // let mut elements: Vec = Vec::new(); - // for k in 0..i { - // for l in 0..j { - // elements - // .push(self.get_element(k, l)) - // .expect("capacity should not be exceeded"); - // } - // for l in (j + 1)..dim { - // elements - // .push(self.get_element(k, l)) - // .expect("capacity should not be exceeded"); - // } - // } - // for k in i + 1..dim { - // for l in 0..j { - // elements - // .push(self.get_element(k, l)) - // .expect("capacity should not be exceeded"); - // } - // for l in (j + 1)..dim { - // elements - // .push(self.get_element(k, l)) - // .expect("capacity should not be exceeded"); - // } - // } - // let minor = Self::from_vec(elements); - // minor_matrix_elements - // .push(minor.determinant()) - // .expect("capacity should not be exceeded"); - // } - // } - // SquareMatrix::::new(&minor_matrix_elements) - todo!() + unimplemented!("poseidon-parameters only supports square matrices up to 8") } } } @@ -803,3 +771,46 @@ pub fn square_mat_mul< SquareMatrix::::new(&new_elements) } + +/// Helper function for computing matrix minor +fn minor_matrix< + const DIM: usize, + const DIM_MINUS_1: usize, + const N_ELEMENTS: usize, + const N_ELEMENTS_DIM_MINUS_1: usize, +>( + matrix: &SquareMatrix, +) -> SquareMatrix { + let mut minor_matrix_elements = [Fq::default(); N_ELEMENTS]; + let mut outer_index = 0; + for i in 0..DIM { + for j in 0..DIM { + let mut elements = [Fq::default(); N_ELEMENTS_DIM_MINUS_1]; + let mut index = 0; + for k in 0..i { + for l in 0..j { + elements[index] = matrix.get_element(k, l); + index += 1; + } + for l in (j + 1)..DIM { + elements[index] = matrix.get_element(k, l); + index += 1; + } + } + for k in i + 1..DIM { + for l in 0..j { + elements[index] = matrix.get_element(k, l); + index += 1; + } + for l in (j + 1)..DIM { + elements[index] = matrix.get_element(k, l); + index += 1; + } + } + let minor = SquareMatrix::::new(&elements); + minor_matrix_elements[outer_index] = minor.determinant(); + outer_index += 1; + } + } + SquareMatrix::::new(&minor_matrix_elements) +} From e6633bd6c374c7e977c47189008a0554ff4016a1 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 27 Feb 2024 11:49:25 -0500 Subject: [PATCH 36/54] poseidon-parameters: clean up matrix determinant calculation --- poseidon-parameters/src/matrix.rs | 467 +++--------------------------- 1 file changed, 47 insertions(+), 420 deletions(-) diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 5764a2f..0c43a2d 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -291,427 +291,16 @@ impl SquareMatrixOperations /// Compute the matrix determinant fn determinant(&self) -> Fq { - match self.n_cols() { + match N_ROWS { 0 => panic!("matrix has no elements!"), 1 => self.get_element(0, 0), - 2 => { - let a11 = self.get_element(0, 0); - let a12 = self.get_element(0, 1); - let a21 = self.get_element(1, 0); - let a22 = self.get_element(1, 1); - a11 * a22 - a21 * a12 - } - 3 => { - let a11 = self.get_element(0, 0); - let a12 = self.get_element(0, 1); - let a13 = self.get_element(0, 2); - let a21 = self.get_element(1, 0); - let a22 = self.get_element(1, 1); - let a23 = self.get_element(1, 2); - let a31 = self.get_element(2, 0); - let a32 = self.get_element(2, 1); - let a33 = self.get_element(2, 2); - - a11 * (Self::new_2x2(a22, a23, a32, a33).determinant()) - - a12 * (Self::new_2x2(a21, a23, a31, a33).determinant()) - + a13 * (Self::new_2x2(a21, a22, a31, a32).determinant()) - } - 4 => { - let a11 = self.get_element(0, 0); - let a12 = self.get_element(0, 1); - let a13 = self.get_element(0, 2); - let a14 = self.get_element(0, 3); - let a21 = self.get_element(1, 0); - let a22 = self.get_element(1, 1); - let a23 = self.get_element(1, 2); - let a24 = self.get_element(1, 3); - let a31 = self.get_element(2, 0); - let a32 = self.get_element(2, 1); - let a33 = self.get_element(2, 2); - let a34 = self.get_element(2, 3); - let a41 = self.get_element(3, 0); - let a42 = self.get_element(3, 1); - let a43 = self.get_element(3, 2); - let a44 = self.get_element(3, 3); - - a11 * (SquareMatrix::<3, 9>::new(&[a22, a23, a24, a32, a33, a34, a42, a43, a44]) - .determinant()) - - a12 - * (SquareMatrix::<3, 9>::new(&[ - a21, a23, a24, a31, a33, a34, a41, a43, a44, - ]) - .determinant()) - + a13 - * (SquareMatrix::<3, 9>::new(&[ - a21, a22, a24, a31, a32, a34, a41, a42, a44, - ]) - .determinant()) - - a14 - * (SquareMatrix::<3, 9>::new(&[ - a21, a22, a23, a31, a32, a33, a41, a42, a43, - ]) - .determinant()) - } - 5 => { - let a11 = self.get_element(0, 0); - let a12 = self.get_element(0, 1); - let a13 = self.get_element(0, 2); - let a14 = self.get_element(0, 3); - let a15 = self.get_element(0, 4); - let a21 = self.get_element(1, 0); - let a22 = self.get_element(1, 1); - let a23 = self.get_element(1, 2); - let a24 = self.get_element(1, 3); - let a25 = self.get_element(1, 4); - let a31 = self.get_element(2, 0); - let a32 = self.get_element(2, 1); - let a33 = self.get_element(2, 2); - let a34 = self.get_element(2, 3); - let a35 = self.get_element(2, 4); - let a41 = self.get_element(3, 0); - let a42 = self.get_element(3, 1); - let a43 = self.get_element(3, 2); - let a44 = self.get_element(3, 3); - let a45 = self.get_element(3, 4); - let a51 = self.get_element(4, 0); - let a52 = self.get_element(4, 1); - let a53 = self.get_element(4, 2); - let a54 = self.get_element(4, 3); - let a55 = self.get_element(4, 4); - - a11 * (SquareMatrix::<4, 16>::new(&[ - a22, a23, a24, a25, a32, a33, a34, a35, a42, a43, a44, a45, a52, a53, a54, a55, - ]) - .determinant()) - - a12 - * (SquareMatrix::<4, 16>::new(&[ - a21, a23, a24, a25, a31, a33, a34, a35, a41, a43, a44, a45, a51, a53, - a54, a55, - ]) - .determinant()) - + a13 - * (SquareMatrix::<4, 16>::new(&[ - a21, a22, a24, a25, a31, a32, a34, a35, a41, a42, a44, a45, a51, a52, - a54, a55, - ]) - .determinant()) - - a14 - * (SquareMatrix::<4, 16>::new(&[ - a21, a22, a23, a25, a31, a32, a33, a35, a41, a42, a43, a45, a51, a52, - a53, a55, - ]) - .determinant()) - + a15 - * (SquareMatrix::<4, 16>::new(&[ - a21, a22, a23, a24, a31, a32, a33, a34, a41, a42, a43, a44, a51, a52, - a53, a54, - ]) - .determinant()) - } - 6 => { - let a11 = self.get_element(0, 0); - let a12 = self.get_element(0, 1); - let a13 = self.get_element(0, 2); - let a14 = self.get_element(0, 3); - let a15 = self.get_element(0, 4); - let a16 = self.get_element(0, 5); - let a21 = self.get_element(1, 0); - let a22 = self.get_element(1, 1); - let a23 = self.get_element(1, 2); - let a24 = self.get_element(1, 3); - let a25 = self.get_element(1, 4); - let a26 = self.get_element(1, 5); - let a31 = self.get_element(2, 0); - let a32 = self.get_element(2, 1); - let a33 = self.get_element(2, 2); - let a34 = self.get_element(2, 3); - let a35 = self.get_element(2, 4); - let a36 = self.get_element(2, 5); - let a41 = self.get_element(3, 0); - let a42 = self.get_element(3, 1); - let a43 = self.get_element(3, 2); - let a44 = self.get_element(3, 3); - let a45 = self.get_element(3, 4); - let a46 = self.get_element(3, 5); - let a51 = self.get_element(4, 0); - let a52 = self.get_element(4, 1); - let a53 = self.get_element(4, 2); - let a54 = self.get_element(4, 3); - let a55 = self.get_element(4, 4); - let a56 = self.get_element(4, 5); - let a61 = self.get_element(5, 0); - let a62 = self.get_element(5, 1); - let a63 = self.get_element(5, 2); - let a64 = self.get_element(5, 3); - let a65 = self.get_element(5, 4); - let a66 = self.get_element(5, 5); - - a11 * (SquareMatrix::<5, 25>::new(&[ - a22, a23, a24, a25, a26, a32, a33, a34, a35, a36, a42, a43, a44, a45, a46, a52, - a53, a54, a55, a56, a62, a63, a64, a65, a66, - ]) - .determinant()) - - a12 - * (SquareMatrix::<5, 25>::new(&[ - a21, a23, a24, a25, a26, a31, a33, a34, a35, a36, a41, a43, a44, a45, - a46, a51, a53, a54, a55, a56, a61, a63, a64, a65, a66, - ]) - .determinant()) - + a13 - * (SquareMatrix::<5, 25>::new(&[ - a21, a22, a24, a25, a26, a31, a32, a34, a35, a36, a41, a42, a44, a45, - a46, a51, a52, a54, a55, a56, a61, a62, a64, a65, a66, - ]) - .determinant()) - - a14 - * (SquareMatrix::<5, 25>::new(&[ - a21, a22, a23, a25, a26, a31, a32, a33, a35, a36, a41, a42, a43, a45, - a46, a51, a52, a53, a55, a56, a61, a62, a63, a65, a66, - ]) - .determinant()) - + a15 - * (SquareMatrix::<5, 25>::new(&[ - a21, a22, a23, a24, a26, a31, a32, a33, a34, a36, a41, a42, a43, a44, - a46, a51, a52, a53, a54, a56, a61, a62, a63, a64, a66, - ]) - .determinant()) - - a16 - * (SquareMatrix::<5, 25>::new(&[ - a21, a22, a23, a24, a25, a31, a32, a33, a34, a35, a41, a42, a43, a44, - a45, a51, a52, a53, a54, a56, a61, a62, a63, a64, a66, - ]) - .determinant()) - } - 7 => { - let a11 = self.get_element(0, 0); - let a12 = self.get_element(0, 1); - let a13 = self.get_element(0, 2); - let a14 = self.get_element(0, 3); - let a15 = self.get_element(0, 4); - let a16 = self.get_element(0, 5); - let a17 = self.get_element(0, 6); - let a21 = self.get_element(1, 0); - let a22 = self.get_element(1, 1); - let a23 = self.get_element(1, 2); - let a24 = self.get_element(1, 3); - let a25 = self.get_element(1, 4); - let a26 = self.get_element(1, 5); - let a27 = self.get_element(1, 6); - let a31 = self.get_element(2, 0); - let a32 = self.get_element(2, 1); - let a33 = self.get_element(2, 2); - let a34 = self.get_element(2, 3); - let a35 = self.get_element(2, 4); - let a36 = self.get_element(2, 5); - let a37 = self.get_element(2, 6); - let a41 = self.get_element(3, 0); - let a42 = self.get_element(3, 1); - let a43 = self.get_element(3, 2); - let a44 = self.get_element(3, 3); - let a45 = self.get_element(3, 4); - let a46 = self.get_element(3, 5); - let a47 = self.get_element(3, 6); - let a51 = self.get_element(4, 0); - let a52 = self.get_element(4, 1); - let a53 = self.get_element(4, 2); - let a54 = self.get_element(4, 3); - let a55 = self.get_element(4, 4); - let a56 = self.get_element(4, 5); - let a57 = self.get_element(4, 6); - let a61 = self.get_element(5, 0); - let a62 = self.get_element(5, 1); - let a63 = self.get_element(5, 2); - let a64 = self.get_element(5, 3); - let a65 = self.get_element(5, 4); - let a66 = self.get_element(5, 5); - let a67 = self.get_element(5, 6); - let a71 = self.get_element(6, 0); - let a72 = self.get_element(6, 1); - let a73 = self.get_element(6, 2); - let a74 = self.get_element(6, 3); - let a75 = self.get_element(6, 4); - let a76 = self.get_element(6, 5); - let a77 = self.get_element(6, 6); - - a11 * (SquareMatrix::<6, 36>::new(&[ - a22, a23, a24, a25, a26, a27, a32, a33, a34, a35, a36, a37, a42, a43, a44, a45, - a46, a47, a52, a53, a54, a55, a56, a57, a62, a63, a64, a65, a66, a67, a72, a73, - a74, a75, a76, a77, - ]) - .determinant()) - - a12 - * (SquareMatrix::<6, 36>::new(&[ - a21, a23, a24, a25, a26, a27, a31, a33, a34, a35, a36, a37, a41, a43, - a44, a45, a46, a47, a51, a53, a54, a55, a56, a57, a61, a63, a64, a65, - a66, a67, a71, a73, a74, a75, a76, a77, - ]) - .determinant()) - + a13 - * (SquareMatrix::<6, 36>::new(&[ - a21, a22, a24, a25, a26, a27, a31, a32, a34, a35, a36, a37, a41, a42, - a44, a45, a46, a47, a51, a52, a54, a55, a56, a57, a61, a62, a64, a65, - a66, a67, a71, a72, a74, a75, a76, a77, - ]) - .determinant()) - - a14 - * (SquareMatrix::<6, 36>::new(&[ - a21, a22, a23, a25, a26, a27, a31, a32, a33, a35, a36, a37, a41, a42, - a43, a45, a46, a47, a51, a52, a53, a55, a56, a57, a61, a62, a63, a65, - a66, a67, a71, a72, a73, a75, a76, a77, - ]) - .determinant()) - + a15 - * (SquareMatrix::<6, 36>::new(&[ - a21, a22, a23, a24, a26, a27, a31, a32, a33, a34, a36, a37, a41, a42, - a43, a44, a46, a47, a51, a52, a53, a54, a56, a57, a61, a62, a63, a64, - a66, a67, a71, a72, a73, a74, a76, a77, - ]) - .determinant()) - - a16 - * (SquareMatrix::<6, 36>::new(&[ - a21, a22, a23, a24, a25, a27, a31, a32, a33, a34, a35, a37, a41, a42, - a43, a44, a45, a47, a51, a52, a53, a54, a55, a57, a61, a62, a63, a64, - a65, a67, a71, a72, a73, a74, a75, a77, - ]) - .determinant()) - + a17 - * (SquareMatrix::<6, 36>::new(&[ - a21, a22, a23, a24, a25, a26, a31, a32, a33, a34, a35, a36, a41, a42, - a43, a44, a45, a46, a51, a52, a53, a54, a55, a56, a61, a62, a63, a64, - a65, a66, a71, a72, a73, a74, a75, a76, - ]) - .determinant()) - } - 8 => { - let a11 = self.get_element(0, 0); - let a12 = self.get_element(0, 1); - let a13 = self.get_element(0, 2); - let a14 = self.get_element(0, 3); - let a15 = self.get_element(0, 4); - let a16 = self.get_element(0, 5); - let a17 = self.get_element(0, 6); - let a18 = self.get_element(0, 7); - let a21 = self.get_element(1, 0); - let a22 = self.get_element(1, 1); - let a23 = self.get_element(1, 2); - let a24 = self.get_element(1, 3); - let a25 = self.get_element(1, 4); - let a26 = self.get_element(1, 5); - let a27 = self.get_element(1, 6); - let a28 = self.get_element(1, 7); - let a31 = self.get_element(2, 0); - let a32 = self.get_element(2, 1); - let a33 = self.get_element(2, 2); - let a34 = self.get_element(2, 3); - let a35 = self.get_element(2, 4); - let a36 = self.get_element(2, 5); - let a37 = self.get_element(2, 6); - let a38 = self.get_element(2, 7); - let a41 = self.get_element(3, 0); - let a42 = self.get_element(3, 1); - let a43 = self.get_element(3, 2); - let a44 = self.get_element(3, 3); - let a45 = self.get_element(3, 4); - let a46 = self.get_element(3, 5); - let a47 = self.get_element(3, 6); - let a48 = self.get_element(3, 7); - let a51 = self.get_element(4, 0); - let a52 = self.get_element(4, 1); - let a53 = self.get_element(4, 2); - let a54 = self.get_element(4, 3); - let a55 = self.get_element(4, 4); - let a56 = self.get_element(4, 5); - let a57 = self.get_element(4, 6); - let a58 = self.get_element(4, 7); - let a61 = self.get_element(5, 0); - let a62 = self.get_element(5, 1); - let a63 = self.get_element(5, 2); - let a64 = self.get_element(5, 3); - let a65 = self.get_element(5, 4); - let a66 = self.get_element(5, 5); - let a67 = self.get_element(5, 6); - let a68 = self.get_element(5, 7); - let a71 = self.get_element(6, 0); - let a72 = self.get_element(6, 1); - let a73 = self.get_element(6, 2); - let a74 = self.get_element(6, 3); - let a75 = self.get_element(6, 4); - let a76 = self.get_element(6, 5); - let a77 = self.get_element(6, 6); - let a78 = self.get_element(6, 7); - let a81 = self.get_element(7, 0); - let a82 = self.get_element(7, 1); - let a83 = self.get_element(7, 2); - let a84 = self.get_element(7, 3); - let a85 = self.get_element(7, 4); - let a86 = self.get_element(7, 5); - let a87 = self.get_element(7, 6); - let a88 = self.get_element(7, 7); - - a11 * (SquareMatrix::<7, 49>::new(&[ - a22, a23, a24, a25, a26, a27, a28, a32, a33, a34, a35, a36, a37, a38, a42, a43, - a44, a45, a46, a47, a48, a52, a53, a54, a55, a56, a57, a58, a62, a63, a64, a65, - a66, a67, a68, a72, a73, a74, a75, a76, a77, a78, a82, a83, a84, a85, a86, a87, - a88, - ]) - .determinant()) - - a12 - * (SquareMatrix::<7, 49>::new(&[ - a21, a23, a24, a25, a26, a27, a28, a31, a33, a34, a35, a36, a37, a38, - a41, a43, a44, a45, a46, a47, a48, a51, a53, a54, a55, a56, a57, a58, - a61, a63, a64, a65, a66, a67, a68, a71, a73, a74, a75, a76, a77, a78, - a81, a83, a84, a85, a86, a87, a88, - ]) - .determinant()) - + a13 - * (SquareMatrix::<7, 49>::new(&[ - a21, a22, a24, a25, a26, a27, a28, a31, a32, a34, a35, a36, a37, a38, - a41, a42, a44, a45, a46, a47, a48, a51, a52, a54, a55, a56, a57, a58, - a61, a62, a64, a65, a66, a67, a68, a71, a72, a74, a75, a76, a77, a78, - a81, a82, a84, a85, a86, a87, a88, - ]) - .determinant()) - - a14 - * (SquareMatrix::<7, 49>::new(&[ - a21, a22, a23, a25, a26, a27, a28, a31, a32, a33, a35, a36, a37, a38, - a41, a42, a43, a45, a46, a47, a48, a51, a52, a53, a55, a56, a57, a58, - a61, a62, a63, a65, a66, a67, a68, a71, a72, a73, a75, a76, a77, a78, - a81, a82, a83, a85, a86, a87, a88, - ]) - .determinant()) - + a15 - * (SquareMatrix::<7, 49>::new(&[ - a21, a22, a23, a24, a26, a27, a28, a31, a32, a33, a34, a36, a37, a38, - a41, a42, a43, a44, a46, a47, a48, a51, a52, a53, a54, a56, a57, a58, - a61, a62, a63, a64, a66, a67, a68, a71, a72, a73, a74, a76, a77, a78, - a81, a82, a83, a84, a86, a87, a88, - ]) - .determinant()) - - a16 - * (SquareMatrix::<7, 49>::new(&[ - a21, a22, a23, a24, a25, a27, a28, a31, a32, a33, a34, a35, a37, a38, - a41, a42, a43, a44, a45, a47, a48, a51, a52, a53, a54, a55, a57, a58, - a61, a62, a63, a64, a65, a67, a68, a71, a72, a73, a74, a75, a77, a78, - a81, a82, a83, a84, a85, a87, a88, - ]) - .determinant()) - + a17 - * (SquareMatrix::<7, 49>::new(&[ - a21, a22, a23, a24, a25, a26, a28, a31, a32, a33, a34, a35, a36, a38, - a41, a42, a43, a44, a45, a46, a48, a51, a52, a53, a54, a55, a56, a58, - a61, a62, a63, a64, a65, a66, a68, a71, a72, a73, a74, a75, a76, a78, - a81, a82, a83, a84, a85, a86, a88, - ]) - .determinant()) - - a18 - * (SquareMatrix::<7, 49>::new(&[ - a21, a22, a23, a24, a25, a26, a27, a31, a32, a33, a34, a35, a36, a37, - a41, a42, a43, a44, a45, a46, a47, a51, a52, a53, a54, a55, a56, a57, - a61, a62, a63, a64, a65, a66, a67, a71, a72, a73, a74, a75, a76, a77, - a81, a82, a83, a84, a85, a86, a87, - ]) - .determinant()) - } + 2 => determinant::(self), + 3 => determinant::(self), + 4 => determinant::(self), + 5 => determinant::(self), + 6 => determinant::(self), + 7 => determinant::(self), + 8 => determinant::(self), _ => { unimplemented!("poseidon-parameters only supports square matrices up to 8") } @@ -772,7 +361,7 @@ pub fn square_mat_mul< SquareMatrix::::new(&new_elements) } -/// Helper function for computing matrix minor +/// Helper function for computing matrix minors fn minor_matrix< const DIM: usize, const DIM_MINUS_1: usize, @@ -814,3 +403,41 @@ fn minor_matrix< } SquareMatrix::::new(&minor_matrix_elements) } + +/// Helper function for computing matrix determinant +fn determinant< + const DIM: usize, + const DIM_MINUS_1: usize, + const N_ELEMENTS: usize, + const N_ELEMENTS_DIM_MINUS_1: usize, +>( + matrix: &SquareMatrix, +) -> Fq { + let mut det = Fq::zero(); + let mut levi_civita = true; + + for i in 0..DIM { + let mut elements = [Fq::default(); N_ELEMENTS_DIM_MINUS_1]; + let mut index = 0; + for k in 0..i { + for l in 1..DIM { + elements[index] = matrix.get_element(k, l); + index += 1; + } + } + for k in i + 1..DIM { + for l in 1..DIM { + elements[index] = matrix.get_element(k, l); + index += 1; + } + } + let minor = SquareMatrix::::new(&elements); + if levi_civita { + det += matrix.get_element(i, 0) * minor.determinant(); + } else { + det -= matrix.get_element(i, 0) * minor.determinant(); + } + levi_civita = !levi_civita; + } + det +} From a7810be4c44d2c319443cb0ea15424e82221c1d2 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 27 Feb 2024 12:02:57 -0500 Subject: [PATCH 37/54] poseidon-parameters: remove `MatrixOperations::rows` and last Vecs --- poseidon-parameters/src/arc_matrix.rs | 25 ------------------------- poseidon-parameters/src/matrix.rs | 12 ++---------- poseidon-parameters/src/matrix_ops.rs | 2 -- poseidon-parameters/src/mds_matrix.rs | 19 ------------------- 4 files changed, 2 insertions(+), 56 deletions(-) diff --git a/poseidon-parameters/src/arc_matrix.rs b/poseidon-parameters/src/arc_matrix.rs index a18cd83..ed659de 100644 --- a/poseidon-parameters/src/arc_matrix.rs +++ b/poseidon-parameters/src/arc_matrix.rs @@ -37,10 +37,6 @@ impl MatrixOp self.0.set_element(i, j, val) } - fn rows(&self) -> &[&[Fq]] { - self.0.rows() - } - fn n_rows(&self) -> usize { self.0.n_rows() } @@ -57,23 +53,6 @@ impl MatrixOp } } -// impl From for Vec, MAX_DIMENSION> { -// fn from(arc: ArcMatrix) -> Self { -// let mut rows = Vec::, MAX_DIMENSION>::new(); -// let m = &arc.0; - -// for i in 0..arc.n_rows() { -// let mut row = Vec::new(); -// for j in 0..arc.n_cols() { -// row.push(m.get_element(i, j)) -// .expect("capacity should not be exceeded"); -// } -// rows.push(row).expect("capacity should not be exceeded"); -// } -// rows -// } -// } - /// Represents an optimized matrix of round constants. /// /// This modifies the partial rounds in the middle of the permutation, @@ -115,10 +94,6 @@ impl MatrixOp self.0.set_element(i, j, val) } - fn rows(&self) -> &[&[Fq]] { - self.0.rows() - } - fn n_rows(&self) -> usize { self.0.n_rows() } diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 0c43a2d..2664fd5 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -63,11 +63,6 @@ impl MatrixOp self.elements[i * N_COLS + j] = val } - fn rows(&self) -> &[&[Fq]] { - // self.elements.chunks(self.n_cols()).collect() - todo!() - } - fn n_rows(&self) -> usize { N_ROWS } @@ -93,7 +88,8 @@ impl MatrixOp } } -/// Multiply two matrices +#[allow(dead_code)] +/// Multiply two `Matrix` pub fn mat_mul< const LHS_N_ROWS: usize, const LHS_N_COLS: usize, @@ -182,10 +178,6 @@ impl MatrixOperations self.0.set_element(i, j, val) } - fn rows(&self) -> &[&[Fq]] { - todo!() - } - fn n_rows(&self) -> usize { N_ROWS } diff --git a/poseidon-parameters/src/matrix_ops.rs b/poseidon-parameters/src/matrix_ops.rs index 73da335..da122e9 100644 --- a/poseidon-parameters/src/matrix_ops.rs +++ b/poseidon-parameters/src/matrix_ops.rs @@ -13,8 +13,6 @@ pub trait MatrixOperations { /// Set element[i,j] fn set_element(&mut self, i: usize, j: usize, val: Fq); /// Get rows - fn rows(&self) -> &[&[Fq]]; - /// Get rows in chunks fn iter_rows(&self) -> Chunks { self.elements().chunks(self.n_cols()) } diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index 2f290c8..8522f04 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -41,10 +41,6 @@ impl< self.0.set_element(i, j, val) } - fn rows(&self) -> &[&[Fq]] { - self.0.rows() - } - fn n_rows(&self) -> usize { self.0.n_rows() } @@ -129,21 +125,6 @@ impl< } } -// impl From for Vec, MAX_DIMENSION> { -// fn from(val: MdsMatrix) -> Self { -// let mut rows = Vec::, MAX_DIMENSION>::new(); -// for i in 0..val.0.n_rows() { -// let mut row = Vec::new(); -// for j in 0..val.0.n_rows() { -// row.push(val.0 .0.get_element(i, j)) -// .expect("capacity should not be exceeded"); -// } -// rows.push(row).expect("capacity should not be exceeded"); -// } -// rows -// } -// } - /// Represents an optimized MDS (maximum distance separable) matrix. #[derive(Clone, Debug, PartialEq, Eq)] pub struct OptimizedMdsMatrices< From f45ba1add608908ad868e37324cfdee47757a033 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Thu, 29 Feb 2024 10:33:22 -0500 Subject: [PATCH 38/54] poseidon-permutation: rewrite for embedded environments --- poseidon-parameters/src/arc_matrix.rs | 4 + poseidon-parameters/src/matrix.rs | 1 - poseidon-parameters/src/v1.rs | 17 ++- poseidon-paramgen/Cargo.toml | 6 +- poseidon-paramgen/src/v1.rs | 1 - poseidon-paramgen/src/v2.rs | 2 - poseidon-paramgen/src/v2/external.rs | 2 +- poseidon-permutation/Cargo.toml | 9 +- poseidon-permutation/src/permutation.rs | 183 ++++++++++++++---------- poseidon-permutation/src/r1cs.rs | 87 +++++++---- 10 files changed, 191 insertions(+), 121 deletions(-) diff --git a/poseidon-parameters/src/arc_matrix.rs b/poseidon-parameters/src/arc_matrix.rs index ed659de..15dd152 100644 --- a/poseidon-parameters/src/arc_matrix.rs +++ b/poseidon-parameters/src/arc_matrix.rs @@ -16,6 +16,10 @@ impl pub fn transpose(&self) -> ArcMatrix { ArcMatrix(self.0.transpose()) } + + pub fn inner_elements(&self) -> [Fq; N_ELEMENTS] { + self.0.elements + } } impl MatrixOperations diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 2664fd5..17977c4 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -88,7 +88,6 @@ impl MatrixOp } } -#[allow(dead_code)] /// Multiply two `Matrix` pub fn mat_mul< const LHS_N_ROWS: usize, diff --git a/poseidon-parameters/src/v1.rs b/poseidon-parameters/src/v1.rs index fd99ac8..907ec03 100644 --- a/poseidon-parameters/src/v1.rs +++ b/poseidon-parameters/src/v1.rs @@ -1,10 +1,7 @@ pub use crate::alpha::Alpha; pub use crate::round_numbers::RoundNumbers; -pub use crate::{matrix::Matrix, matrix::SquareMatrix}; - -// pub use crate::matrix_ops::mat_mul; - +pub use crate::matrix::{mat_mul, square_mat_mul, Matrix, SquareMatrix}; pub use crate::{ arc_matrix::ArcMatrix, arc_matrix::OptimizedArcMatrix, matrix_ops::MatrixOperations, matrix_ops::SquareMatrixOperations, mds_matrix::MdsMatrix, mds_matrix::OptimizedMdsMatrices, @@ -48,7 +45,13 @@ pub struct PoseidonParameters< /// Optimized round constants. pub optimized_arc: OptimizedArcMatrix, - // TODO: - // /// Optimized MDS matrices. - //pub optimized_mds: OptimizedMdsMatrices, + + /// Optimized MDS matrices. + pub optimized_mds: OptimizedMdsMatrices< + NUM_ROUND_ROWS, + STATE_SIZE, + STATE_SIZE_MINUS_1, + NUM_MDS_ELEMENTS, + NUM_STATE_SIZE_MINUS_1_ELEMENTS, + >, } diff --git a/poseidon-paramgen/Cargo.toml b/poseidon-paramgen/Cargo.toml index d0458c8..18e7ba8 100644 --- a/poseidon-paramgen/Cargo.toml +++ b/poseidon-paramgen/Cargo.toml @@ -3,7 +3,7 @@ name = "poseidon-paramgen" version = "0.4.0" edition = "2018" authors = ["Penumbra ", "redshiftzero "] -description = "A crate for generating Poseidon parameters" +description = "A crate for generating Poseidon parameters for decaf377" license = "MIT OR Apache-2.0" repository = "https://github.com/penumbra-zone/poseidon377" @@ -20,9 +20,7 @@ rand_core = { version = "0.6.3", default-features = false, features = ["getrando poseidon-parameters = { path = "../poseidon-parameters", default-features = false, version = "1.0" } [dev-dependencies] -ark-bn254 = "0.4" -ark-ed-on-bls12-377 = "0.4" -ark-ed-on-bls12-381 = "0.4" +decaf377 = "0.8" [features] default = ["std"] diff --git a/poseidon-paramgen/src/v1.rs b/poseidon-paramgen/src/v1.rs index e5d3ab2..b4d62ce 100644 --- a/poseidon-paramgen/src/v1.rs +++ b/poseidon-paramgen/src/v1.rs @@ -30,7 +30,6 @@ pub fn generate( PoseidonParameters:: { M: input.M, - t: input.t, alpha, rounds, mds, diff --git a/poseidon-paramgen/src/v2.rs b/poseidon-paramgen/src/v2.rs index 9b76109..15dfbd4 100644 --- a/poseidon-paramgen/src/v2.rs +++ b/poseidon-paramgen/src/v2.rs @@ -33,7 +33,6 @@ pub fn generate( if t < 4 { PoseidonParameters:: { M: input.M, - t: input.t, alpha, rounds, arc, @@ -44,7 +43,6 @@ pub fn generate( let m_e = external::generate(t); PoseidonParameters:: { M: input.M, - t: input.t, alpha, rounds, arc, diff --git a/poseidon-paramgen/src/v2/external.rs b/poseidon-paramgen/src/v2/external.rs index c301221..ec1fec5 100644 --- a/poseidon-paramgen/src/v2/external.rs +++ b/poseidon-paramgen/src/v2/external.rs @@ -71,7 +71,7 @@ pub fn generate(t: usize) -> SquareMatrix { #[cfg(test)] mod tests { - use ark_ed_on_bls12_377::Fq; + use decaf377::Fq; use super::*; diff --git a/poseidon-permutation/Cargo.toml b/poseidon-permutation/Cargo.toml index 76a0089..32974b7 100644 --- a/poseidon-permutation/Cargo.toml +++ b/poseidon-permutation/Cargo.toml @@ -3,13 +3,14 @@ name = "poseidon-permutation" version = "1.0.0" edition = "2018" authors = ["Penumbra ", "redshiftzero "] -description = "An instantiation of the Poseidon permutation" +description = "An instantiation of the Poseidon permutation for decaf377" license = "MIT OR Apache-2.0" repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] -ark-ff = { version = "0.4", default-features = false } -ark-std = { version = "^0.4.0", default-features = false } +decaf377 = { version="0.8", default-features = false } +ark-ff = { version = "0.4", default-features = false, optional=true } +ark-std = { version = "^0.4.0", default-features = false, optional=true } ark-r1cs-std = {version = "0.4", default-features = false, optional=true } ark-relations = { version="0.4", default-features = false, optional=true } @@ -17,7 +18,7 @@ poseidon-parameters = { path = "../poseidon-parameters", default-features = fals [features] default = ["std"] -r1cs = ["ark-r1cs-std", "ark-relations"] +r1cs = ["std", "ark-ff/std", "ark-r1cs-std", "ark-relations", "decaf377/r1cs"] std = [ "ark-ff/std", "ark-std/std", diff --git a/poseidon-permutation/src/permutation.rs b/poseidon-permutation/src/permutation.rs index fad249f..c44e055 100644 --- a/poseidon-permutation/src/permutation.rs +++ b/poseidon-permutation/src/permutation.rs @@ -1,40 +1,83 @@ #![allow(non_snake_case)] -use ark_ff::PrimeField; -use ark_std::{vec, vec::Vec}; +use decaf377::Fq; use poseidon_parameters::v1::{Alpha, MatrixOperations, PoseidonParameters}; +//temp +use poseidon_parameters::StuffThatNeedsToGoInDecaf377; + /// Represents a generic instance of `Poseidon`. /// /// Intended for generic fixed-width hashing. -pub struct Instance<'a, F: PrimeField> { +pub struct Instance< + 'a, + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize, + const NUM_ROUND_ROWS: usize, + const NUM_ROUND_COLS: usize, + const NUM_ROUND_ELEMENTS: usize, +> { /// Parameters for this instance of Poseidon. - parameters: &'a PoseidonParameters, + parameters: &'a PoseidonParameters< + STATE_SIZE, + STATE_SIZE_MINUS_1, + NUM_MDS_ELEMENTS, + NUM_STATE_SIZE_MINUS_1_ELEMENTS, + NUM_ROUND_ROWS, + NUM_ROUND_COLS, + NUM_ROUND_ELEMENTS, + >, /// Inner state. - state_words: Vec, + state_words: [Fq; STATE_SIZE], } -impl<'a, F: PrimeField> Instance<'a, F> { - /// Instantiate a new hash function over GF(p) given `Parameters`. - pub fn new(parameters: &'a PoseidonParameters) -> Self { - let t = parameters.t; +impl< + 'a, + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize, + const NUM_ROUND_ROWS: usize, + const NUM_ROUND_COLS: usize, + const NUM_ROUND_ELEMENTS: usize, + > + Instance< + 'a, + STATE_SIZE, + STATE_SIZE_MINUS_1, + NUM_MDS_ELEMENTS, + NUM_STATE_SIZE_MINUS_1_ELEMENTS, + NUM_ROUND_ROWS, + NUM_ROUND_COLS, + NUM_ROUND_ELEMENTS, + > +{ + /// Instantiate a new hash function over Fq given `Parameters`. + pub fn new( + parameters: &'a PoseidonParameters< + STATE_SIZE, + STATE_SIZE_MINUS_1, + NUM_MDS_ELEMENTS, + NUM_STATE_SIZE_MINUS_1_ELEMENTS, + NUM_ROUND_ROWS, + NUM_ROUND_COLS, + NUM_ROUND_ELEMENTS, + >, + ) -> Self { Self { parameters, - state_words: vec![F::zero(); t], + state_words: [Fq::zero(); STATE_SIZE], } } /// Fixed width hash from n:1. Outputs a F given `t` input words. - pub fn n_to_1_fixed_hash(&mut self, input_words: Vec) -> F { - // Check input words are `t` elements long - if input_words.len() != self.parameters.t { - panic!("err: input words must be t elements long") - } - + pub fn n_to_1_fixed_hash(&mut self, input_words: &[Fq; STATE_SIZE]) -> Fq { // Set internal state words. - for (i, input_word) in input_words.into_iter().enumerate() { - self.state_words[i] = input_word + for (i, input_word) in input_words.iter().enumerate() { + self.state_words[i] = *input_word } // Apply Poseidon permutation. @@ -45,8 +88,8 @@ impl<'a, F: PrimeField> Instance<'a, F> { } /// Print out internal state. - pub fn output_words(&self) -> Vec { - self.state_words.clone() + pub fn output_words(&self) -> [Fq; STATE_SIZE] { + self.state_words } /// Permutes the internal state. @@ -59,7 +102,7 @@ impl<'a, F: PrimeField> Instance<'a, F> { // First chunk of full rounds for r in 0..R_f { // Apply `AddRoundConstants` layer - for i in 0..self.parameters.t { + for i in 0..STATE_SIZE { self.state_words[i] += self.parameters.optimized_arc.0.get_element(r, i); } self.full_sub_words(); @@ -69,7 +112,7 @@ impl<'a, F: PrimeField> Instance<'a, F> { // Partial rounds // First part of `AddRoundConstants` layer - for i in 0..self.parameters.t { + for i in 0..STATE_SIZE { self.state_words[i] += self .parameters .optimized_arc @@ -99,7 +142,7 @@ impl<'a, F: PrimeField> Instance<'a, F> { // Final full rounds for _ in 0..R_f { // Apply `AddRoundConstants` layer - for i in 0..self.parameters.t { + for i in 0..STATE_SIZE { self.state_words[i] += self .parameters .optimized_arc @@ -113,15 +156,10 @@ impl<'a, F: PrimeField> Instance<'a, F> { } /// Fixed width hash from n:1. Outputs a F given `t` input words. Unoptimized. - pub fn unoptimized_n_to_1_fixed_hash(&mut self, input_words: Vec) -> F { - // Check input words are `t` elements long - if input_words.len() != self.parameters.t { - panic!("err: input words must be t elements long") - } - + pub fn unoptimized_n_to_1_fixed_hash(&mut self, input_words: [Fq; STATE_SIZE]) -> Fq { // Set internal state words. - for (i, input_word) in input_words.into_iter().enumerate() { - self.state_words[i] = input_word + for (i, input_word) in input_words.iter().enumerate() { + self.state_words[i] = *input_word } // Apply Poseidon permutation. @@ -139,13 +177,12 @@ impl<'a, F: PrimeField> Instance<'a, F> { let R_f = self.parameters.rounds.full() / 2; let R_P = self.parameters.rounds.partial(); let mut round_constants_counter = 0; - let t = self.parameters.t; - let round_constants = self.parameters.arc.elements().clone(); + let round_constants = self.parameters.arc.elements(); // First full rounds for _ in 0..R_f { // Apply `AddRoundConstants` layer - for i in 0..t { + for i in 0..STATE_SIZE { self.state_words[i] += round_constants[round_constants_counter]; round_constants_counter += 1; } @@ -156,7 +193,7 @@ impl<'a, F: PrimeField> Instance<'a, F> { // Partial rounds for _ in 0..R_P { // Apply `AddRoundConstants` layer - for i in 0..t { + for i in 0..STATE_SIZE { self.state_words[i] += round_constants[round_constants_counter]; round_constants_counter += 1; } @@ -167,7 +204,7 @@ impl<'a, F: PrimeField> Instance<'a, F> { // Final full rounds for _ in 0..R_f { // Apply `AddRoundConstants` layer - for i in 0..t { + for i in 0..STATE_SIZE { self.state_words[i] += round_constants[round_constants_counter]; round_constants_counter += 1; } @@ -180,7 +217,7 @@ impl<'a, F: PrimeField> Instance<'a, F> { fn partial_sub_words(&mut self) { match self.parameters.alpha { Alpha::Exponent(exp) => self.state_words[0] = (self.state_words[0]).pow([exp as u64]), - Alpha::Inverse => self.state_words[0] = F::one() / self.state_words[0], + Alpha::Inverse => self.state_words[0] = Fq::one() / self.state_words[0], } } @@ -188,61 +225,59 @@ impl<'a, F: PrimeField> Instance<'a, F> { fn full_sub_words(&mut self) { match self.parameters.alpha { Alpha::Exponent(exp) => { - self.state_words = self - .state_words - .iter() - .map(|x| x.pow([exp as u64])) - .collect() + for i in 0..STATE_SIZE { + self.state_words[i] = self.state_words[i].pow([exp as u64]); + } } Alpha::Inverse => { - self.state_words = self.state_words.iter().map(|x| F::one() / x).collect() + for i in 0..STATE_SIZE { + self.state_words[i] = Fq::one() / self.state_words[i]; + } } } } /// Applies the `MixLayer` using the M_i matrix. fn mix_layer_mi(&mut self) { - self.state_words = self - .parameters - .optimized_mds - .M_i - .iter_rows() - .map(|row| { - row.iter() - .zip(&self.state_words) - .map(|(x, y)| *x * *y) - .sum() - }) - .collect(); + let mut new_state_words = [Fq::zero(); STATE_SIZE]; + for (i, row) in self.parameters.optimized_mds.M_i.iter_rows().enumerate() { + let sum = row + .iter() + .zip(&self.state_words) + .map(|(x, y)| *x * *y) + .sum(); + new_state_words[i] = sum; + } + self.state_words = new_state_words; } /// Applies the `MixLayer` using the MDS matrix. fn mix_layer_mds(&mut self) { - self.state_words = self - .parameters - .mds - .0 - .0 - .iter_rows() - .map(|row| { - row.iter() - .zip(&self.state_words) - .map(|(x, y)| *x * *y) - .sum() - }) - .collect(); + let mut new_state_words = [Fq::zero(); STATE_SIZE]; + + for (i, row) in self.parameters.mds.0 .0.iter_rows().enumerate() { + let sum = row + .iter() + .zip(&self.state_words) + .map(|(x, y)| *x * *y) + .sum(); + new_state_words[i] = sum; + } + self.state_words = new_state_words; } /// This is `cheap_matrix_mul` in the Sage spec fn sparse_mat_mul(&mut self, round_number: usize) { // mul_row = [(state_words[0] * v[i]) for i in range(0, t-1)] // add_row = [(mul_row[i] + state_words[i+1]) for i in range(0, t-1)] - let add_row: Vec = self.parameters.optimized_mds.v_collection[round_number] + let mut add_row = [Fq::zero(); STATE_SIZE_MINUS_1]; + for (i, x) in self.parameters.optimized_mds.v_collection[round_number] .elements .iter() .enumerate() - .map(|(i, x)| *x * self.state_words[0] + self.state_words[i + 1]) - .collect(); + { + add_row[i] = *x * self.state_words[0] + self.state_words[i + 1]; + } // column_1 = [M_0_0] + w_hat // state_words_new[0] = sum([column_1[i] * state_words[i] for i in range(0, t)]) @@ -251,10 +286,10 @@ impl<'a, F: PrimeField> Instance<'a, F> { + self.parameters.optimized_mds.w_hat_collection[round_number] .elements .iter() - .zip(self.state_words[1..self.parameters.t].iter()) + .zip(self.state_words[1..STATE_SIZE].iter()) .map(|(x, y)| *x * *y) - .sum::(); + .sum::(); - self.state_words[1..self.parameters.t].copy_from_slice(&add_row[..(self.parameters.t - 1)]); + self.state_words[1..STATE_SIZE].copy_from_slice(&add_row[..(STATE_SIZE - 1)]); } } diff --git a/poseidon-permutation/src/r1cs.rs b/poseidon-permutation/src/r1cs.rs index d09e3aa..97873be 100644 --- a/poseidon-permutation/src/r1cs.rs +++ b/poseidon-permutation/src/r1cs.rs @@ -1,44 +1,78 @@ #![allow(non_snake_case)] -use ark_ff::PrimeField; use ark_std::vec::Vec; use ark_r1cs_std::{fields::fp::FpVar, prelude::*}; use ark_relations::r1cs::ConstraintSystemRef; +use decaf377::Fq; use poseidon_parameters::v1::{Alpha, MatrixOperations, PoseidonParameters}; /// Represents a Poseidon permutation instance. -pub struct InstanceVar { +pub struct InstanceVar< + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize, + const NUM_ROUND_ROWS: usize, + const NUM_ROUND_COLS: usize, + const NUM_ROUND_ELEMENTS: usize, +> { /// Parameters for this instance of Poseidon. - pub parameters: PoseidonParameters, + pub parameters: PoseidonParameters< + STATE_SIZE, + STATE_SIZE_MINUS_1, + NUM_MDS_ELEMENTS, + NUM_STATE_SIZE_MINUS_1_ELEMENTS, + NUM_ROUND_ROWS, + NUM_ROUND_COLS, + NUM_ROUND_ELEMENTS, + >, /// Constraint system - pub cs: ConstraintSystemRef, + pub cs: ConstraintSystemRef, /// Current state - pub state_words: Vec>, + pub state_words: Vec>, } -impl InstanceVar -where - F: PrimeField, +impl< + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize, + const NUM_ROUND_ROWS: usize, + const NUM_ROUND_COLS: usize, + const NUM_ROUND_ELEMENTS: usize, + > + InstanceVar< + STATE_SIZE, + STATE_SIZE_MINUS_1, + NUM_MDS_ELEMENTS, + NUM_STATE_SIZE_MINUS_1_ELEMENTS, + NUM_ROUND_ROWS, + NUM_ROUND_COLS, + NUM_ROUND_ELEMENTS, + > { - /// Fixed width hash from n:1. Outputs a F given `t` input words. + /// Fixed width hash from n:1. Outputs a Fq given `t` input words. pub fn n_to_1_fixed_hash( - parameters: PoseidonParameters, - cs: ConstraintSystemRef, - input_words: Vec>, - ) -> FpVar { - // Check input words are `t` elements long - if input_words.len() != parameters.t { - panic!("err: input words must be t elements long") - } - + parameters: PoseidonParameters< + STATE_SIZE, + STATE_SIZE_MINUS_1, + NUM_MDS_ELEMENTS, + NUM_STATE_SIZE_MINUS_1_ELEMENTS, + NUM_ROUND_ROWS, + NUM_ROUND_COLS, + NUM_ROUND_ELEMENTS, + >, + cs: ConstraintSystemRef, + input_words: [FpVar; STATE_SIZE], + ) -> FpVar { // t = rate + capacity let mut instance = InstanceVar { parameters, cs, - state_words: input_words, + state_words: input_words.to_vec(), }; // Apply Poseidon permutation. @@ -53,13 +87,12 @@ where let R_f = self.parameters.rounds.full() / 2; let R_P = self.parameters.rounds.partial(); let mut round_constants_counter = 0; - let t = self.parameters.t; - let round_constants = self.parameters.arc.elements().clone(); + let round_constants: [Fq; NUM_ROUND_ELEMENTS] = self.parameters.arc.inner_elements(); // First full rounds for _ in 0..R_f { // Apply `AddRoundConstants` layer - for i in 0..t { + for i in 0..STATE_SIZE { self.state_words[i] += round_constants[round_constants_counter]; round_constants_counter += 1; } @@ -70,7 +103,7 @@ where // Partial rounds for _ in 0..R_P { // Apply `AddRoundConstants` layer - for i in 0..t { + for i in 0..STATE_SIZE { self.state_words[i] += round_constants[round_constants_counter]; round_constants_counter += 1; } @@ -81,7 +114,7 @@ where // Final full rounds for _ in 0..R_f { // Apply `AddRoundConstants` layer - for i in 0..t { + for i in 0..STATE_SIZE { self.state_words[i] += round_constants[round_constants_counter]; round_constants_counter += 1; } @@ -106,7 +139,7 @@ where fn full_sub_words(&mut self) { match self.parameters.alpha { Alpha::Exponent(exp) => { - for i in 0..self.parameters.t { + for i in 0..STATE_SIZE { self.state_words[i] = (self.state_words[i]) .pow_by_constant([exp as u64]) .expect("can compute pow"); @@ -127,11 +160,11 @@ where .0 .iter_rows() .map(|row| { - let temp_vec: Vec> = row + let temp_vec: Vec> = row .iter() .zip(&self.state_words) .map(|(x, y)| { - FpVar::::new_constant(self.cs.clone(), x).expect("can create constant") + FpVar::::new_constant(self.cs.clone(), x).expect("can create constant") * y }) .collect(); From 445df7656409f1e93efeed841d727c2fb6a915b2 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 1 Apr 2024 18:20:13 -0400 Subject: [PATCH 39/54] poseidon-paramgen: begin to use latest poseidon-parameters --- poseidon-parameters/src/mds_matrix.rs | 16 +++--- poseidon-paramgen/Cargo.toml | 3 + poseidon-paramgen/src/mds.rs | 71 ++++++++++++++++++++---- poseidon-paramgen/src/round_constants.rs | 3 + poseidon-paramgen/src/v1.rs | 21 ++++++- poseidon-paramgen/src/v2.rs | 17 +++++- poseidon-paramgen/src/v2/external.rs | 6 +- poseidon-paramgen/src/v2/internal.rs | 4 +- 8 files changed, 115 insertions(+), 26 deletions(-) diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index 8522f04..96198f2 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -131,27 +131,27 @@ pub struct OptimizedMdsMatrices< const N_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, - const NUM_ELEMENTS_STATE_SIZE_2: usize, - const NUM_ELEMENTS_STATE_SIZE_MINUS_1_2: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize, > { /// A (t - 1) x (t - 1) MDS submatrix derived from the MDS matrix. - pub M_hat: SquareMatrix, + pub M_hat: SquareMatrix, /// A 1 x (t - 1) (row) vector derived from the MDS matrix. pub v: Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1>, /// A (t - 1) x 1 (column) vector derived from the MDS matrix. pub w: Matrix, /// A matrix formed from Mhat (an MDS submatrix of the MDS matrix). - pub M_prime: SquareMatrix, + pub M_prime: SquareMatrix, /// A sparse matrix formed from M, - pub M_doubleprime: SquareMatrix, + pub M_doubleprime: SquareMatrix, /// The inverse of the t x t MDS matrix (needed to compute round constants). - pub M_inverse: SquareMatrix, + pub M_inverse: SquareMatrix, /// The inverse of the (t - 1) x (t - 1) Mhat matrix. - pub M_hat_inverse: SquareMatrix, + pub M_hat_inverse: SquareMatrix, /// Element at M00 pub M_00: Fq, /// M_i - pub M_i: Matrix, + pub M_i: Matrix, /// v_collection: one per round. pub v_collection: [Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1>; N_ROUNDS], /// w_hat_collection: one per round diff --git a/poseidon-paramgen/Cargo.toml b/poseidon-paramgen/Cargo.toml index 18e7ba8..e8fddd5 100644 --- a/poseidon-paramgen/Cargo.toml +++ b/poseidon-paramgen/Cargo.toml @@ -21,6 +21,9 @@ poseidon-parameters = { path = "../poseidon-parameters", default-features = fals [dev-dependencies] decaf377 = "0.8" +ark-bn254 = "0.4" +ark-ed-on-bls12-377 = "0.4" +ark-ed-on-bls12-381 = "0.4" [features] default = ["std"] diff --git a/poseidon-paramgen/src/mds.rs b/poseidon-paramgen/src/mds.rs index e5e82fa..85dc1ea 100644 --- a/poseidon-paramgen/src/mds.rs +++ b/poseidon-paramgen/src/mds.rs @@ -7,9 +7,17 @@ use poseidon_parameters::v1::{ }; /// Generate the MDS matrix. -pub fn v1_generate(input: &InputParameters) -> MdsMatrix { +pub fn v1_generate< + F: PrimeField, + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize, +>( + input: &InputParameters, +) -> MdsMatrix { // A t x t MDS matrix only exists if: 2t + 1 <= p - let two_times_t_bigint: F::BigInt = (2 * input.t as u64).into(); + let two_times_t_bigint: F::BigInt = (2 * STATE_SIZE as u64).into(); if two_times_t_bigint > input.p { panic!("no MDS matrix exists"); } @@ -30,7 +38,15 @@ pub fn v1_generate(input: &InputParameters) -> MdsMatr /// /// However, here we use a deterministic method for creating Cauchy matrices that has /// been empirically checked to be safe using the three algorithms above over `decaf377` for t=1-100. -pub fn fixed_cauchy_matrix(input: &InputParameters) -> MdsMatrix { +pub fn fixed_cauchy_matrix< + F: PrimeField, + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize, +>( + input: &InputParameters, +) -> MdsMatrix { // We explicitly check for small fields where the deterministic procedure can fail. // In these cases, the full algorithms 1-3 should be implemented. if input.p.num_bits() < 128 { @@ -57,11 +73,29 @@ pub fn fixed_cauchy_matrix(input: &InputParameters) -> } /// Generate the optimized MDS matrices. -pub fn generate_optimized( - mds: &MdsMatrix, +pub fn generate_optimized< + F: PrimeField, + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize, + const N_ROUNDS: usize, +>( + mds: &MdsMatrix< + STATE_SIZE, + STATE_SIZE_MINUS_1, + NUM_MDS_ELEMENTS, + NUM_STATE_SIZE_MINUS_1_ELEMENTS, + >, t: usize, rounds: &RoundNumbers, -) -> OptimizedMdsMatrices { +) -> OptimizedMdsMatrices< + N_ROUNDS, + STATE_SIZE, + STATE_SIZE_MINUS_1, + NUM_MDS_ELEMENTS, + NUM_STATE_SIZE_MINUS_1_ELEMENTS, +> { let M_hat = mds.hat(); let M_hat_inverse = M_hat .inverse() @@ -121,10 +155,26 @@ pub fn generate_optimized( } } -pub fn calc_equivalent_matrices( - mds: &MdsMatrix, +pub fn calc_equivalent_matrices< + F: PrimeField, + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize, + const N_ROUNDS: usize, +>( + mds: &MdsMatrix< + STATE_SIZE, + STATE_SIZE_MINUS_1, + NUM_MDS_ELEMENTS, + NUM_STATE_SIZE_MINUS_1_ELEMENTS, + >, rounds: &RoundNumbers, -) -> (Matrix, Vec>, Vec>) { +) -> ( + Matrix, + [Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1>; N_ROUNDS], + [Matrix; N_ROUNDS], +) { let r_P = rounds.partial(); let mut w_hat_collection = Vec::with_capacity(rounds.partial()); let mut v_collection = Vec::with_capacity(rounds.partial()); @@ -139,8 +189,7 @@ pub fn calc_equivalent_matrices( let v = M_mul.v(); v_collection.push(v); - let w_hat = mat_mul(&M_hat.clone().inverse().expect("can invert Mhat").0, &w) - .expect("can compute w_hat"); + let w_hat = mat_mul(&M_hat.clone().inverse().expect("can invert Mhat").0, &w); w_hat_collection.push(w_hat); // Now we compute M' and M * M' for the previous round diff --git a/poseidon-paramgen/src/round_constants.rs b/poseidon-paramgen/src/round_constants.rs index a1f22a4..74eb094 100644 --- a/poseidon-paramgen/src/round_constants.rs +++ b/poseidon-paramgen/src/round_constants.rs @@ -9,6 +9,9 @@ use poseidon_parameters::v1::{ use crate::transcript::TranscriptProtocol; +// TODO: +// Problem: We don't know NUM_ROUNDS off the bat, so can't be a compile-time constant. + /// Generate round constants. pub fn v1_generate( input: &InputParameters, diff --git a/poseidon-paramgen/src/v1.rs b/poseidon-paramgen/src/v1.rs index b4d62ce..b4902bd 100644 --- a/poseidon-paramgen/src/v1.rs +++ b/poseidon-paramgen/src/v1.rs @@ -14,12 +14,29 @@ pub mod poseidon_build { /// * t, the width of the desired hash function, e.g. $t=3$ corresponds to 2-to-1 hash. /// * p, the prime modulus, /// * `allow_inverse`, whether or not to allow an inverse alpha. -pub fn generate( +pub fn generate< + F: PrimeField, + const STATE_SIZE: usize, + const STATE_SIZE_MINUS_1: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize, + const NUM_ROUND_ROWS: usize, + const NUM_ROUND_COLS: usize, + const NUM_ROUND_ELEMENTS: usize, +>( M: usize, t: usize, p: F::BigInt, allow_inverse: bool, -) -> PoseidonParameters { +) -> PoseidonParameters< + STATE_SIZE, + STATE_SIZE_MINUS_1, + NUM_MDS_ELEMENTS, + NUM_STATE_SIZE_MINUS_1_ELEMENTS, + NUM_ROUND_ROWS, + NUM_ROUND_COLS, + NUM_ROUND_ELEMENTS, +> { let input = InputParameters::generate(M, t, p, allow_inverse); let alpha = alpha::generate::(p, allow_inverse); let rounds = rounds::v1_generate(&input, &alpha); diff --git a/poseidon-paramgen/src/v2.rs b/poseidon-paramgen/src/v2.rs index 15dfbd4..9d19e51 100644 --- a/poseidon-paramgen/src/v2.rs +++ b/poseidon-paramgen/src/v2.rs @@ -17,12 +17,25 @@ pub mod poseidon_build { /// * t, the width of the desired hash function, e.g. $t=3$ corresponds to 2-to-1 hash. /// * p, the prime modulus, /// * `allow_inverse`, whether or not to allow an inverse alpha. -pub fn generate( +pub fn generate< + F: PrimeField, + const STATE_SIZE: usize, + const NUM_MDS_ELEMENTS: usize, + const NUM_ROUND_ROWS: usize, + const NUM_ROUND_COLS: usize, + const NUM_ROUND_ELEMENTS: usize, +>( M: usize, t: usize, p: F::BigInt, allow_inverse: bool, -) -> PoseidonParameters { +) -> PoseidonParameters< + STATE_SIZE, + NUM_MDS_ELEMENTS, + NUM_ROUND_ROWS, + NUM_ROUND_COLS, + NUM_ROUND_ELEMENTS, +> { let input = InputParameters::generate(M, t, p, allow_inverse); let alpha = alpha::generate::(p, allow_inverse); let rounds = rounds::v2_generate(&input, &alpha); diff --git a/poseidon-paramgen/src/v2/external.rs b/poseidon-paramgen/src/v2/external.rs index ec1fec5..04a8857 100644 --- a/poseidon-paramgen/src/v2/external.rs +++ b/poseidon-paramgen/src/v2/external.rs @@ -5,7 +5,9 @@ use poseidon_parameters::{ }; /// Generate external matrix -pub fn generate(t: usize) -> SquareMatrix { +pub fn generate( + t: usize, +) -> SquareMatrix { if t < 4 { // For t=[2, 3], we don't need to generate an external matrix // because we also use the internal matrix in the full rounds. @@ -38,7 +40,7 @@ pub fn generate(t: usize) -> SquareMatrix { if t == 4 { M4 } else { - let mut matrix = SquareMatrix::identity(t); + let mut matrix = SquareMatrix::::identity(); let d = t / 4; for i in 0..d { for j in 0..d { diff --git a/poseidon-paramgen/src/v2/internal.rs b/poseidon-paramgen/src/v2/internal.rs index 91d8854..f328f11 100644 --- a/poseidon-paramgen/src/v2/internal.rs +++ b/poseidon-paramgen/src/v2/internal.rs @@ -5,7 +5,9 @@ use poseidon_parameters::v2::{SquareMatrix, SquareMatrixOperations}; /// /// This matrix needs to be invertible, and no arbitrarily long /// subspace trails should exist. -pub fn generate(t: usize) -> SquareMatrix { +pub fn generate( + t: usize, +) -> SquareMatrix { let M_i: SquareMatrix; if t == 2 { From 645976f1c94a558531a1c749dce3cc46281f664d Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 1 Apr 2024 18:58:05 -0400 Subject: [PATCH 40/54] poseidon377: rate 1 hashing working --- Cargo.toml | 2 +- poseidon-parameters/src/mds_matrix.rs | 7 +- poseidon-parameters/src/v1.rs | 4 +- poseidon-permutation/src/permutation.rs | 5 + poseidon-permutation/src/r1cs.rs | 5 + poseidon377/Cargo.toml | 3 +- poseidon377/build.rs | 27 - poseidon377/src/hash.rs | 464 +++++---- poseidon377/src/lib.rs | 50 +- poseidon377/src/params.rs | 1246 +++++++++++++++++++++++ 10 files changed, 1519 insertions(+), 294 deletions(-) delete mode 100644 poseidon377/build.rs create mode 100644 poseidon377/src/params.rs diff --git a/Cargo.toml b/Cargo.toml index 27b8e67..fdd4016 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ members = [ "poseidon377", - "poseidon-paramgen", +# "poseidon-paramgen", "poseidon-permutation", "poseidon-consistency", "poseidon-parameters", diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index 96198f2..892f20b 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -129,6 +129,7 @@ impl< #[derive(Clone, Debug, PartialEq, Eq)] pub struct OptimizedMdsMatrices< const N_ROUNDS: usize, + const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, @@ -152,8 +153,8 @@ pub struct OptimizedMdsMatrices< pub M_00: Fq, /// M_i pub M_i: Matrix, - /// v_collection: one per round. - pub v_collection: [Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1>; N_ROUNDS], + /// v_collection: one per partial round. + pub v_collection: [Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1>; N_PARTIAL_ROUNDS], /// w_hat_collection: one per round - pub w_hat_collection: [Matrix; N_ROUNDS], + pub w_hat_collection: [Matrix; N_PARTIAL_ROUNDS], } diff --git a/poseidon-parameters/src/v1.rs b/poseidon-parameters/src/v1.rs index 907ec03..59f138a 100644 --- a/poseidon-parameters/src/v1.rs +++ b/poseidon-parameters/src/v1.rs @@ -7,7 +7,7 @@ pub use crate::{ matrix_ops::SquareMatrixOperations, mds_matrix::MdsMatrix, mds_matrix::OptimizedMdsMatrices, }; -/// A set of Poseidon1 parameters for a given set of input parameters. +/// A set of Poseidon1 parameters for a given set of input parameters over decaf377::Fq. /// /// The const `STATE_SIZE` corresponds to $t$ in the paper, the width of the hash function, /// e.g. $t=3$ corresponds to a 2-to-1 hash. @@ -20,6 +20,7 @@ pub struct PoseidonParameters< const NUM_ROUND_ROWS: usize, const NUM_ROUND_COLS: usize, const NUM_ROUND_ELEMENTS: usize, + const NUM_PARTIAL_ROUNDS: usize, > { // Input parameters. /// Security level. @@ -49,6 +50,7 @@ pub struct PoseidonParameters< /// Optimized MDS matrices. pub optimized_mds: OptimizedMdsMatrices< NUM_ROUND_ROWS, + NUM_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, diff --git a/poseidon-permutation/src/permutation.rs b/poseidon-permutation/src/permutation.rs index c44e055..87d46a0 100644 --- a/poseidon-permutation/src/permutation.rs +++ b/poseidon-permutation/src/permutation.rs @@ -18,6 +18,7 @@ pub struct Instance< const NUM_ROUND_ROWS: usize, const NUM_ROUND_COLS: usize, const NUM_ROUND_ELEMENTS: usize, + const NUM_PARTIAL_ROUNDS: usize, > { /// Parameters for this instance of Poseidon. parameters: &'a PoseidonParameters< @@ -28,6 +29,7 @@ pub struct Instance< NUM_ROUND_ROWS, NUM_ROUND_COLS, NUM_ROUND_ELEMENTS, + NUM_PARTIAL_ROUNDS, >, /// Inner state. @@ -43,6 +45,7 @@ impl< const NUM_ROUND_ROWS: usize, const NUM_ROUND_COLS: usize, const NUM_ROUND_ELEMENTS: usize, + const NUM_PARTIAL_ROUNDS: usize, > Instance< 'a, @@ -53,6 +56,7 @@ impl< NUM_ROUND_ROWS, NUM_ROUND_COLS, NUM_ROUND_ELEMENTS, + NUM_PARTIAL_ROUNDS, > { /// Instantiate a new hash function over Fq given `Parameters`. @@ -65,6 +69,7 @@ impl< NUM_ROUND_ROWS, NUM_ROUND_COLS, NUM_ROUND_ELEMENTS, + NUM_PARTIAL_ROUNDS, >, ) -> Self { Self { diff --git a/poseidon-permutation/src/r1cs.rs b/poseidon-permutation/src/r1cs.rs index 97873be..71b3a59 100644 --- a/poseidon-permutation/src/r1cs.rs +++ b/poseidon-permutation/src/r1cs.rs @@ -15,6 +15,7 @@ pub struct InstanceVar< const NUM_ROUND_ROWS: usize, const NUM_ROUND_COLS: usize, const NUM_ROUND_ELEMENTS: usize, + const NUM_PARTIAL_ROUNDS: usize, > { /// Parameters for this instance of Poseidon. pub parameters: PoseidonParameters< @@ -25,6 +26,7 @@ pub struct InstanceVar< NUM_ROUND_ROWS, NUM_ROUND_COLS, NUM_ROUND_ELEMENTS, + NUM_PARTIAL_ROUNDS, >, /// Constraint system @@ -42,6 +44,7 @@ impl< const NUM_ROUND_ROWS: usize, const NUM_ROUND_COLS: usize, const NUM_ROUND_ELEMENTS: usize, + const NUM_PARTIAL_ROUNDS: usize, > InstanceVar< STATE_SIZE, @@ -51,6 +54,7 @@ impl< NUM_ROUND_ROWS, NUM_ROUND_COLS, NUM_ROUND_ELEMENTS, + NUM_PARTIAL_ROUNDS, > { /// Fixed width hash from n:1. Outputs a Fq given `t` input words. @@ -63,6 +67,7 @@ impl< NUM_ROUND_ROWS, NUM_ROUND_COLS, NUM_ROUND_ELEMENTS, + NUM_PARTIAL_ROUNDS, >, cs: ConstraintSystemRef, input_words: [FpVar; STATE_SIZE], diff --git a/poseidon377/Cargo.toml b/poseidon377/Cargo.toml index d5ca827..a9d92e7 100644 --- a/poseidon377/Cargo.toml +++ b/poseidon377/Cargo.toml @@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0" repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] -ark-ff = { version = "0.4", default-features = false } +ark-ff = { version = "0.4", default-features = false, optional=true } ark-groth16 = { version = "0.4", default-features = false, optional=true } ark-r1cs-std = {version = "0.4", default-features = false, optional=true } ark-relations = { version="0.4", default-features = false, optional=true } @@ -30,6 +30,7 @@ ark-ed-on-bls12-381 = "0.4" proptest = "1" rand_core = { version = "0.6.3", features = ["getrandom"] } rand_chacha = "0.3" +ark-ff = "0.4" # Dependencies added for ark-sponge tests ark-test-curves = { version = "0.4", features = ["bls12_381_curve", "mnt4_753_curve"]} diff --git a/poseidon377/build.rs b/poseidon377/build.rs deleted file mode 100644 index 1cf0e5a..0000000 --- a/poseidon377/build.rs +++ /dev/null @@ -1,27 +0,0 @@ -use std::{ - env, fs, - io::{BufWriter, Write}, - path::PathBuf, -}; - -use ark_ed_on_bls12_377::{Fq, FqConfig}; -use ark_ff::MontConfig; -use poseidon_paramgen::v1::poseidon_build; - -fn main() { - // We use the default `OUT_DIR` set by Cargo when a build script exists. - let output_location: PathBuf = - PathBuf::from(env::var("OUT_DIR").expect("OUT_DIR environmental variable must be set")) - .join("params.rs"); - - let security_level = 128; - // Recall t = rate + capacity, so t=2 is rate=1, capacity=1 (i.e. 1:1 hash) - let t_values = vec![2, 3, 4, 5, 6, 7, 8]; - let params_codegen = - poseidon_build::compile::(security_level, t_values, FqConfig::MODULUS, true); - - let fh = fs::File::create(output_location).expect("can create source file"); - let mut f = BufWriter::new(fh); - f.write_all(params_codegen.as_bytes()) - .expect("can write parameters to file"); -} diff --git a/poseidon377/src/hash.rs b/poseidon377/src/hash.rs index c5fdb3c..2481d73 100644 --- a/poseidon377/src/hash.rs +++ b/poseidon377/src/hash.rs @@ -1,83 +1,81 @@ -use ark_ff::vec; - use crate::{Fq, Instance}; /// Hash a single [`Fq`] element with the provided `domain_separator`. pub fn hash_1(domain_separator: &Fq, value: Fq) -> Fq { let params = &crate::RATE_1_PARAMS; let mut state = Instance::new(params); - state.n_to_1_fixed_hash(vec![*domain_separator, value]) -} - -/// Hash two [`Fq`] elements with the provided `domain_separator`. -pub fn hash_2(domain_separator: &Fq, value: (Fq, Fq)) -> Fq { - let params = &crate::RATE_2_PARAMS; - let mut state = Instance::new(params); - state.n_to_1_fixed_hash(vec![*domain_separator, value.0, value.1]) -} - -/// Hash three [`Fq`] elements with the provided `domain_separator`. -pub fn hash_3(domain_separator: &Fq, value: (Fq, Fq, Fq)) -> Fq { - let params = &crate::RATE_3_PARAMS; - let mut state = Instance::new(params); - state.n_to_1_fixed_hash(vec![*domain_separator, value.0, value.1, value.2]) + state.n_to_1_fixed_hash(&[*domain_separator, value]) } -/// Hash four [`Fq`] elements with the provided `domain_separator`. -pub fn hash_4(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq)) -> Fq { - let params = &crate::RATE_4_PARAMS; - let mut state = Instance::new(params); - state.n_to_1_fixed_hash(vec![*domain_separator, value.0, value.1, value.2, value.3]) -} - -/// Hash five [`Fq`] elements with the provided `domain_separator`. -pub fn hash_5(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq)) -> Fq { - let params = &crate::RATE_5_PARAMS; - let mut state = Instance::new(params); - state.n_to_1_fixed_hash(vec![ - *domain_separator, - value.0, - value.1, - value.2, - value.3, - value.4, - ]) -} - -/// Hash six [`Fq`] elements with the provided `domain_separator`. -pub fn hash_6(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq, Fq)) -> Fq { - let params = &crate::RATE_6_PARAMS; - let mut state = Instance::new(params); - state.n_to_1_fixed_hash(vec![ - *domain_separator, - value.0, - value.1, - value.2, - value.3, - value.4, - value.5, - ]) -} - -/// Hash seven [`Fq`] elements with the provided `domain_separator`. -pub fn hash_7(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq, Fq, Fq)) -> Fq { - let params = &crate::RATE_7_PARAMS; - let mut state = Instance::new(params); - state.n_to_1_fixed_hash(vec![ - *domain_separator, - value.0, - value.1, - value.2, - value.3, - value.4, - value.5, - value.6, - ]) -} +// /// Hash two [`Fq`] elements with the provided `domain_separator`. +// pub fn hash_2(domain_separator: &Fq, value: (Fq, Fq)) -> Fq { +// let params = &crate::RATE_2_PARAMS; +// let mut state = Instance::new(params); +// state.n_to_1_fixed_hash(vec![*domain_separator, value.0, value.1]) +// } + +// /// Hash three [`Fq`] elements with the provided `domain_separator`. +// pub fn hash_3(domain_separator: &Fq, value: (Fq, Fq, Fq)) -> Fq { +// let params = &crate::RATE_3_PARAMS; +// let mut state = Instance::new(params); +// state.n_to_1_fixed_hash(vec![*domain_separator, value.0, value.1, value.2]) +// } + +// /// Hash four [`Fq`] elements with the provided `domain_separator`. +// pub fn hash_4(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq)) -> Fq { +// let params = &crate::RATE_4_PARAMS; +// let mut state = Instance::new(params); +// state.n_to_1_fixed_hash(vec![*domain_separator, value.0, value.1, value.2, value.3]) +// } + +// /// Hash five [`Fq`] elements with the provided `domain_separator`. +// pub fn hash_5(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq)) -> Fq { +// let params = &crate::RATE_5_PARAMS; +// let mut state = Instance::new(params); +// state.n_to_1_fixed_hash(vec![ +// *domain_separator, +// value.0, +// value.1, +// value.2, +// value.3, +// value.4, +// ]) +// } + +// /// Hash six [`Fq`] elements with the provided `domain_separator`. +// pub fn hash_6(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq, Fq)) -> Fq { +// let params = &crate::RATE_6_PARAMS; +// let mut state = Instance::new(params); +// state.n_to_1_fixed_hash(vec![ +// *domain_separator, +// value.0, +// value.1, +// value.2, +// value.3, +// value.4, +// value.5, +// ]) +// } + +// /// Hash seven [`Fq`] elements with the provided `domain_separator`. +// pub fn hash_7(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq, Fq, Fq)) -> Fq { +// let params = &crate::RATE_7_PARAMS; +// let mut state = Instance::new(params); +// state.n_to_1_fixed_hash(vec![ +// *domain_separator, +// value.0, +// value.1, +// value.2, +// value.3, +// value.4, +// value.5, +// value.6, +// ]) +// } #[cfg(test)] mod test { - use std::str::FromStr; + use core::str::FromStr; use ark_ff::PrimeField; @@ -101,168 +99,168 @@ mod test { assert_eq!(output, expected_output); } - #[test] - fn rate_2() { - let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); - - let input = ( - Fq::from_str( - "7553885614632219548127688026174585776320152166623257619763178041781456016062", - ) - .unwrap(), - Fq::from_str( - "2337838243217876174544784248400816541933405738836087430664765452605435675740", - ) - .unwrap(), - ); - - let output = hash_2(&domain_sep, input); - - let expected_output = Fq::from_str( - "4318449279293553393006719276941638490334729643330833590842693275258805886300", - ) - .unwrap(); - - assert_eq!(output, expected_output); - } - - #[test] - fn rate_3() { - let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); - - let input = ( - Fq::from_str( - "7553885614632219548127688026174585776320152166623257619763178041781456016062", - ) - .unwrap(), - Fq::from_str( - "2337838243217876174544784248400816541933405738836087430664765452605435675740", - ) - .unwrap(), - Fq::from_str( - "4318449279293553393006719276941638490334729643330833590842693275258805886300", - ) - .unwrap(), - ); - - let output = hash_3(&domain_sep, input); - - let expected_output = Fq::from_str( - "2884734248868891876687246055367204388444877057000108043377667455104051576315", - ) - .unwrap(); - - assert_eq!(output, expected_output); - } - - #[test] - fn rate_4() { - let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); - - let input = ( - Fq::from_str( - "7553885614632219548127688026174585776320152166623257619763178041781456016062", - ) - .unwrap(), - Fq::from_str( - "2337838243217876174544784248400816541933405738836087430664765452605435675740", - ) - .unwrap(), - Fq::from_str( - "4318449279293553393006719276941638490334729643330833590842693275258805886300", - ) - .unwrap(), - Fq::from_str( - "2884734248868891876687246055367204388444877057000108043377667455104051576315", - ) - .unwrap(), - ); - - let output = hash_4(&domain_sep, input); - - let expected_output = Fq::from_str( - "5235431038142849831913898188189800916077016298531443239266169457588889298166", - ) - .unwrap(); - - assert_eq!(output, expected_output); - } - - #[test] - fn rate_5() { - let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); - - let input = ( - Fq::from_str( - "7553885614632219548127688026174585776320152166623257619763178041781456016062", - ) - .unwrap(), - Fq::from_str( - "2337838243217876174544784248400816541933405738836087430664765452605435675740", - ) - .unwrap(), - Fq::from_str( - "4318449279293553393006719276941638490334729643330833590842693275258805886300", - ) - .unwrap(), - Fq::from_str( - "2884734248868891876687246055367204388444877057000108043377667455104051576315", - ) - .unwrap(), - Fq::from_str( - "5235431038142849831913898188189800916077016298531443239266169457588889298166", - ) - .unwrap(), - ); - - let output = hash_5(&domain_sep, input); - - let expected_output = Fq::from_str( - "66948599770858083122195578203282720327054804952637730715402418442993895152", - ) - .unwrap(); - - assert_eq!(output, expected_output); - } - - #[test] - fn rate_6() { - let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); - - let input = ( - Fq::from_str( - "7553885614632219548127688026174585776320152166623257619763178041781456016062", - ) - .unwrap(), - Fq::from_str( - "2337838243217876174544784248400816541933405738836087430664765452605435675740", - ) - .unwrap(), - Fq::from_str( - "4318449279293553393006719276941638490334729643330833590842693275258805886300", - ) - .unwrap(), - Fq::from_str( - "2884734248868891876687246055367204388444877057000108043377667455104051576315", - ) - .unwrap(), - Fq::from_str( - "5235431038142849831913898188189800916077016298531443239266169457588889298166", - ) - .unwrap(), - Fq::from_str( - "66948599770858083122195578203282720327054804952637730715402418442993895152", - ) - .unwrap(), - ); - - let output = hash_6(&domain_sep, input); - - let expected_output = Fq::from_str( - "6797655301930638258044003960605211404784492298673033525596396177265014216269", - ) - .unwrap(); - - assert_eq!(output, expected_output); - } + // #[test] + // fn rate_2() { + // let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); + + // let input = ( + // Fq::from_str( + // "7553885614632219548127688026174585776320152166623257619763178041781456016062", + // ) + // .unwrap(), + // Fq::from_str( + // "2337838243217876174544784248400816541933405738836087430664765452605435675740", + // ) + // .unwrap(), + // ); + + // let output = hash_2(&domain_sep, input); + + // let expected_output = Fq::from_str( + // "4318449279293553393006719276941638490334729643330833590842693275258805886300", + // ) + // .unwrap(); + + // assert_eq!(output, expected_output); + // } + + // #[test] + // fn rate_3() { + // let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); + + // let input = ( + // Fq::from_str( + // "7553885614632219548127688026174585776320152166623257619763178041781456016062", + // ) + // .unwrap(), + // Fq::from_str( + // "2337838243217876174544784248400816541933405738836087430664765452605435675740", + // ) + // .unwrap(), + // Fq::from_str( + // "4318449279293553393006719276941638490334729643330833590842693275258805886300", + // ) + // .unwrap(), + // ); + + // let output = hash_3(&domain_sep, input); + + // let expected_output = Fq::from_str( + // "2884734248868891876687246055367204388444877057000108043377667455104051576315", + // ) + // .unwrap(); + + // assert_eq!(output, expected_output); + // } + + // #[test] + // fn rate_4() { + // let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); + + // let input = ( + // Fq::from_str( + // "7553885614632219548127688026174585776320152166623257619763178041781456016062", + // ) + // .unwrap(), + // Fq::from_str( + // "2337838243217876174544784248400816541933405738836087430664765452605435675740", + // ) + // .unwrap(), + // Fq::from_str( + // "4318449279293553393006719276941638490334729643330833590842693275258805886300", + // ) + // .unwrap(), + // Fq::from_str( + // "2884734248868891876687246055367204388444877057000108043377667455104051576315", + // ) + // .unwrap(), + // ); + + // let output = hash_4(&domain_sep, input); + + // let expected_output = Fq::from_str( + // "5235431038142849831913898188189800916077016298531443239266169457588889298166", + // ) + // .unwrap(); + + // assert_eq!(output, expected_output); + // } + + // #[test] + // fn rate_5() { + // let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); + + // let input = ( + // Fq::from_str( + // "7553885614632219548127688026174585776320152166623257619763178041781456016062", + // ) + // .unwrap(), + // Fq::from_str( + // "2337838243217876174544784248400816541933405738836087430664765452605435675740", + // ) + // .unwrap(), + // Fq::from_str( + // "4318449279293553393006719276941638490334729643330833590842693275258805886300", + // ) + // .unwrap(), + // Fq::from_str( + // "2884734248868891876687246055367204388444877057000108043377667455104051576315", + // ) + // .unwrap(), + // Fq::from_str( + // "5235431038142849831913898188189800916077016298531443239266169457588889298166", + // ) + // .unwrap(), + // ); + + // let output = hash_5(&domain_sep, input); + + // let expected_output = Fq::from_str( + // "66948599770858083122195578203282720327054804952637730715402418442993895152", + // ) + // .unwrap(); + + // assert_eq!(output, expected_output); + // } + + // #[test] + // fn rate_6() { + // let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); + + // let input = ( + // Fq::from_str( + // "7553885614632219548127688026174585776320152166623257619763178041781456016062", + // ) + // .unwrap(), + // Fq::from_str( + // "2337838243217876174544784248400816541933405738836087430664765452605435675740", + // ) + // .unwrap(), + // Fq::from_str( + // "4318449279293553393006719276941638490334729643330833590842693275258805886300", + // ) + // .unwrap(), + // Fq::from_str( + // "2884734248868891876687246055367204388444877057000108043377667455104051576315", + // ) + // .unwrap(), + // Fq::from_str( + // "5235431038142849831913898188189800916077016298531443239266169457588889298166", + // ) + // .unwrap(), + // Fq::from_str( + // "66948599770858083122195578203282720327054804952637730715402418442993895152", + // ) + // .unwrap(), + // ); + + // let output = hash_6(&domain_sep, input); + + // let expected_output = Fq::from_str( + // "6797655301930638258044003960605211404784492298673033525596396177265014216269", + // ) + // .unwrap(); + + // assert_eq!(output, expected_output); + // } } diff --git a/poseidon377/src/lib.rs b/poseidon377/src/lib.rs index b285b61..dd09c9b 100644 --- a/poseidon377/src/lib.rs +++ b/poseidon377/src/lib.rs @@ -4,39 +4,33 @@ use once_cell::sync::Lazy; mod hash; +mod params; -// We want the full parameters to be available in the documentation. -#[cfg(doc)] -pub mod params { - use ark_ff::vec; - include!(concat!(env!("OUT_DIR"), "/params.rs")); -} -#[cfg(not(doc))] -mod params { - use ark_ff::vec; - include!(concat!(env!("OUT_DIR"), "/params.rs")); -} - -pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5, hash_6, hash_7}; +// pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5, hash_6, hash_7}; +pub use hash::hash_1; /// Parameters for the rate-1 instance of Poseidon. -pub static RATE_1_PARAMS: Lazy> = Lazy::new(params::rate_1); -/// Parameters for the rate-2 instance of Poseidon. -pub static RATE_2_PARAMS: Lazy> = Lazy::new(params::rate_2); -/// Parameters for the rate-3 instance of Poseidon. -pub static RATE_3_PARAMS: Lazy> = Lazy::new(params::rate_3); -/// Parameters for the rate-4 instance of Poseidon. -pub static RATE_4_PARAMS: Lazy> = Lazy::new(params::rate_4); -/// Parameters for the rate-5 instance of Poseidon. -pub static RATE_5_PARAMS: Lazy> = Lazy::new(params::rate_5); -/// Parameters for the rate-6 instance of Poseidon. -pub static RATE_6_PARAMS: Lazy> = Lazy::new(params::rate_6); -/// Parameters for the rate-7 instance of Poseidon. -pub static RATE_7_PARAMS: Lazy> = Lazy::new(params::rate_7); +pub static RATE_1_PARAMS: Lazy> = + Lazy::new(params::rate_1); +// TODO: +// Load parameters using const fn + +/// Parameters for the rate-2 instance of Poseidon. +// pub static RATE_2_PARAMS: Lazy> = Lazy::new(params::rate_2); +// /// Parameters for the rate-3 instance of Poseidon. +// pub static RATE_3_PARAMS: Lazy> = Lazy::new(params::rate_3); +// /// Parameters for the rate-4 instance of Poseidon. +// pub static RATE_4_PARAMS: Lazy> = Lazy::new(params::rate_4); +// /// Parameters for the rate-5 instance of Poseidon. +// pub static RATE_5_PARAMS: Lazy> = Lazy::new(params::rate_5); +// /// Parameters for the rate-6 instance of Poseidon. +// pub static RATE_6_PARAMS: Lazy> = Lazy::new(params::rate_6); +// /// Parameters for the rate-7 instance of Poseidon. +// pub static RATE_7_PARAMS: Lazy> = Lazy::new(params::rate_7); pub use decaf377::Fq; pub use poseidon_parameters::v1::PoseidonParameters; pub use poseidon_permutation::Instance; -#[cfg(feature = "r1cs")] -pub mod r1cs; +// #[cfg(feature = "r1cs")] +// pub mod r1cs; diff --git a/poseidon377/src/params.rs b/poseidon377/src/params.rs new file mode 100644 index 0000000..e49f7c2 --- /dev/null +++ b/poseidon377/src/params.rs @@ -0,0 +1,1246 @@ +use core::str::FromStr; +use decaf377::Fq; +use poseidon_parameters::v1::{ + Alpha, ArcMatrix, Matrix, MatrixOperations, MdsMatrix, OptimizedArcMatrix, + OptimizedMdsMatrices, PoseidonParameters, RoundNumbers, SquareMatrix, +}; + +/// Parameters for the rate-1 instance of Poseidon. +pub fn rate_1() -> PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> { + PoseidonParameters { + M: 128, + arc: ArcMatrix::<39, 2, 78>::new(&[ + Fq::from_str( + "5966135783811619788946141430599740285333890476176239487053701755282483259229", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "8248386181461625724624937953920458307783934991095828229311948662109703846229", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "7899697948171006775608679894258092311173776732034376699480766172940143332902", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6159903727631813124658505727742008686518139735306098276802832804806992180150", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6603147245625769955556264626336290925453294494417468042132447023388340299439", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5452037251482288884459408199998243903142580394917869276146144672081622843033", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2115708492564482930864434704366485100751738113026748722601682745504297806604", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6133269380405971624163032902959596862025161741886995971748777100528132299512", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "1721373298675722117940847155120516423706154044622883045243024016434015697761", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2532176072218405331661057027566225726033916848962631064036767622968370620421", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "7524067696224680757975098555540410845710016011660137050724377830134384345101", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "429871330152690529194971512200321767443467690984017972743339762825407688724", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "4822017484452655916856912744980710231803358265071943154730711311103413373365", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "824805971881810943315480704737108941911470981122775059328188495378122732116", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "329423367343883915514983034403099471446131273787671146509854540644107913806", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "3883570534464466369989900277196782028657057428551976312572809240832449868758", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "54572309533869666713815545961978943833125965191367899718872564380412367827", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "104379966757231160002849091367321006399239678017811970878118738543783012285", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "3858794609418653642223132852951715558391493166064725133511836315778019207762", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "7972137249246669918452864163262970209957043950169362761933011015101944889612", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "8039476336099168668727095716808108897423850098843706006244337078630780735875", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "766430462054504684437076620779515009510608446229290910406705826112635319521", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "1157637743005900078763045828583815942936327706889163293509285927879248613852", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "183934423281730235616875364700958253948344322765356511034233191547769363772", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "1201562291895585824017244732773114229792892359638996784519703395328110117361", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "7310830976022972124006273496057736723302334623714327408809145379602290638605", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2276872920099944672856296669350324747933089853087959749074024714270320260388", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "966186309314558308244732353285518560026022414047505874760748721011885636552", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "4329502709342970939316184021870647333452252664602520071765724342507829556028", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "1337917261255725418250807303026010004761301733304867049551577706155074758165", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2839123367356547347441073953599915821128375251332356459441250279757074887817", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "224869059332792965060195408821564586206434504942125985103234074196709224834", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2118280724507514011418932238720730003985992189023324349392738827408813419470", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2024746817632649160329225850453502881580459753222774798266674540254096291210", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5307015204756219408960369558840758352147099769857833209947994256747928257137", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2407188252312221860580438003668742664004234794617922976059521488991595074312", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5700150280886935087009453247680311201121208454493198279022438029607234143353", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "828542545916769704315409945347237208572285442892223193990879248700065051975", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6424020944846567619673399158265606226806728227047720977493059829313969166558", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5956636828116256451736357524320841700115703677198610564962237869663858071864", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6933622218433329082021136266165495108542662690546278978263672802079585858771", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "204406226257651687195615478017955871586120607733975319305559723816453526010", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "431036448527621354942248671784563679512406095626139552665028723514906107279", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2016406250235180438600581178120561107077239174595547290770499452866017307935", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2447571947257624755418643779781470875695669518474076004121556310904642337555", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "823175697495712519803645407488370527154708792984128797959297156747503221464", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5808340764084155658475571734374743816943273999143774630733852180823715703009", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "7355041960620166894243633138047951214299390310721833447536481770010924182637", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2120887415217279631479397749634460783917137667543869946213939195926282168460", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "4106047313079529846051904718092551567497277064547982407065468562206559262083", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2869242011889231404909133868698817227497579259211963396424277007676681908030", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5830475615944010394710658533945042878499619156056253528544887424328284533333", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6445135510747273379638655974958831352681217556501517433182431280009829767448", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "3039442732831840251297958163526128870429881856309417478361276294396087226871", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "3750943880896182174971677063560735365855431148595700647372739176486892105360", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6501105879101363238574742431707671377990863722951661844266502035398320078655", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "8762940550008698267921660361508082078549552508484251072871737389499251780", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "7849014182562314090744458575516477908512244379446772221807253399687719915819", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "7819370335680637242579036089736241212018135042303573318142192088258427233896", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "747638661415129403364618594175025354868001628934615356530406778821361740441", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6658828034743151551710649802496724888729361547906353112540091368274558946461", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "8328145462438412881643804075368556833926038786901905782513874650031190195327", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "8320331650667342323383974431797077522417503304594901121399889421397646071868", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5449933697382452826795510354601320641289019263865712754592193870057100394478", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "4008518250088803388817191682256320373945471106849545040689587699114729889527", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5879283194171533756539189745601792737324595298734552274741868717138815351564", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6626699161525777173055182114141370998077087893099077308894619252233744717846", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "163741410170388028377206341187105220978890212501940049275941086737474403489", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2289406808035365551509331312793292709318048121336289318211070950581668590781", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5430151020513142173055352979265745660781724536468437563956825250123186769437", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "4040004656752387138938977569185095852881985565015580941465394860026553994036", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "1901308305061675634226724460540357576851952962685703065906892481358446930441", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2686273196094412130593768635962284067098909691815336855637195251162980171156", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "1123632222954904617550891255304448941562187156316217306121520482993732652419", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2124462098522865366594185315832211935844567922720223671250422450277331767386", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "3968009204129455601037289639721574073403531972013488960906721718883864047886", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "1041450153030980593059805000659658173285263988288148401600145800517153364524", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "7964222143364674108039807011723483055868039993122214029137966682187499721189", + ) + .map_err(|_| ()) + .unwrap(), + ]), + mds: MdsMatrix::from_elements(&[ + Fq::from_str( + "4222230874714185212124412469390773265687949667577031913967616727958704619521", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606159361", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606159361", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6333346312071277818186618704086159898531924501365547870951425091938056929281", + ) + .map_err(|_| ()) + .unwrap(), + ]), + alpha: Alpha::Exponent(17), + rounds: RoundNumbers { r_P: 31, r_F: 8 }, + optimized_mds: OptimizedMdsMatrices { + M_hat: SquareMatrix::<1, 1>::new(&[Fq::from_str( + "6333346312071277818186618704086159898531924501365547870951425091938056929281", + ) + .map_err(|_| ()) + .unwrap()]), + v: Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606159361", + ) + .map_err(|_| ()) + .unwrap()]), + w: Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606159361", + ) + .map_err(|_| ()) + .unwrap()]), + M_prime: SquareMatrix::<2, 4>::new(&[ + Fq::from_str("1").map_err(|_| ()).unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "6333346312071277818186618704086159898531924501365547870951425091938056929281", + ) + .map_err(|_| ()) + .unwrap(), + ]), + M_doubleprime: SquareMatrix::<2, 4>::new(&[ + Fq::from_str( + "4222230874714185212124412469390773265687949667577031913967616727958704619521", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606159361", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606159362", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("1").map_err(|_| ()).unwrap(), + ]), + M_inverse: SquareMatrix::<2, 4>::new(&[ + Fq::from_str("18").map_err(|_| ()).unwrap(), + Fq::from_str( + "8444461749428370424248824938781546531375899335154063827935233455917409239017", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "8444461749428370424248824938781546531375899335154063827935233455917409239017", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("36").map_err(|_| ()).unwrap(), + ]), + M_hat_inverse: SquareMatrix::<1, 1>::new(&[Fq::from_str("4").map_err(|_| ()).unwrap()]), + M_00: Fq::from_str( + "4222230874714185212124412469390773265687949667577031913967616727958704619521", + ) + .map_err(|_| ()) + .unwrap(), + M_i: Matrix::<2, 2, 4>::new(&[ + Fq::from_str("1").map_err(|_| ()).unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "1328466806588844283355748993677225123218781175064554027603160865731566895100", + ) + .map_err(|_| ()) + .unwrap(), + ]), + v_collection: [ + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606159361", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "7740756603642672888894756193883084320427907723891225175607297334590958469121", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8268535462981946040410307752556930978638901432338354164853249425585796546561", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8400480177816764328289195642225392643191649859450136412164737448334506065921", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8433466356525468900258917614642508059329836966228081973992609454021683445761", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8441712901202645043251348107746786913364383742922568364449577455443477790721", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8443774537371939078999455731022856626873020437096189962063819455798926376961", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444289946414262587936482636841874055250179610639595361467379955887788523521", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444418798674843465170739363296628412344469404025446711318270080910004060161", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444451011739988684479303544910317001618041852371909548780992612165557944321", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444459065006274989306444590313739148936434964458525258146673244979446415361", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461078322846565513229851664594685766033242480179185488093403182918533121", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461581651989459564926167002308569973432811985592667323448442733786562561", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461707484275183077850245836737041025282704361946037782287202621503569921", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461738942346613956081265545344158788245177456034380396996892593432821761", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461746806864471675639020472495938228985795729556466050674315086415134721", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461748772993936105528459204283883089170950297936987464093670709660712961", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461749264526302213000818887230869304217238940032117817448509615472107521", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461749387409393739868908807967615857978811100555900405787219341924956161", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461749418130166621585931288151802496419204140686846052871896773538168321", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461749425810359842015186908197849156029302400719582464643066131441471361", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461749427730408147122500813209360820931826965727766567585858470917297121", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461749428210420223399329289462238737157458106979812593321556555786253561", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "8444461749428330423242468536408525458216213865892292824099755481077003492671", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "4222230874714175211872823368797517997398028300261589163008747234248603182928", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "1055557718678543802968205842199379499349507075065397290752186808562150795732", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "263889429669635950742051460549844874837376768766349322688046702140537698933", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "6399318669488686805872131569223621117241268693557135201623436767473191354014", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5822060542086356913592445361696678544998266840966315714373475919827002458024", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "1455515135521589228398111340424169636249566710241578928593368979956750614506", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "4586109658594582519223940304496815674750341345137426646115958972947892273147", + ) + .map_err(|_| ()) + .unwrap()]), + ], + w_hat_collection: [ + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606159362", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606159366", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606159382", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606159446", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606159702", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606160726", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606164822", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606181206", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606246742", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611606508886", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611607557462", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611611751766", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611628528982", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611695637846", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970611964073302", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970613037815126", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970617332782422", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970634512651606", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970703232128342", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488970978110035286", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488972077621663062", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488976475668174166", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623488994067854218582", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623489064436598396246", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623489345911575106902", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623490471811481949526", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623494975411109320022", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623512989809618802006", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623585047403656729942", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218623873277779808441686", + ) + .map_err(|_| ()) + .unwrap()]), + Matrix::<1, 1, 1>::new(&[Fq::from_str( + "5629641166285580282832549959187697687583932890102709218625026199284415288662", + ) + .map_err(|_| ()) + .unwrap()]), + ], + }, + optimized_arc: OptimizedArcMatrix::<39, 2, 78>::new(&[ + Fq::from_str( + "5966135783811619788946141430599740285333890476176239487053701755282483259229", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "8248386181461625724624937953920458307783934991095828229311948662109703846229", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "7899697948171006775608679894258092311173776732034376699480766172940143332902", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6159903727631813124658505727742008686518139735306098276802832804806992180150", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6603147245625769955556264626336290925453294494417468042132447023388340299439", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "5452037251482288884459408199998243903142580394917869276146144672081622843033", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2115708492564482930864434704366485100751738113026748722601682745504297806604", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "6133269380405971624163032902959596862025161741886995971748777100528132299512", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "1721373298675722117940847155120516423706154044622883045243024016434015697761", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "3724565236254516963714184402682376811075312201052785286045653335186936485632", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2993926950520793195583012275961325592891236008388086182862520577566512461340", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "4844336353504503214469870071526764174731682540454932633018435766858296839637", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "2919936031876724957775716111440945766268285492401054580426406992584542459655", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "5663978257662262191024807546064736467552196158340325666330925183424594651456", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "7448085674097568817272567262403479077043705287324313131373550460383625800172", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "1844007775807385366821253113621394119303187242979498570585202448625529672973", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "2845375890334376795538685909086245364409288104637072625430989733829905037688", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "2964240408032926723856827507283082421025208343378464261229028275456762781251", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "230161891578056211559550657807190773174538079462586673639444384125685358297", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "2306877002508697181182344810930603763199115753709702823703230141504824250182", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "2123836318329453752354985637812824046744828725960282708932659514095027388057", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "7013570417631164963729263595330853907104728572996870230906776016200534001914", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "5000764729360823861687973987151560403669602887880054408060477297803844381647", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "3688012183046632864327681795121813640887482502925323142608857342284872442386", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "3146585007675813590062491760536779565347117627054638296154414219427913984786", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "7676678864432675901546415291553481115538823096046457940480569006553249093660", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "7596645725911019119226480160286640258958855561482821460006382366175556000662", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "2481820329715367246078919596300531087379530611060385987231004758392982276094", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "8195798223330388456752391304154387344999317395184697681713352179787447701761", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "2950101088303282476911765535847716840405588191771345438270963768698720082622", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "6089942152437650111763694671952061709483390843818617937525773543116658480118", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "968559139731456981305865940073176476284992478108629426225462874517877315869", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "4221404144830957915518954956743898127154116380416977979695345847323516205035", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "4704501190321898794037565838019368758488215190375880308834609880983882485439", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "1528540211343567129336669730723574951290951849444879952791957047609443553699", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "3615509814166558686447593855787063258143369710625250820322153815463017494590", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "198306532808076479412426644626589954978557884790678002247412851514091644371", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "5853689647732500931296921164824864754078960696720787779482381563682376644191", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "1960866047741380343536614319063463424777078726178059991360525871235725003606", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "3774777296033242440576566454498384754098369995505408300123039122605053797021", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str("0").map_err(|_| ()).unwrap(), + Fq::from_str( + "4040004656752387138938977569185095852881985565015580941465394860026553994036", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "1901308305061675634226724460540357576851952962685703065906892481358446930441", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2686273196094412130593768635962284067098909691815336855637195251162980171156", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "1123632222954904617550891255304448941562187156316217306121520482993732652419", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "2124462098522865366594185315832211935844567922720223671250422450277331767386", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "3968009204129455601037289639721574073403531972013488960906721718883864047886", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "1041450153030980593059805000659658173285263988288148401600145800517153364524", + ) + .map_err(|_| ()) + .unwrap(), + Fq::from_str( + "7964222143364674108039807011723483055868039993122214029137966682187499721189", + ) + .map_err(|_| ()) + .unwrap(), + ]), + } +} + +// /// Parameters for the rate-2 instance of Poseidon. +// pub fn rate_2() -> PoseidonParameters { +// PoseidonParameters { +// M: 128, +// t: 3, +// arc: ArcMatrix::new(39, 3, vec![Fq::from_str("308026635595114235070436728341841505234226384644787941764356225291780075012").map_err(|_| ()).unwrap(), Fq::from_str("686850750308311448868354907988153221833589417264043199872750834851275630399").map_err(|_| ()).unwrap(), Fq::from_str("5458865526113744175375673481036999502881423789202235030915223710930508573500").map_err(|_| ()).unwrap(), Fq::from_str("1216889461603982466063117074419064018993731784023337352219629352951004218382").map_err(|_| ()).unwrap(), Fq::from_str("4580374146984258872617301222640071415348151863297599652351895199406510624060").map_err(|_| ()).unwrap(), Fq::from_str("5287771711632967718595430906600106184880872479312192055075552617141548501299").map_err(|_| ()).unwrap(), Fq::from_str("3037526442503690560777271665669625925917538366486234291090702161060916614832").map_err(|_| ()).unwrap(), Fq::from_str("6275277408809697928512465960441767403986852341417079924634963619646806124417").map_err(|_| ()).unwrap(), Fq::from_str("7335650489313165022076032570688161581492191665821494053773844209042883340886").map_err(|_| ()).unwrap(), Fq::from_str("1627952039309156476645184308670263708019542166435650091304574646631569460339").map_err(|_| ()).unwrap(), Fq::from_str("6094265973203525089006037274771888959193635664689776329087130682272196094008").map_err(|_| ()).unwrap(), Fq::from_str("6490696528492405721785907440795129872072544933360586449368276289112880330670").map_err(|_| ()).unwrap(), Fq::from_str("1838969713611020994526552299650788115168140980815959904769759411371437475085").map_err(|_| ()).unwrap(), Fq::from_str("2150051935070463751493305482799641725706245753717668882294497822824388319578").map_err(|_| ()).unwrap(), Fq::from_str("4575572148360756475907353900681447955312802247778987169199474643005130716935").map_err(|_| ()).unwrap(), Fq::from_str("1851688896784243289932019446285888654652306219713142676419351172260600922714").map_err(|_| ()).unwrap(), Fq::from_str("6973552312635424934570970915726931835821737587964001373829651198305564713244").map_err(|_| ()).unwrap(), Fq::from_str("1813003948570365248649794664717915544584605337173583303735237517614852010262").map_err(|_| ()).unwrap(), Fq::from_str("8263838364638315756819655988900910418618512340908078920307324632543945164500").map_err(|_| ()).unwrap(), Fq::from_str("757943113036795101065823745544829115197604837832768830141778672857097207622").map_err(|_| ()).unwrap(), Fq::from_str("659325027542376965992085727974783614933698097545036724992593606308630964139").map_err(|_| ()).unwrap(), Fq::from_str("1225384975372888789772257703659435489309718895398738845602578994965191972389").map_err(|_| ()).unwrap(), Fq::from_str("7047321089114218473742436051763144729708458704973957631376463469541098276305").map_err(|_| ()).unwrap(), Fq::from_str("4896435516099794294013100518299784209896728776935133585568100103105644366269").map_err(|_| ()).unwrap(), Fq::from_str("2205611631605917342771043739003168054091728635889814050523595535007173267903").map_err(|_| ()).unwrap(), Fq::from_str("4474292819278150418223394712870944390214136577384608881113789172943901756185").map_err(|_| ()).unwrap(), Fq::from_str("5587482766701385940251260739243227887661785673403464848010833438080581211679").map_err(|_| ()).unwrap(), Fq::from_str("2641477529317380932697589512697916502009860625009330516388196585651681493176").map_err(|_| ()).unwrap(), Fq::from_str("7659241781098366386155720168632612014434481871232768282168172586344498585340").map_err(|_| ()).unwrap(), Fq::from_str("2213394414496632001850413419138630033341488354994088997070037377687913045198").map_err(|_| ()).unwrap(), Fq::from_str("8225722503382752487995602487837074631802103163654291534420243738097561923211").map_err(|_| ()).unwrap(), Fq::from_str("7339897388607796780814184350408038307549544998106959208719480969830754355714").map_err(|_| ()).unwrap(), Fq::from_str("6063557771009805901369588877386914456032427713266832819067913917532377663085").map_err(|_| ()).unwrap(), Fq::from_str("5509459114334322933080334148673613015218318202961864814558888525860239977647").map_err(|_| ()).unwrap(), Fq::from_str("1068773010324768699264514407746331217127187152280245817647555692667272524805").map_err(|_| ()).unwrap(), Fq::from_str("1475085787102796648525415834131411151818489668007757976944301855541062325957").map_err(|_| ()).unwrap(), Fq::from_str("7806695333926830350651265019724920668446960202327785464297697432575564892268").map_err(|_| ()).unwrap(), Fq::from_str("6262615427970190003802435633045752362752019983944651481699206198107630667501").map_err(|_| ()).unwrap(), Fq::from_str("5882310218697746646752824849544270655456741743515414997582197895094710858123").map_err(|_| ()).unwrap(), Fq::from_str("4020331411826639688300623264550213776493766044074688280569180938277859091874").map_err(|_| ()).unwrap(), Fq::from_str("5121255494220880264468029924121174240167067523779050306271979286616022983384").map_err(|_| ()).unwrap(), Fq::from_str("845210955510933566002116427536045841286540286530946099066621065119722796675").map_err(|_| ()).unwrap(), Fq::from_str("4111647319312005247588888076266870242762057231362139607364774953978018302987").map_err(|_| ()).unwrap(), Fq::from_str("974256221217239393715990077542507764506970329207579698526122990643033824957").map_err(|_| ()).unwrap(), Fq::from_str("8159194581608557426538516014063257877781718792172378782923721536338075157415").map_err(|_| ()).unwrap(), Fq::from_str("5801330700370167469894729208361580066110395695280140377467309877650005609388").map_err(|_| ()).unwrap(), Fq::from_str("3394916168528704906797115121684038788393911457592974647637601320052880312678").map_err(|_| ()).unwrap(), Fq::from_str("5972250532491093184876275293339222434229671963274971711757113836479449305852").map_err(|_| ()).unwrap(), Fq::from_str("577370828757987434131060765456679971208926305673729814931934265779321773430").map_err(|_| ()).unwrap(), Fq::from_str("507369807706785879972719468470742776325023232536230874775576358969660471171").map_err(|_| ()).unwrap(), Fq::from_str("8145685735375135873236047590991377004841377786797564751928308568246623719134").map_err(|_| ()).unwrap(), Fq::from_str("6266812424655557804232577725379349619924941193610964604533176490248029261290").map_err(|_| ()).unwrap(), Fq::from_str("5967069394383625926592344942286040375814323449026607622149927596188761075273").map_err(|_| ()).unwrap(), Fq::from_str("3098449309447928770326430524623708251070761959504942163830346543311329812530").map_err(|_| ()).unwrap(), Fq::from_str("7427687102404419444527513714902552301778528290974214220713506219999675675333").map_err(|_| ()).unwrap(), Fq::from_str("4042876682716610044719894233707888314141403055770188287172821864822020198057").map_err(|_| ()).unwrap(), Fq::from_str("6837118584037052064438949987261070301544840685414744015869031742089822922445").map_err(|_| ()).unwrap(), Fq::from_str("1590095428593559863629820253130343351544841134884391502296948548443287186727").map_err(|_| ()).unwrap(), Fq::from_str("7833716475035809798805452573207732340626115218296146847285921472768509634541").map_err(|_| ()).unwrap(), Fq::from_str("1978766321165168589630826892562241348143601476846182828696106373368314589991").map_err(|_| ()).unwrap(), Fq::from_str("7868843219594886750750407514795570643227076640179151649282544892407534950592").map_err(|_| ()).unwrap(), Fq::from_str("3987117632709535432627489164941561521764371714110622944508310419066492323867").map_err(|_| ()).unwrap(), Fq::from_str("4076651335938465583820584717335396202979827471201866993402454539589670076574").map_err(|_| ()).unwrap(), Fq::from_str("6097748422352539177536678843480748867533252126316441163794334575472761192228").map_err(|_| ()).unwrap(), Fq::from_str("6078805585843131510577316268189212746081092327434755953371890725413311537300").map_err(|_| ()).unwrap(), Fq::from_str("808152962788527242286089686410977174198722494768279927846476444721346446780").map_err(|_| ()).unwrap(), Fq::from_str("8245045639104682160533738142044010415064219273511255106133773733199124521153").map_err(|_| ()).unwrap(), Fq::from_str("4927398668407453175049439565878572621130445066312119547147153299334208840274").map_err(|_| ()).unwrap(), Fq::from_str("363071701490644073034803917900446378362169536640995003365310347872935927086").map_err(|_| ()).unwrap(), Fq::from_str("6845633336116955356908527722458493089296092216721078117361029212334156034899").map_err(|_| ()).unwrap(), Fq::from_str("5094161176623110722538832591662719638820846893811655692681247282139572370575").map_err(|_| ()).unwrap(), Fq::from_str("7895316786827468299318427673897436206788315682717422447392995386534194809245").map_err(|_| ()).unwrap(), Fq::from_str("4619732789620735261100885573296112045445141157388178713596060188742622627289").map_err(|_| ()).unwrap(), Fq::from_str("8422122828670140480638067294204606309187570277720043969595883578063866777035").map_err(|_| ()).unwrap(), Fq::from_str("992958244258733465815289318950280606760995861894444863716516601726621951905").map_err(|_| ()).unwrap(), Fq::from_str("6764013719997591825457793918699801796014086921189886289817845875572992948924").map_err(|_| ()).unwrap(), Fq::from_str("1769631866057478207885307356771710476532650071643225238577433500390003064798").map_err(|_| ()).unwrap(), Fq::from_str("8016530745695127030799369163106442821010868795114179395122623057639374511985").map_err(|_| ()).unwrap(), Fq::from_str("8047402967616037894798331978704326272668112374178700484265954166189443934757").map_err(|_| ()).unwrap(), Fq::from_str("7958790794400926032963336530767233388628124879210206645872619788929075456478").map_err(|_| ()).unwrap(), Fq::from_str("173252929061996890901264974543899995780593767283643983973014427458683001541").map_err(|_| ()).unwrap(), Fq::from_str("424155452932847713908278173876758151545515219770842719961252496605244210819").map_err(|_| ()).unwrap(), Fq::from_str("4963998855511100561599552018011798722633814204866173360361168413573963102186").map_err(|_| ()).unwrap(), Fq::from_str("4924076301193420725308802072131338491797915911003604974321332671027931187176").map_err(|_| ()).unwrap(), Fq::from_str("87738268021093433851281834491522887096402113566660018960879318272510245409").map_err(|_| ()).unwrap(), Fq::from_str("8189285308779873224020359279990375150459733757976267012947719806969677070800").map_err(|_| ()).unwrap(), Fq::from_str("7140245732247889400232233586175941378463217319557254345847453782157236936894").map_err(|_| ()).unwrap(), Fq::from_str("3743951945863470078600584990270648056104210006488008873331665117840812797880").map_err(|_| ()).unwrap(), Fq::from_str("7758108064106000033154897821365721729228420055510189063189732601086961159068").map_err(|_| ()).unwrap(), Fq::from_str("2942331573871054342107123741050322394352958878052608362425041477010616345589").map_err(|_| ()).unwrap(), Fq::from_str("7534481797769283402135041398750790178261361935710363254896834970993454697586").map_err(|_| ()).unwrap(), Fq::from_str("7432765185094764662620235238828375611563632895456898300218670191109969003682").map_err(|_| ()).unwrap(), Fq::from_str("6291527872301459316564295970257606704192931633697240620667776646184893228067").map_err(|_| ()).unwrap(), Fq::from_str("5813315419101033685338589591740539737255593497183538450695253259569871183939").map_err(|_| ()).unwrap(), Fq::from_str("5526672082176263237417520469010132662746348759226334285738656831590234548753").map_err(|_| ()).unwrap(), Fq::from_str("3332801859738332252857912215019184013542060534668701681483001518406654964330").map_err(|_| ()).unwrap(), Fq::from_str("1405201308866890283812006656161598509681885029723142585511085641864028595396").map_err(|_| ()).unwrap(), Fq::from_str("1492494789956752741222490333391378456618539215379349797045428691266085997365").map_err(|_| ()).unwrap(), Fq::from_str("8071212912433625994454068244446084774815031240954408676949101589537116165412").map_err(|_| ()).unwrap(), Fq::from_str("4776554854519122517933592399764150620363707384114137316897908201016415856781").map_err(|_| ()).unwrap(), Fq::from_str("125733739368601178383657902963503628562164711974256889561227003875613464767").map_err(|_| ()).unwrap(), Fq::from_str("6095291956682197100095438891582653659020834282561205807326323590973913331048").map_err(|_| ()).unwrap(), Fq::from_str("1222469665268606145803729120426500156401953546226735560453940247824615064170").map_err(|_| ()).unwrap(), Fq::from_str("3553916981699410215413275982884160504425690320454695706786765040400435191673").map_err(|_| ()).unwrap(), Fq::from_str("4597893035276850283590548632351419824369725156115729763845407308233992233881").map_err(|_| ()).unwrap(), Fq::from_str("4098945751589637585349322721645137714901277398725764380413825257514636605490").map_err(|_| ()).unwrap(), Fq::from_str("896241425392348667316141178956455644228372721471824108535546494759067376393").map_err(|_| ()).unwrap(), Fq::from_str("3992502368943038378368897680594056578803163431114935312687627167974272071263").map_err(|_| ()).unwrap(), Fq::from_str("2916896099606045408059702536614926909593404178656347225235372099792450298246").map_err(|_| ()).unwrap(), Fq::from_str("120269880148157352408037220674298509372962320809264336091966259007633284713").map_err(|_| ()).unwrap(), Fq::from_str("7722392890376228197239026921734213343834699657441777356614625170525296088221").map_err(|_| ()).unwrap(), Fq::from_str("2433763979138972299522164212362097495457810156842620348670661190742330717004").map_err(|_| ()).unwrap(), Fq::from_str("983738301417603757808483219105286248075595155162538643758190406964355750696").map_err(|_| ()).unwrap(), Fq::from_str("209202405659177692545688490614016438006505568346018036573546364833013030573").map_err(|_| ()).unwrap(), Fq::from_str("4653243085200282579438307546529783706597045845312243944557671219043378566385").map_err(|_| ()).unwrap(), Fq::from_str("5337014110345479543678006017350943272815297410632902615031016645483782346794").map_err(|_| ()).unwrap(), Fq::from_str("6325608705322012724565293795590543306557376953836287094512934948871034460300").map_err(|_| ()).unwrap()]), +// mds: MdsMatrix::from_elements(vec![Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159361").map_err(|_| ()).unwrap(), Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]), +// alpha: Alpha::Exponent(17), +// rounds: RoundNumbers {r_P: 31, r_F: 8}, +// optimized_mds: OptimizedMdsMatrices { +// M_hat: SquareMatrix::new(2, 2, vec![Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]), +// v: Matrix::new(1, 2, vec![Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap()]), +// w: Matrix::new(2, 1, vec![Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap()]), +// M_prime: SquareMatrix::new(3, 3, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]), +// M_doubleprime: SquareMatrix::new(3, 3, vec![Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159361").map_err(|_| ()).unwrap(), Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("3").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("844446174942837042424882493878154653137589933515406382793523345591740923902").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap()]), +// M_inverse: SquareMatrix::new(3, 3, vec![Fq::from_str("300").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409238141").map_err(|_| ()).unwrap(), Fq::from_str("630").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409238141").map_err(|_| ()).unwrap(), Fq::from_str("2880").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409236941").map_err(|_| ()).unwrap(), Fq::from_str("630").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409236941").map_err(|_| ()).unwrap(), Fq::from_str("1575").map_err(|_| ()).unwrap()]), +// M_hat_inverse: SquareMatrix::new(2, 2, vec![Fq::from_str("180").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409238831").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409238831").map_err(|_| ()).unwrap(), Fq::from_str("252").map_err(|_| ()).unwrap()]), +// M_00: Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159361").map_err(|_| ()).unwrap(), +// M_i: Matrix::new(3, 3, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1949629285152675843545617098663080067734218406516000484720630379218497119024").map_err(|_| ()).unwrap(), Fq::from_str("6804287869450188502728877251894011667833647269738979685488937504164506768586").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6804287869450188502728877251894011667833647269738979685488937504164506768586").map_err(|_| ()).unwrap(), Fq::from_str("4924677972410444052137834859533533887056104638988047570112284264367323462906").map_err(|_| ()).unwrap()]), +// v_collection: vec![Matrix::new(1, 2, vec![Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7851338840837568215878966996652842667862592119946814106687401582227972161537").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("5390046319029973741033426553186554601475450031982266534616596434064743159126").map_err(|_| ()).unwrap(), Fq::from_str("200101191114572496447619547869086533453238430957732351478283876676500967229").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("829877404010811150139661070656107124824766433717606571238525484395118485062").map_err(|_| ()).unwrap(), Fq::from_str("2133278616106368421700301256957373347602451829060634352828506643667063413131").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("1365968091762727342736198250835604969369618525102366755845979549748608523105").map_err(|_| ()).unwrap(), Fq::from_str("4464239250316221358717998424094474299688239588415912587484413985026580825120").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("6646874659690829311166122680037231064739229859859168001040087211399091334835").map_err(|_| ()).unwrap(), Fq::from_str("1066468426039637856564528648552324455121253965270621586756275576531360805988").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("7136760835897019121159862603287197976385321189619646416624219008979984560659").map_err(|_| ()).unwrap(), Fq::from_str("7895099307266901340899077467413466659983495496921952663087642094863245454003").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("3024684110038166395190112929852402256320176798582723521437291932803784795767").map_err(|_| ()).unwrap(), Fq::from_str("6539562343639912400065210160521515784606954936835823363846078290626308539726").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("3946720345795184125515244263065812157065434338563598952377867023243117512852").map_err(|_| ()).unwrap(), Fq::from_str("6866919763492205729081912495695182544024577363339374480652114680551295101496").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("1370866579779179751666779272643589753325456472592344615388576954346012070217").map_err(|_| ()).unwrap(), Fq::from_str("5257830297410242640228024612230943284008849823398918772699808558393403797659").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("4809745123609836907545850763372545328262789310318383043966284648165647050571").map_err(|_| ()).unwrap(), Fq::from_str("376420537967395305483074470608241628171514196263755558574123563405482846675").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("6372844889021167867780605025670862140219213140371876292914592045615069069286").map_err(|_| ()).unwrap(), Fq::from_str("5881863876875773590284286324685617389315859374491971675180704055131610890716").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("3380807857207311895170012051085981530446605768510245714837733545767270194182").map_err(|_| ()).unwrap(), Fq::from_str("5119344892268017700098836955912249614748667561714761555915478665351754682237").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("2373831895095635704808691063414059228351689014169915785080316498970487409780").map_err(|_| ()).unwrap(), Fq::from_str("2501154639300702666958953707756301133092229565732968388261152560666330354451").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("7928676943426219605662251279626817477332292176417864411672283273169660240232").map_err(|_| ()).unwrap(), Fq::from_str("5578353168756060859937770433837936622619923441363922683227969852352600374575").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("6174727674896881248296569468370356429499335387410987654977719460923576114060").map_err(|_| ()).unwrap(), Fq::from_str("2118353752774283390458628132390841478024894901978775880501757191102457712597").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("5810235368489275360193497718463318131258632562055692091713453485327162794432").map_err(|_| ()).unwrap(), Fq::from_str("2940212148484543630352817966266426574420283614404335225984201119533786975865").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("2496528606721449386189051698615222708459363714993934005466914229246137978768").map_err(|_| ()).unwrap(), Fq::from_str("7420161260790078619784193809292575769204978801796137400856104399809884252082").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("5113783964580651150234705950117759115776395610693101899076826961517838666717").map_err(|_| ()).unwrap(), Fq::from_str("4290931721518757222893144616404849166993047845425982286535673675867285731201").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("8211999421064340425786564412490212358375643253327733028988323321151462438475").map_err(|_| ()).unwrap(), Fq::from_str("6491752900402056237981486495685525526114060469672838159788873028184852762625").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("6946589575660729336945306434503069991715421729854718213063426896886472567653").map_err(|_| ()).unwrap(), Fq::from_str("888649550092003034253645125954138427278156434410778889669163505374940213614").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("4915210873252161209464198783405589015439803485767698988731639345973414911416").map_err(|_| ()).unwrap(), Fq::from_str("2692125156575612298425733104017074910126385382417289229166800083378019379251").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("1150247642432088610822167776057912070396494949717952541676286767893772570857").map_err(|_| ()).unwrap(), Fq::from_str("4018611703433714004673508077401981524002369699691298140171798673926803571476").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("336854029096812027993429905526476232654633984215202609834874902172061160148").map_err(|_| ()).unwrap(), Fq::from_str("2173205618181559458893761844483049984676689956958378653055034133577121288051").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("2399946150382908747739038774234831101298084967872051857327701809077994602481").map_err(|_| ()).unwrap(), Fq::from_str("8006827580739169454065998287601961945926827437312169420207457153369731117450").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("5755209309933016189874925774212014925889507922865001727869892166805345084957").map_err(|_| ()).unwrap(), Fq::from_str("6972406089801937605078274630770412993614210510669931020875951402227009485147").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("3157555718563096547912913420515626470584526603200061898513493679323978188420").map_err(|_| ()).unwrap(), Fq::from_str("6177490439198536139733796474250453800042992965769284252547258479887263488701").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("253682592007646928830077940014609838894754259075882450471369573193104679294").map_err(|_| ()).unwrap(), Fq::from_str("5429930182230959551399277894398643779092086445716605127704349422689038405523").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("6866848106706548607973406027549778502924094794042455357599662237562313804108").map_err(|_| ()).unwrap(), Fq::from_str("4034922553054600299956843142071401810686433044054662599202129020075345500306").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("5423641413288424607953685038034474614916250866879227035894380666558650706489").map_err(|_| ()).unwrap(), Fq::from_str("5339947227499621659334136903412968998794129758461864571458205047378610379365").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("5071022128698024353704328969062290150953434889342646239331495908377881925507").map_err(|_| ()).unwrap(), Fq::from_str("6693255166517284828997648575148995228132762333280413628056922174955177338039").map_err(|_| ()).unwrap()])], +// w_hat_collection: vec![Matrix::new(2, 1, vec![Fq::from_str("3").map_err(|_| ()).unwrap(), Fq::from_str("844446174942837042424882493878154653137589933515406382793523345591740923902").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("981").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691183481846649").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("420012").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612550359734061625531174093382366963197488").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("180209124").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733713660356").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("77321126448").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549294963268927918825539601092438296761140073458741446431").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("33175663129296").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030812765587046651836612851341").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("14234461852531392").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612550359734061625531174076500066719433722").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("6107486184750648384").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062340943188083341801524").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("2620498609878090547968").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549294963268927918825539601092438293653186658805240776167").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("1124359966874549299758336").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030811432078078100992865425613").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("482421677441358903405161472").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612550359734061053371320964998978676051866").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("206989471096405114153334252544").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719467877758227097148781170357257012").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("88811600200070897095949893644288").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549294963268927918825539495760454883254494243330578685543").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("38105804552849157101617152896126976").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275134672934950547023907326299368361165").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("16349804950578746537557713185135050752").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612530968602948248130271633829462178396570").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("7015102424913428566276894483329221935104").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237216780695387930609262041259663849671373620").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("3009923493324871919994295698184953712017408").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549294963268924349007962160726705701267669151581322733159").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("1291447920060953749444026854566905183953289216").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987754777628312066671762999899135755514685010005197").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("554112997864742681140626788593189997790679007232").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529974855431702633034239189537545989666816121868622234").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("237749590698292036528451298835503778513792186712064").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059669050406374338731720825453191302792534927377380148").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("102009640804352584002053771343310212920741969110499328").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549173978197506885476956307274619337528306265940633216615").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("43768600343200468322861380583777277220833152500478509056").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084797854725189294859791758532958339894199571359997570632909").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("18779503200849118059633528660299212891119786999127486758912").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348147426737736552879750927293625205233725155347898416850639258").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("8057596946334386411674879041713700599665498211472471358439424").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542686782959743554856251573047041373477808810469054992533217817396").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("3457219706783385041088409499908341650812684295737206993529602048").map_err(|_| ()).unwrap(), Fq::from_str("5066677049652921936482832907538091876699899873315061068595524259986360657511").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("1483366341178041010871482556367844330395501088012018107293154410496").map_err(|_| ()).unwrap(), Fq::from_str("1688892348126377793676816084957060695633216720461087565747048204392874167501").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("636458162558366651544709068381024240250832487808562941538795406753792").map_err(|_| ()).unwrap(), Fq::from_str("3377783944921751146727794187090631893528337415435646688970672179571402054042").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("273080884635330061793616249519578987932061303362404047929570241160413184").map_err(|_| ()).unwrap(), Fq::from_str("6755245521230109293524816879780224016460642499554143028868320513216975418164").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("117169004877639044713895886366298032243934434117919759399235461968788717568").map_err(|_| ()).unwrap(), Fq::from_str("4927712729111667381263381597126487754060410647971109009769634940634861561447").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("8050619445357699317298941741938347747705781620934387820402293787067559182331").map_err(|_| ()).unwrap(), Fq::from_str("1175624794150639596623235154409626733867747861771129765434940374432552373460").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("3116724973922961579596989815901373019435935204375493364272252301052542449158").map_err(|_| ()).unwrap(), Fq::from_str("7408015005953812141582432941909634124857610405677854042372032755105703503216").map_err(|_| ()).unwrap()])], +// }, +// optimized_arc: OptimizedArcMatrix::new(39, 3, vec![Fq::from_str("308026635595114235070436728341841505234226384644787941764356225291780075012").map_err(|_| ()).unwrap(), Fq::from_str("686850750308311448868354907988153221833589417264043199872750834851275630399").map_err(|_| ()).unwrap(), Fq::from_str("5458865526113744175375673481036999502881423789202235030915223710930508573500").map_err(|_| ()).unwrap(), Fq::from_str("1216889461603982466063117074419064018993731784023337352219629352951004218382").map_err(|_| ()).unwrap(), Fq::from_str("4580374146984258872617301222640071415348151863297599652351895199406510624060").map_err(|_| ()).unwrap(), Fq::from_str("5287771711632967718595430906600106184880872479312192055075552617141548501299").map_err(|_| ()).unwrap(), Fq::from_str("3037526442503690560777271665669625925917538366486234291090702161060916614832").map_err(|_| ()).unwrap(), Fq::from_str("6275277408809697928512465960441767403986852341417079924634963619646806124417").map_err(|_| ()).unwrap(), Fq::from_str("7335650489313165022076032570688161581492191665821494053773844209042883340886").map_err(|_| ()).unwrap(), Fq::from_str("1627952039309156476645184308670263708019542166435650091304574646631569460339").map_err(|_| ()).unwrap(), Fq::from_str("6094265973203525089006037274771888959193635664689776329087130682272196094008").map_err(|_| ()).unwrap(), Fq::from_str("6490696528492405721785907440795129872072544933360586449368276289112880330670").map_err(|_| ()).unwrap(), Fq::from_str("1838969713611020994526552299650788115168140980815959904769759411371437475085").map_err(|_| ()).unwrap(), Fq::from_str("7365521796310231646272250819449174044164385234835107597226640093799385836527").map_err(|_| ()).unwrap(), Fq::from_str("4266909582211852643916125441538650663312164835968891332255520046501981846583").map_err(|_| ()).unwrap(), Fq::from_str("6473115796297849981243440128186045692570441129722141600589697972207019034114").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7535049679285085127254354405132636437113571883339127395673075797846089326269").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1711678548780795616003707362617306495272193644757088959526580968531505618462").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5456562011888877632000781871593158143381683884143302415131680655656746633862").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1100590275025714828384173494392576370133340358806090350940154175156665261451").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5415359566835722991278408989250791364289536917262588979392157746024114936740").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6237615318355732047045724026092897264784149787546511680012880892698097635043").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7287690110851159960161779644886278162787641825862017485041305657999469617051").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4184683370316308163183503102859402453057265574588852109291933738351920553090").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6846229483565935253840094651194242395445970758956587653239277837011265400368").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5247810841038336337815649410419075835732486594789369339851106589783727983017").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1350482418508995195523536351321792673818559940428835801272789219565273566318").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7523100264101708379290907181985497312839644397735317166176618496114665592432").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4448983106201719179525106942047446359242931369996206349886389108444114615153").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4707208831461551505399685025613601458693283200882068784619611629076148674952").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1893915076355037525100039598806518607249813449139768268666694056389174756514").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4935555126031336876623027767955881648701551423712744911952522336886878419229").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5371766517600436247601579461653779625636670466206845343067502388608973070364").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5481881441546333764028962914229780756452153918082739985375577555343757168054").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1954471113564334413243724765183768873213349030771353076726180682874219368325").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1012379812825152708976390969518781267334249550825589446443615461216275102060").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8105256884564391639037022747794417781493071376147456166596716470636290017433").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7594454719104380774454693884796607911348013298003803986262241781266517166736").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1207106880338603787516796756887740147688034490404772260606455454720580612736").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1711528816380925498316570113595822077203881763260257965403143824143404708178").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6803780526999152786445603481545973879655550041369278545895500277499070406237").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1069595050445295607875576111157043567415305784370362199387551310224007588083").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("720965608687100347963027562526364503127212351083665218923713731199031929511").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2795527282488695374909894263098162202501248639881007215809149095324952992834").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5776996029529735561474215342129256570760328465625836455153507982986089417043").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4098945751589637585349322721645137714901277398725764380413825257514636605490").map_err(|_| ()).unwrap(), Fq::from_str("896241425392348667316141178956455644228372721471824108535546494759067376393").map_err(|_| ()).unwrap(), Fq::from_str("3992502368943038378368897680594056578803163431114935312687627167974272071263").map_err(|_| ()).unwrap(), Fq::from_str("2916896099606045408059702536614926909593404178656347225235372099792450298246").map_err(|_| ()).unwrap(), Fq::from_str("120269880148157352408037220674298509372962320809264336091966259007633284713").map_err(|_| ()).unwrap(), Fq::from_str("7722392890376228197239026921734213343834699657441777356614625170525296088221").map_err(|_| ()).unwrap(), Fq::from_str("2433763979138972299522164212362097495457810156842620348670661190742330717004").map_err(|_| ()).unwrap(), Fq::from_str("983738301417603757808483219105286248075595155162538643758190406964355750696").map_err(|_| ()).unwrap(), Fq::from_str("209202405659177692545688490614016438006505568346018036573546364833013030573").map_err(|_| ()).unwrap(), Fq::from_str("4653243085200282579438307546529783706597045845312243944557671219043378566385").map_err(|_| ()).unwrap(), Fq::from_str("5337014110345479543678006017350943272815297410632902615031016645483782346794").map_err(|_| ()).unwrap(), Fq::from_str("6325608705322012724565293795590543306557376953836287094512934948871034460300").map_err(|_| ()).unwrap()]), +// } +// } + +// /// Parameters for the rate-3 instance of Poseidon. +// pub fn rate_3() -> PoseidonParameters { +// PoseidonParameters { +// M: 128, +// t: 4, +// arc: ArcMatrix::new(39, 4, vec![Fq::from_str("507014295002340130094051641853152875478157627773318139164018329180924405874").map_err(|_| ()).unwrap(), Fq::from_str("7491635671712014457226444359115925142756691872583683345054285850544197741427").map_err(|_| ()).unwrap(), Fq::from_str("6428238367987262728380227088231207564575448754570094797343562439968130973414").map_err(|_| ()).unwrap(), Fq::from_str("417784945642189241683731513330527942532284498692605186769747085266175822763").map_err(|_| ()).unwrap(), Fq::from_str("2460473050623699025207425440478059302299840127402356580032311810234352192553").map_err(|_| ()).unwrap(), Fq::from_str("6739526644189243304596281380207849534959661650376903866949397817731628238273").map_err(|_| ()).unwrap(), Fq::from_str("597549483098771783017881992848590630624851676141528707360377946657258324767").map_err(|_| ()).unwrap(), Fq::from_str("4344854910230270044421510722988181256819181450723410913296668891739456698878").map_err(|_| ()).unwrap(), Fq::from_str("4470966059082111196154549519927954009195386775161045009249761095179400738385").map_err(|_| ()).unwrap(), Fq::from_str("3473585183550757121590696749322044239715986752544880348555956596981389357863").map_err(|_| ()).unwrap(), Fq::from_str("7430297707987557411189895556541208022085393472000735227995498626328989684346").map_err(|_| ()).unwrap(), Fq::from_str("5069778819917269726812261651516390352533805494152825991716992564077618201433").map_err(|_| ()).unwrap(), Fq::from_str("6174290539348443013815085618635508535362670264359346323016750542543831671611").map_err(|_| ()).unwrap(), Fq::from_str("3653200179921208842362414440137382634990868113411395862128462165430232768762").map_err(|_| ()).unwrap(), Fq::from_str("738082080048556788240923937267344369599673172037328036389652736930755015716").map_err(|_| ()).unwrap(), Fq::from_str("6044628729794520171281155572076229146090871806225211668717932778346109567300").map_err(|_| ()).unwrap(), Fq::from_str("7736716524450328636992649732099229308498454296838040636411888315240829896039").map_err(|_| ()).unwrap(), Fq::from_str("445819555352805914532097292182472149144078763817859669741975662939570903079").map_err(|_| ()).unwrap(), Fq::from_str("8394092794612157949817946063023932613000340794281965315017284578429245458889").map_err(|_| ()).unwrap(), Fq::from_str("7466238759822922447708730702706401935849907824276279332055688787440996717722").map_err(|_| ()).unwrap(), Fq::from_str("8133406852969123956605817319998510162150586162953352059663647357307786450170").map_err(|_| ()).unwrap(), Fq::from_str("424450599417139666683298435198002681589862354265665464641715001351384167919").map_err(|_| ()).unwrap(), Fq::from_str("4342275863437731904622617541643601785172909643082646844261023898203105457997").map_err(|_| ()).unwrap(), Fq::from_str("6313051476010503451749544338183153756551815502439779051641801614566285763459").map_err(|_| ()).unwrap(), Fq::from_str("3169994258510125562695300946459466516753097859237027453101755698752871805159").map_err(|_| ()).unwrap(), Fq::from_str("940104882892277443613394347861702508275167480844292912496756850082344181727").map_err(|_| ()).unwrap(), Fq::from_str("8386913227127502132530495363118110304777579547923274644980222467857412952486").map_err(|_| ()).unwrap(), Fq::from_str("6136114103602406791267451042734253266954304008297597483742365775019490301827").map_err(|_| ()).unwrap(), Fq::from_str("5707913825835366556092824230880552633384012284396562419512114568454781766272").map_err(|_| ()).unwrap(), Fq::from_str("440149260913441211009696064751955962692960388523825331963054262767537488240").map_err(|_| ()).unwrap(), Fq::from_str("6543809035845574998097033320920161403566283178673858276395077027543247305226").map_err(|_| ()).unwrap(), Fq::from_str("4600299844965080059869604598802213965503797803928746919640456727327450953335").map_err(|_| ()).unwrap(), Fq::from_str("5829619330419527894551885400021968400890923326407352286968146522526991995959").map_err(|_| ()).unwrap(), Fq::from_str("1072126727148622232260315955319281060621012109578478738112207748069980924969").map_err(|_| ()).unwrap(), Fq::from_str("3541737964424380109788267613233390154435200667195460548613319704497734217622").map_err(|_| ()).unwrap(), Fq::from_str("7993868742943365022564653431815772923975390402981496881445664963672494637843").map_err(|_| ()).unwrap(), Fq::from_str("1796466469602122660444104004440279863940114358482936061911749791684733710417").map_err(|_| ()).unwrap(), Fq::from_str("7023633298532372935362664409341485229404704070227604977879965907688274511839").map_err(|_| ()).unwrap(), Fq::from_str("7753638232839858655663800027938081730461292782758006490345237997988322545788").map_err(|_| ()).unwrap(), Fq::from_str("758435719045098942234564604489742572402395570729286075893953594831824781575").map_err(|_| ()).unwrap(), Fq::from_str("6431648459299330670260885711956057556031697438773821997572300185978034362991").map_err(|_| ()).unwrap(), Fq::from_str("1793863535383713398998984265535284191852386753019751835416578014488181663643").map_err(|_| ()).unwrap(), Fq::from_str("2570169913181254021375023805159346796230408912121297755395210687814552404613").map_err(|_| ()).unwrap(), Fq::from_str("2797182392859745476123817612074916088434710562567225848500623100435110261495").map_err(|_| ()).unwrap(), Fq::from_str("1165553002412302230779686368446969386757102793871148064084092221298371093471").map_err(|_| ()).unwrap(), Fq::from_str("3274799046118891303394494158966162986774122770904320227955921678384730506800").map_err(|_| ()).unwrap(), Fq::from_str("3425305392261908437651357687206668799558419234911004724372509238407711129269").map_err(|_| ()).unwrap(), Fq::from_str("8346825084462913909605033242830887555310938617925477009138394819302909845329").map_err(|_| ()).unwrap(), Fq::from_str("3201635684356589303957559840868578463993422412405939241547886338480364890847").map_err(|_| ()).unwrap(), Fq::from_str("1666877490991395391549048946911053473487849642250360673170573745319764829033").map_err(|_| ()).unwrap(), Fq::from_str("3299223839115383023937717000826182296440529851590453764583865472885058307271").map_err(|_| ()).unwrap(), Fq::from_str("4996045171356088098584327231799712971775597657789563922144692970174095423805").map_err(|_| ()).unwrap(), Fq::from_str("5071229823755602861503104143449120972698947454618730827722771444554899574441").map_err(|_| ()).unwrap(), Fq::from_str("5858861478624288658440425205329788699584645780558303913274042715926810521114").map_err(|_| ()).unwrap(), Fq::from_str("508444268856364400271862689259837405153055907779532163763868097792229098594").map_err(|_| ()).unwrap(), Fq::from_str("4127321280996111497968160900412774190878522914715965141361433671646956206182").map_err(|_| ()).unwrap(), Fq::from_str("7071549460375534429723718824195498396217592262267586094225421947143692617968").map_err(|_| ()).unwrap(), Fq::from_str("221757864860979622060033742864884615648747499118860122322915691012175980536").map_err(|_| ()).unwrap(), Fq::from_str("7211341158106856382678018041894821017323750814749698727140029811204083468036").map_err(|_| ()).unwrap(), Fq::from_str("6943529232381915752136480093930327392085725525820410661513290697754052993128").map_err(|_| ()).unwrap(), Fq::from_str("4763423807814348282157990050939516748361529693043317899586102822833480841072").map_err(|_| ()).unwrap(), Fq::from_str("2190796128952812697528358809735858832429475305043240058677673214750853313800").map_err(|_| ()).unwrap(), Fq::from_str("4523486207206187598811299893069396745625184885730514405177502246670614392198").map_err(|_| ()).unwrap(), Fq::from_str("7513070905246698816156621160386478407835811285350595304295303126723875640085").map_err(|_| ()).unwrap(), Fq::from_str("5836445124808494589808308534928421375948343800058603896518090167146916599684").map_err(|_| ()).unwrap(), Fq::from_str("9171283736409506717264663313119516065621209011238514108295556449743839518").map_err(|_| ()).unwrap(), Fq::from_str("5859622888361586361788147390136702225977160026409963821685898671611280693070").map_err(|_| ()).unwrap(), Fq::from_str("6837150967281313264151089579941327056671858284386786060051686295738377177661").map_err(|_| ()).unwrap(), Fq::from_str("7221723246834615183030010235724717210151616905800718798232072222980084010419").map_err(|_| ()).unwrap(), Fq::from_str("4329910188707893158470284002559145106125732906317923389051817193092777131264").map_err(|_| ()).unwrap(), Fq::from_str("5792427906543765244466457975121734042332467472077182673783118623181520425094").map_err(|_| ()).unwrap(), Fq::from_str("5346006532457755733171734500999687838915847058928477694547101342292499179303").map_err(|_| ()).unwrap(), Fq::from_str("4597392548498607574017560525094380847055006449556755439725487970445213590020").map_err(|_| ()).unwrap(), Fq::from_str("3303281267589969370080082514639135770191199060552521462772350753997314837047").map_err(|_| ()).unwrap(), Fq::from_str("5558462823705511279040205586307603100081635933586313909352118861980698297302").map_err(|_| ()).unwrap(), Fq::from_str("1263748398138463803734503961078041548483514945249248474635138633752566447795").map_err(|_| ()).unwrap(), Fq::from_str("490647985265779623654821894501654868324039080758503716367653671834799811982").map_err(|_| ()).unwrap(), Fq::from_str("1898094513926360152052411590761718544591903834954818536874699766719875033822").map_err(|_| ()).unwrap(), Fq::from_str("6053343692389373368077507471812372847646104903461406638701093256406259345939").map_err(|_| ()).unwrap(), Fq::from_str("6554421296177225080267952576334789681668030171857233913558626523231627259509").map_err(|_| ()).unwrap(), Fq::from_str("3721920025713798370498076140674600002053797988537455641711174690390895385364").map_err(|_| ()).unwrap(), Fq::from_str("2745387728902807242392789462319546074221167499837764828319375019918018876633").map_err(|_| ()).unwrap(), Fq::from_str("3097028366181661019594241699127474134306432976144442452032323656757003850653").map_err(|_| ()).unwrap(), Fq::from_str("7823557720905459296103980883355311123601028854508692383778861145275594636924").map_err(|_| ()).unwrap(), Fq::from_str("4106060455498591909999696539072262778095731079248778115501584357839174902332").map_err(|_| ()).unwrap(), Fq::from_str("196573194431867132075882873593364223623802278987784511493225925606554999399").map_err(|_| ()).unwrap(), Fq::from_str("3881453561547504705609378527741929789591284764516319602573825600113769419329").map_err(|_| ()).unwrap(), Fq::from_str("493690773871566059847594074532948552053765521932045410259746939671486257862").map_err(|_| ()).unwrap(), Fq::from_str("6849267447668928646234210841379777456966734633732540873989202454970094962426").map_err(|_| ()).unwrap(), Fq::from_str("5555522384395102841761900123416437935052425409768071672675868156560502664172").map_err(|_| ()).unwrap(), Fq::from_str("3164690097391885553665673896220385018942443913813415429561095784307993877675").map_err(|_| ()).unwrap(), Fq::from_str("751997789925724099571719539753731795077203163786497928556573288276983857799").map_err(|_| ()).unwrap(), Fq::from_str("7797064805359378923378263108750471488988996670366203564906966139953797786476").map_err(|_| ()).unwrap(), Fq::from_str("2621058208535806748929478936820062512558754775621817172089881590533438911657").map_err(|_| ()).unwrap(), Fq::from_str("6970001120193851908531728965538133691525883363792484682581417337692500902764").map_err(|_| ()).unwrap(), Fq::from_str("6826842223394285672424196404992312747730620966214863886225498038478833682358").map_err(|_| ()).unwrap(), Fq::from_str("7280753522324306125661480239652564884224736370406844144390901625192570466562").map_err(|_| ()).unwrap(), Fq::from_str("7451304684849463043611764007732773140659720225850924442956893639278925508688").map_err(|_| ()).unwrap(), Fq::from_str("5253838130724544974396741090168351524672297373390836034550060653680140034410").map_err(|_| ()).unwrap(), Fq::from_str("354732178706565624123373355953225841445298387453652117348719218243221471628").map_err(|_| ()).unwrap(), Fq::from_str("5979597818162747734929373098808636593825085498843018786696665538105657844167").map_err(|_| ()).unwrap(), Fq::from_str("351629572524479389143320902578994665388426714276868909352158880699229770814").map_err(|_| ()).unwrap(), Fq::from_str("7109929775074769204456615920975367722001470815061690578400757577370356475759").map_err(|_| ()).unwrap(), Fq::from_str("5806079662751268574438201372400910735431542199334746046612215896815791065563").map_err(|_| ()).unwrap(), Fq::from_str("967046392054835084545986605942012533206399069425868131391043504592936582378").map_err(|_| ()).unwrap(), Fq::from_str("2235626016383653135130173827578754724403655434369809542054094514348720144681").map_err(|_| ()).unwrap(), Fq::from_str("118551840213415715186180270494191799120979955929396152586751740139954770674").map_err(|_| ()).unwrap(), Fq::from_str("7940037426759603018350847912350302513354348154694424346903114718921056800033").map_err(|_| ()).unwrap(), Fq::from_str("2993806947124341224488676547808115780756133808041816969561399929323091199988").map_err(|_| ()).unwrap(), Fq::from_str("3167498406773851843298096921587059973841966635480368418683430217271170320658").map_err(|_| ()).unwrap(), Fq::from_str("7675462210513623403638112459070981475591788141512594573391686976617804748800").map_err(|_| ()).unwrap(), Fq::from_str("113656520646986566305770873856403245064118770850240394572766400596130519231").map_err(|_| ()).unwrap(), Fq::from_str("1006225388831407597002513026923357368201575577664986063363565854366603986973").map_err(|_| ()).unwrap(), Fq::from_str("1526282785909026335633723225294164750933182353012114115386394391821211651299").map_err(|_| ()).unwrap(), Fq::from_str("1264354730649648485153348016668926773357340160928809433923690630326979915982").map_err(|_| ()).unwrap(), Fq::from_str("7910412318739090470833358955102625881685684659552089299133733767719163523061").map_err(|_| ()).unwrap(), Fq::from_str("2090970125570254288079670536393427121579040289101998075443870771478924283370").map_err(|_| ()).unwrap(), Fq::from_str("8311681734940517270883280212822579178795688925328896292462357879779746187187").map_err(|_| ()).unwrap(), Fq::from_str("1174147681464540438326971085327070955639510958622116967715666013405346402206").map_err(|_| ()).unwrap(), Fq::from_str("4175215095126474514465222550636824494555503973937772844090349895213411476196").map_err(|_| ()).unwrap(), Fq::from_str("4241759696766954462463723260157362033085821297582753950078581155537557151758").map_err(|_| ()).unwrap(), Fq::from_str("1546282720224443972828836964335088925724907089163291901383796489940020003342").map_err(|_| ()).unwrap(), Fq::from_str("5700204554208422586827147566009516954101695508731242493166780209623191931157").map_err(|_| ()).unwrap(), Fq::from_str("241928117549199144060953691071944032603403288483151133697470756177198473825").map_err(|_| ()).unwrap(), Fq::from_str("3245948103288826434025898701130893665522312031093434026965851273769736723698").map_err(|_| ()).unwrap(), Fq::from_str("2846744319360715391507045130826276684180415630670742056543891047181223700176").map_err(|_| ()).unwrap(), Fq::from_str("958584337997387979912117947775051127593595525170298235342160144609264176973").map_err(|_| ()).unwrap(), Fq::from_str("4169252310805842903830114064888506388073860203737522330389533365930747683745").map_err(|_| ()).unwrap(), Fq::from_str("3318846374911785204190875758231457337043668093149524076485922702513345093073").map_err(|_| ()).unwrap(), Fq::from_str("7615914970203196798794715474076214531002652446692907123137915773970750728959").map_err(|_| ()).unwrap(), Fq::from_str("632809892316086468848078173763187501355955399168541884899267678517741089919").map_err(|_| ()).unwrap(), Fq::from_str("2084579918265637786725360934802652836635649879932874680862991758229384815880").map_err(|_| ()).unwrap(), Fq::from_str("4075324628198618501449806408411880501101368939321234063136596854430148275736").map_err(|_| ()).unwrap(), Fq::from_str("4002543445225357459503590699152084209735684603803494712821090386774180750357").map_err(|_| ()).unwrap(), Fq::from_str("4606083947254012673682779207557774120141220789108725392708225901954954318275").map_err(|_| ()).unwrap(), Fq::from_str("6458161122821480138812881055057431187332515758131902148536758717159076765198").map_err(|_| ()).unwrap(), Fq::from_str("945660987383748932101735057848419013789434411052835694568224008001945197426").map_err(|_| ()).unwrap(), Fq::from_str("7817623181465516166905237421295720105924125839613693222466377071701802776589").map_err(|_| ()).unwrap(), Fq::from_str("6550683822650732117819888043108879305261914159459025109565974339199133829888").map_err(|_| ()).unwrap(), Fq::from_str("8047502109396113498796473893603681668180133015895331201918878122680564584923").map_err(|_| ()).unwrap(), Fq::from_str("7527592443870070416769159161840175145920858357524990578830014410783569808116").map_err(|_| ()).unwrap(), Fq::from_str("5092456597786987850309117489482478313382405139827972441408647246472962756834").map_err(|_| ()).unwrap(), Fq::from_str("6350597027022709417452502607358026831887635557428071029520622433982691427012").map_err(|_| ()).unwrap(), Fq::from_str("2802963479241809964305385036387099199586209492879271476960143416190639640353").map_err(|_| ()).unwrap(), Fq::from_str("8221597608726879712015358263079163240151837220833337984106403382169293661236").map_err(|_| ()).unwrap(), Fq::from_str("4113355626280577616600236093811592553533103473131581188028563119065229189086").map_err(|_| ()).unwrap(), Fq::from_str("5372776432646713299575551380876512719814813415800817038026997728135205964237").map_err(|_| ()).unwrap(), Fq::from_str("4786357963899522354925243599250308006789219843696074990338183430509312871698").map_err(|_| ()).unwrap(), Fq::from_str("6136402023627867107328780042258341451909381526863697406971910076649425863577").map_err(|_| ()).unwrap(), Fq::from_str("403917435174867072656735572934226709672919820691101390561081554994951410328").map_err(|_| ()).unwrap(), Fq::from_str("2197307939742823984581382962133936215707127960884165372495222916141872574366").map_err(|_| ()).unwrap(), Fq::from_str("280402617002073624427675333736860754609331352944830300201501643212477955908").map_err(|_| ()).unwrap(), Fq::from_str("1341193910735288834156152818207813295161416180387476007289323480480850290318").map_err(|_| ()).unwrap(), Fq::from_str("6430227820490268278323837184448206513428639661392170572655482468189896623489").map_err(|_| ()).unwrap(), Fq::from_str("5381106858655589782618523649345652522506825219090054633547753330769140464666").map_err(|_| ()).unwrap(), Fq::from_str("6815943890781966378087179499267196955390238260135387729266185493827955661877").map_err(|_| ()).unwrap()]), +// mds: MdsMatrix::from_elements(vec![Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap()]), +// alpha: Alpha::Exponent(17), +// rounds: RoundNumbers {r_P: 31, r_F: 8}, +// optimized_mds: OptimizedMdsMatrices { +// M_hat: SquareMatrix::new(3, 3, vec![Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap()]), +// v: Matrix::new(1, 3, vec![Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]), +// w: Matrix::new(3, 1, vec![Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]), +// M_prime: SquareMatrix::new(4, 4, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap()]), +// M_doubleprime: SquareMatrix::new(4, 4, vec![Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691183481847813").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691183481847801").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4825406713959068813856471393589455160786228191516607901677276260524233850884").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap()]), +// M_inverse: SquareMatrix::new(4, 4, vec![Fq::from_str("4900").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409215521").map_err(|_| ()).unwrap(), Fq::from_str("35280").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409222241").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409215521").map_err(|_| ()).unwrap(), Fq::from_str("117600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409057601").map_err(|_| ()).unwrap(), Fq::from_str("88200").map_err(|_| ()).unwrap(), Fq::from_str("35280").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409057601").map_err(|_| ()).unwrap(), Fq::from_str("285768").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409097921").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409222241").map_err(|_| ()).unwrap(), Fq::from_str("88200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409097921").map_err(|_| ()).unwrap(), Fq::from_str("70560").map_err(|_| ()).unwrap()]), +// M_hat_inverse: SquareMatrix::new(3, 3, vec![Fq::from_str("4704").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409226945").map_err(|_| ()).unwrap(), Fq::from_str("7560").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409226945").map_err(|_| ()).unwrap(), Fq::from_str("31752").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409218881").map_err(|_| ()).unwrap(), Fq::from_str("7560").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409218881").map_err(|_| ()).unwrap(), Fq::from_str("12960").map_err(|_| ()).unwrap()]), +// M_00: Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), +// M_i: Matrix::new(4, 4, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1770913679784267919684061240570529409533240049541964433983305216194466042974").map_err(|_| ()).unwrap(), Fq::from_str("1866549029176115214562563228199979689352528726144246309942171765298411233074").map_err(|_| ()).unwrap(), Fq::from_str("4346743796263811048302866586944240315464137261819288172545289769065471383712").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1866549029176115214562563228199979689352528726144246309942171765298411233074").map_err(|_| ()).unwrap(), Fq::from_str("7558841494258648836283360155621755771887149020783008047232513736807775269194").map_err(|_| ()).unwrap(), Fq::from_str("4535120056384022670391711913985727483353733305675961759491847308116962577919").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4346743796263811048302866586944240315464137261819288172545289769065471383712").map_err(|_| ()).unwrap(), Fq::from_str("4535120056384022670391711913985727483353733305675961759491847308116962577919").map_err(|_| ()).unwrap(), Fq::from_str("6276627284159172130419509667948869114690338896084411919577382981726432363660").map_err(|_| ()).unwrap()]), +// v_collection: vec![Matrix::new(1, 3, vec![Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("7811127118221242642430163068372930541522706885017509040840090946723603546113").map_err(|_| ()).unwrap(), Fq::from_str("5078405468753450546805196109017235622341339461280152274299939008905886389590").map_err(|_| ()).unwrap(), Fq::from_str("6079789061129447118939993934098936212999870381116874261303105251396621493135").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("7260868788947148597424134313681494118239763444543928261311440896297503846856").map_err(|_| ()).unwrap(), Fq::from_str("7084065973824866808145857319606641283427841345827946323453078374104009662566").map_err(|_| ()).unwrap(), Fq::from_str("7191857281660704661880284238619626408822191886264792206174412875086997153626").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("3020607076656756078418837235637442188306522617192578641389204937737014650962").map_err(|_| ()).unwrap(), Fq::from_str("5637220359779161156373647100061456652227512307027696275393780604040622884745").map_err(|_| ()).unwrap(), Fq::from_str("7668244523520435283525964877159182945565842688382326226602525369239387851908").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("6087395921021275780628874587899188804568416515344015561012376477127152419750").map_err(|_| ()).unwrap(), Fq::from_str("5355926780034961154065801377154310921441757660111086558798718807318312050322").map_err(|_| ()).unwrap(), Fq::from_str("5101629178073013167316837323585703772385116812301151937785443084424112914710").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2517931337784671469746065209438950124555697011910302568267146216785362777665").map_err(|_| ()).unwrap(), Fq::from_str("1871398140745686429249372615212938376575517207318403151829567332458561958868").map_err(|_| ()).unwrap(), Fq::from_str("3977305820851493523602032776891834601924844986115642713533201821764692325958").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("6311155675687157278118438099403853555750805989305197351124885481009701940564").map_err(|_| ()).unwrap(), Fq::from_str("7804525420484563253140210874229577506103020673697061432389267634450181798069").map_err(|_| ()).unwrap(), Fq::from_str("8121654451264725445562806320020308670749229358947667984745878360010714898527").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("5846024911947218980385047513337298856881854435537746492673035925112641190641").map_err(|_| ()).unwrap(), Fq::from_str("3399496119324756229406913700177768543891693359473529460914461193715484462621").map_err(|_| ()).unwrap(), Fq::from_str("8285525267580751635819188227169197672725284412519278374652722416809297463548").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("8125311612818390195384634554117840331472763470372509544364555906952801559214").map_err(|_| ()).unwrap(), Fq::from_str("1058120093155715639328496535505151563553771572720848047656669554775872868679").map_err(|_| ()).unwrap(), Fq::from_str("3508635590708952723910460369954844233710129661900433523794510313695248221631").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2597398556798267401976238549646636908466233983170491393742918965618011459929").map_err(|_| ()).unwrap(), Fq::from_str("2068234554183111213575590722108642658093927628419051308673851496635944475991").map_err(|_| ()).unwrap(), Fq::from_str("7442133310898290472737295900345544691226300883425401862652287408611005187797").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("3417891366961923935460362758841213240150104820792599187657174842229210836976").map_err(|_| ()).unwrap(), Fq::from_str("2109930449684567405588381218450859449011546053415687711099097241022929718138").map_err(|_| ()).unwrap(), Fq::from_str("7467840434764573222855383263695640871779849975911853941299539330373675309347").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("5473866939914824801054396283089499717847009173955743300757985699921346860815").map_err(|_| ()).unwrap(), Fq::from_str("5234336354114260164427300465913302641345540877335129370065902402214025364959").map_err(|_| ()).unwrap(), Fq::from_str("1126975122664037400697387419759870796596612128286867910666937144343541879604").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("6626352097246581455466134744323875054956097790450108755408293744346547543342").map_err(|_| ()).unwrap(), Fq::from_str("3153206513984021945987159774654328831706100102818705029007782698669073005829").map_err(|_| ()).unwrap(), Fq::from_str("6562485048611979813357322527660102014079135660024413816929004954275379368969").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("6547126942154328147320832443050612487497491870705666391200907681492196529418").map_err(|_| ()).unwrap(), Fq::from_str("679282140679490816916885632985394982219355753042789927075966984538450992678").map_err(|_| ()).unwrap(), Fq::from_str("1975639825505718164338386153081112451212146345707795487585389182032710201113").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("8019852686115271278325540117810432061362453551296617166084865346777213399915").map_err(|_| ()).unwrap(), Fq::from_str("4423157693090536003736289868489603415097102968594072262271284571252976367732").map_err(|_| ()).unwrap(), Fq::from_str("7706259014114251980167953943066693142549450681284425615883026028251594044946").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("4238685146588912991052277150923591342201137010140128645266349261112913828465").map_err(|_| ()).unwrap(), Fq::from_str("6643030753404610703732031460459579946840680195722822216243745344807210311119").map_err(|_| ()).unwrap(), Fq::from_str("2475680996810491813273296295668023475775994019707601554410767671042799240208").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("557501750804917719278599042857355157253445559588197504272305070909202142947").map_err(|_| ()).unwrap(), Fq::from_str("3034616829454605187995721626183737309348405614367904348286546698648524072591").map_err(|_| ()).unwrap(), Fq::from_str("6840220540939175845358210160992790877841509186318513396074503225536561679543").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2235960321603888158431253152193753210092382095378613695660507138332654702850").map_err(|_| ()).unwrap(), Fq::from_str("8038232675840346850478414906021807042143478527454501830157679770453874177003").map_err(|_| ()).unwrap(), Fq::from_str("1958792433797404280604077529184967132537621891289866404211114861458653949012").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2771121126924941019197733171990855353004989462795700586008432116507066843083").map_err(|_| ()).unwrap(), Fq::from_str("7891946787816327042641514602122794384117585976254993077005488594311364949400").map_err(|_| ()).unwrap(), Fq::from_str("3198144626605300800949161456570029506551585754496305162893273212825538587550").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("1486396036463796488918910836112179579921345689769531073796275169260909811548").map_err(|_| ()).unwrap(), Fq::from_str("2944068876626515619975636201343790940955795063905239465828001989234937362357").map_err(|_| ()).unwrap(), Fq::from_str("2129508534771598658360969479807111088250507042824235641703160169652575627896").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2140854186169685348670815058631538454922732099942137485668926898724201674659").map_err(|_| ()).unwrap(), Fq::from_str("7468652076037969076499254865972634827247643668936025514456667835334012427225").map_err(|_| ()).unwrap(), Fq::from_str("1757970002590436992134221206272899348034028285789693801345601389872214347600").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("1040329738684054638944033836258206193595141362098686106182885767432151997470").map_err(|_| ()).unwrap(), Fq::from_str("6410948495872817231121367331641167551943622914451951024109227826536706053475").map_err(|_| ()).unwrap(), Fq::from_str("8427589653022398096841334561198668589334175018792376810561267438739330852416").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("7772327947818743993969536799424541943794222077485149388704018051197958237416").map_err(|_| ()).unwrap(), Fq::from_str("6091861936708362479115449153105710361288418563209566341998459726848412047463").map_err(|_| ()).unwrap(), Fq::from_str("5297480874990195902272064724091045043992902989341028640068973757227255598679").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("3883396810313782286826526743921122893928006622029825695950975537821087389160").map_err(|_| ()).unwrap(), Fq::from_str("3247903860075715841700417346976305520144095625429508014463116597838387896518").map_err(|_| ()).unwrap(), Fq::from_str("7713976443013667920827122604772376124752037463132917973907825978429262179301").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("4840022052693157642279807806490641258088748396347667260846692256128474823366").map_err(|_| ()).unwrap(), Fq::from_str("2320513981783688370977023477088348323530328530115618603961392545350193826810").map_err(|_| ()).unwrap(), Fq::from_str("5464621915894148975838316947465227562970124896240483310384384958637202783418").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2524955224785662198329591589711724674124095555557836743499679504608493658905").map_err(|_| ()).unwrap(), Fq::from_str("4302967459015373152759829425128086104313538230989566310193577282421857243983").map_err(|_| ()).unwrap(), Fq::from_str("7085854677712207318166853710193042340041941540033918378974225578285392933819").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("8204349001314703297214711404623509303225403466275829075672617857385903588067").map_err(|_| ()).unwrap(), Fq::from_str("7700899516069850752036253589356545985942429317687927116121979635283175537543").map_err(|_| ()).unwrap(), Fq::from_str("5044294933436925340418900271847539180520545900803250015351447337961276236452").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("8325580809316750396675932766762467417898539258649549722222651695036898066623").map_err(|_| ()).unwrap(), Fq::from_str("935876647201484443045783718082846974724768327063500795021021311129223445135").map_err(|_| ()).unwrap(), Fq::from_str("5974524863800626848947952172784466077450257164992828220213582810876839558473").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2619961646306645205581391052995726359765715683944281254302206143737916690178").map_err(|_| ()).unwrap(), Fq::from_str("4232098761091596546204817900511023602320071513319772077757088132146331349971").map_err(|_| ()).unwrap(), Fq::from_str("5893996741813770214517823932256109521211578999954946896591904115585491695052").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("6000226279124146863136727241256982816131788444179224115247746928098400722618").map_err(|_| ()).unwrap(), Fq::from_str("7908282303686056666698544594350069550453591878182541881359237112975862129485").map_err(|_| ()).unwrap(), Fq::from_str("5093308510117892085703642542483202569453525014619454757347106210972466294020").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("4173866183335783201472244194628736576783485048837628675393061737465983108384").map_err(|_| ()).unwrap(), Fq::from_str("7722932000723324455226456664260648291221473306287563441845985456906430570292").map_err(|_| ()).unwrap(), Fq::from_str("6594856426287953808893617720912378172793949803669275719479745212507719610277").map_err(|_| ()).unwrap()])], +// w_hat_collection: vec![Matrix::new(3, 1, vec![Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691183481847813").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691183481847801").map_err(|_| ()).unwrap(), Fq::from_str("4825406713959068813856471393589455160786228191516607901677276260524233850884").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("5066677049657022254549294963268927918825539601092438296761140073550445679015").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691183481492013").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239395759877096595325655292539475").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691190130973389").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764716436454964").map_err(|_| ()).unwrap(), Fq::from_str("1206351678489767203464117848397363790196557047879151975419319065142183688119").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("326954555854848").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612550359734061625531174092522282388222362").map_err(|_| ()).unwrap(), Fq::from_str("3619055035469301610392353545192091370589671143637455926257957742460761127205").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("5066677049657022254549294963268927918825539601092438296777217481754298410599").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062305893634457381237556").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235696794727580393114095758303950865539207657098402670").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("5066677049657022254549294963268927918825539601092439087339117195636575463015").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154061748245710998393075400705").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274913175328589826044429636170").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("3377784699771348169699529975512618612550359734100500798268412440940394420634").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612550359733959360494708978513021606926746").map_err(|_| ()).unwrap(), Fq::from_str("4825406713959068813856471393589455160786228191581654864230703866938630452956").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("1688892349885674084849764987756309306275181778652987163206062314875400277197").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612550354705360191840862884110145290869146").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982788437964548939286223273763996771475").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("3377784699771348169699529975512618612644360357357220088998231724311466056090").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549294963268927918578262144560896192731910442067666822759").map_err(|_| ()).unwrap(), Fq::from_str("1206351678489767203464117848397363790353840983927040626734569653768340336055").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("4622313602710048294285602833020481471250432").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025225065671229569651381970019676835240870097716").map_err(|_| ()).unwrap(), Fq::from_str("3619055035469301610392353545192099104747718114858051351660821727823107606821").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("1688892349885674084849764987983603363407242277637089092625547354332839333069").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549294962671009582096962770933563908296669278685488375399").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235697175041058034702272660717672140791842141361331054").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("1688892349885674084849776164537646094768714342946991065214962639370703391949").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248795537209894401759823084395407994935701963602051203073").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784725791623593342662835128913443783224258232472943497802").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("6755569399542696339948658311081797349951106141828324629477181234635848495924").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696337953289914359298130438897264386806281741085093144506348340").map_err(|_| ()).unwrap(), Fq::from_str("4825406713959068814776071607763904458071309047699968339412917891778783065820").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("3377784699771375195222198351607422413381921984968660810916631631032839936410").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542625246226774733078000065414840635412284482803516432087117935412").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448881237026906155776404016889561912829977465380028085864894112915").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("6755569400871628389748965640026098152391559369353920566332119369412544508724").map_err(|_| ()).unwrap(), Fq::from_str("1688892346389793676903865486300311421055760223094655503467542801678357810381").map_err(|_| ()).unwrap(), Fq::from_str("1206351680713365901974237654437691495950129065612054602850957455273387322807").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("65347871940096062464336677677087215362501571452721124249338201459654656").map_err(|_| ()).unwrap(), Fq::from_str("5066505145950466159873820805003751929801682558731762266794909044949536630375").map_err(|_| ()).unwrap(), Fq::from_str("3619164376983759136165998027265134279132696018847361888020397233621204879653").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("6591150173178976090819472555078788691458408107801555095220191242530347129242").map_err(|_| ()).unwrap(), Fq::from_str("1680294818293804805201741644942769167735966926003269256043494449110552726734").map_err(|_| ()).unwrap(), Fq::from_str("7789378020387063323150139272617540367093982687550904210604066962883002948462").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("2146234887323775547765017169111001441946197048628264449963777969392092532866").map_err(|_| ()).unwrap(), Fq::from_str("6016882273004400191030618355355462941359941008232443084883169315980534923336").map_err(|_| ()).unwrap(), Fq::from_str("8006919309363258877422299919790609569913200875861317349068808159703442135037").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("1328660600287037476318890124773758269717433143569852966469740536814738764583").map_err(|_| ()).unwrap(), Fq::from_str("2799059352114106880989935270105748212377424368024585897469983757644556127822").map_err(|_| ()).unwrap(), Fq::from_str("3754944908267757077838580510477741735186709775179387743182973860443996144075").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("3090566134820885578578884580453760958423513249194804769976859720189425678748").map_err(|_| ()).unwrap(), Fq::from_str("1014956631064737930693609905134287803771633237096924461974788247575178647239").map_err(|_| ()).unwrap(), Fq::from_str("8163400103508684878783805217025428614561071180858715453129335917580465265931").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("1170257694699101461637358453390078380415452452664611144560355979722491291392").map_err(|_| ()).unwrap(), Fq::from_str("2950059549285188013181916931658203370463912526166425394161627113525340552060").map_err(|_| ()).unwrap(), Fq::from_str("3707999811350219380432741376678614486540365864569586987196860790394724526648").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("6788207622832042348642126488920616088822687435613155564625070055136494404543").map_err(|_| ()).unwrap(), Fq::from_str("7345572074363256210583967430006583646430507990591113801668207894210689527725").map_err(|_| ()).unwrap(), Fq::from_str("5186047010312854035204413482828045021134916673161128169450645601608316659505").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("2684994569877741008293622266647277205103897185526103072687389663167680974490").map_err(|_| ()).unwrap(), Fq::from_str("4530823401126709833726476391654984444257531769309813676261832238601758040157").map_err(|_| ()).unwrap(), Fq::from_str("7346447850308101906027715432789199716019579461200364616077795555030472476421").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("5381857409779952665628327584043375540976057604310147612953286182936555841786").map_err(|_| ()).unwrap(), Fq::from_str("5585801386783953702819984194280591127472653787134009001003784777239879575973").map_err(|_| ()).unwrap(), Fq::from_str("7518256439684693117324139182952967700924072572444328723655399151441539099139").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("4836923819677594097895695170713226141965257370018415181146945568645162458969").map_err(|_| ()).unwrap(), Fq::from_str("2338024011441608123521841904929188790818612008008323734889422354188603144855").map_err(|_| ()).unwrap(), Fq::from_str("2970573662451252164418849682611292619683787341167928072175166200243325985059").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("6986747642722807193008824234701113994769851278733429354827786822556898831972").map_err(|_| ()).unwrap(), Fq::from_str("7277802966896614056540208748248219131616055447869084105405369407240413141926").map_err(|_| ()).unwrap(), Fq::from_str("5379666108398667768550501311321582195912476073271010508490754949821202384893").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("2772827049081756680166514702658410840311990125977382881464127786096434083869").map_err(|_| ()).unwrap(), Fq::from_str("731236289407407592668021529780874110544277150581068361116404642724426427086").map_err(|_| ()).unwrap(), Fq::from_str("4715581558270174759234469054378631966663443657525350772513895993669197306864").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("7170328928050700797526727006832484628166126803784878349848814523758718583922").map_err(|_| ()).unwrap(), Fq::from_str("7301555459845197983545694905439043755630987774458330557496046097688240447729").map_err(|_| ()).unwrap(), Fq::from_str("7092363593810921014374819556963677484202399019871535414564199487898138079427").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("7438767407235580483497807493395600990773278262780472362485131520399115235980").map_err(|_| ()).unwrap(), Fq::from_str("5080296968760900376797434832877005601939022285199363417189940949817304923085").map_err(|_| ()).unwrap(), Fq::from_str("6251905300474441622357928415759826694411515968555428464483715738282960204848").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("6384532249021946732997709377988002515308046142422082092943922461917913306657").map_err(|_| ()).unwrap(), Fq::from_str("3515611156196107654971290045026105822551599443335223195522444955784753391799").map_err(|_| ()).unwrap(), Fq::from_str("1138224488543914315238990105003526271580692633890115486567474932377669162114").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("5881153929590226273974020024739366539228093085910895296970187642591692093565").map_err(|_| ()).unwrap(), Fq::from_str("3087526099159687808661739667166920879776388348863148098514933760593102720940").map_err(|_| ()).unwrap(), Fq::from_str("5526153939329367714443368714325933485322875317171130645740974552496562203691").map_err(|_| ()).unwrap()])], +// }, +// optimized_arc: OptimizedArcMatrix::new(39, 4, vec![Fq::from_str("507014295002340130094051641853152875478157627773318139164018329180924405874").map_err(|_| ()).unwrap(), Fq::from_str("7491635671712014457226444359115925142756691872583683345054285850544197741427").map_err(|_| ()).unwrap(), Fq::from_str("6428238367987262728380227088231207564575448754570094797343562439968130973414").map_err(|_| ()).unwrap(), Fq::from_str("417784945642189241683731513330527942532284498692605186769747085266175822763").map_err(|_| ()).unwrap(), Fq::from_str("2460473050623699025207425440478059302299840127402356580032311810234352192553").map_err(|_| ()).unwrap(), Fq::from_str("6739526644189243304596281380207849534959661650376903866949397817731628238273").map_err(|_| ()).unwrap(), Fq::from_str("597549483098771783017881992848590630624851676141528707360377946657258324767").map_err(|_| ()).unwrap(), Fq::from_str("4344854910230270044421510722988181256819181450723410913296668891739456698878").map_err(|_| ()).unwrap(), Fq::from_str("4470966059082111196154549519927954009195386775161045009249761095179400738385").map_err(|_| ()).unwrap(), Fq::from_str("3473585183550757121590696749322044239715986752544880348555956596981389357863").map_err(|_| ()).unwrap(), Fq::from_str("7430297707987557411189895556541208022085393472000735227995498626328989684346").map_err(|_| ()).unwrap(), Fq::from_str("5069778819917269726812261651516390352533805494152825991716992564077618201433").map_err(|_| ()).unwrap(), Fq::from_str("6174290539348443013815085618635508535362670264359346323016750542543831671611").map_err(|_| ()).unwrap(), Fq::from_str("3653200179921208842362414440137382634990868113411395862128462165430232768762").map_err(|_| ()).unwrap(), Fq::from_str("738082080048556788240923937267344369599673172037328036389652736930755015716").map_err(|_| ()).unwrap(), Fq::from_str("6044628729794520171281155572076229146090871806225211668717932778346109567300").map_err(|_| ()).unwrap(), Fq::from_str("7736716524450328636992649732099229308498454296838040636411888315240829896039").map_err(|_| ()).unwrap(), Fq::from_str("7801646052537243021447445675976197401284814870800330493571122440154230993256").map_err(|_| ()).unwrap(), Fq::from_str("2515366837805709066361634907162810631300608653195753024882428438693187674075").map_err(|_| ()).unwrap(), Fq::from_str("6187129458703378977398123257836651311870393108870066049693065814338734745990").map_err(|_| ()).unwrap(), Fq::from_str("3794218183072958950105086749522628660482084910777125180518390733591853952242").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6233891665852964025793087211080773874059573525293970992732521677977875000340").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3649102510126802185101419697056558429290624425277045268313219498999658341074").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3939605594032360277268908739148360994367569248494182823773540793386338597192").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5793918311165867953048304979785472147312583909683865747227678849141640757653").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6736260101005961361914915211974065806180794912798753414052544982409125819043").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("99386619724773353801924326721821206459385882899600247516417467094446766240").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("855909900584723233076257164006665636915929955418582474051940301964800182283").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4825672737213145076208985600293258814550355409397430040527846357405902736613").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2613583445528729236454598029847009952792117905697841625417796499695750020893").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2270157037168350840262996453896931716107157898869695999890879972338543031389").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2275045507759235100651383490228387625693443691412647946383341897216251871765").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7927445715344068644679425610882298644141563967603864536803142600721498066529").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1015774581556338350646595104847685838057300034445346472118215134956921458632").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7113828120114189476904109335340835059793042603907156402258236741699295723140").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5361253968083438698857228199059136416317284553758704726716422432942990049525").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4669842734842482362744949263084814109548439307811166352836742701971034038591").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8231534498321518818466731090921021461348523047592991460718222512976570936103").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1135503381194475580486620329886878775177087746932489420355089838941102677989").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7128553112861516020321124909533387963631215062151513895950207865404619202792").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3748326121951361079351518015876815023283298346355581092893027673947885706879").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7505487510037889890503698600332856432704754925691776140216514366218619637508").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5555310781556720053920075778567203135558942142552165491341682235748268266993").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7192146175350915536788873880560259314661865066222526587984493122394816976702").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4765548992224561125635289821603442792164763449693429019499745617619175713660").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3743934736956678131120534615785984161423931611359776468788528419922144981092").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2561736804193775652910031718497365265916219792268053751622511136515315868830").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("709567079199351122676952175219214288330631674102772101121326864605715037719").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7918265567971805942273669013826913668856812049698663746273433111971590741797").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3279978733711205079610878817627312064260384417973838290414881688081024612948").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7527592443870070416769159161840175145920858357524990578830014410783569808116").map_err(|_| ()).unwrap(), Fq::from_str("5092456597786987850309117489482478313382405139827972441408647246472962756834").map_err(|_| ()).unwrap(), Fq::from_str("6350597027022709417452502607358026831887635557428071029520622433982691427012").map_err(|_| ()).unwrap(), Fq::from_str("2802963479241809964305385036387099199586209492879271476960143416190639640353").map_err(|_| ()).unwrap(), Fq::from_str("8221597608726879712015358263079163240151837220833337984106403382169293661236").map_err(|_| ()).unwrap(), Fq::from_str("4113355626280577616600236093811592553533103473131581188028563119065229189086").map_err(|_| ()).unwrap(), Fq::from_str("5372776432646713299575551380876512719814813415800817038026997728135205964237").map_err(|_| ()).unwrap(), Fq::from_str("4786357963899522354925243599250308006789219843696074990338183430509312871698").map_err(|_| ()).unwrap(), Fq::from_str("6136402023627867107328780042258341451909381526863697406971910076649425863577").map_err(|_| ()).unwrap(), Fq::from_str("403917435174867072656735572934226709672919820691101390561081554994951410328").map_err(|_| ()).unwrap(), Fq::from_str("2197307939742823984581382962133936215707127960884165372495222916141872574366").map_err(|_| ()).unwrap(), Fq::from_str("280402617002073624427675333736860754609331352944830300201501643212477955908").map_err(|_| ()).unwrap(), Fq::from_str("1341193910735288834156152818207813295161416180387476007289323480480850290318").map_err(|_| ()).unwrap(), Fq::from_str("6430227820490268278323837184448206513428639661392170572655482468189896623489").map_err(|_| ()).unwrap(), Fq::from_str("5381106858655589782618523649345652522506825219090054633547753330769140464666").map_err(|_| ()).unwrap(), Fq::from_str("6815943890781966378087179499267196955390238260135387729266185493827955661877").map_err(|_| ()).unwrap()]), +// } +// } + +// /// Parameters for the rate-4 instance of Poseidon. +// pub fn rate_4() -> PoseidonParameters { +// PoseidonParameters { +// M: 128, +// t: 5, +// arc: ArcMatrix::new(39, 5, vec![Fq::from_str("3431064144647154854906922246941506182222173870772679525880648837636528462927").map_err(|_| ()).unwrap(), Fq::from_str("5974593340237813855065980531800418392229182384079544474645411722799919145826").map_err(|_| ()).unwrap(), Fq::from_str("8348426486881635683182335045339260090794248341687902711787330562710527330030").map_err(|_| ()).unwrap(), Fq::from_str("2956151886560243922621332166670498751051583313292219792564998383355563424069").map_err(|_| ()).unwrap(), Fq::from_str("7202553704068066642115231966909806322861037568682203181517551877916261334156").map_err(|_| ()).unwrap(), Fq::from_str("2216708299265206033085353198252811284979409151554807145353180393005345443076").map_err(|_| ()).unwrap(), Fq::from_str("159335743353116328456368467219460934058466648656727531382446971993029171408").map_err(|_| ()).unwrap(), Fq::from_str("6358764046359684972893522865101698862289416136086499847308829648457169884877").map_err(|_| ()).unwrap(), Fq::from_str("4565669615674819431036641511394858343600542708840534960333061188699120679516").map_err(|_| ()).unwrap(), Fq::from_str("8134340319422717456174214595572028038604616932665913260921485003742433978940").map_err(|_| ()).unwrap(), Fq::from_str("1524401355336014828526302364873243668741090019654727936642087684528900198959").map_err(|_| ()).unwrap(), Fq::from_str("4002982571574570934955320971167280988768820199359033883158331219862407490167").map_err(|_| ()).unwrap(), Fq::from_str("268956367875787697972162318645634654752917110456095075021347431474721377550").map_err(|_| ()).unwrap(), Fq::from_str("5539077933627315832517588545053557934921428562542219829976540617497684332768").map_err(|_| ()).unwrap(), Fq::from_str("8163159707574771497074276335511382452957675096097737520190925328662359500075").map_err(|_| ()).unwrap(), Fq::from_str("4977563953454029124270220726210548316848814835999821114089004208776001409529").map_err(|_| ()).unwrap(), Fq::from_str("7008664649215929946792472256484126474139232333206086319663168135693982854505").map_err(|_| ()).unwrap(), Fq::from_str("3318343362844228852737722392858921343864694811396087052570286467757103682210").map_err(|_| ()).unwrap(), Fq::from_str("4587685140645381977725355169261358248758918671032202397129872095189579561454").map_err(|_| ()).unwrap(), Fq::from_str("704287003752591898133347460228078707207754728734442590948457672014774127322").map_err(|_| ()).unwrap(), Fq::from_str("5586295855761311502524744594863435129218163429541929947376690582426001205171").map_err(|_| ()).unwrap(), Fq::from_str("511183681092274132577691562117725290358264643096152647157355941362092811890").map_err(|_| ()).unwrap(), Fq::from_str("3791674481171094988809522263427975797797362874776318037160568007353522634738").map_err(|_| ()).unwrap(), Fq::from_str("4965556154466909844381620649257570389832386474047974618620218104354064063289").map_err(|_| ()).unwrap(), Fq::from_str("963971635740506695524350086639812612091454527172531163980246521861028438569").map_err(|_| ()).unwrap(), Fq::from_str("7451992112096607760070806231419516306470951591954925177908399061124274263922").map_err(|_| ()).unwrap(), Fq::from_str("7295020835214661651956415729023504830971467253215761505201474665911455830460").map_err(|_| ()).unwrap(), Fq::from_str("3280787858384144985438140612639447429324251039365462088829648101852984550543").map_err(|_| ()).unwrap(), Fq::from_str("2723069157469016916952012980902663865513886975368952753054991125338417988749").map_err(|_| ()).unwrap(), Fq::from_str("6733325546431357986554722827687834798300213011526397736613489805927905039872").map_err(|_| ()).unwrap(), Fq::from_str("56441798850784206915280729725313063705563358361043754962920378642471323078").map_err(|_| ()).unwrap(), Fq::from_str("6242175416051197478965577816668352024312546274687357249134970893857683637801").map_err(|_| ()).unwrap(), Fq::from_str("7229059325557971513848440629134335379833660584249795111754961422333313607445").map_err(|_| ()).unwrap(), Fq::from_str("4356997736710300451650893760872593825295996966836948532384189247527540050988").map_err(|_| ()).unwrap(), Fq::from_str("6049177819482487340461587244657185732646063354529443080122436335159416018307").map_err(|_| ()).unwrap(), Fq::from_str("7576032712525336013506180916525388378290421050900955766685149445245599068280").map_err(|_| ()).unwrap(), Fq::from_str("685881833411823963576399873668926648431518211440759077000731288930749252058").map_err(|_| ()).unwrap(), Fq::from_str("5384977628335230749636022233644848516687146330097069641749995476117414428050").map_err(|_| ()).unwrap(), Fq::from_str("5066626083526655559235268649106935359036992877987015973958141686441893981615").map_err(|_| ()).unwrap(), Fq::from_str("3864160983193434022886998306815956641466289665128616501311023249260929552808").map_err(|_| ()).unwrap(), Fq::from_str("4983941881243182382419978602436262452063279277632038979947467554028069255963").map_err(|_| ()).unwrap(), Fq::from_str("2380948917082021193414549859774890757211307109486149249055872709115860184599").map_err(|_| ()).unwrap(), Fq::from_str("1301850928074772735515957946025843493965124551321884817764442241036689460031").map_err(|_| ()).unwrap(), Fq::from_str("5076897091243437097374948423452785437285304227681926632319204340544971351169").map_err(|_| ()).unwrap(), Fq::from_str("838127818681109643111332745898553870614061735572194444363970004242071077373").map_err(|_| ()).unwrap(), Fq::from_str("2648735541215544391998877172183084494605670598556435437159619417296822227871").map_err(|_| ()).unwrap(), Fq::from_str("640905846278351353238009110145641369411677691778563522917583241258624649457").map_err(|_| ()).unwrap(), Fq::from_str("5808802512212087745976031058783426731700713016299428748650928703458711004704").map_err(|_| ()).unwrap(), Fq::from_str("5749520874951533296314184729627523989610545298994103723357863453360184626972").map_err(|_| ()).unwrap(), Fq::from_str("7525445582965390300114302021019560132409820399129242601557247805779238307844").map_err(|_| ()).unwrap(), Fq::from_str("6273694450692809401014139700242486665748135838970313017557107436600726458407").map_err(|_| ()).unwrap(), Fq::from_str("4905871617426663938319313104542034003803518601136283126064218461920650549964").map_err(|_| ()).unwrap(), Fq::from_str("1534940277876083668919293638051191975711259917242845683774534821664526343485").map_err(|_| ()).unwrap(), Fq::from_str("955425033646804536515201484147592192926177121204720097718766516611829526501").map_err(|_| ()).unwrap(), Fq::from_str("3894150193314733660812750390338205165198396325338470786690315652243619523859").map_err(|_| ()).unwrap(), Fq::from_str("6801866375963986689874975385127139228922087767812185493056701864750823046750").map_err(|_| ()).unwrap(), Fq::from_str("7684017331242214245294327500647474342164357536170689226027885852245154849139").map_err(|_| ()).unwrap(), Fq::from_str("6533613910909897757120178781711524384929846151303957276027775562196300302214").map_err(|_| ()).unwrap(), Fq::from_str("1287778348006793753354264516775910784675578173563856312788659291170395524532").map_err(|_| ()).unwrap(), Fq::from_str("5216915770215863705409380567169020200209418379575908663400005214787797370438").map_err(|_| ()).unwrap(), Fq::from_str("6927925275343061862302658799552674983671506001213383012269858960006499515307").map_err(|_| ()).unwrap(), Fq::from_str("3093431225583285580046103032589984161893627925253127114586453327601657530861").map_err(|_| ()).unwrap(), Fq::from_str("4876508992669306157807478179122786499361974800002342258880758732306240297585").map_err(|_| ()).unwrap(), Fq::from_str("2219651447961251376486863950578960860487881410606162814751517519200897892087").map_err(|_| ()).unwrap(), Fq::from_str("5668773160796938127082941580620585286942699223431101979348874059922774012818").map_err(|_| ()).unwrap(), Fq::from_str("1684893093402299091081200444647548834947240031341162586465732315478226990729").map_err(|_| ()).unwrap(), Fq::from_str("7799057167703178248117746588920357705512026304634271300319889557354880371241").map_err(|_| ()).unwrap(), Fq::from_str("7035962059299232373282594000188009708423815232513861608267397492058368514655").map_err(|_| ()).unwrap(), Fq::from_str("3557841071694962744222128553164306971763173861341821760759398010110916817379").map_err(|_| ()).unwrap(), Fq::from_str("4919604360126837358236378759740095094734090251750427077694652342742015916333").map_err(|_| ()).unwrap(), Fq::from_str("3651964097696714101760373286565395286045981519509724735161744858315540816702").map_err(|_| ()).unwrap(), Fq::from_str("7752385399247926357527056380360808208180081668017775007471560982218033946237").map_err(|_| ()).unwrap(), Fq::from_str("1560948170663949249269952400678295486888598242822198620325709945477214797198").map_err(|_| ()).unwrap(), Fq::from_str("316585276003266717671190676495491229976216737090878145310002581328591539440").map_err(|_| ()).unwrap(), Fq::from_str("5974898654158584463139271462320546617841212083549718367214959777352959495333").map_err(|_| ()).unwrap(), Fq::from_str("5607004686501853872982207933339023766399967231475941595727751773525628758232").map_err(|_| ()).unwrap(), Fq::from_str("263583497813614807388366950168851578800754468135269590784469615476535128717").map_err(|_| ()).unwrap(), Fq::from_str("4871595315337310536264086178722040094415050759013585894612923767087751908699").map_err(|_| ()).unwrap(), Fq::from_str("7173031190250859550777460363163861192761573301345074535057323242442324691325").map_err(|_| ()).unwrap(), Fq::from_str("4723171842604091011176330449498704226263418780555412349754368956504668410122").map_err(|_| ()).unwrap(), Fq::from_str("3093548779175445905159322828510949810768292210271136674694133809205853946145").map_err(|_| ()).unwrap(), Fq::from_str("4988936223801567123535323200615892415167642586821298105957911780645181694254").map_err(|_| ()).unwrap(), Fq::from_str("1270686137321942870279052672278309294560572841737399669722561513209237380672").map_err(|_| ()).unwrap(), Fq::from_str("3027941487562378123721922900099852691404951041633521671398104427545925691668").map_err(|_| ()).unwrap(), Fq::from_str("4250367193013370954668903232462054699730068538781572254097226173154986215943").map_err(|_| ()).unwrap(), Fq::from_str("3705604675524974825735991257641779214522844126919760251465625870683806117431").map_err(|_| ()).unwrap(), Fq::from_str("1551260208361803690514780672787033034618654224039606548555845537861754046538").map_err(|_| ()).unwrap(), Fq::from_str("3186113032606723168090432328426823707739232147505302872305888065960935844821").map_err(|_| ()).unwrap(), Fq::from_str("4618271499236252040457076109295953262458005612124073479720280966407947860574").map_err(|_| ()).unwrap(), Fq::from_str("85068080339364143050775823084986400709929505436687224865850800645071087587").map_err(|_| ()).unwrap(), Fq::from_str("3507988017613409133657367864429411179865920486795500996497040824217097292460").map_err(|_| ()).unwrap(), Fq::from_str("7970107102198616736711602714867013223500032535700603296666154312414237678784").map_err(|_| ()).unwrap(), Fq::from_str("7203145370944655952837572275579114842061587777862317485337984480478802632840").map_err(|_| ()).unwrap(), Fq::from_str("2626923365577867419861067699874226380794382981678256410128947046410867593454").map_err(|_| ()).unwrap(), Fq::from_str("4070982642487328836564600268954969237493687432432450985795431483735455900743").map_err(|_| ()).unwrap(), Fq::from_str("4515278409974508993564172627125429774574614756775077151715641820058462905237").map_err(|_| ()).unwrap(), Fq::from_str("3425014569349371453834589829875283358719921330009811776869097687279062879137").map_err(|_| ()).unwrap(), Fq::from_str("2515566255852496064002951003892564743824841708305449827422382645027069070193").map_err(|_| ()).unwrap(), Fq::from_str("720525006140603161540193448814302617294040974256009825178936921367639778439").map_err(|_| ()).unwrap(), Fq::from_str("7367663655251566472421325885202560742025124988743048966983734178477823972279").map_err(|_| ()).unwrap(), Fq::from_str("3320751538307738217634627783201795162745408603787789711772266685694484944916").map_err(|_| ()).unwrap(), Fq::from_str("3386040192515644244212831353306931760973595850302406027148713774545286758291").map_err(|_| ()).unwrap(), Fq::from_str("3761448177836405784953534531695469075610578058956622870681358568372925658970").map_err(|_| ()).unwrap(), Fq::from_str("1075183077135395450365708159427330084848191667324652044966444911821388696629").map_err(|_| ()).unwrap(), Fq::from_str("2882738091025915095886776926625385766734704795692036818933191859919697476809").map_err(|_| ()).unwrap(), Fq::from_str("4617677246175457778854495806811172394981680905637257748781941029853717258322").map_err(|_| ()).unwrap(), Fq::from_str("5771461794324243654526297158425763003330735380725612289050705359730071239278").map_err(|_| ()).unwrap(), Fq::from_str("4558031763124841766669372193496818071724865493971402982085377903444474587687").map_err(|_| ()).unwrap(), Fq::from_str("8141117664279670265207049460468667350204471729029321520983857087648145502125").map_err(|_| ()).unwrap(), Fq::from_str("6195788751946064104383103983543994507568126076571249838849490543170846659025").map_err(|_| ()).unwrap(), Fq::from_str("1059599007031118919301902365295124708521843594472237888863204210743524454267").map_err(|_| ()).unwrap(), Fq::from_str("5335364043712877346408190295692418434066312211048115548198980855698882158076").map_err(|_| ()).unwrap(), Fq::from_str("8316246925389556857059468387404509035053566680272307083454543154571323861085").map_err(|_| ()).unwrap(), Fq::from_str("5490090299085350778121282949237451297326343519143725131342180387720889359589").map_err(|_| ()).unwrap(), Fq::from_str("982952375360847129724490417720756319295038857607393974322522066631510583362").map_err(|_| ()).unwrap(), Fq::from_str("6912541015779228733393242589316461907046987802589662174925807063866005360743").map_err(|_| ()).unwrap(), Fq::from_str("1129593556827455837973325656081058550489681406224509075914475234919198185107").map_err(|_| ()).unwrap(), Fq::from_str("1937618904212510512354506408985123382700952246502520470325321212671150347646").map_err(|_| ()).unwrap(), Fq::from_str("3199581281309144873736171191664914342004216739448977171254740671523117441555").map_err(|_| ()).unwrap(), Fq::from_str("3882731022638913010359310673652139990872120547585706475765515205937556342189").map_err(|_| ()).unwrap(), Fq::from_str("5288481863589845207506139383646039384958247973884137159418420627552127931970").map_err(|_| ()).unwrap(), Fq::from_str("7942130591592945706895315481799734433741602413592840551908769964795782608968").map_err(|_| ()).unwrap(), Fq::from_str("5051892235665720020018826618535299857851085694800649824271468315719378181649").map_err(|_| ()).unwrap(), Fq::from_str("5607212903747583926526697928256720784635337923527282496989348766912942994673").map_err(|_| ()).unwrap(), Fq::from_str("1005884468890121805544667086279275166920615705097956006974287867360116510627").map_err(|_| ()).unwrap(), Fq::from_str("5741330397180945829428504832247215836616957161262082878639916347436553087278").map_err(|_| ()).unwrap(), Fq::from_str("7113157446624997569554789611450589049996386977337105981325987667831539826179").map_err(|_| ()).unwrap(), Fq::from_str("434966185410632135185943986364783375571726296729610745781632287888723457988").map_err(|_| ()).unwrap(), Fq::from_str("5039802488048963835006624051407996449630084485148632435276076903048876374844").map_err(|_| ()).unwrap(), Fq::from_str("6277394771555254841201693053364694411785262956950074230877477457050146145350").map_err(|_| ()).unwrap(), Fq::from_str("7908099502852050062687385226488258695798940263199015330802932154592406094334").map_err(|_| ()).unwrap(), Fq::from_str("7059803414292720524307725442485511732964092444131901934868290305628576267102").map_err(|_| ()).unwrap(), Fq::from_str("2139460395975167664251483842973329242173648967205322907102676387523657330407").map_err(|_| ()).unwrap(), Fq::from_str("7713833445621910172069259123836985620916656881299879820225971306156722385150").map_err(|_| ()).unwrap(), Fq::from_str("4702697580661123243003468809750572064033858150906769608766261234379440378345").map_err(|_| ()).unwrap(), Fq::from_str("2058405693863273982847268534108655874807256557976851621785238654039467515836").map_err(|_| ()).unwrap(), Fq::from_str("6674457497299429663710230591569139514263534876095498106116913267093663780315").map_err(|_| ()).unwrap(), Fq::from_str("4394349719596574551549596214262928047125802364147432112238594736371319101217").map_err(|_| ()).unwrap(), Fq::from_str("6195297631158703521528049804908561074583920087242571608462634484611500167355").map_err(|_| ()).unwrap(), Fq::from_str("3242541329035091341128246584277113195113553777004100613079937311868015069560").map_err(|_| ()).unwrap(), Fq::from_str("4488773899079486051170785239065153620809431438600471596626517435505102118937").map_err(|_| ()).unwrap(), Fq::from_str("6681363412038194140795429174155979405046271053963301138999269362805654504069").map_err(|_| ()).unwrap(), Fq::from_str("7662242546205542398356134731758300460600315553573879682432583813859452836200").map_err(|_| ()).unwrap(), Fq::from_str("6453549740536358454504175636457946145686596519078014824866622902795607732647").map_err(|_| ()).unwrap(), Fq::from_str("3434027548019966853693323689350917152691087689665937771604554535965235520912").map_err(|_| ()).unwrap(), Fq::from_str("299082112673478422764754620971284657027144192562393535511453660105206035107").map_err(|_| ()).unwrap(), Fq::from_str("6395155327227537426486482892833268678161195655526514574121190746939478388987").map_err(|_| ()).unwrap(), Fq::from_str("3039381088162114631674331586494105962238771530597574588375796494928669649065").map_err(|_| ()).unwrap(), Fq::from_str("3334675545472410818743467442080239750505805749315744278475211560979296636737").map_err(|_| ()).unwrap(), Fq::from_str("1196983096101857709598574279556244852300477701251449098484534290024518924230").map_err(|_| ()).unwrap(), Fq::from_str("5507347578032242038087982316955699262813359618027103132775673371110788299895").map_err(|_| ()).unwrap(), Fq::from_str("5560080148677213890507165547953752780519856814277143049217221680351859825399").map_err(|_| ()).unwrap(), Fq::from_str("5633835642182107458165072565312817304740338606963238548211749078832908650630").map_err(|_| ()).unwrap(), Fq::from_str("911614257936736591336424182716942211452433652908193813700912113362046712210").map_err(|_| ()).unwrap(), Fq::from_str("3705543798273043191211792935279311741221524426394035211803972447778519619347").map_err(|_| ()).unwrap(), Fq::from_str("5785036548626352245177226786910695334555198251668119386253275602234189604340").map_err(|_| ()).unwrap(), Fq::from_str("847971323320355442301334363553408559594153445121098722071959354840694732649").map_err(|_| ()).unwrap(), Fq::from_str("4197331512837528156704994381832276430816359714883660325065518557698023560377").map_err(|_| ()).unwrap(), Fq::from_str("6576028574423396238526342400139289607047025524619052131425825974036258801606").map_err(|_| ()).unwrap(), Fq::from_str("4676155251689568093012135115787731342950221114177190158364860256454529471785").map_err(|_| ()).unwrap(), Fq::from_str("2714618045143938619898076578560687636406140388449464388759363386241966607181").map_err(|_| ()).unwrap(), Fq::from_str("1962132004800323563469839832001946314177856513333502258694633410368622937183").map_err(|_| ()).unwrap(), Fq::from_str("4060303721139745185753003702242452853892567577701929945051705636841605394426").map_err(|_| ()).unwrap(), Fq::from_str("858431967366800259429702342421555087572913382935050196019572402458455337876").map_err(|_| ()).unwrap(), Fq::from_str("877911187548075026731669736278785759327577474797844900633096057140615081125").map_err(|_| ()).unwrap(), Fq::from_str("1019450753652996323060985769610208687502135057729861941495498967001564647316").map_err(|_| ()).unwrap(), Fq::from_str("3851788025399437417208275102395317775772759364153518812991305264015991388670").map_err(|_| ()).unwrap(), Fq::from_str("4560279417429841423093566701490605206447881605499847195977491876525780099107").map_err(|_| ()).unwrap(), Fq::from_str("3134667173774338523992012898495588034817629209037681071601829750586253871388").map_err(|_| ()).unwrap(), Fq::from_str("7832266672200870525897695994933278406523270595861155510261323829849771005035").map_err(|_| ()).unwrap(), Fq::from_str("3712183088067883479150433844090205722121157548492007881527072932869040454605").map_err(|_| ()).unwrap(), Fq::from_str("5801903878751677471106069179675135554571578499505816207389793919704782653936").map_err(|_| ()).unwrap(), Fq::from_str("133357046720968940217288532780758703863340792751200985876521675622988577868").map_err(|_| ()).unwrap(), Fq::from_str("3001592744243106968297835231782573528844685953002423881375060097320656955350").map_err(|_| ()).unwrap(), Fq::from_str("2464111491719539813619225696061559882817211545600468865635378210539198159455").map_err(|_| ()).unwrap(), Fq::from_str("1322652077946933817114865278733093858990311234699275468382653833423050745492").map_err(|_| ()).unwrap(), Fq::from_str("5645215415246962740356127494957015951514599603859670006653165433427164693060").map_err(|_| ()).unwrap(), Fq::from_str("720189655435077226693228902608508375844861111998842869300519328297727792886").map_err(|_| ()).unwrap(), Fq::from_str("185200828324752242433717554979366507039533746746071572779724308985924103781").map_err(|_| ()).unwrap(), Fq::from_str("5062274726469822209812100498705646842753986247467163742638203593135146892394").map_err(|_| ()).unwrap(), Fq::from_str("4985147731701280516122195490346401914592823270137114236360234768104112278629").map_err(|_| ()).unwrap(), Fq::from_str("2887769780031221320189923358950180519938336707834750936438152238605771538185").map_err(|_| ()).unwrap(), Fq::from_str("4215828315610408367904010758539873734811771712189857070943669192637602517003").map_err(|_| ()).unwrap(), Fq::from_str("1543632720656628126125982421130157017436958675131518792186811247089700493653").map_err(|_| ()).unwrap(), Fq::from_str("4832500060396630035991245052563913029405538648780355784888612789791420607598").map_err(|_| ()).unwrap(), Fq::from_str("5930257493267574500042037208093725122451773768067833261193177835090030231983").map_err(|_| ()).unwrap(), Fq::from_str("6502901560147376485847653671976628642790817732181058349910853757232107023811").map_err(|_| ()).unwrap(), Fq::from_str("3813185417582493541776744320547162746343924349873110184732754873079797171153").map_err(|_| ()).unwrap(), Fq::from_str("6509768824040100638521305078471095204921310149573479294107390899486522843069").map_err(|_| ()).unwrap(), Fq::from_str("3605647195366343121022521058580251119532209828115204053018233085119170067569").map_err(|_| ()).unwrap(), Fq::from_str("6769819025968586890565365669631295740031055074504963563488334106735520662613").map_err(|_| ()).unwrap(), Fq::from_str("8078839985317492794953557685153658953919163145558294969245187929666873992250").map_err(|_| ()).unwrap(), Fq::from_str("1394681604050412530833331610672526944507542631579572154759809162329384560638").map_err(|_| ()).unwrap(), Fq::from_str("7104554881094887062843081388750064718663992515537917313436084280540113848013").map_err(|_| ()).unwrap(), Fq::from_str("480898963303594644926304962428204837944253172605670175725141207630587527124").map_err(|_| ()).unwrap()]), +// mds: MdsMatrix::from_elements(vec![Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap()]), +// alpha: Alpha::Exponent(17), +// rounds: RoundNumbers {r_P: 31, r_F: 8}, +// optimized_mds: OptimizedMdsMatrices { +// M_hat: SquareMatrix::new(4, 4, vec![Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap()]), +// v: Matrix::new(1, 4, vec![Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap()]), +// w: Matrix::new(4, 1, vec![Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap()]), +// M_prime: SquareMatrix::new(5, 5, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap()]), +// M_doubleprime: SquareMatrix::new(5, 5, vec![Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("2814820583142790141416274979593848843791966445051354609311744485305803079687").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239395759877096595325655292313585").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235696794727580393114095758303950838638130262116925456").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2881840120836666097164281526727035721025108503266863052390595544479750772048").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap()]), +// M_inverse: SquareMatrix::new(5, 5, vec![Fq::from_str("79380").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917408709841").map_err(|_| ()).unwrap(), Fq::from_str("1247400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917407991641").map_err(|_| ()).unwrap(), Fq::from_str("450450").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917408709841").map_err(|_| ()).unwrap(), Fq::from_str("3628800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917400507241").map_err(|_| ()).unwrap(), Fq::from_str("8870400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917405995801").map_err(|_| ()).unwrap(), Fq::from_str("1247400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917400507241").map_err(|_| ()).unwrap(), Fq::from_str("21344400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917387284801").map_err(|_| ()).unwrap(), Fq::from_str("8108100").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917407991641").map_err(|_| ()).unwrap(), Fq::from_str("8870400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917387284801").map_err(|_| ()).unwrap(), Fq::from_str("22809600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917400744841").map_err(|_| ()).unwrap(), Fq::from_str("450450").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917405995801").map_err(|_| ()).unwrap(), Fq::from_str("8108100").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917400744841").map_err(|_| ()).unwrap(), Fq::from_str("3185325").map_err(|_| ()).unwrap()]), +// M_hat_inverse: SquareMatrix::new(4, 4, vec![Fq::from_str("100800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917408823241").map_err(|_| ()).unwrap(), Fq::from_str("554400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917408998801").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917408823241").map_err(|_| ()).unwrap(), Fq::from_str("1742400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917406886801").map_err(|_| ()).unwrap(), Fq::from_str("1029600").map_err(|_| ()).unwrap(), Fq::from_str("554400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917406886801").map_err(|_| ()).unwrap(), Fq::from_str("3207600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917407823341").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917408998801").map_err(|_| ()).unwrap(), Fq::from_str("1029600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917407823341").map_err(|_| ()).unwrap(), Fq::from_str("629200").map_err(|_| ()).unwrap()]), +// M_00: Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), +// M_i: Matrix::new(5, 5, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2138384120729133216210238944536639351029529198063656086340090677519769031785").map_err(|_| ()).unwrap(), Fq::from_str("430925869256598581059979619901622810893480096621472576118402321696822616657").map_err(|_| ()).unwrap(), Fq::from_str("6905791023730966757334096695699090540988660683321146514989458500760491707946").map_err(|_| ()).unwrap(), Fq::from_str("2148194301420875315630783057614992035703912353905886284294982957194336680745").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("430925869256598581059979619901622810893480096621472576118402321696822616657").map_err(|_| ()).unwrap(), Fq::from_str("7096083034150645230759965969905978274946678846515557153417251931105695912391").map_err(|_| ()).unwrap(), Fq::from_str("5932351284612910830979191152746502185334904741261705765154279133226164981698").map_err(|_| ()).unwrap(), Fq::from_str("155498876447134131877729347742232404866785860221427568690704209608337650659").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6905791023730966757334096695699090540988660683321146514989458500760491707946").map_err(|_| ()).unwrap(), Fq::from_str("5932351284612910830979191152746502185334904741261705765154279133226164981698").map_err(|_| ()).unwrap(), Fq::from_str("2350518484718685128114115771956300873208158044689806042328875264126064229958").map_err(|_| ()).unwrap(), Fq::from_str("3801529679297239517487911434821356384842444302894233969474469799744519903456").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2148194301420875315630783057614992035703912353905886284294982957194336680745").map_err(|_| ()).unwrap(), Fq::from_str("155498876447134131877729347742232404866785860221427568690704209608337650659").map_err(|_| ()).unwrap(), Fq::from_str("3801529679297239517487911434821356384842444302894233969474469799744519903456").map_err(|_| ()).unwrap(), Fq::from_str("161064141789703918112375350481687221800645059701191629113807689376043815676").map_err(|_| ()).unwrap()]), +// v_collection: vec![Matrix::new(1, 4, vec![Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("6408286340583520932341207843153268861256256075551980039121413094468925712571").map_err(|_| ()).unwrap(), Fq::from_str("1340086119615274224252185458358586695220872336772825641381208224119072267047").map_err(|_| ()).unwrap(), Fq::from_str("4451415431892692315692398844425511362212228553892495707821439480226537458099").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("1807245950314576945323485069523429782775508782500049071871833290319833575427").map_err(|_| ()).unwrap(), Fq::from_str("7893264646003823461671300545655338425730441117932100366170290567268122019144").map_err(|_| ()).unwrap(), Fq::from_str("8265906368109070139668510059293657506938287419087529560556675186900440924495").map_err(|_| ()).unwrap(), Fq::from_str("1337631178228955711149035970161558697810911925638959749399418478053608064614").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("4012733397339688185029782756606728191968175736528982577351136329934898708220").map_err(|_| ()).unwrap(), Fq::from_str("6262697295631829628859674125336982462934889453875154476673688239862385874931").map_err(|_| ()).unwrap(), Fq::from_str("5085825659450544986082129430646888569533264228643197338100774443583723457903").map_err(|_| ()).unwrap(), Fq::from_str("8214296039282360463957805777056728734288816395766627805951417382166579814908").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("7162544644923667500915112116076133309653944596008969459846495169522896251360").map_err(|_| ()).unwrap(), Fq::from_str("3373997690100573811383036562499702287411397323003071231117089166427441580682").map_err(|_| ()).unwrap(), Fq::from_str("5895327729868574013621755571328634355360492054173600445413603419687774128778").map_err(|_| ()).unwrap(), Fq::from_str("3655153155390178344598925297480751155136587960411459630195285823672776377034").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("7699747998683667190573326257257443176434334489687357180200982933203966818594").map_err(|_| ()).unwrap(), Fq::from_str("3880918486211403227125357133790845825293271765098151772549073002511882350498").map_err(|_| ()).unwrap(), Fq::from_str("5018897129106413988424023024305652893432395045250364584459515179910357702192").map_err(|_| ()).unwrap(), Fq::from_str("7100278641311820396566427396761409707978201825688133224217965713445183697663").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("6518730623141954010306573644275105531897044590355326935372241612175159980570").map_err(|_| ()).unwrap(), Fq::from_str("5394255754549239290175178885040217635130396352182181394460317349783700291032").map_err(|_| ()).unwrap(), Fq::from_str("3404706260422562719684687102499928656336851279333066109544800862070196420903").map_err(|_| ()).unwrap(), Fq::from_str("4043797845053143220691535549606355794819868823953702603614029735841702602387").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("230180567561092428581461883869909628734863902172888610151585847129315749362").map_err(|_| ()).unwrap(), Fq::from_str("4642835576168619384011371876621697179766987465802367981785867935128464838010").map_err(|_| ()).unwrap(), Fq::from_str("4934030569770971622965603811469514476668986112356963598588634127155387519690").map_err(|_| ()).unwrap(), Fq::from_str("3503691230462160252789893382664327522080544849459335962247315516490097579596").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("3448696766506763064921488664122067683388109240378070308156676709448926876778").map_err(|_| ()).unwrap(), Fq::from_str("1974971184441122009556496772115375292962161002530812832212668507144331588493").map_err(|_| ()).unwrap(), Fq::from_str("1315679272484053391238025676263754412872100486765166420556776065530843202901").map_err(|_| ()).unwrap(), Fq::from_str("7458140051479294430085132910723185974351606578642170493043406916481274243555").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("3658883970918202138484393719491752911081750846910156163090097729080963461041").map_err(|_| ()).unwrap(), Fq::from_str("7204901915144243045966726229598350678275522193200994363940595418294368138623").map_err(|_| ()).unwrap(), Fq::from_str("1624610982273463395799733328098985092002310069330254054246646792362848308128").map_err(|_| ()).unwrap(), Fq::from_str("7330482401692680977272729694619185888207758189295195329046170260288363014708").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("3338813109580633906063869989265057378617704595266624954767878392859302848451").map_err(|_| ()).unwrap(), Fq::from_str("8435047133814619295029990748210722482202135477420117111253773682245006266199").map_err(|_| ()).unwrap(), Fq::from_str("2252377947646424354821883714724169224519980725813350347575507063637316485012").map_err(|_| ()).unwrap(), Fq::from_str("7804489943271469550859755590908810630620936052654320832407623115458304643761").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("8134741963073580335638897620653689595895332306563951177264099671206793234068").map_err(|_| ()).unwrap(), Fq::from_str("3916367573176870199453445193421006095443930283793440358480552644010986847555").map_err(|_| ()).unwrap(), Fq::from_str("2807443924479944961063047990577549211699999696870636222333749953986165100628").map_err(|_| ()).unwrap(), Fq::from_str("20730024138333705543940448323310426825384998917533759959583780955280460090").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("5634982846356552909168661951455526441777684276429624078606664959779494619886").map_err(|_| ()).unwrap(), Fq::from_str("5769199807227671801807154686153688462327540110682030921858648823770292295337").map_err(|_| ()).unwrap(), Fq::from_str("3770184081544028155731225962265091006486124963723934965109585385773663487697").map_err(|_| ()).unwrap(), Fq::from_str("6873287763770813246328369787694155655491749572150910186277102817462904104737").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("4646322751854801234731352489207644268662735260647550764462485273822182817382").map_err(|_| ()).unwrap(), Fq::from_str("1106177822527344852088029853064171844795159920222752093412361513449207699117").map_err(|_| ()).unwrap(), Fq::from_str("7615977070072120902680534995679450341413696413443614226507798998614235255072").map_err(|_| ()).unwrap(), Fq::from_str("2616856936311864505955976015708291307959425442749790010438387383118852531080").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("5076611145057315806380004611796532954436863153873426415905889496552529634772").map_err(|_| ()).unwrap(), Fq::from_str("6902081102527110237382583596515019488448884807358018131179640480646540323029").map_err(|_| ()).unwrap(), Fq::from_str("744041210090521747176403212996560220609644796808826324835948815691090019863").map_err(|_| ()).unwrap(), Fq::from_str("538993509700570276425841464689493859828855186671495437568951258148459819011").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("4851022331350489214192529408640061599476172849031205949893936972214456654861").map_err(|_| ()).unwrap(), Fq::from_str("569544777994808532812657599082478580355343656816638141625588562619721655294").map_err(|_| ()).unwrap(), Fq::from_str("3597364319232779316358335570556114783424283640010607206642595629430943742091").map_err(|_| ()).unwrap(), Fq::from_str("7713659050528749580400659918232464057230995444599386683240849056296517494988").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("1714104864686782325311974422227029341005379520900921589669354379983831096791").map_err(|_| ()).unwrap(), Fq::from_str("6355900711983048945424422007473283840527918461797705007601376935405326826270").map_err(|_| ()).unwrap(), Fq::from_str("6205984082382470048440703786425214225955343359113630911991148473187132254618").map_err(|_| ()).unwrap(), Fq::from_str("2076639151294816049459578860566204028445513987881719318661867323279714556333").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("2050510628665020598163759803704813870250308407096768628367266423375767523308").map_err(|_| ()).unwrap(), Fq::from_str("1147702008784885247016214874553404165222986735703612060876612264638305325081").map_err(|_| ()).unwrap(), Fq::from_str("4697966359508119859326117906022250293622459077784506316415324252737792955160").map_err(|_| ()).unwrap(), Fq::from_str("119104870019254797951597780497177343456795739605918964890197392759600664956").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("4632917325047214647439739098126112871783575749914769689313563284458758801221").map_err(|_| ()).unwrap(), Fq::from_str("6451452994982073840370160322982027164291872056663366751434029645452801445199").map_err(|_| ()).unwrap(), Fq::from_str("3432373127502422641782182662002421380407799262996272602743294942636272069608").map_err(|_| ()).unwrap(), Fq::from_str("1316315767500662961923153672954995829778297399341325960570566793292339065457").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("6106335870275206321884466645892920597752410233200754229315388857462278579731").map_err(|_| ()).unwrap(), Fq::from_str("7467386598914502373332758942732190720625316109408212760281705978324855701650").map_err(|_| ()).unwrap(), Fq::from_str("1551786634777214502069901922305416941913822714689477451325915034725719533371").map_err(|_| ()).unwrap(), Fq::from_str("3466500200584207147032242453306266143878825802251700246817023516920556683284").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("5146350314785980429495014005720178366507811095593675568941623046717615145844").map_err(|_| ()).unwrap(), Fq::from_str("611125123113631169302288784250537208558041866202453194644031553350958094723").map_err(|_| ()).unwrap(), Fq::from_str("831595831080353913407905706192098025224051185124067282951606509834528216084").map_err(|_| ()).unwrap(), Fq::from_str("1761239959767681641499399040958499124277816674209861834163241497657123526507").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("8355077891935195965636780598114384991522387608183568473418584424239623706144").map_err(|_| ()).unwrap(), Fq::from_str("2395998216471419690539030043160399146748927054554741632399317733548193774640").map_err(|_| ()).unwrap(), Fq::from_str("4911199399137336421581925578885871898641848466079377965475407249142657415120").map_err(|_| ()).unwrap(), Fq::from_str("8282472002730039166457902080257450875586583951812902439081859677205227038044").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("2035976088044982521002244992226905770103287798560197492178682638945273560223").map_err(|_| ()).unwrap(), Fq::from_str("3748845008706170057393436580531906525256806972970027022383676914779783393770").map_err(|_| ()).unwrap(), Fq::from_str("3925274757659112116531148285004973609768370532274840958695263812832533277558").map_err(|_| ()).unwrap(), Fq::from_str("5965655044763142880522083648980709139609670317051589020361672943251890637758").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("2040138786635396859347000144795080313464950406231185013519129644129525513031").map_err(|_| ()).unwrap(), Fq::from_str("256060681861758214579293438089056341586094518727524321304997399150923955748").map_err(|_| ()).unwrap(), Fq::from_str("7895053450250058546899934592009133475553071409362085222130456691957607672403").map_err(|_| ()).unwrap(), Fq::from_str("7231685666803712841031131387084562867797854326747738610367605509107875369869").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("7928803288514043069953618480447888992266878100476306800693279233200985051029").map_err(|_| ()).unwrap(), Fq::from_str("6479343364072988838873072909314473020091768609709398756458063578053696923295").map_err(|_| ()).unwrap(), Fq::from_str("4434395019193169266376831601994730023199880341194868463551149883442489380082").map_err(|_| ()).unwrap(), Fq::from_str("3131373309041153411100327199836118901809968560018735631870396645754304483564").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("3643162821388047597970457214669523147688264652133075653816761827723491735045").map_err(|_| ()).unwrap(), Fq::from_str("3746322873550875690979057076192948762016325867974055854734499355952086242080").map_err(|_| ()).unwrap(), Fq::from_str("7353491477684055686670265835353779576876941836455471406278117639892940509839").map_err(|_| ()).unwrap(), Fq::from_str("5346483159704445679599865671815286565471808805775495135094281205547095609151").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("7125640106765472955270607211134272276203230836128053469725613782985442865271").map_err(|_| ()).unwrap(), Fq::from_str("2180476554376898623484277820689382499291011715851343072522196265764954291756").map_err(|_| ()).unwrap(), Fq::from_str("38244987879528426542293296038751925940824504066193680982782573408893083808").map_err(|_| ()).unwrap(), Fq::from_str("7855613662501313255649930474266680604147161519202969539768717845815826486841").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("5055986438933843320191883832368873364317518240116572837638530203232324514214").map_err(|_| ()).unwrap(), Fq::from_str("5107187010568846508576947375783223588380097816707453186027011866228251820997").map_err(|_| ()).unwrap(), Fq::from_str("1527155704876225029075283178539002144667957821730837586876720452831412121542").map_err(|_| ()).unwrap(), Fq::from_str("83286232743231027633079807253047312991621921700300791446662313822423740290").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("416117487422025150973045892837849316215884133246552744666713108400496123110").map_err(|_| ()).unwrap(), Fq::from_str("4596794245069030174934413249684378841115789128330901973892076209626356163453").map_err(|_| ()).unwrap(), Fq::from_str("4476635897223083721242202735903588461264722473527033795900430463553313137039").map_err(|_| ()).unwrap(), Fq::from_str("6239129240555152458411618176840083369027087411275697602672800535420241445033").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("2120618029047114205224326650800039459864330639346758462629614062092185287850").map_err(|_| ()).unwrap(), Fq::from_str("12415919677789867157640623442034846236990231817049027160821671860823947950").map_err(|_| ()).unwrap(), Fq::from_str("3996001719876120888023303636217577274940634204670054920681551945527488294550").map_err(|_| ()).unwrap(), Fq::from_str("2370506370778361865418536768401442133330395122579027271727633029189437839137").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("2547103479123232769233080593620055920761752853796241065153308233154878575619").map_err(|_| ()).unwrap(), Fq::from_str("7897284610910869169727762396873354222747288275331012265472520461429230716606").map_err(|_| ()).unwrap(), Fq::from_str("7856056754821541433644759192730501490727787655708175550478236340526889561672").map_err(|_| ()).unwrap(), Fq::from_str("1269848960708840219570534036834684287699977498945547712717199954591875972294").map_err(|_| ()).unwrap()])], +// w_hat_collection: vec![Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848843791966445051354609311744485305803079687").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239395759877096595325655292313585").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235696794727580393114095758303950838638130262116925456").map_err(|_| ()).unwrap(), Fq::from_str("2881840120836666097164281526727035721025108503266863052390595544479750772048").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848843791966445051354609311744485305820360947").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235696794727580393114095758303950838638130262043966526").map_err(|_| ()).unwrap(), Fq::from_str("99098450").map_err(|_| ()).unwrap(), Fq::from_str("7104070995550851309288693996117808986713058170843894966358212272438411793371").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848843791966445051354609311744582798284330347").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233043616198291041").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239395759877096595886443067547315").map_err(|_| ()).unwrap(), Fq::from_str("3485015960081549698896340450925717616123387027206439040100254830049465248382").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848843791966445051354609863245588054368706347").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911850183569059838995599178").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239395759880268931400489345819315").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591014122330201646382217245").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848843791966445054474406815670366956428146347").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235696794727580393114095745110060005635308041757839726").map_err(|_| ()).unwrap(), Fq::from_str("1206351678489767203464117848397363790196557047897097627052196445742846119863").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075077686918073382411859961177245").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848843791984093496387107935196475177365746347").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235696794727580393039458972786875844307033233170639726").map_err(|_| ()).unwrap(), Fq::from_str("101517116441390185985989409672000000").map_err(|_| ()).unwrap(), Fq::from_str("1072312603102015291968104754130990035730228218600851278057603946526109617656").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848943627808908896521258858178651368309746347").map_err(|_| ()).unwrap(), Fq::from_str("3619055035469301610392353545192090948375343072665391436948311694520123959589").map_err(|_| ()).unwrap(), Fq::from_str("574274210887796403597026954537444480000000").map_err(|_| ()).unwrap(), Fq::from_str("7104070995550851309288693996117808733776056110805915639609695514440012216971").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274980158612222215330072571933647736447366462069746347").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235694406294884726060234387358460796474534453202639726").map_err(|_| ()).unwrap(), Fq::from_str("3619055035469301610392353548440714665373381744512999724441201185631803959589").map_err(|_| ()).unwrap(), Fq::from_str("1072312603102015291968104752700145638704856665849353616627070425649245617656").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141419469800869821755001951411295885864909727891556469746347").map_err(|_| ()).unwrap(), Fq::from_str("4825406713959068813842960220797677047530988404782518361428195639504805279452").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017338966444221089846483330430452020612203572632389006599315").map_err(|_| ()).unwrap(), Fq::from_str("2278664281591782495424128430177828907381312649284878827234443884927046937519").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142808214264790588893687216317178907339261907248755000932469746347").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979457975304041111246343871776522299774473366670317543656402639726").map_err(|_| ()).unwrap(), Fq::from_str("3619055035469405568756039962174782129129877605821397084971624110684603959589").map_err(|_| ()).unwrap(), Fq::from_str("5897719317061038317738760385657339553512748086599565397378530693915650897108").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820685379449176026616665504052076169026290107351646099685110372469746347").map_err(|_| ()).unwrap(), Fq::from_str("3619054603101714647310043630542996558327680464771616450386844579164603959589").map_err(|_| ()).unwrap(), Fq::from_str("2412703945063685769379408274819105829490074908797477683092836460776402639726").map_err(|_| ()).unwrap(), Fq::from_str("1072312344082474827694833443716539604076193157389159880633969390922845617656").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("3393165188949208429097596504575610918348289351728012475955836047972469746347").map_err(|_| ()).unwrap(), Fq::from_str("7204944558504244124518521960216915771891791873867800909615650431905610558904").map_err(|_| ()).unwrap(), Fq::from_str("2120393345382531553995609688203757288976037123993199052013404464011798680137").map_err(|_| ()).unwrap(), Fq::from_str("5638818165103244107186726336375714461836064184337399349534120933263852216971").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("5748166919628348161967854967505473580632756709490802715424747454193578852676").map_err(|_| ()).unwrap(), Fq::from_str("5497321836632578531192368649598224910089844485535207438939200532607393136721").map_err(|_| ()).unwrap(), Fq::from_str("996385884157428583618520192713934508133927299185234457001925051834889684932").map_err(|_| ()).unwrap(), Fq::from_str("14569418789086142266290603292811115699386293356931371633619352839396573533").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("7354827846427448413270885936751241947792652925979739583947138284174997231750").map_err(|_| ()).unwrap(), Fq::from_str("4412223378052098937642592631972483067460807278121291371816770863671129413630").map_err(|_| ()).unwrap(), Fq::from_str("7209347833439310337756350466853679826890270509691831333559258957581197787950").map_err(|_| ()).unwrap(), Fq::from_str("8182740858060105474478836377982927458541006827523940122489493834618857115703").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("5241861450296384287079851043682233419738359190155547488029737658047894339025").map_err(|_| ()).unwrap(), Fq::from_str("6678776109614958850470018780254289485708352263785775134681041213063694265050").map_err(|_| ()).unwrap(), Fq::from_str("7380315511711642758725205867681909040056135359693482522863196065796203775578").map_err(|_| ()).unwrap(), Fq::from_str("3066544636407850157713893892878041530281074296359999668696930431683417087292").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("1163646925945490717631836311168688527445341565836154314822149762893916298833").map_err(|_| ()).unwrap(), Fq::from_str("7336522063860959626725610939508845711128785023679074944472499085746419775758").map_err(|_| ()).unwrap(), Fq::from_str("7977253681011363511052854584561542088744993941489269835685624486889180048334").map_err(|_| ()).unwrap(), Fq::from_str("6249276581582202557237401296819684143727048153346625122735390813988245734220").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("7217535999468983354199414176005171871235049431432948579663665661570070506938").map_err(|_| ()).unwrap(), Fq::from_str("7685270478326438253876359084879936513768111365316448312917683286564645177454").map_err(|_| ()).unwrap(), Fq::from_str("2538931957166067300969100905073527861005053800205404499237574636954543546291").map_err(|_| ()).unwrap(), Fq::from_str("6658257428934571553690135925316210612017854976550423552075318898208472870610").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("1727253903421378641984239228288289152914830794614345260093368662972240276200").map_err(|_| ()).unwrap(), Fq::from_str("2586825853789045313087665779427379353980634132577895462983251401050414999451").map_err(|_| ()).unwrap(), Fq::from_str("8349835322486994911058186483248558578953177684827573461744671264428362956877").map_err(|_| ()).unwrap(), Fq::from_str("5357114892160892247763327322321331896086030579971316449106295423855225128979").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("8311886661817520064334417681608000213064263766588361772050679871113471342056").map_err(|_| ()).unwrap(), Fq::from_str("118825293318917925643375939562544388214009980745421132404998573642716548402").map_err(|_| ()).unwrap(), Fq::from_str("3930998725612814064837733252370747874483387348478156374582969551567720525408").map_err(|_| ()).unwrap(), Fq::from_str("6176650730992866654519754359559849418479639444055517701269861658681464336474").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("3143958666817035906600867216379496035268863940369184345914787474816424133956").map_err(|_| ()).unwrap(), Fq::from_str("4664382549441513350922842667310727289338604394835914307092247989610061253376").map_err(|_| ()).unwrap(), Fq::from_str("417069836579026464600380714376936561596995853137158089964287163406829351932").map_err(|_| ()).unwrap(), Fq::from_str("6118304736267276038896588255931685257291894300609594861564722035310130651022").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("620442506596716843752021578297386055932452137357085645450245776839258188263").map_err(|_| ()).unwrap(), Fq::from_str("6136531434460682084028745055011686479912049709547450492544065226171421695531").map_err(|_| ()).unwrap(), Fq::from_str("3923609867366353419207719839092795893359166541793499533459599412496375713176").map_err(|_| ()).unwrap(), Fq::from_str("1131439386242437924012306454710255109701985377488919913193338934568005718058").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("1235470829699865478220361655539125402361093071203941821256378197664553417307").map_err(|_| ()).unwrap(), Fq::from_str("6771460440074668793157514492470625799777487658651367913625948476832200287787").map_err(|_| ()).unwrap(), Fq::from_str("818421747180053645304248591258749247830389219300331971408995552616190823177").map_err(|_| ()).unwrap(), Fq::from_str("1667208153711222845805460411010299470073097046240132937297109810939462314051").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("3877417423931764816229013679469055872316720243753441131569840278581889859935").map_err(|_| ()).unwrap(), Fq::from_str("3679245451573871703996029538042277557601685182154304963207911501660224909014").map_err(|_| ()).unwrap(), Fq::from_str("2185515957860175492089955633419281758958993124028687367987264728207460318637").map_err(|_| ()).unwrap(), Fq::from_str("3072090016768203366290930196466710860467160632623628217824036466603335840894").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("5922523402602629959990792280972466743807524055155444640062431175839939640635").map_err(|_| ()).unwrap(), Fq::from_str("43107947230284832968938017863302867185791527167921751354515147495917355136").map_err(|_| ()).unwrap(), Fq::from_str("8258692506632848148111935550005451527894872169055340507310206033969083482338").map_err(|_| ()).unwrap(), Fq::from_str("977355271743417035295939913549754050269040535384454724797032715083259091510").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("614729849208207161925974936985138958352853331431773565831693637299072074148").map_err(|_| ()).unwrap(), Fq::from_str("2378424569492949224963272034350260366315379900153500765825409497949642063535").map_err(|_| ()).unwrap(), Fq::from_str("6324246262442616162271799523532072108081467389465559180974898583558995294996").map_err(|_| ()).unwrap(), Fq::from_str("5622122243842417058201028636429294191394865991095798875922692865649322362370").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2128612164934423112748251853934390066981266464931170771856440022551352116238").map_err(|_| ()).unwrap(), Fq::from_str("6764516936742548565729697260329582792894124209281822837218325640225323213276").map_err(|_| ()).unwrap(), Fq::from_str("3287320424716585772069196053256591902204500504857166726822649648381315166178").map_err(|_| ()).unwrap(), Fq::from_str("2391520958092812925890702861334251028669964184529558461473866883608527569720").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("5957072848649616515873186902770275998866445560298038481080045154011837206449").map_err(|_| ()).unwrap(), Fq::from_str("5215258190858723091412123085613303099314930531987660188079461925474755980594").map_err(|_| ()).unwrap(), Fq::from_str("2224560393596634669427143232487112413813928936566792075526194710568333253273").map_err(|_| ()).unwrap(), Fq::from_str("3986269683690075554453656585259805302527870103632405295494678478718130750908").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2978149858601239328121254971240317223551560877657845512747451621609502995207").map_err(|_| ()).unwrap(), Fq::from_str("6629506352332550014357138340553567208953894178602260967213101973416533455776").map_err(|_| ()).unwrap(), Fq::from_str("8390418494404824363562791747004489520829339721445366443098648879040960900616").map_err(|_| ()).unwrap(), Fq::from_str("2186303554319090221638668665835362129975142112962341751514027513096340467665").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("6456132847630184396504039964646929845701742244842000973106362357072558976071").map_err(|_| ()).unwrap(), Fq::from_str("6217608205768582304235137982912939040685010935224764469723948238113987126433").map_err(|_| ()).unwrap(), Fq::from_str("443960645005857651345828512221521058537348357008393130806643951434047086752").map_err(|_| ()).unwrap(), Fq::from_str("4753453807492578612925484448362122996553543129312837682265698844924484558075").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("5871441182232839872950823593835505313731115211539846303632242245521748336252").map_err(|_| ()).unwrap(), Fq::from_str("7740965820227823530156434833692069114571977612482372653706082622805514699995").map_err(|_| ()).unwrap(), Fq::from_str("7331871753577981110657588144787662468789463484664168593743832625479487458612").map_err(|_| ()).unwrap(), Fq::from_str("5544760211747097446844773606780952308162542889260931361929139749102706169513").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("4417541017220834592601154115220651649100169323531829869051424072294706352304").map_err(|_| ()).unwrap(), Fq::from_str("3930235853886293923058395599435827711942396145670762284199199877051063687896").map_err(|_| ()).unwrap(), Fq::from_str("1113459174453328932240774560447435803788728850389316669790526976479823190967").map_err(|_| ()).unwrap(), Fq::from_str("3897319440193179061342594292137286614859181559440152645716298371919328123888").map_err(|_| ()).unwrap()])], +// }, +// optimized_arc: OptimizedArcMatrix::new(39, 5, vec![Fq::from_str("3431064144647154854906922246941506182222173870772679525880648837636528462927").map_err(|_| ()).unwrap(), Fq::from_str("5974593340237813855065980531800418392229182384079544474645411722799919145826").map_err(|_| ()).unwrap(), Fq::from_str("8348426486881635683182335045339260090794248341687902711787330562710527330030").map_err(|_| ()).unwrap(), Fq::from_str("2956151886560243922621332166670498751051583313292219792564998383355563424069").map_err(|_| ()).unwrap(), Fq::from_str("7202553704068066642115231966909806322861037568682203181517551877916261334156").map_err(|_| ()).unwrap(), Fq::from_str("2216708299265206033085353198252811284979409151554807145353180393005345443076").map_err(|_| ()).unwrap(), Fq::from_str("159335743353116328456368467219460934058466648656727531382446971993029171408").map_err(|_| ()).unwrap(), Fq::from_str("6358764046359684972893522865101698862289416136086499847308829648457169884877").map_err(|_| ()).unwrap(), Fq::from_str("4565669615674819431036641511394858343600542708840534960333061188699120679516").map_err(|_| ()).unwrap(), Fq::from_str("8134340319422717456174214595572028038604616932665913260921485003742433978940").map_err(|_| ()).unwrap(), Fq::from_str("1524401355336014828526302364873243668741090019654727936642087684528900198959").map_err(|_| ()).unwrap(), Fq::from_str("4002982571574570934955320971167280988768820199359033883158331219862407490167").map_err(|_| ()).unwrap(), Fq::from_str("268956367875787697972162318645634654752917110456095075021347431474721377550").map_err(|_| ()).unwrap(), Fq::from_str("5539077933627315832517588545053557934921428562542219829976540617497684332768").map_err(|_| ()).unwrap(), Fq::from_str("8163159707574771497074276335511382452957675096097737520190925328662359500075").map_err(|_| ()).unwrap(), Fq::from_str("4977563953454029124270220726210548316848814835999821114089004208776001409529").map_err(|_| ()).unwrap(), Fq::from_str("7008664649215929946792472256484126474139232333206086319663168135693982854505").map_err(|_| ()).unwrap(), Fq::from_str("3318343362844228852737722392858921343864694811396087052570286467757103682210").map_err(|_| ()).unwrap(), Fq::from_str("4587685140645381977725355169261358248758918671032202397129872095189579561454").map_err(|_| ()).unwrap(), Fq::from_str("704287003752591898133347460228078707207754728734442590948457672014774127322").map_err(|_| ()).unwrap(), Fq::from_str("5586295855761311502524744594863435129218163429541929947376690582426001205171").map_err(|_| ()).unwrap(), Fq::from_str("8391733011947895525356558103145755651586153996819227600307615142802375273331").map_err(|_| ()).unwrap(), Fq::from_str("6630469393561382000400289179430524663489916295065821873771533616960029360303").map_err(|_| ()).unwrap(), Fq::from_str("1109520911259740216914787569407573328462215971781929174269090087208161694995").map_err(|_| ()).unwrap(), Fq::from_str("6874926153306861648013627560651588058347862924673776521132349794450940419088").map_err(|_| ()).unwrap(), Fq::from_str("3965838222357387993872732798941633989494138401156498885853618223672892943702").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6399330874905612017086413424496465904746021748409190767103673338943760515535").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5558814458953662099006280720401003483793254246900164433098794045435503006412").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2340334005966541365181685234682034352246831723606355760070814227471716001595").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1954675500092055897913532687157276063753498143943701408952567070814727487514").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("340540208950639348832923102016109209530735947243286680089215875518687540898").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2357436854552785309870779235624098535300464298885690469173298757257964119382").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3462018934266014178766235487776804985839154608881430751397652918486234970711").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1044063049294168365170078402721462762809354873509453749957547584790816988020").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6813035649556733442610311764016897223557854040794825908924270300103109851523").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4044018067045516913844071009789290879317950625762117310142177153232888356096").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1868653203487115649738079005755236598598236367392937592062280205904849150705").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6726791394075334343472039691698127736015588617148304153991343544724067108670").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1950291999421357730085374423171662827148014629672012328031862523854380590895").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6219059633728751053000297668351499077163462894220216843725670049954008543854").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4780828557940162017578536262533899313797806039539721181698737035082268156790").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5721121878740456744438587389476758019420174562938687752981204125581570963430").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5867561211947410755601595351042042408403697149309194330843428878257208657895").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4252198417541141547075711778276656368556445552839728879545937030444322399346").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2778344699887055989432043464259025126615551124514948100518415041272882049506").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5578322346251698803632685531658794659194908225359318778607226777513305555016").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8232966839681821547401638407529690561966386822119502892256433852491422050653").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4499121225475114685411416095084202597958810236637732747105373511347971882428").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6713605836687446503601801827913011022165776475791754790834016333592596378929").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("453347044754577053803100990372953718386538762077770596189181235520081931467").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4968956434668454517577486819898355337525380809048484775120963010080897245093").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5661201739272726272711005441152385472057143981405633370143408027990001543096").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6095650415124499639466126564698105792286651190045476625689204160063245637804").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4839067063734778239074829628109549897049105429856488718728300296695349725417").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7452097189792249619488027327168387314448343754189258074674033543077252341559").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1322652077946933817114865278733093858990311234699275468382653833423050745492").map_err(|_| ()).unwrap(), Fq::from_str("5645215415246962740356127494957015951514599603859670006653165433427164693060").map_err(|_| ()).unwrap(), Fq::from_str("720189655435077226693228902608508375844861111998842869300519328297727792886").map_err(|_| ()).unwrap(), Fq::from_str("185200828324752242433717554979366507039533746746071572779724308985924103781").map_err(|_| ()).unwrap(), Fq::from_str("5062274726469822209812100498705646842753986247467163742638203593135146892394").map_err(|_| ()).unwrap(), Fq::from_str("4985147731701280516122195490346401914592823270137114236360234768104112278629").map_err(|_| ()).unwrap(), Fq::from_str("2887769780031221320189923358950180519938336707834750936438152238605771538185").map_err(|_| ()).unwrap(), Fq::from_str("4215828315610408367904010758539873734811771712189857070943669192637602517003").map_err(|_| ()).unwrap(), Fq::from_str("1543632720656628126125982421130157017436958675131518792186811247089700493653").map_err(|_| ()).unwrap(), Fq::from_str("4832500060396630035991245052563913029405538648780355784888612789791420607598").map_err(|_| ()).unwrap(), Fq::from_str("5930257493267574500042037208093725122451773768067833261193177835090030231983").map_err(|_| ()).unwrap(), Fq::from_str("6502901560147376485847653671976628642790817732181058349910853757232107023811").map_err(|_| ()).unwrap(), Fq::from_str("3813185417582493541776744320547162746343924349873110184732754873079797171153").map_err(|_| ()).unwrap(), Fq::from_str("6509768824040100638521305078471095204921310149573479294107390899486522843069").map_err(|_| ()).unwrap(), Fq::from_str("3605647195366343121022521058580251119532209828115204053018233085119170067569").map_err(|_| ()).unwrap(), Fq::from_str("6769819025968586890565365669631295740031055074504963563488334106735520662613").map_err(|_| ()).unwrap(), Fq::from_str("8078839985317492794953557685153658953919163145558294969245187929666873992250").map_err(|_| ()).unwrap(), Fq::from_str("1394681604050412530833331610672526944507542631579572154759809162329384560638").map_err(|_| ()).unwrap(), Fq::from_str("7104554881094887062843081388750064718663992515537917313436084280540113848013").map_err(|_| ()).unwrap(), Fq::from_str("480898963303594644926304962428204837944253172605670175725141207630587527124").map_err(|_| ()).unwrap()]), +// } +// } + +// /// Parameters for the rate-5 instance of Poseidon. +// pub fn rate_5() -> PoseidonParameters { +// PoseidonParameters { +// M: 128, +// t: 6, +// arc: ArcMatrix::new(39, 6, vec![Fq::from_str("845774603178492790430819572559948899425806472242990359595837698866402459283").map_err(|_| ()).unwrap(), Fq::from_str("5104113060992167207950156191834052800250377917110335646977277694909225606639").map_err(|_| ()).unwrap(), Fq::from_str("606930867215997902681408163383822852644874536120525401359262311657265176286").map_err(|_| ()).unwrap(), Fq::from_str("3246189740533673369325580437595636125853593448497295559526133710916170023325").map_err(|_| ()).unwrap(), Fq::from_str("2228557437175639577799724834018880269762506939154314745471148408315031040782").map_err(|_| ()).unwrap(), Fq::from_str("5248714497354123146476603303736275602516846846345343189695992364680008748274").map_err(|_| ()).unwrap(), Fq::from_str("4468660183396113816417160760392174946434715734046476615756949516900460245783").map_err(|_| ()).unwrap(), Fq::from_str("7393542747111210649333111074982387945081968569023142501741239756021903723895").map_err(|_| ()).unwrap(), Fq::from_str("7199392773674619989102817361994783385540000190771324931792999149811086723727").map_err(|_| ()).unwrap(), Fq::from_str("4179131455162240247318123589436646198639084830612188212185789176671108496032").map_err(|_| ()).unwrap(), Fq::from_str("24442689501566866103376042248929386407192919728660696030608041405438957133").map_err(|_| ()).unwrap(), Fq::from_str("3097787510685557034777264781234655318746563426795026202239222093602417399558").map_err(|_| ()).unwrap(), Fq::from_str("6574238658366226506536641479793831030684930753068170934418220861949357860591").map_err(|_| ()).unwrap(), Fq::from_str("3230736603041831131224401646930510293150560782678475479524520009468240625703").map_err(|_| ()).unwrap(), Fq::from_str("4449397682136210685399058399525408353602443323667935079724525731105410330857").map_err(|_| ()).unwrap(), Fq::from_str("1462805245535093331717840709705014862484623276551060803969576565098857503359").map_err(|_| ()).unwrap(), Fq::from_str("5430193997486659445858726501908887547497708817666434922669358130281149310067").map_err(|_| ()).unwrap(), Fq::from_str("8182992080105598491896178755005741632616297373995328206793063427977612612424").map_err(|_| ()).unwrap(), Fq::from_str("2470198070508873630088316330360042099497336224174355851511490652176698623455").map_err(|_| ()).unwrap(), Fq::from_str("616202094790463990913669657355701717237705251976201488136276464144059917047").map_err(|_| ()).unwrap(), Fq::from_str("4300832028822930023146879288491662568841103305714742296374296369784204253894").map_err(|_| ()).unwrap(), Fq::from_str("3476274661803244432899568134341751009082965077671317942410157824155554772073").map_err(|_| ()).unwrap(), Fq::from_str("5064187415312733563044421812957719834749578846215859205757776767013163169207").map_err(|_| ()).unwrap(), Fq::from_str("2785720285300546669174088113375060468705507039789824059878564962780494844393").map_err(|_| ()).unwrap(), Fq::from_str("3955439879096535600770596087986987521484177541728792312152110382971886552324").map_err(|_| ()).unwrap(), Fq::from_str("903856851374014040347659555593632700335680221489370005350941124277345446123").map_err(|_| ()).unwrap(), Fq::from_str("4895401528580538578197095433262526637580426196822434256427161231133334295675").map_err(|_| ()).unwrap(), Fq::from_str("5648346646350183867284790510877028718205611511413394919080061462693730281546").map_err(|_| ()).unwrap(), Fq::from_str("1355370740565781139942863802725256415305660265636533288615995983856809414029").map_err(|_| ()).unwrap(), Fq::from_str("4492648249860957650851177365194984343910427247177102136729895011065514916187").map_err(|_| ()).unwrap(), Fq::from_str("4329492389108771825144079889394256488249153510854480955288949134855093604169").map_err(|_| ()).unwrap(), Fq::from_str("5810883949128212012849651527927095153625927912982491102336953941756119383024").map_err(|_| ()).unwrap(), Fq::from_str("745230929536301694839058434825580209210952065402030795105052872210695113978").map_err(|_| ()).unwrap(), Fq::from_str("6824796306474603258822493495675887167444932740597690201928301954595067792786").map_err(|_| ()).unwrap(), Fq::from_str("5862361504652656026849345150631994357849056901114555854828370594245684576589").map_err(|_| ()).unwrap(), Fq::from_str("5689114263606895263929252423354025539068244060577412456834090100133202449501").map_err(|_| ()).unwrap(), Fq::from_str("808996924441865833437445466881261877339104224701775307380191367855500551709").map_err(|_| ()).unwrap(), Fq::from_str("8369018150288133225788400978082154796228251164581602665345878758411724734440").map_err(|_| ()).unwrap(), Fq::from_str("5422892039043420257946460796978469383542115840049823331066028321773489553840").map_err(|_| ()).unwrap(), Fq::from_str("4759532913919471748077109277312912270920142620933001277672083762634782304860").map_err(|_| ()).unwrap(), Fq::from_str("6635834972740869401402846471957760389835104503078639687189505646883078267050").map_err(|_| ()).unwrap(), Fq::from_str("2180357492069277982978421447716964286298172906113645264525526539513647929451").map_err(|_| ()).unwrap(), Fq::from_str("1543790854439663004266297482741275425236694694794837346043593830373950964684").map_err(|_| ()).unwrap(), Fq::from_str("934463790260438488912680781683319399046678080815540371325926063726693258316").map_err(|_| ()).unwrap(), Fq::from_str("2186851943069145638222582980805398139896784251442482314015542120928261450486").map_err(|_| ()).unwrap(), Fq::from_str("2412160749224996310088578134225153622616811224475337205311590933677253673878").map_err(|_| ()).unwrap(), Fq::from_str("7695670784620822879010065180124901695635154588003320830927767666974648056338").map_err(|_| ()).unwrap(), Fq::from_str("5922342388326275454416533801936916843303810548091342035450746483214299239433").map_err(|_| ()).unwrap(), Fq::from_str("1626796117599038929107160841446540268065680312095803823646386071293624738956").map_err(|_| ()).unwrap(), Fq::from_str("3723894365042872951008952527495970802881113713273866444298801207152897112399").map_err(|_| ()).unwrap(), Fq::from_str("3124762799615037750505825747310314071538244722211644570130000309355042335236").map_err(|_| ()).unwrap(), Fq::from_str("4398142109789539554397950800974126093455781299196527221772449847244505962068").map_err(|_| ()).unwrap(), Fq::from_str("5191924005039724187421181054530943291389774141755095477416337174609761394244").map_err(|_| ()).unwrap(), Fq::from_str("2785691573715023678345146226582781727453009049889859397213505583302164176974").map_err(|_| ()).unwrap(), Fq::from_str("1692865380955225891313695435924848311770152603367254817109708783517944701458").map_err(|_| ()).unwrap(), Fq::from_str("5740996178635184840130794938793759737845291624356154466822199165827559215996").map_err(|_| ()).unwrap(), Fq::from_str("629048164528450855828641693378949447919081668499695702800776487092117499681").map_err(|_| ()).unwrap(), Fq::from_str("7838040784187025691292915248729484438528565912103486033688447138210990601628").map_err(|_| ()).unwrap(), Fq::from_str("277825800544950901375905897976554734011179501252710007984572644325060195668").map_err(|_| ()).unwrap(), Fq::from_str("3573950673351768341596829285012110326873174826710921664927116238368645987265").map_err(|_| ()).unwrap(), Fq::from_str("1954385223571002660618067888551643335278824908978569230924580545853863253296").map_err(|_| ()).unwrap(), Fq::from_str("3280591263674701729230889786293421229344217394582188890523979353297481519915").map_err(|_| ()).unwrap(), Fq::from_str("2641145634481240269631127178194359324994015540110388568200378466009164847634").map_err(|_| ()).unwrap(), Fq::from_str("510014107782217049609305419554240375108180404505381192548757091140846836195").map_err(|_| ()).unwrap(), Fq::from_str("5791727637040073168347254632756741113350426678148566497620918219062449626066").map_err(|_| ()).unwrap(), Fq::from_str("1515530830048633560956896860547539068191730708819568650745448852244645668565").map_err(|_| ()).unwrap(), Fq::from_str("4062117359039639099790825319573396597524575522991965004241027520315175746769").map_err(|_| ()).unwrap(), Fq::from_str("8077604972923302071609856302702548716244843142972321053845777990299628343924").map_err(|_| ()).unwrap(), Fq::from_str("6883469805232035047303165681612355811006463914153298651225845064283571480407").map_err(|_| ()).unwrap(), Fq::from_str("7069733541849801646056409828059140471389948859025556787594300665570570640093").map_err(|_| ()).unwrap(), Fq::from_str("5111488081820384284582456604902295506474499510148161974044782999536795472678").map_err(|_| ()).unwrap(), Fq::from_str("951739538321083558162954190716831881445104353478325886809807144890602444880").map_err(|_| ()).unwrap(), Fq::from_str("5576968375586952492715372518216353184444829783871889310474622851012373412727").map_err(|_| ()).unwrap(), Fq::from_str("3738378363114658873850673065632442970572354982406771981154818174118783760351").map_err(|_| ()).unwrap(), Fq::from_str("7085217053698299540943905339943013879591867088664807037548604127718635170607").map_err(|_| ()).unwrap(), Fq::from_str("1243770513927337778182422448361198850137863107625225399527564470585686277778").map_err(|_| ()).unwrap(), Fq::from_str("2455706756578844172374999537652164934241896709505121508439861969323756753548").map_err(|_| ()).unwrap(), Fq::from_str("1192232316586916994784972201990731490438791718559527129470126178591533976493").map_err(|_| ()).unwrap(), Fq::from_str("4517504977719076695469211964474074773739696135499467806638247340490078446601").map_err(|_| ()).unwrap(), Fq::from_str("7553708361104427886890847840974837551257803206243713474691780065106433271079").map_err(|_| ()).unwrap(), Fq::from_str("2587075644848123870074792242454603061838992298077876642730434622712692686270").map_err(|_| ()).unwrap(), Fq::from_str("173588832775839102721672024190884329602241291800352973909370376510736082221").map_err(|_| ()).unwrap(), Fq::from_str("688472569950966756053552347244458704900509840525673302053163309999091579121").map_err(|_| ()).unwrap(), Fq::from_str("2352046706728596036488802195059640933035395261457352632670222145121490161643").map_err(|_| ()).unwrap(), Fq::from_str("7073575640855838071763652945175738332390047626204526711901743359026021113742").map_err(|_| ()).unwrap(), Fq::from_str("2046389921981736047805298636213531692386373936005050836730626898158653505324").map_err(|_| ()).unwrap(), Fq::from_str("563321919927185801891684586810044445483326043795854450295190605906301369521").map_err(|_| ()).unwrap(), Fq::from_str("2889560537114800351260900365764145025271368172807980502228650924152700482686").map_err(|_| ()).unwrap(), Fq::from_str("3666589997079555397305833747977806903409036424008849706574979198788716406192").map_err(|_| ()).unwrap(), Fq::from_str("1918355409774704608237986221225759376350370097933394351471037522396452825048").map_err(|_| ()).unwrap(), Fq::from_str("4369269652222651377930121722266159133596441533744245682724913998469020685239").map_err(|_| ()).unwrap(), Fq::from_str("7837833457952524445039685470136995896897287733616574115849057519215223782346").map_err(|_| ()).unwrap(), Fq::from_str("628213450553258613851440709956500749794581186558724188918468103441806105330").map_err(|_| ()).unwrap(), Fq::from_str("2644954814082884292817254547594534999080939064892852771810159803469141128660").map_err(|_| ()).unwrap(), Fq::from_str("7859812225594642554440576251126430923621572949680294169949667671791095952475").map_err(|_| ()).unwrap(), Fq::from_str("2464974871554679933883652897027654206618138056032028622174969722545768552379").map_err(|_| ()).unwrap(), Fq::from_str("5132270167540347614041702481962392404041377447418996321667139515916634164383").map_err(|_| ()).unwrap(), Fq::from_str("4598105830574976900645044571546715789904336050221613120678525927302780728037").map_err(|_| ()).unwrap(), Fq::from_str("3808501141538620978353097012892379364836506340699026351199757900236242566613").map_err(|_| ()).unwrap(), Fq::from_str("1891544728221108359734223022373179882263705759938125476452464221325816178498").map_err(|_| ()).unwrap(), Fq::from_str("6005030543218026726459052340654081530413236195762174005947985599626093524736").map_err(|_| ()).unwrap(), Fq::from_str("1240332940925172223780697145452602160665050403038368531584945872125564048652").map_err(|_| ()).unwrap(), Fq::from_str("6705885002056761550002268384728119172344212225730006658468643832688992534447").map_err(|_| ()).unwrap(), Fq::from_str("870837793952435415833012579028217019216352769807065186182707161903249365374").map_err(|_| ()).unwrap(), Fq::from_str("596272418044934975814628040788830716009647699332221675956979368500086249769").map_err(|_| ()).unwrap(), Fq::from_str("590861359490467631502512021552521037752701710394631946974031331319157115545").map_err(|_| ()).unwrap(), Fq::from_str("2770526343670399800546133608119769774079504653574715594043898973680079888138").map_err(|_| ()).unwrap(), Fq::from_str("8268687277875236079426782059572937996067109214725376871100880774536852862519").map_err(|_| ()).unwrap(), Fq::from_str("1453016007424520027464263999937432978604227655266267727016149187553644944843").map_err(|_| ()).unwrap(), Fq::from_str("7235861308242939841519205133571690399636877042720031807266145091504550721031").map_err(|_| ()).unwrap(), Fq::from_str("5126147988300793477390589565054838817540212084762587014887829332327848369169").map_err(|_| ()).unwrap(), Fq::from_str("438854660004065569962723300303346605327281161374837025576031680377685082432").map_err(|_| ()).unwrap(), Fq::from_str("91951995490099536724921221454897283566677877944037951784180382949300930772").map_err(|_| ()).unwrap(), Fq::from_str("1107661872194632786253588128163989817213101209276790729233683013026264806076").map_err(|_| ()).unwrap(), Fq::from_str("1654806774558560978350082606883489436628379535257346078063478260232950936001").map_err(|_| ()).unwrap(), Fq::from_str("5299015818929677169233319120340539340265058652234073886970067026596732756240").map_err(|_| ()).unwrap(), Fq::from_str("7772032344557055789473144533013363290423925670310807731772582414686518246983").map_err(|_| ()).unwrap(), Fq::from_str("3781965444202188790948716527662927985928671682325757229996041227860932259893").map_err(|_| ()).unwrap(), Fq::from_str("3345484155609065046923654366504419685132775997107976310100855047314629537945").map_err(|_| ()).unwrap(), Fq::from_str("886945731469951937230186365026270061024133910511162189208804592908807421134").map_err(|_| ()).unwrap(), Fq::from_str("6735354038022791413411799972681524306841369414753589465401652145649893222116").map_err(|_| ()).unwrap(), Fq::from_str("1935117914710639506839948974155446287660212703897621867518465397455687997317").map_err(|_| ()).unwrap(), Fq::from_str("855836548574080114601916891505984130878216928022975612750979799120091434536").map_err(|_| ()).unwrap(), Fq::from_str("6541068365002563151205073625711854613364910696189682088601091986677675751677").map_err(|_| ()).unwrap(), Fq::from_str("3498203401466608248029771452067242050946831044174273574437971472156132555545").map_err(|_| ()).unwrap(), Fq::from_str("5113365157282840449327935310535501855639019267017306230851155734274025341646").map_err(|_| ()).unwrap(), Fq::from_str("291100427574399729560780717351972080591539393086517336307028577912593013831").map_err(|_| ()).unwrap(), Fq::from_str("4951010832572423033521238427671762783591568531387570598358269339024866827335").map_err(|_| ()).unwrap(), Fq::from_str("6935368986020846114707416514328424867573175695145493395077868865185617799391").map_err(|_| ()).unwrap(), Fq::from_str("4421971408527793575481957827895041934289426777376804824177340219920981801657").map_err(|_| ()).unwrap(), Fq::from_str("4784361067181816247789889520295070061832726789026477505365383939286519144408").map_err(|_| ()).unwrap(), Fq::from_str("6902379648170088933617436373897616173595882356130186403791413056270227800502").map_err(|_| ()).unwrap(), Fq::from_str("6890311521046371152310648533652283251426783710484642145760005912415621394712").map_err(|_| ()).unwrap(), Fq::from_str("3300582426830885345413237962331861645988116189322590437878618036229655228428").map_err(|_| ()).unwrap(), Fq::from_str("5090277775105731415197015754947566338715568795794847919279947457422265443449").map_err(|_| ()).unwrap(), Fq::from_str("396921746521892469461557335185976382781853380654969258411823431243806455688").map_err(|_| ()).unwrap(), Fq::from_str("8384501355732847401218401102526488908702450320580023201077894184976420556785").map_err(|_| ()).unwrap(), Fq::from_str("4764574141621557660053903705971467036411372552800329876657296245830060443992").map_err(|_| ()).unwrap(), Fq::from_str("7786943704826706588463473337942405786044210321706142706927435732999415767183").map_err(|_| ()).unwrap(), Fq::from_str("1817473587524440089144895391903436778798535173783973332406851648812698487555").map_err(|_| ()).unwrap(), Fq::from_str("199768027164126325197499205773349092784092142502602563137991122024578099815").map_err(|_| ()).unwrap(), Fq::from_str("5592784808658901953566444970229204675934909742023516487415562778712500171029").map_err(|_| ()).unwrap(), Fq::from_str("7620340343787977874067631290920104590169271224142858442645657016104413457398").map_err(|_| ()).unwrap(), Fq::from_str("4531502143772496384774062845794045410365749164589015318655428240554926597995").map_err(|_| ()).unwrap(), Fq::from_str("4993305698422614856289671053519926031361089612904479987286491040391712482429").map_err(|_| ()).unwrap(), Fq::from_str("1890101427505160393147728749480064034516466297677175077112633380526566236058").map_err(|_| ()).unwrap(), Fq::from_str("5777281016333369264986610261188346396030534666250672641152082126185804749740").map_err(|_| ()).unwrap(), Fq::from_str("7839221969235308534078159764872000639821536123875603912702299684145204380160").map_err(|_| ()).unwrap(), Fq::from_str("3205057772845384833329206892928677349487498971289086382710347717915882818387").map_err(|_| ()).unwrap(), Fq::from_str("8119267339349926842126372240333651422996583825113253720424775804781521986078").map_err(|_| ()).unwrap(), Fq::from_str("3541274357438770457278740081604948896951607173096751567588339188240343587595").map_err(|_| ()).unwrap(), Fq::from_str("290757239501256464281974319850268179358662536223305681014142855521000605129").map_err(|_| ()).unwrap(), Fq::from_str("3071795883807429601760312489207584712202767955806390155178335149304952398825").map_err(|_| ()).unwrap(), Fq::from_str("2376618124397754632570020367749950740904737073526939363500757591197899617122").map_err(|_| ()).unwrap(), Fq::from_str("206798018418970104427289899440162500428696692501901429830471906604011912270").map_err(|_| ()).unwrap(), Fq::from_str("4755391599331725804664984944827163791721202205735446451644543027687031821412").map_err(|_| ()).unwrap(), Fq::from_str("825885866173484121307436671573108094221492254598722927119615006712194124911").map_err(|_| ()).unwrap(), Fq::from_str("2554638268213382787236481747062958843950147861737617670383068148152942457822").map_err(|_| ()).unwrap(), Fq::from_str("2846332734288761728092533071935216073869730549808584348860720441846764249060").map_err(|_| ()).unwrap(), Fq::from_str("8140056372785622325821510019216173231544546860946218530108241178917141036125").map_err(|_| ()).unwrap(), Fq::from_str("3708661993392803182560096909194707704900572251782516388035351978778086482595").map_err(|_| ()).unwrap(), Fq::from_str("5462469894352895012387443184076510991117644168796409935593089390964595954058").map_err(|_| ()).unwrap(), Fq::from_str("756893933329149216114995933232110216914946913119357650801068709290047034518").map_err(|_| ()).unwrap(), Fq::from_str("2447945711614149209913513234270533470460209666560096392318685246536968254472").map_err(|_| ()).unwrap(), Fq::from_str("1134198837651298699993639361275019476115730882147922184917166090565013467508").map_err(|_| ()).unwrap(), Fq::from_str("1755288660598099185052035115110542043284452173265064594131632137624805738180").map_err(|_| ()).unwrap(), Fq::from_str("510538634282373743904146284199874486762693661809757989711020777647075293075").map_err(|_| ()).unwrap(), Fq::from_str("826966302105312470674240268858124246133696705864093299788439721923379016305").map_err(|_| ()).unwrap(), Fq::from_str("1750809347796748589511123598922662511635446465703935272886403540563467330233").map_err(|_| ()).unwrap(), Fq::from_str("3626991385382608566768761890341220044016693242780076470174738941265485425314").map_err(|_| ()).unwrap(), Fq::from_str("360348584317309909985270834673815135682631720292975971545336619603481745762").map_err(|_| ()).unwrap(), Fq::from_str("4564839267288916786501013466229926140412093800603133844524552065387906801716").map_err(|_| ()).unwrap(), Fq::from_str("6731962821686325580491822590807595591516010492426925869422925491550114043563").map_err(|_| ()).unwrap(), Fq::from_str("5884996843015305279328027270671228828244349412683455539628045212132549103434").map_err(|_| ()).unwrap(), Fq::from_str("5189699219035443729248026969423575778754558635620920805212526651474704902578").map_err(|_| ()).unwrap(), Fq::from_str("5325976490193957822927622455671647646603185177010209181965411453981815963049").map_err(|_| ()).unwrap(), Fq::from_str("8189755814353767680068199430929447851704481078623723570153513525669822406097").map_err(|_| ()).unwrap(), Fq::from_str("6157055685635155061816282753616307622315156952439123462858148972106996453338").map_err(|_| ()).unwrap(), Fq::from_str("4201443354832317957691366223622197686387205675733895050729606292298190689853").map_err(|_| ()).unwrap(), Fq::from_str("849597153897117936797701767259263904590444676970302608546075483402824391328").map_err(|_| ()).unwrap(), Fq::from_str("2945366299097873820253575618779513867059321098836127479959682115946982771917").map_err(|_| ()).unwrap(), Fq::from_str("7946653222569265397764318698413928169499651050649268009911222688601500390672").map_err(|_| ()).unwrap(), Fq::from_str("3955061461222581068601244439388826478669033795790473128916746329755786289284").map_err(|_| ()).unwrap(), Fq::from_str("194902351476461639988128064826878155874357885737577568105691315784520420076").map_err(|_| ()).unwrap(), Fq::from_str("2054875403271951293619717373098091903658609846623347825919751394462777938388").map_err(|_| ()).unwrap(), Fq::from_str("6441120904147472372550187739425848354244468105458500059042779636280801202457").map_err(|_| ()).unwrap(), Fq::from_str("4856788126042824068308010187982525046239888485345219768329006082892068367665").map_err(|_| ()).unwrap(), Fq::from_str("291355279724374270206817442744099818390821254539005941893927823600431090853").map_err(|_| ()).unwrap(), Fq::from_str("1987858570061722835269997391515207714420109886745501944587207694341545573745").map_err(|_| ()).unwrap(), Fq::from_str("3213696719405985950289957594066603035440198598621404524099958706191996916055").map_err(|_| ()).unwrap(), Fq::from_str("3005981521615064443184046401148647754512179755748924576301732266415319201297").map_err(|_| ()).unwrap(), Fq::from_str("2621411314517739021870228316134584284694091320967256272368122750867976114943").map_err(|_| ()).unwrap(), Fq::from_str("7044578135885591725348038581874780601165738393226558075855473709253694858765").map_err(|_| ()).unwrap(), Fq::from_str("3003220922495241282655735413996630729519553770972180584442298080972720748264").map_err(|_| ()).unwrap(), Fq::from_str("7723261051877303220236858567809477006874896024734639539531973748526330317016").map_err(|_| ()).unwrap(), Fq::from_str("6404320974745578378302587290517107323819782685010985251583355344679861736033").map_err(|_| ()).unwrap(), Fq::from_str("5473811960341434292420779879705750079331871157096848113243437846687173829015").map_err(|_| ()).unwrap(), Fq::from_str("3489362154903554568885782086499864957754221063165434871466496609450654757851").map_err(|_| ()).unwrap(), Fq::from_str("5738878929953126406493977001869762275333317480749038212477224999749019607973").map_err(|_| ()).unwrap(), Fq::from_str("248384180902759531389147295685029971514643266708326177840910974710306996426").map_err(|_| ()).unwrap(), Fq::from_str("5448949389711611701165263801434301259910541121459696467135117978579062982902").map_err(|_| ()).unwrap(), Fq::from_str("2568952643386068771964897899771681909344031860769927373561450745675519140028").map_err(|_| ()).unwrap(), Fq::from_str("3670604557663154805581972806834034192285098072136928082384930398916206366631").map_err(|_| ()).unwrap(), Fq::from_str("3879288298425577583449478309021200331439459668761362199264042221912999932605").map_err(|_| ()).unwrap(), Fq::from_str("2516761260434817086752098107305443628592766938470739054153150146506703792471").map_err(|_| ()).unwrap(), Fq::from_str("481359630814196002065503484532281005658851213692155491829138154224186751948").map_err(|_| ()).unwrap(), Fq::from_str("2019987491733925540129962876580261242273467964980586095277968008478003510520").map_err(|_| ()).unwrap(), Fq::from_str("5502277878902047247504174581984405311788850074338907672427435023620684656285").map_err(|_| ()).unwrap(), Fq::from_str("3133867741450637227416157482193433460720476157087105946893409719860592365407").map_err(|_| ()).unwrap(), Fq::from_str("8400900706408490632518330034988512166255356777660834664898578191621637827580").map_err(|_| ()).unwrap(), Fq::from_str("4424355663759696797083117401116579382210148092564273386055340689619958180062").map_err(|_| ()).unwrap(), Fq::from_str("38181968798540411178433004489330464377413440568580946670698824537964234740").map_err(|_| ()).unwrap(), Fq::from_str("3985137582625427870914337711862008955159518565586436026102511255896022545247").map_err(|_| ()).unwrap(), Fq::from_str("2686597946680903067963389814411594898511296256126226466543512771762628518380").map_err(|_| ()).unwrap(), Fq::from_str("3912072963699923538135335881783459711445809699833034464235046836295051637157").map_err(|_| ()).unwrap(), Fq::from_str("3768948985107031263554991350035396579658231033668291305113893407107999590132").map_err(|_| ()).unwrap(), Fq::from_str("7209840459207478084934132990507426086496015722161589774417691869050002492357").map_err(|_| ()).unwrap(), Fq::from_str("6470232135949884401983050741535994050038392389090501339898509456281439988861").map_err(|_| ()).unwrap(), Fq::from_str("1403782228835667896108593023720179504199984149882443104282945790037828677887").map_err(|_| ()).unwrap(), Fq::from_str("2616692368426935727956976017730416940577328529933157623691062413188068132680").map_err(|_| ()).unwrap(), Fq::from_str("6013155465106742700343824998420749144547684411124338994627587197137858317900").map_err(|_| ()).unwrap(), Fq::from_str("5046057668721457926386883951512447209843468155520782995797315336934626297875").map_err(|_| ()).unwrap(), Fq::from_str("4699213848989418709226497398340240243077331984560588410432125105042384834910").map_err(|_| ()).unwrap(), Fq::from_str("5229593958715996992063094437959528963051688396408152717883918637659886098311").map_err(|_| ()).unwrap(), Fq::from_str("1951976044069223056158754588030180422847727493829048238776399717813979759789").map_err(|_| ()).unwrap(), Fq::from_str("4158688722225908788153206659322854682351209416161193960155253054969298046740").map_err(|_| ()).unwrap(), Fq::from_str("6729156920345996334287429817597914498081658415518610887789376041974889047771").map_err(|_| ()).unwrap(), Fq::from_str("8001080793346807220307430636768987640386922596264252165255164305011067417921").map_err(|_| ()).unwrap(), Fq::from_str("805049615247355128632817272390362068051853601888800837662896676244202957816").map_err(|_| ()).unwrap(), Fq::from_str("6954697886862123377467715908414695350592349300176823211514354407092860264474").map_err(|_| ()).unwrap(), Fq::from_str("1037357063158990576124983865369468459708807060409999263024817001922664598244").map_err(|_| ()).unwrap(), Fq::from_str("6274173843835872888849453577522195998097492776857839215359837309285307683859").map_err(|_| ()).unwrap(), Fq::from_str("3829234834194025101976400998836257325560624583979963442125678498831465993617").map_err(|_| ()).unwrap(), Fq::from_str("2634048471413514276664575681345205309356785859870536213890046907527525143930").map_err(|_| ()).unwrap()]), +// mds: MdsMatrix::from_elements(vec![Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap()]), +// alpha: Alpha::Exponent(17), +// rounds: RoundNumbers {r_P: 31, r_F: 8}, +// optimized_mds: OptimizedMdsMatrices { +// M_hat: SquareMatrix::new(5, 5, vec![Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap()]), +// v: Matrix::new(1, 5, vec![Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap()]), +// w: Matrix::new(5, 1, vec![Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap()]), +// M_prime: SquareMatrix::new(6, 6, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap()]), +// M_doubleprime: SquareMatrix::new(6, 6, vec![Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("3619055035469301610392353545192091370589671143637455926257957195393175388169").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776293").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159404").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4222230874714185212124412469390773265687949667577031913967616727958704619488").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3070713363428498336090481795920562375045781576419659573794630347606330632388").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap()]), +// M_inverse: SquareMatrix::new(6, 6, vec![Fq::from_str("1280664").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917398261921").map_err(|_| ()).unwrap(), Fq::from_str("35675640").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917353743601").map_err(|_| ()).unwrap(), Fq::from_str("41621580").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917397130945").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917398261921").map_err(|_| ()).unwrap(), Fq::from_str("96049800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917092122241").map_err(|_| ()).unwrap(), Fq::from_str("499458960").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917030861041").map_err(|_| ()).unwrap(), Fq::from_str("110990880").map_err(|_| ()).unwrap(), Fq::from_str("35675640").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917092122241").map_err(|_| ()).unwrap(), Fq::from_str("1060076160").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455915722754241").map_err(|_| ()).unwrap(), Fq::from_str("1288287000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917028698881").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917353743601").map_err(|_| ()).unwrap(), Fq::from_str("499458960").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455915722754241").map_err(|_| ()).unwrap(), Fq::from_str("2705402700").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455915328160041").map_err(|_| ()).unwrap(), Fq::from_str("618377760").map_err(|_| ()).unwrap(), Fq::from_str("41621580").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917030861041").map_err(|_| ()).unwrap(), Fq::from_str("1288287000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455915328160041").map_err(|_| ()).unwrap(), Fq::from_str("1610358750").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455916928278561").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917397130945").map_err(|_| ()).unwrap(), Fq::from_str("110990880").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917028698881").map_err(|_| ()).unwrap(), Fq::from_str("618377760").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455916928278561").map_err(|_| ()).unwrap(), Fq::from_str("144288144").map_err(|_| ()).unwrap()]), +// M_hat_inverse: SquareMatrix::new(5, 5, vec![Fq::from_str("1960200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917397913441").map_err(|_| ()).unwrap(), Fq::from_str("23783760").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917387617441").map_err(|_| ()).unwrap(), Fq::from_str("7207200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917397913441").map_err(|_| ()).unwrap(), Fq::from_str("66254760").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917268698641").map_err(|_| ()).unwrap(), Fq::from_str("128828700").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917365995841").map_err(|_| ()).unwrap(), Fq::from_str("23783760").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917268698641").map_err(|_| ()).unwrap(), Fq::from_str("300600300").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917131761841").map_err(|_| ()).unwrap(), Fq::from_str("93693600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917387617441").map_err(|_| ()).unwrap(), Fq::from_str("128828700").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917131761841").map_err(|_| ()).unwrap(), Fq::from_str("257657400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917321791681").map_err(|_| ()).unwrap(), Fq::from_str("7207200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917365995841").map_err(|_| ()).unwrap(), Fq::from_str("93693600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917321791681").map_err(|_| ()).unwrap(), Fq::from_str("29811600").map_err(|_| ()).unwrap()]), +// M_00: Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), +// M_i: Matrix::new(6, 6, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3466885886383614736932071158256868571025325905266057014725599828463273557140").map_err(|_| ()).unwrap(), Fq::from_str("7631238485140139170519957292292796390470671952054900803134611909388031911017").map_err(|_| ()).unwrap(), Fq::from_str("7871633013161771723971720588337110516688943421216367362350930829393725374005").map_err(|_| ()).unwrap(), Fq::from_str("1073861992954466378139155040243430947959159969896043282552939666018391012017").map_err(|_| ()).unwrap(), Fq::from_str("7183433298824164175395505075717883311708425536530432110390555349177505525596").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7631238485140139170519957292292796390470671952054900803134611909388031911017").map_err(|_| ()).unwrap(), Fq::from_str("41500372083843706934182411142065801633822663035944991289021626121183355283").map_err(|_| ()).unwrap(), Fq::from_str("5125031358671829763143662154931208209925017208372180524423682982510617172395").map_err(|_| ()).unwrap(), Fq::from_str("981480440519254016924108191447655466657783346930331844108329856514040945996").map_err(|_| ()).unwrap(), Fq::from_str("2331757192524643452388648023333684073825792737387882230674275113643541352821").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7871633013161771723971720588337110516688943421216367362350930829393725374005").map_err(|_| ()).unwrap(), Fq::from_str("5125031358671829763143662154931208209925017208372180524423682982510617172395").map_err(|_| ()).unwrap(), Fq::from_str("5712778409618812547852143178260582577133932863530824058318138545806090962486").map_err(|_| ()).unwrap(), Fq::from_str("7550005823807598061571947111819109954946648930422615185305732016051037379606").map_err(|_| ()).unwrap(), Fq::from_str("4799007357221912049451609521186356374716557970509367518632657620190429554132").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1073861992954466378139155040243430947959159969896043282552939666018391012017").map_err(|_| ()).unwrap(), Fq::from_str("981480440519254016924108191447655466657783346930331844108329856514040945996").map_err(|_| ()).unwrap(), Fq::from_str("7550005823807598061571947111819109954946648930422615185305732016051037379606").map_err(|_| ()).unwrap(), Fq::from_str("6158108558546920229448272459059447924688962268670692359811577868253380475777").map_err(|_| ()).unwrap(), Fq::from_str("1969215327660361195767023373489611175139477730908610516274418325350559201003").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7183433298824164175395505075717883311708425536530432110390555349177505525596").map_err(|_| ()).unwrap(), Fq::from_str("2331757192524643452388648023333684073825792737387882230674275113643541352821").map_err(|_| ()).unwrap(), Fq::from_str("4799007357221912049451609521186356374716557970509367518632657620190429554132").map_err(|_| ()).unwrap(), Fq::from_str("1969215327660361195767023373489611175139477730908610516274418325350559201003").map_err(|_| ()).unwrap(), Fq::from_str("6846721788455410245195334523636560162771380747503714722615054473011010713906").map_err(|_| ()).unwrap()]), +// v_collection: vec![Matrix::new(1, 5, vec![Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("7941815216724300756138775835282644952127333898537750504843850512112801546241").map_err(|_| ()).unwrap(), Fq::from_str("7990146614099692070380126710619077796285849805904703708987252718247859978241").map_err(|_| ()).unwrap(), Fq::from_str("7091612235338528214950923548253306297996640736944858140401246370412529217992").map_err(|_| ()).unwrap(), Fq::from_str("5248338661925326407677785786700133502402681391582359740068141165676751836502").map_err(|_| ()).unwrap(), Fq::from_str("1387049006151042337159381234970341877270851357356636994798804520514354983930").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6110231202011253694165846173723468950408820697542497299473283487019249347773").map_err(|_| ()).unwrap(), Fq::from_str("3157575504651297787039118187608403480542790084101511446959773804450529464927").map_err(|_| ()).unwrap(), Fq::from_str("3170253555681361289524464227542709736785270405371895935037102909830638075272").map_err(|_| ()).unwrap(), Fq::from_str("7329436681995464374339159819496735533883658754043030465016961864474689381111").map_err(|_| ()).unwrap(), Fq::from_str("30349159942757727446849373494433009012335581144047744258728329526937878811").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("4026080672506377877140717282989760586025956049417327866114462369437851588279").map_err(|_| ()).unwrap(), Fq::from_str("6930852424050627186126232807770899853776794918209634874800721153623171499129").map_err(|_| ()).unwrap(), Fq::from_str("5498012549009454424469147474518034650798956467007298624071684872238445737362").map_err(|_| ()).unwrap(), Fq::from_str("1747046067795269910228387161032836383761725017018529359296681232808565032961").map_err(|_| ()).unwrap(), Fq::from_str("3831101026643899311630245440904261642914504445778502537885800288638580114296").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("4141532419655592065610332370213881627362230648707131410133482121563357457244").map_err(|_| ()).unwrap(), Fq::from_str("2805235589752126003131414548954915344462868809211489671397294395767543886469").map_err(|_| ()).unwrap(), Fq::from_str("332040327407072334084989323171791720012842838222695661384360475795390351693").map_err(|_| ()).unwrap(), Fq::from_str("7334299789481162862229727080563099218490223927327602697962460500113680347478").map_err(|_| ()).unwrap(), Fq::from_str("1897213404555237456414103142001857906694603886125516762011014457060482151674").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("4954341900180395110889178860820384290951169163842084917289390943955280510103").map_err(|_| ()).unwrap(), Fq::from_str("6470021790101590966415371963124335260423343038658155655583738979541628807188").map_err(|_| ()).unwrap(), Fq::from_str("7024912598992383092238946119397715724276097417266378240259886700124887181196").map_err(|_| ()).unwrap(), Fq::from_str("8389166652326586786953909098741873237682335743682374833051600609786490990114").map_err(|_| ()).unwrap(), Fq::from_str("1479056552842953534617606512037080286390006037416864574856058371553085514122").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("1431741209182181199992000253938318158333401938504830255524365058344239129028").map_err(|_| ()).unwrap(), Fq::from_str("279679141156856528872157540682727305343441098379922980298786323868535111888").map_err(|_| ()).unwrap(), Fq::from_str("1343276697514446520140249002263887965747501206963843072689492127831811083086").map_err(|_| ()).unwrap(), Fq::from_str("5395779912686855072366358214378270978263275956455850818134350137622249887820").map_err(|_| ()).unwrap(), Fq::from_str("2290631682495891783628966223526885873135859535180846401576213059798995666190").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("7218387484091115458420041283246976806713985651774223714134722192996410597635").map_err(|_| ()).unwrap(), Fq::from_str("4231441015621368596701073091630925900586070904488463026235216795349201114365").map_err(|_| ()).unwrap(), Fq::from_str("5715835773349980671804855661644390972640814704300898420795922471947844692230").map_err(|_| ()).unwrap(), Fq::from_str("3384775390488715640672241644007991181322465102287685771223084113219078253957").map_err(|_| ()).unwrap(), Fq::from_str("1578690082496160366966500006705645782141820241374842010133997910991194251930").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("965233995498712348514292638207588694637619135632861752546203918580581657796").map_err(|_| ()).unwrap(), Fq::from_str("2235248835582290539598865944236350480756882553474622611902054399378093841466").map_err(|_| ()).unwrap(), Fq::from_str("6148670551886129962186712133076360841910072233440731871161757883158900286392").map_err(|_| ()).unwrap(), Fq::from_str("4054278367287334965144453624843616328618302644423097642232152664094471575724").map_err(|_| ()).unwrap(), Fq::from_str("4001954402147966855706286198881966747171612451247708565778725254440310720763").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("2534660301813065402436899987950706043720168534445708767463663688295231036999").map_err(|_| ()).unwrap(), Fq::from_str("1862197728742954238317031608983645132235346659299783635170547034502707852312").map_err(|_| ()).unwrap(), Fq::from_str("8354656080998698755534880892987167690526972663880127867686954943923735687140").map_err(|_| ()).unwrap(), Fq::from_str("1775518450943553915654815218875459501770597002098074473909421276677429275087").map_err(|_| ()).unwrap(), Fq::from_str("2124859946365887562306513696664991963838266491638672763451233757378814957834").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("1857624422719040917493211390079431947937109202694869920357330729144903868304").map_err(|_| ()).unwrap(), Fq::from_str("2029890818045040302870868737913497052385936280913070890864441987012718466511").map_err(|_| ()).unwrap(), Fq::from_str("4104891951295802196336284351106287169259076743314463275235162647640034843094").map_err(|_| ()).unwrap(), Fq::from_str("3317743299043490973800206704349700508551217135364996277285466640418805531480").map_err(|_| ()).unwrap(), Fq::from_str("4503628229300759611603500675648810337410843314819359324931140629462919270882").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6483881711338357066194191585999345605402998669728999576287475423195967294516").map_err(|_| ()).unwrap(), Fq::from_str("5501728230554894840326119230491311997268184984598574434463777368920844355440").map_err(|_| ()).unwrap(), Fq::from_str("8367940238888010226586240215378562834384437861789668269806504885290056620482").map_err(|_| ()).unwrap(), Fq::from_str("4005415763048160253365089879982518591344227056640495742855020253298231389435").map_err(|_| ()).unwrap(), Fq::from_str("4969458979893683785296838293021359389961523766136361848003712765926059083145").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6231227535823799182606539690293251573601273968506136784794381447547797875406").map_err(|_| ()).unwrap(), Fq::from_str("5655696554758517712037618944610404293554195829135747039469944770632773447716").map_err(|_| ()).unwrap(), Fq::from_str("4444168197817530534143157441257649256244288310556485093995388501501954152333").map_err(|_| ()).unwrap(), Fq::from_str("1562418969880179086156917387423691633688817703447121391732362425285294358707").map_err(|_| ()).unwrap(), Fq::from_str("7905764595508721324139048664234901114040748376212995627171084399283682311031").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("972220203986731589364086387871705609244047376641536480969523415104231505317").map_err(|_| ()).unwrap(), Fq::from_str("2453099774609779786435139396136811622507167591786353931912160643835718094689").map_err(|_| ()).unwrap(), Fq::from_str("2309065636781068029672836043701027208170922286862910676725834963109305476313").map_err(|_| ()).unwrap(), Fq::from_str("4040972464611400951352495819486215055185950553934569254115621318574769593313").map_err(|_| ()).unwrap(), Fq::from_str("266592240564307010502052371487343932718275775959852829865912283245934928094").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("7320202478200266460346837952319492973701300494180563641577412999106426824526").map_err(|_| ()).unwrap(), Fq::from_str("8108138820297213490738634228023986404893629041887825345738101636090573669345").map_err(|_| ()).unwrap(), Fq::from_str("5301400962117056506538035780727177833845300364548746807848903621566273804316").map_err(|_| ()).unwrap(), Fq::from_str("7971226113694983652944802446401717326942984192515500878860213259125412300090").map_err(|_| ()).unwrap(), Fq::from_str("1409724173090869167154726972562766469176093846298227350952800639400394379601").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6693934743118354072745455302248449275870616983077929839884690599594261990264").map_err(|_| ()).unwrap(), Fq::from_str("7058406496766309320843636175087488388778952908263354883183538702347753768680").map_err(|_| ()).unwrap(), Fq::from_str("112805754093120896429706632826847444269816278879470103868773877928631291767").map_err(|_| ()).unwrap(), Fq::from_str("4460995013973858057325952086481429303515013534733418559957765962760079329642").map_err(|_| ()).unwrap(), Fq::from_str("1193755776095245869744378485032820330351025440846483775843412710878165867680").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("1258749243792719359855766640067438625733311786514044851257454315362969702894").map_err(|_| ()).unwrap(), Fq::from_str("4990875883891633704713814491196413878780021470031873828007434832149285923877").map_err(|_| ()).unwrap(), Fq::from_str("6200439178012128180944679794966330198826507650304501101432289910763147930376").map_err(|_| ()).unwrap(), Fq::from_str("4719349149224404163490786150494926125120106933700574110618021496050485511864").map_err(|_| ()).unwrap(), Fq::from_str("1669534973986495667607393278917637166321086332372652600720280617188164633279").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("757101241546777826925891083535493867234396654755470441451967986563409129039").map_err(|_| ()).unwrap(), Fq::from_str("4277352352236356233977705224157738527338644281742783698948438751984703091316").map_err(|_| ()).unwrap(), Fq::from_str("1073255593582939467087448489641130248372081764818232419926531966764867684115").map_err(|_| ()).unwrap(), Fq::from_str("2391951887243757039001297845116658050641414539618206517877391386559220050374").map_err(|_| ()).unwrap(), Fq::from_str("446289917362131613879994461507020996276068930852357270607964327842602903038").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("7872957250286640781261597615947123682145439021290179984851671184197371144237").map_err(|_| ()).unwrap(), Fq::from_str("4270080453127734296040974725474939563669611937415279941318423355292187409247").map_err(|_| ()).unwrap(), Fq::from_str("7837996606991115158840354692708299889539902758634946340775643090935180150003").map_err(|_| ()).unwrap(), Fq::from_str("5040055913185555759799644626682679990624017535965186108689014808086875148076").map_err(|_| ()).unwrap(), Fq::from_str("4076452896420841774788519858212832470236168087782495438602828618333959655679").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6850933996320895880612129783291391300582256806630505952529312913434970849928").map_err(|_| ()).unwrap(), Fq::from_str("5740537437043965385118623008585070483275524217044780698253346664671370932569").map_err(|_| ()).unwrap(), Fq::from_str("5613808328537682180580806697618787482041835953570245642832539431400477912465").map_err(|_| ()).unwrap(), Fq::from_str("355985213407966689514720253068594068335704430948235959092978366409374991936").map_err(|_| ()).unwrap(), Fq::from_str("2896502603549427612693976511346976872923625464294097211108220572952870663980").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("3139649722060623801892440109936841783814774383361763259558015594361298197330").map_err(|_| ()).unwrap(), Fq::from_str("3408390433030768147591222599748716339661171573476398480372499194642353127409").map_err(|_| ()).unwrap(), Fq::from_str("5883406640005961510518943922315984407601675653894586250360310629546321124535").map_err(|_| ()).unwrap(), Fq::from_str("5915431096730178243561739029584601014253247255317937438021020844157491638060").map_err(|_| ()).unwrap(), Fq::from_str("676358766621617874963827581679634070309235155222486738747234537410357380738").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("7519304592477765757260636321810574180069142992153012371811342069529892471792").map_err(|_| ()).unwrap(), Fq::from_str("5487843288490548458944483494589225326153301298806910777379580982291350610665").map_err(|_| ()).unwrap(), Fq::from_str("510218660126967783517348372881817729621700503771717889621802047344472012169").map_err(|_| ()).unwrap(), Fq::from_str("2209942353071004113141626194945694063131134098571705757070963473639581531249").map_err(|_| ()).unwrap(), Fq::from_str("3758603934629736803795276443958343494675773193363251693220409288341551712330").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("4451970210234717986114292035901002878265169407249728090179081149172309065999").map_err(|_| ()).unwrap(), Fq::from_str("7410547164950177415607578777491789201470470457823190836808741925311048263477").map_err(|_| ()).unwrap(), Fq::from_str("3377257617979106867239904053601661934125307448850679529255044890270861718040").map_err(|_| ()).unwrap(), Fq::from_str("1853599437066515805677543489139997598844238785564000340227677707818357936054").map_err(|_| ()).unwrap(), Fq::from_str("5429064913656400225471445707275667326030314352474713949407963978763116919579").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("1197691971280396306287192581398202969239826051158575768752709995306828020580").map_err(|_| ()).unwrap(), Fq::from_str("4238082431770470956206384878390594711282141802779080073594702685840562565961").map_err(|_| ()).unwrap(), Fq::from_str("878442576213693814831503247472547748946049635003052458359266421326366453086").map_err(|_| ()).unwrap(), Fq::from_str("5684948148104820523289805822153448759615921390176571118906786942761743595141").map_err(|_| ()).unwrap(), Fq::from_str("2148195330920651774204475372303962369753530865773311898903827493341686860486").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("3076116378792126017550285525536207744292826744681071611608701902507121645518").map_err(|_| ()).unwrap(), Fq::from_str("3854674949135327103510638330547969828128748205997669771635963688882753213182").map_err(|_| ()).unwrap(), Fq::from_str("4755716130415217542977073597524817507349271798304793468020622084876605836304").map_err(|_| ()).unwrap(), Fq::from_str("6050679637333033844711176454247417794628303962982782280824008090010299899476").map_err(|_| ()).unwrap(), Fq::from_str("2685297888248924359701694693388428875167185712157540130758768365617060661216").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("3183883339779654676061479301855480480072473192768088585440218959931936308398").map_err(|_| ()).unwrap(), Fq::from_str("2261437371939482004662625493332148611545726111042452410673223413030818086262").map_err(|_| ()).unwrap(), Fq::from_str("2635616215590115067316425848446650757374978178964137414842654459527122987826").map_err(|_| ()).unwrap(), Fq::from_str("757642534360438237303334526849518635508736153455398806606655610105389859073").map_err(|_| ()).unwrap(), Fq::from_str("81095642896409553327019920179113463585893256018230512374427961174685023581").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6797218534895565825010153596978623441886597135565230008465745210509398562623").map_err(|_| ()).unwrap(), Fq::from_str("7911829579284151706198741755052533651888640483435783163537136789567445554084").map_err(|_| ()).unwrap(), Fq::from_str("3064599057061767021844128373975151381942998394487972392912798081667420575732").map_err(|_| ()).unwrap(), Fq::from_str("7063805345764805955148215922898806123389066020619470253506509562832165904667").map_err(|_| ()).unwrap(), Fq::from_str("1892174850394816493301732615726146718742746721222344255693709457408463448246").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("4717994132854965213639492210908837769349591933687169638749603740427164621707").map_err(|_| ()).unwrap(), Fq::from_str("6761450480158449952491585599633818106281185872627021288991452291542156073366").map_err(|_| ()).unwrap(), Fq::from_str("3795412990796694239548309065871618040804921074488092419190725493924790976540").map_err(|_| ()).unwrap(), Fq::from_str("3097803502404347599412562836305050929038994714467265300677530778260720657408").map_err(|_| ()).unwrap(), Fq::from_str("930653861172258191907352192272622238258733136653075005566927516613580047086").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("4585352636873525824828104759068690973281974820135878331879221370389775023943").map_err(|_| ()).unwrap(), Fq::from_str("7641260529140977102042703341856833650015340430014086738397810636181186112074").map_err(|_| ()).unwrap(), Fq::from_str("5863396470823682301618006713561278918846761693001096499090825381381333197518").map_err(|_| ()).unwrap(), Fq::from_str("904842458120294943179706514589550895267467664882990315233867819312320067754").map_err(|_| ()).unwrap(), Fq::from_str("3220700483058000523961146743388642537412666861309394450638829258069123210298").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6681643333571807222735775986415899108178298316047766720766399594583207798916").map_err(|_| ()).unwrap(), Fq::from_str("3518833953434233472116763773858372400042685039847566378694731000195553633371").map_err(|_| ()).unwrap(), Fq::from_str("3461636820284695086795383614644125098606653460698400639162920772987717675608").map_err(|_| ()).unwrap(), Fq::from_str("5644603989946552583182916764974069538070855789735574326734898596489104442299").map_err(|_| ()).unwrap(), Fq::from_str("206577133176895050891689030107036704932235778591774625169530408225098356324").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("848836604072499758747059453660370009974593670854202838287413465373432091653").map_err(|_| ()).unwrap(), Fq::from_str("3047102260061767217116728517244424881290907872992189004054234941930203431649").map_err(|_| ()).unwrap(), Fq::from_str("7237583088447883361002345155915843962913513542268782540683850400729094940465").map_err(|_| ()).unwrap(), Fq::from_str("6929383547412319526976648734922923273554492951001563754725699632161202962266").map_err(|_| ()).unwrap(), Fq::from_str("3132747410952189320997046000269383806861934184935808608495743622151361789016").map_err(|_| ()).unwrap()])], +// w_hat_collection: vec![Matrix::new(5, 1, vec![Fq::from_str("3619055035469301610392353545192091370589671143637455926257957195393175388169").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776293").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159404").map_err(|_| ()).unwrap(), Fq::from_str("4222230874714185212124412469390773265687949667577031913967616727958704619488").map_err(|_| ()).unwrap(), Fq::from_str("3070713363428498336090481795920562375045781576419659573794630347606330632388").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("4825406713959068813856471393589455160786228191516607901677276260526367623852").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239395759877096595325642663707165").map_err(|_| ()).unwrap(), Fq::from_str("27048767200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455892410459001").map_err(|_| ()).unwrap(), Fq::from_str("6909105067714121256203584040821265343853008546944234041037918282122694281179").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("1391947599256776000").map_err(|_| ()).unwrap(), Fq::from_str("1206351678489767203464117848397363790196557047879151975411070768152208597863").map_err(|_| ()).unwrap(), Fq::from_str("17684782061002212000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827918874895000645342041").map_err(|_| ()).unwrap(), Fq::from_str("767678340857124584022620448980140593761445394104914893454191359178521156131").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("1206351678489767203464117848397363790196557047880062312703730225680899719863").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239390365447015253077049789499315").map_err(|_| ()).unwrap(), Fq::from_str("11565982222751178173858400000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335143365172565110624394626855041").map_err(|_| ()).unwrap(), Fq::from_str("3838391704285622920113102244900702968807226970528193616511633177534156868655").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("2412703356979534406928235696794727580393709463883685749577350432537993039726").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950979257237382735248977797259580557799315").map_err(|_| ()).unwrap(), Fq::from_str("7564248390604308733188034854724800000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531368902325653271604704980364296524039041").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781286703136026495212913928537688819305193").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("7238110070938603220784707090384572116877256549111016795125497716206263919178").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090381875398566311432055124803695538959134751919178").map_err(|_| ()).unwrap(), Fq::from_str("4947081261147683023640511606228713587968000000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938776970429058890637021317756397426912059482839041").map_err(|_| ()).unwrap(), Fq::from_str("3070713363428498336090481795922110382428606798585639031528163517498252086924").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("2412703356979534406928490351734551341209374418729386016521648159578322639726").map_err(|_| ()).unwrap(), Fq::from_str("1206351678489767203462608827168196954300006685900101255806851772385961319863").map_err(|_| ()).unwrap(), Fq::from_str("3235432225507357939279305089273845337395081895040000000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424245832129866126400404346532737832819755829311748289239041").map_err(|_| ()).unwrap(), Fq::from_str("6909105067714121256204596450504334760095366669142909759344956622810075195579").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("2412703356979700953373542989927327947754075091368714761694419645595602639726").map_err(|_| ()).unwrap(), Fq::from_str("8444461749427383511833990529988684649885752662216620453248673723850209239041").map_err(|_| ()).unwrap(), Fq::from_str("2115999542611808425206383230017385219277994830598924825600000000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749426413102365761701541701660970228412654561772902021865775969239041").map_err(|_| ()).unwrap(), Fq::from_str("767678340857786708362429396252524122341246514661864491788758030330819021731").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("1206460601248005043560178447148823906439049019815536644364771507828201319863").map_err(|_| ()).unwrap(), Fq::from_str("2412057908064881264713928350962053121645408720902539578822087125096402639726").map_err(|_| ()).unwrap(), Fq::from_str("1383881272194246002194984091333820129980506623974261470473742080000000000").map_err(|_| ()).unwrap(), Fq::from_str("8443181644663185172104662718372042665962816448631956622706690166765409239041").map_err(|_| ()).unwrap(), Fq::from_str("3838824739102159117098530433496929204672681334070385103267973589324495108655").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("6147177418394293675839647631388895239651803847437754497428815597144867369302").map_err(|_| ()).unwrap(), Fq::from_str("6073787838288528059052971888600522063589241003419452547557519489243255700001").map_err(|_| ()).unwrap(), Fq::from_str("877966251044781814196731303328684002773704756980205596320523227035168824661").map_err(|_| ()).unwrap(), Fq::from_str("1680300822361370381905072597776767704714840902739122054261259298762777002822").map_err(|_| ()).unwrap(), Fq::from_str("310831973912850730876861807340180486365780626755730976508052803884598108135").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("856148838795908209208746356812074335364003203828323724294220179408363440196").map_err(|_| ()).unwrap(), Fq::from_str("6094827374407119647935038893236271706226260060670897287172467813332325927706").map_err(|_| ()).unwrap(), Fq::from_str("6444530954538389171784125059927336017341906140733147801238681004212027093186").map_err(|_| ()).unwrap(), Fq::from_str("7370302277137835780088705682513570202438218267363479646564652327825898626795").map_err(|_| ()).unwrap(), Fq::from_str("7024714842605452078293087244353778483566040287854284549442343302803492826054").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("2961644632303047695577715823695273928888883923467165255278574501055364322955").map_err(|_| ()).unwrap(), Fq::from_str("5138971517972955595710238252356052231557540441856292250007069976332716412249").map_err(|_| ()).unwrap(), Fq::from_str("228563284313582033963104009850978903512039411189781655361817997812028638365").map_err(|_| ()).unwrap(), Fq::from_str("141163402551404501198169773199150554984142577581536757121540753023086357807").map_err(|_| ()).unwrap(), Fq::from_str("1749744466380453436950103697893946249069896462911811415890837353382182991518").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("845416597345020971354694442864794117508425815141020654672299616210760885837").map_err(|_| ()).unwrap(), Fq::from_str("4176515287473442008552714353707417819037235555517648035298731053730648583051").map_err(|_| ()).unwrap(), Fq::from_str("3918635121671318921816701716451302298167000555185499555391707221199118926327").map_err(|_| ()).unwrap(), Fq::from_str("782573690607453281177421994322253656961228445101520254957281771744505405363").map_err(|_| ()).unwrap(), Fq::from_str("2854547265602259967307220069271073951198979639818867636474386128933491322892").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5250957375647202870293019768469320139075875130408369348720297278352439213590").map_err(|_| ()).unwrap(), Fq::from_str("743892906917993225011642975476894243958832578253512245493833962831841201600").map_err(|_| ()).unwrap(), Fq::from_str("7812539464246114489632904460977630195580767185254706736989481538679956000149").map_err(|_| ()).unwrap(), Fq::from_str("5380749615084730699455707375619285634367165018364177465667568705466212964583").map_err(|_| ()).unwrap(), Fq::from_str("464102675462536776794165887409532203099290051605084304047832210958985260587").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("4182417038997255631155135764925288979044181144794636308760205432713537092510").map_err(|_| ()).unwrap(), Fq::from_str("6465650277195218565293260238870881254677567232561972896323016914393179713760").map_err(|_| ()).unwrap(), Fq::from_str("5356330305962920654745530394638790017357523191707754138680465355067825357197").map_err(|_| ()).unwrap(), Fq::from_str("6280948051937432729715564206090984917124623926267316571104752056331004207464").map_err(|_| ()).unwrap(), Fq::from_str("2902037236812081844758075455540049896545151817490161551320005202662158377301").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("6253922075102013311537122047339873473008076266090999962470325524288578564404").map_err(|_| ()).unwrap(), Fq::from_str("3917027989955906926608335366537258273851803130690798654064947604891287977926").map_err(|_| ()).unwrap(), Fq::from_str("5135721837966704529574095277086392826673198100443352124274047571231198270765").map_err(|_| ()).unwrap(), Fq::from_str("968169212551652489407762820946477614372262491202162378605535508220047598348").map_err(|_| ()).unwrap(), Fq::from_str("4056552440492954150064468537227577703143820882312293513424357662370555633197").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("4790500917295764763697366145065957194569104981361890676387931830094895735303").map_err(|_| ()).unwrap(), Fq::from_str("6765067133012392530950335784033789799961417752880480708579206665868262011118").map_err(|_| ()).unwrap(), Fq::from_str("1200044006575803372465626276342547112295776217287206934415479826698503787596").map_err(|_| ()).unwrap(), Fq::from_str("3061266063492948149668119338254318029578480809441037969703296499786245154497").map_err(|_| ()).unwrap(), Fq::from_str("6747033153522969873411124368706363473290402704649820672186813563687324250543").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5846260064036629690367418064068595902324192966197820080729498322482658368349").map_err(|_| ()).unwrap(), Fq::from_str("5525337998808912224512210056940988315896660163067041507808871836208172793887").map_err(|_| ()).unwrap(), Fq::from_str("3993000539076748210251258268562224898098456206203800372027860777967319168941").map_err(|_| ()).unwrap(), Fq::from_str("8228293027820808967145977053154764722872668588400984499433663529444584663411").map_err(|_| ()).unwrap(), Fq::from_str("8415214022743764913726986894119593781718035711103680911686555068054626667838").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("1846896143367372426155378749779540479526329997314556667571432516374526465646").map_err(|_| ()).unwrap(), Fq::from_str("746893234597842719093706399801104979178261083366162352975875167525143570759").map_err(|_| ()).unwrap(), Fq::from_str("82837965708636083214036604879642670669028538693223234779418174141620775612").map_err(|_| ()).unwrap(), Fq::from_str("1789602760401806638838943859429912859411922512697594176773609218897047889276").map_err(|_| ()).unwrap(), Fq::from_str("3741809056313642372578292414231732520389329967433566923544810449513421883947").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("525822604805773990383324445504722316877180206856566089198088980494871388389").map_err(|_| ()).unwrap(), Fq::from_str("4400023399581476229076084375173729875486722009053051898063343151796447571049").map_err(|_| ()).unwrap(), Fq::from_str("7404129173409617670487111130870756803276972080377412391071495785791511418119").map_err(|_| ()).unwrap(), Fq::from_str("69815072931190129644566979469585540892704861327813106937056253546227026551").map_err(|_| ()).unwrap(), Fq::from_str("2938116839228029901630462687041312294281358796436697967216446160525126004866").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("2440894045539607139384970159844795091335685730998085963541278259675380457090").map_err(|_| ()).unwrap(), Fq::from_str("4079089191679715612584661905555705615698244728704610383068061456446135276606").map_err(|_| ()).unwrap(), Fq::from_str("2781199127908094188307884311354145437982527616396457441154125172373917962006").map_err(|_| ()).unwrap(), Fq::from_str("5079881838253990449699203933325777004491929049218215622684047878792847313931").map_err(|_| ()).unwrap(), Fq::from_str("511112710468324423836237588477306568460588458786970315016463344773539702631").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("6193171054036940913333090255101417408801785780334369900764866135970384484659").map_err(|_| ()).unwrap(), Fq::from_str("4551641954930566466407494509161169442349275022700016313694979642453078526780").map_err(|_| ()).unwrap(), Fq::from_str("443593926855234226583797362846611849084221578246195442848672130661595987924").map_err(|_| ()).unwrap(), Fq::from_str("38716373318262392097548680967212111560327234780348654812026422373921578918").map_err(|_| ()).unwrap(), Fq::from_str("4119837901352182838209628754374786180221155496975346011315270227112191586257").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("4397005538359600086742317385712862552381867760010853785937015065983947987534").map_err(|_| ()).unwrap(), Fq::from_str("1842635903428029129148218958247779846335820193004725584446572122966531312411").map_err(|_| ()).unwrap(), Fq::from_str("7897688425336130150414495496523924792334653319043440325252576845731810994644").map_err(|_| ()).unwrap(), Fq::from_str("6276856837371748712682861942595613909310648957795334798085219267828186601317").map_err(|_| ()).unwrap(), Fq::from_str("4773896295726202208039186673787510014445841431433987462747404225557581366732").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5837684128262005804825647876106396142407661842460638784306129186463739176717").map_err(|_| ()).unwrap(), Fq::from_str("6662796944338374019172519603175357145037980757399391331384076471398266264932").map_err(|_| ()).unwrap(), Fq::from_str("3538622469659248332042772828245338174429673448257783665386043998638702523130").map_err(|_| ()).unwrap(), Fq::from_str("5022816291214140110504443097806662114485674873177043216896278108209654880261").map_err(|_| ()).unwrap(), Fq::from_str("4542766497876255232247401948638181126555577534438947572506979568462289380963").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("7507575352920546011580751800347232214132430382655133054000793229332124078786").map_err(|_| ()).unwrap(), Fq::from_str("985299904800384704459231555271751907841186606295166114240258547866514615481").map_err(|_| ()).unwrap(), Fq::from_str("8426484653605928215551193990367284664594933417769200099513815528703726430677").map_err(|_| ()).unwrap(), Fq::from_str("1537129124339191366864722641799696087535996150518462743211985240222388634054").map_err(|_| ()).unwrap(), Fq::from_str("446620028879660805798594245123540461586434781164639270008747826990982365323").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5123330347351134046280450017950519157624694185693895938445735905210917017618").map_err(|_| ()).unwrap(), Fq::from_str("1742773833719122668792629780460804613251445465373427448336062615346517195357").map_err(|_| ()).unwrap(), Fq::from_str("3567694412527938085828038330048457319751538543542197128290136125581680445636").map_err(|_| ()).unwrap(), Fq::from_str("4498472419615226424399411610766984588697145044608248877855663258413876453219").map_err(|_| ()).unwrap(), Fq::from_str("1444251946724225916664227347449568843644825496126458906659024503648940024020").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5809782815784787926268402925214888584149764009650054747468569878029923452150").map_err(|_| ()).unwrap(), Fq::from_str("8280145905563717743202628630954608550347586608397486300236452105547458619922").map_err(|_| ()).unwrap(), Fq::from_str("4223481685313476349848461423341780130503294307218542899824569635830447137960").map_err(|_| ()).unwrap(), Fq::from_str("993204521332903287234535150860521113221764454436300109653837338888330650195").map_err(|_| ()).unwrap(), Fq::from_str("2563252883098197962221692353034335439311114519005465085762942401961889300370").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5013553443579759107013408664332143099854950676275087991348495168273138527360").map_err(|_| ()).unwrap(), Fq::from_str("4655198839392469201950502817201006711216158113323375254703834658422385565315").map_err(|_| ()).unwrap(), Fq::from_str("7121488522621409406003001219490250954875030644708686497090529774334720941538").map_err(|_| ()).unwrap(), Fq::from_str("4879965827659283508327468762292484871346676700103121983457352310625424222221").map_err(|_| ()).unwrap(), Fq::from_str("103152003412995626670815965501126271318826872518262302503619399755622628419").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5281505736209476228625368194815871062689395969317896176277314459239189376784").map_err(|_| ()).unwrap(), Fq::from_str("2457546237656968036899963756388246340437168002506103539551030167985965354345").map_err(|_| ()).unwrap(), Fq::from_str("3892176615420455765037280466810963591888231682316139412412178539615826314931").map_err(|_| ()).unwrap(), Fq::from_str("1788123120679946155909513795234528577990134600872358510097311428549188756787").map_err(|_| ()).unwrap(), Fq::from_str("273589616277476720667578093976265883502524371605403263650116114032148814504").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("120375634993663345423467049551652322601878955778258240407899079731972206487").map_err(|_| ()).unwrap(), Fq::from_str("2360725044803241846323041998265959465716259409244471169154334893947280038816").map_err(|_| ()).unwrap(), Fq::from_str("4580002630231263979965442647658625061156714435344181528728315343332013976678").map_err(|_| ()).unwrap(), Fq::from_str("7848313915613164359774658974259709378409518978722869099202180662775696685850").map_err(|_| ()).unwrap(), Fq::from_str("3078852579910724817997671033826651242678954186458090648762919517123747991613").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5842007535022474771393881356706605267295630721532511994030387263110400264338").map_err(|_| ()).unwrap(), Fq::from_str("1227209451965928705493525855023338836137996912556625280462063141166021348947").map_err(|_| ()).unwrap(), Fq::from_str("8134015645683550675422951584794364531158826391292824005367333970284589558011").map_err(|_| ()).unwrap(), Fq::from_str("5901328219507809588409254764336375535304428247431378374896704332678701815314").map_err(|_| ()).unwrap(), Fq::from_str("4939576631781937288610922587005877806487736407007026097365113971356835030095").map_err(|_| ()).unwrap()])], +// }, +// optimized_arc: OptimizedArcMatrix::new(39, 6, vec![Fq::from_str("845774603178492790430819572559948899425806472242990359595837698866402459283").map_err(|_| ()).unwrap(), Fq::from_str("5104113060992167207950156191834052800250377917110335646977277694909225606639").map_err(|_| ()).unwrap(), Fq::from_str("606930867215997902681408163383822852644874536120525401359262311657265176286").map_err(|_| ()).unwrap(), Fq::from_str("3246189740533673369325580437595636125853593448497295559526133710916170023325").map_err(|_| ()).unwrap(), Fq::from_str("2228557437175639577799724834018880269762506939154314745471148408315031040782").map_err(|_| ()).unwrap(), Fq::from_str("5248714497354123146476603303736275602516846846345343189695992364680008748274").map_err(|_| ()).unwrap(), Fq::from_str("4468660183396113816417160760392174946434715734046476615756949516900460245783").map_err(|_| ()).unwrap(), Fq::from_str("7393542747111210649333111074982387945081968569023142501741239756021903723895").map_err(|_| ()).unwrap(), Fq::from_str("7199392773674619989102817361994783385540000190771324931792999149811086723727").map_err(|_| ()).unwrap(), Fq::from_str("4179131455162240247318123589436646198639084830612188212185789176671108496032").map_err(|_| ()).unwrap(), Fq::from_str("24442689501566866103376042248929386407192919728660696030608041405438957133").map_err(|_| ()).unwrap(), Fq::from_str("3097787510685557034777264781234655318746563426795026202239222093602417399558").map_err(|_| ()).unwrap(), Fq::from_str("6574238658366226506536641479793831030684930753068170934418220861949357860591").map_err(|_| ()).unwrap(), Fq::from_str("3230736603041831131224401646930510293150560782678475479524520009468240625703").map_err(|_| ()).unwrap(), Fq::from_str("4449397682136210685399058399525408353602443323667935079724525731105410330857").map_err(|_| ()).unwrap(), Fq::from_str("1462805245535093331717840709705014862484623276551060803969576565098857503359").map_err(|_| ()).unwrap(), Fq::from_str("5430193997486659445858726501908887547497708817666434922669358130281149310067").map_err(|_| ()).unwrap(), Fq::from_str("8182992080105598491896178755005741632616297373995328206793063427977612612424").map_err(|_| ()).unwrap(), Fq::from_str("2470198070508873630088316330360042099497336224174355851511490652176698623455").map_err(|_| ()).unwrap(), Fq::from_str("616202094790463990913669657355701717237705251976201488136276464144059917047").map_err(|_| ()).unwrap(), Fq::from_str("4300832028822930023146879288491662568841103305714742296374296369784204253894").map_err(|_| ()).unwrap(), Fq::from_str("3476274661803244432899568134341751009082965077671317942410157824155554772073").map_err(|_| ()).unwrap(), Fq::from_str("5064187415312733563044421812957719834749578846215859205757776767013163169207").map_err(|_| ()).unwrap(), Fq::from_str("2785720285300546669174088113375060468705507039789824059878564962780494844393").map_err(|_| ()).unwrap(), Fq::from_str("3955439879096535600770596087986987521484177541728792312152110382971886552324").map_err(|_| ()).unwrap(), Fq::from_str("503680037339076032856815489377858587415355113560755157086717098432815716841").map_err(|_| ()).unwrap(), Fq::from_str("5964553105116402172916680761616166920975463210054977222482002500286412179060").map_err(|_| ()).unwrap(), Fq::from_str("7281158201578211076266982138746435442933971728104518923259322554020752212264").map_err(|_| ()).unwrap(), Fq::from_str("2241343432184659572884353882416005796993328095513207173919122103820341809513").map_err(|_| ()).unwrap(), Fq::from_str("4853474723618434181335137108301073507880281739605909113444950270026187208176").map_err(|_| ()).unwrap(), Fq::from_str("2266484297898603139651464188099311881951612550072221529849601819688663614860").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2834480596359285257722679812165553631677121028793347973736474916876436840226").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3955655794240894760428011546576522693511264260766201184351196104203109672892").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6440795831658995228689638941764634235317879901726596500646803387380683298066").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7509995303856628178658864238317388391703173442817405478557680610554161559518").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3550320773765760050621750445990832702705780121450024814732192552193040091427").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2547339927154500734961334241185816462984985122408755638845157529517440404888").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5429472492516938288020588447033050680511243088021902555626331208609494322809").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6038155690422100700638510175974194653385020121201170068183639395022497652683").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8196883901367901100230454896732431566152928973255009907169942832718545558987").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7148661732519455303042665061428727258149029429431163054145732237026532889489").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1103346966514279047338269965467284691516791424600841454288175566663047065119").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("506501463999583535576083051388238107272349203512591077156367833191176693496").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1149231095916448689731204689337414874810990008730168558258467468151736044861").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1211317984484755908746711394692099576861991632666741109848017891399630249230").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6017874075566883986651275686693033257769937156099759525630010678262207639985").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3073074021524417887287970232094691430723143577639770883918040346601896146795").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("134322564106387068808518725818157537971916470010873683390299125718406273957").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7040363473961332593733143478583439087530465096639620629229243458327373964466").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("563451981459495065711526283364283662742307512754720432350812655985079858111").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5570498493573838619078336592446358732592459054714103239182255473689891360031").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5955050266740665240632543482309019624723976125958790422257400594518597029180").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3494771094276850877479627249158913515667815533875151231775096745822620973237").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3411818460864172740195641615200664114728178401494159321877510855488036874139").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4246924861274374789571583206802025439809822100434979812077101166440594671411").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6493720911104932428533466302395488089924060304439516917191316090657092895655").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2379218033893055222653926256633317026405237872826721673269282768490590945976").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6646242587253766573347400624243988750258308477645970782579754603927338804578").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6424174353837718401266897399154131367683818742063987521971015251587962775678").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7002656101292719313815856091772832441016655729701219648910142117630011665679").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4424355663759696797083117401116579382210148092564273386055340689619958180062").map_err(|_| ()).unwrap(), Fq::from_str("38181968798540411178433004489330464377413440568580946670698824537964234740").map_err(|_| ()).unwrap(), Fq::from_str("3985137582625427870914337711862008955159518565586436026102511255896022545247").map_err(|_| ()).unwrap(), Fq::from_str("2686597946680903067963389814411594898511296256126226466543512771762628518380").map_err(|_| ()).unwrap(), Fq::from_str("3912072963699923538135335881783459711445809699833034464235046836295051637157").map_err(|_| ()).unwrap(), Fq::from_str("3768948985107031263554991350035396579658231033668291305113893407107999590132").map_err(|_| ()).unwrap(), Fq::from_str("7209840459207478084934132990507426086496015722161589774417691869050002492357").map_err(|_| ()).unwrap(), Fq::from_str("6470232135949884401983050741535994050038392389090501339898509456281439988861").map_err(|_| ()).unwrap(), Fq::from_str("1403782228835667896108593023720179504199984149882443104282945790037828677887").map_err(|_| ()).unwrap(), Fq::from_str("2616692368426935727956976017730416940577328529933157623691062413188068132680").map_err(|_| ()).unwrap(), Fq::from_str("6013155465106742700343824998420749144547684411124338994627587197137858317900").map_err(|_| ()).unwrap(), Fq::from_str("5046057668721457926386883951512447209843468155520782995797315336934626297875").map_err(|_| ()).unwrap(), Fq::from_str("4699213848989418709226497398340240243077331984560588410432125105042384834910").map_err(|_| ()).unwrap(), Fq::from_str("5229593958715996992063094437959528963051688396408152717883918637659886098311").map_err(|_| ()).unwrap(), Fq::from_str("1951976044069223056158754588030180422847727493829048238776399717813979759789").map_err(|_| ()).unwrap(), Fq::from_str("4158688722225908788153206659322854682351209416161193960155253054969298046740").map_err(|_| ()).unwrap(), Fq::from_str("6729156920345996334287429817597914498081658415518610887789376041974889047771").map_err(|_| ()).unwrap(), Fq::from_str("8001080793346807220307430636768987640386922596264252165255164305011067417921").map_err(|_| ()).unwrap(), Fq::from_str("805049615247355128632817272390362068051853601888800837662896676244202957816").map_err(|_| ()).unwrap(), Fq::from_str("6954697886862123377467715908414695350592349300176823211514354407092860264474").map_err(|_| ()).unwrap(), Fq::from_str("1037357063158990576124983865369468459708807060409999263024817001922664598244").map_err(|_| ()).unwrap(), Fq::from_str("6274173843835872888849453577522195998097492776857839215359837309285307683859").map_err(|_| ()).unwrap(), Fq::from_str("3829234834194025101976400998836257325560624583979963442125678498831465993617").map_err(|_| ()).unwrap(), Fq::from_str("2634048471413514276664575681345205309356785859870536213890046907527525143930").map_err(|_| ()).unwrap()]), +// } +// } + +// /// Parameters for the rate-6 instance of Poseidon. +// pub fn rate_6() -> PoseidonParameters { +// PoseidonParameters { +// M: 128, +// t: 7, +// arc: ArcMatrix::new(39, 7, vec![Fq::from_str("3267179889377925711574658284856732208025355841040084473551461173520230225381").map_err(|_| ()).unwrap(), Fq::from_str("4218970795463228197327790213244921451375713052676530804173314273248521302251").map_err(|_| ()).unwrap(), Fq::from_str("6558452507257297773903880599933734956650828395452896303007568859251089292382").map_err(|_| ()).unwrap(), Fq::from_str("4042547271226656281806908526176747617793733742101121262910694724314042815131").map_err(|_| ()).unwrap(), Fq::from_str("4484826253675472206510819347554710738378387223810894155307581506069733612810").map_err(|_| ()).unwrap(), Fq::from_str("3340623787106332728769891522629193546852430705194948956506410107893436206270").map_err(|_| ()).unwrap(), Fq::from_str("1146818540713897566188401511637220499025428484560997690844890982000538808551").map_err(|_| ()).unwrap(), Fq::from_str("6089924376626192718256476404089056274813344438059373355846067526383524489588").map_err(|_| ()).unwrap(), Fq::from_str("3252380459144218718661502728554356451451872089835332429937606714939592080537").map_err(|_| ()).unwrap(), Fq::from_str("7116956469008263816717247030121065061393433609954531462053914466227296297033").map_err(|_| ()).unwrap(), Fq::from_str("2749312272215231848139078131254509267239590195342230643928479893117354148584").map_err(|_| ()).unwrap(), Fq::from_str("764882704567509245651596837424209709274533314828826071535700095515278197679").map_err(|_| ()).unwrap(), Fq::from_str("4932281286580045638368979604177064776138370306619513783360199241458597325911").map_err(|_| ()).unwrap(), Fq::from_str("6484320961953933323289746320919349728579597325051701151281300835155595148740").map_err(|_| ()).unwrap(), Fq::from_str("6682606457331543519450813892692923338913286820264911373641321435621952784002").map_err(|_| ()).unwrap(), Fq::from_str("6625780871179973490233386959951589849631496582163936124259260687776843181994").map_err(|_| ()).unwrap(), Fq::from_str("7949225290500346406153571792115001941134688057907882657603244062341345143557").map_err(|_| ()).unwrap(), Fq::from_str("6392844449548821017972820206673777102358896581926384483680180004397700038029").map_err(|_| ()).unwrap(), Fq::from_str("3392678655944756762416562388041708502386246415055289087688321666480356102352").map_err(|_| ()).unwrap(), Fq::from_str("1482525589417638728292358287918496174732548433885907700008322735579133317611").map_err(|_| ()).unwrap(), Fq::from_str("3098572574557576897289665910879403912332252678168883273111538708481992361738").map_err(|_| ()).unwrap(), Fq::from_str("5529056592387037922896478601046572040782992911318540751019232411511652047969").map_err(|_| ()).unwrap(), Fq::from_str("3748164104379232094417838431717964236407138591232998705172215282549268275626").map_err(|_| ()).unwrap(), Fq::from_str("7993215220832663678736550799426833055975676440107252656509024603970443366873").map_err(|_| ()).unwrap(), Fq::from_str("5554706095086365018531517384733334573065210312805294463584717615914523071948").map_err(|_| ()).unwrap(), Fq::from_str("2443631285780523173220046820359095033333463124538739189832478296145755085550").map_err(|_| ()).unwrap(), Fq::from_str("1220796011041198056582991284907417463980599290206522252014247996281492269358").map_err(|_| ()).unwrap(), Fq::from_str("1682760707303747404170762352671876629726555466723959746802386893894433719465").map_err(|_| ()).unwrap(), Fq::from_str("3051923729738325569700743140016346599799580971673827402271729235767984866691").map_err(|_| ()).unwrap(), Fq::from_str("2306114475196942948885846961345874495553950366022761412913304148926205742794").map_err(|_| ()).unwrap(), Fq::from_str("7746531378288971852126267511442677698173623354735027172401259811680773677501").map_err(|_| ()).unwrap(), Fq::from_str("4834348935899900190962719656110102273565189568342358560766997905456677506493").map_err(|_| ()).unwrap(), Fq::from_str("4121477957201856855020021268777282556154316264943378279859646884279956546625").map_err(|_| ()).unwrap(), Fq::from_str("5575807550520296672911438114601856894098726849257140030239298020170971947928").map_err(|_| ()).unwrap(), Fq::from_str("3682128341703072221204143569718024537702786243388400094766498270296969014264").map_err(|_| ()).unwrap(), Fq::from_str("7679831197978575465040991913842964145832157435230444452299494544524271515522").map_err(|_| ()).unwrap(), Fq::from_str("6224324156159351316973219159779237306960681933357110721696536378511625557820").map_err(|_| ()).unwrap(), Fq::from_str("6716972566783841934337221569574810873921873374075667326370709901646642238214").map_err(|_| ()).unwrap(), Fq::from_str("331863125818962027849727084710128595901952559887141675460236475296575670268").map_err(|_| ()).unwrap(), Fq::from_str("4663158656903340398961997518330483675433576645796066939978101537393126236287").map_err(|_| ()).unwrap(), Fq::from_str("1780987428986694219663159184569680255824138046786566932338476969603773193909").map_err(|_| ()).unwrap(), Fq::from_str("6555911628267551041055141725443469778285906923105440033741455960911326872840").map_err(|_| ()).unwrap(), Fq::from_str("809372144904751477263627950613192967177236230076728989515509424384305487889").map_err(|_| ()).unwrap(), Fq::from_str("7305902313317020177507153076171625792448911923503154116802216557394756122090").map_err(|_| ()).unwrap(), Fq::from_str("5268822999707269827407339715973554572570612616129733347318036728572184654948").map_err(|_| ()).unwrap(), Fq::from_str("3018506590499702332012032512257843792606071542944543063407346349775575179477").map_err(|_| ()).unwrap(), Fq::from_str("3292293347930095499689375056317626925489770555588338556704334208279999009786").map_err(|_| ()).unwrap(), Fq::from_str("7278948590638525441055673811145598489392128201468045545432013785450263812202").map_err(|_| ()).unwrap(), Fq::from_str("2651219506834522135247663906152585680699730347040704708795695819433536460159").map_err(|_| ()).unwrap(), Fq::from_str("4049871798415892850292053159369322239639717064217267206769239087430652128521").map_err(|_| ()).unwrap(), Fq::from_str("1070872611186538390812558975137728519255174942814423256791469831355363156942").map_err(|_| ()).unwrap(), Fq::from_str("7517075790327820458034096818201755116436064837902052505878372331077772865173").map_err(|_| ()).unwrap(), Fq::from_str("7744854507826397265628488800096049691937910230067727866432530786480132897330").map_err(|_| ()).unwrap(), Fq::from_str("5054997164098946349027235669636048371962424483708460159918560587069489460743").map_err(|_| ()).unwrap(), Fq::from_str("4123593762906798031355294874781146632153575444108905647909680676460963021500").map_err(|_| ()).unwrap(), Fq::from_str("642555179756975070792262146698437285785700252794598311698444854576082921449").map_err(|_| ()).unwrap(), Fq::from_str("1474201646769061795637139543552299140787447911392614122151581681723780827175").map_err(|_| ()).unwrap(), Fq::from_str("4212568704852508283980453597704490038956121060474692240185258403772331644477").map_err(|_| ()).unwrap(), Fq::from_str("6397288324036196424314380852844673578090610085948353686890058637783411223794").map_err(|_| ()).unwrap(), Fq::from_str("3926625536493244336520729985316719395802482408018379865607766101821321257466").map_err(|_| ()).unwrap(), Fq::from_str("6494276335913220607535921507434608972757919719702229797506445903210927716283").map_err(|_| ()).unwrap(), Fq::from_str("5320470266033494993746366608444378391394670338412382615589469413046126557288").map_err(|_| ()).unwrap(), Fq::from_str("6117686116131219682710944574172802707239969160152183376211631059358916379367").map_err(|_| ()).unwrap(), Fq::from_str("1472192601751717226475542483856590637092751471639236684263555043424557298110").map_err(|_| ()).unwrap(), Fq::from_str("3407374614860915726110082446680235615472399192552972898066705560664452864268").map_err(|_| ()).unwrap(), Fq::from_str("7097632494384239686225722363540947688115013970248135296850172001025685517676").map_err(|_| ()).unwrap(), Fq::from_str("405555215387397080358792030691448762321362110444583662742586152878306772781").map_err(|_| ()).unwrap(), Fq::from_str("2797246277136220424988367220099402498943986192066681298035435469455971365355").map_err(|_| ()).unwrap(), Fq::from_str("1301969262102706030379171132712694989707633665827297255503262456004474105482").map_err(|_| ()).unwrap(), Fq::from_str("1397623280922117755063539725076974056510922107015670278700003585831367272689").map_err(|_| ()).unwrap(), Fq::from_str("1621864990000588473764758637554032692163114006449898027981531408954257926569").map_err(|_| ()).unwrap(), Fq::from_str("5523069392877897519069194937670134918409922376855507214149728762101988295862").map_err(|_| ()).unwrap(), Fq::from_str("3128262740207889923593854580055755244674436906871019049380300833517963919899").map_err(|_| ()).unwrap(), Fq::from_str("5880577997328292695218951482160938378283909233099231240404059253367011774188").map_err(|_| ()).unwrap(), Fq::from_str("938018438906400457609104987429229825715503710544925730807846597879752026051").map_err(|_| ()).unwrap(), Fq::from_str("8180648363546978340378424820545183381887654241356952735017082989972282004843").map_err(|_| ()).unwrap(), Fq::from_str("973565803135161559341796479689996390462685801950645731002550676231356949773").map_err(|_| ()).unwrap(), Fq::from_str("1266322597086896596428679773021416432928623248766812760920353696031870525214").map_err(|_| ()).unwrap(), Fq::from_str("4481040487734984444390892104405593343014990582427406918878370674372783757640").map_err(|_| ()).unwrap(), Fq::from_str("2287309951912776067683878730494659441403705886007744344532565229041269989541").map_err(|_| ()).unwrap(), Fq::from_str("2510919603508448594054884582441093851279046517977406102988740412366783170982").map_err(|_| ()).unwrap(), Fq::from_str("4153419277329403751434099480264221438776930418380474238290776206005522222645").map_err(|_| ()).unwrap(), Fq::from_str("362519893513163783662695449327103940664483218608553039161240083947454524050").map_err(|_| ()).unwrap(), Fq::from_str("6787390779957107456205989918649340550821341848611172474005536139005002048707").map_err(|_| ()).unwrap(), Fq::from_str("3650144587367896813545891920584818718516339938095004817230865581614784032053").map_err(|_| ()).unwrap(), Fq::from_str("2935036940547088635724369295933694282647643967108863416789005387769458625751").map_err(|_| ()).unwrap(), Fq::from_str("6492293215708535938147712003242471403132870788285177400412319174948027025505").map_err(|_| ()).unwrap(), Fq::from_str("6295287253346450493341974493956279052104329349296295200760155236847312860073").map_err(|_| ()).unwrap(), Fq::from_str("2084101461936596601273317584125565752189208365795350140462022289030055037096").map_err(|_| ()).unwrap(), Fq::from_str("4977410808115603748307945445485222689287172153224405441544470603301428334134").map_err(|_| ()).unwrap(), Fq::from_str("2344874562161422983209423908460315191420241481992907912428584304998035118004").map_err(|_| ()).unwrap(), Fq::from_str("1239264108942923639382961610696195205010295393263578757939750849042317505694").map_err(|_| ()).unwrap(), Fq::from_str("2846462673800452908561358693893424081687331873586928116695468457020866844148").map_err(|_| ()).unwrap(), Fq::from_str("4998710939870529508437520796881236042643404905471423422130413918470467627114").map_err(|_| ()).unwrap(), Fq::from_str("1934815681475082223595638619789141370487567616982162160120672729382453188351").map_err(|_| ()).unwrap(), Fq::from_str("7228165027186431524071955942612119086518194519147361973264148553454917900033").map_err(|_| ()).unwrap(), Fq::from_str("4016166966365973011618037409323422154344251456962319920844284414914034315238").map_err(|_| ()).unwrap(), Fq::from_str("7546006907780092520254550596647283724078529297292645883247661304496683447550").map_err(|_| ()).unwrap(), Fq::from_str("1399477873854976905939132841850266306150030196502298772795760414705392805491").map_err(|_| ()).unwrap(), Fq::from_str("1636394793218559052913610540712274482920561638105294188116175896049821206934").map_err(|_| ()).unwrap(), Fq::from_str("1324058075072012235434487435432475167138038307020697692107109639449221355210").map_err(|_| ()).unwrap(), Fq::from_str("2280741586349055747506042609895124770561131703291773597606167229292714672283").map_err(|_| ()).unwrap(), Fq::from_str("8342642686801067599151745804543073218431430128510511854097519427228830935902").map_err(|_| ()).unwrap(), Fq::from_str("5804872450137030484881222816375011671611891409172767315903836302547355567211").map_err(|_| ()).unwrap(), Fq::from_str("1722975888377867150377754546007358852321683900371859149617847398983042108699").map_err(|_| ()).unwrap(), Fq::from_str("3844785829542385783596485235685426296560729005822502996342136441867443806644").map_err(|_| ()).unwrap(), Fq::from_str("7865524733672471629545807438655769994905653621084293741534228698704915032305").map_err(|_| ()).unwrap(), Fq::from_str("4604870400118197846627410365227003116095051732843106288070444355142171193697").map_err(|_| ()).unwrap(), Fq::from_str("7396663240102246685326983722783599910069406483521352376003066677682593551529").map_err(|_| ()).unwrap(), Fq::from_str("2562251907048161610505002011941872579272307640845060634968151143665985063641").map_err(|_| ()).unwrap(), Fq::from_str("1549967745873012439728796357319537856510341052605362255447810692239409569126").map_err(|_| ()).unwrap(), Fq::from_str("2675361235318267782852831143842463470129323681745345795892150710073625490024").map_err(|_| ()).unwrap(), Fq::from_str("5952515328531662133506278749908523813168406237456441333231348726158737827993").map_err(|_| ()).unwrap(), Fq::from_str("765149058941865036128057932286357225650850527698629692287260337544263580183").map_err(|_| ()).unwrap(), Fq::from_str("5107861549007149521309417064185782159016437664360561322217461449735749521355").map_err(|_| ()).unwrap(), Fq::from_str("6054811289965100918685675875806076772391117764616285251043014274951360940458").map_err(|_| ()).unwrap(), Fq::from_str("3021150257892221823371145623069280544210802519558821573046255803434215307106").map_err(|_| ()).unwrap(), Fq::from_str("2349951148273884555754223610972718476313734727994753347922140275202789759113").map_err(|_| ()).unwrap(), Fq::from_str("7464741757222950146597728692311078353722285050789484130848122040799839804081").map_err(|_| ()).unwrap(), Fq::from_str("6143440374630397589785524239524890437846196407245378580042786079554917100025").map_err(|_| ()).unwrap(), Fq::from_str("8108869199046970195135784965120398051817520859906072836232954830507497472406").map_err(|_| ()).unwrap(), Fq::from_str("4543330615312325891995206146091963393605906906268134526982123268349972979568").map_err(|_| ()).unwrap(), Fq::from_str("2416699185013214620616032235584891462719848166930738211630142953290398760570").map_err(|_| ()).unwrap(), Fq::from_str("6422588454652037573796395198458204568192948027316281885057781958698635703784").map_err(|_| ()).unwrap(), Fq::from_str("2753176512591911295642849883163821239600979873944474999642751847294836125734").map_err(|_| ()).unwrap(), Fq::from_str("2084242927899601214521889885294931755978686991565116968491943007020511139147").map_err(|_| ()).unwrap(), Fq::from_str("2073403215075963274916333121594353434738627172574846372799465748874465646086").map_err(|_| ()).unwrap(), Fq::from_str("805727462485829947460569158211183759487011967387029548079796392777127663278").map_err(|_| ()).unwrap(), Fq::from_str("7644302733498043178859808207462153600958948633629480017304790743683189989149").map_err(|_| ()).unwrap(), Fq::from_str("1055919130198517540677260002949855933313800140168942055706866400774505675317").map_err(|_| ()).unwrap(), Fq::from_str("1270807549011244426622360195030010445777199224103252981978753484750810535001").map_err(|_| ()).unwrap(), Fq::from_str("3062638832815882182814299737629784444387312083771780182189407511192704930223").map_err(|_| ()).unwrap(), Fq::from_str("3250605218683250291625962462113654738367568191068479927550634735093675105684").map_err(|_| ()).unwrap(), Fq::from_str("7195689585449903644060107748428768993814054351515763868878127631552001026484").map_err(|_| ()).unwrap(), Fq::from_str("5463684701783637297023776329763188568955181914914150040480647661825126078805").map_err(|_| ()).unwrap(), Fq::from_str("3461741402412621094453736054184632951503469520278303384994481336947474824068").map_err(|_| ()).unwrap(), Fq::from_str("1825640719952814107102672700227871159174928756902824776781836379445075820336").map_err(|_| ()).unwrap(), Fq::from_str("2601613051444961803779204735149397391414858191088745010671304265692474042879").map_err(|_| ()).unwrap(), Fq::from_str("4635969281058658188207006058860837118753838882447160244887269391138702554407").map_err(|_| ()).unwrap(), Fq::from_str("128997914215362395420238092910764569274900897937939764490088963171545037935").map_err(|_| ()).unwrap(), Fq::from_str("1712146771380151054166812188936377224268107361353746408400546416401991093887").map_err(|_| ()).unwrap(), Fq::from_str("4228629634182564023134680984877751386044679584931632240991276197848924809923").map_err(|_| ()).unwrap(), Fq::from_str("5035047909538639326991442481480201165188624039344297682104370694535201375906").map_err(|_| ()).unwrap(), Fq::from_str("5103741083485721500723163060345084352286937901681930969012118407941812832628").map_err(|_| ()).unwrap(), Fq::from_str("5412640154510948062250753766003593471086045830019769477921622649572758290662").map_err(|_| ()).unwrap(), Fq::from_str("2405236901114815911147993145659583854598923748830673527384107282217535511842").map_err(|_| ()).unwrap(), Fq::from_str("5566370615867273353620724182178190374785514908721339249649586264478907881961").map_err(|_| ()).unwrap(), Fq::from_str("4027744204203615381480770314335107290237478652684941731297832925030615680486").map_err(|_| ()).unwrap(), Fq::from_str("6523936250787347355860458330629003743651200477397862558009991269206545113984").map_err(|_| ()).unwrap(), Fq::from_str("6161686116234237281161352475441616341443248794869437839681572835745959074548").map_err(|_| ()).unwrap(), Fq::from_str("7525575876743208897110620505884260332655833460843082825897622700976946482511").map_err(|_| ()).unwrap(), Fq::from_str("2237115972267978312675963521166233128471504215495146335397047992085352245814").map_err(|_| ()).unwrap(), Fq::from_str("5554537721437364039978862510773636297073784845524305938815624627527759212546").map_err(|_| ()).unwrap(), Fq::from_str("1131366061396525831286555020799942358342052981232713177886534891207722108832").map_err(|_| ()).unwrap(), Fq::from_str("4158553907476826357661996188932265121778048152400351572575015534666147504197").map_err(|_| ()).unwrap(), Fq::from_str("17291503353027079924384639322443786353644223754131148087952592790142765953").map_err(|_| ()).unwrap(), Fq::from_str("4397212047494248946146852690590744203216326878971468465379745990495475437080").map_err(|_| ()).unwrap(), Fq::from_str("7949173868582810488858730663334200738606901324929895429004423503793821632462").map_err(|_| ()).unwrap(), Fq::from_str("6215459342559560592187451304936304076944923986964941923799070745053426079642").map_err(|_| ()).unwrap(), Fq::from_str("4977440247830475722238149494554019042533943518099077511620681665001222436026").map_err(|_| ()).unwrap(), Fq::from_str("1779517902117469124113708415314398895793325142433203050379855378860591465901").map_err(|_| ()).unwrap(), Fq::from_str("1229476860669761756739374745317572569061568435911189046597965584762230263405").map_err(|_| ()).unwrap(), Fq::from_str("1206217883105746168409894675089263079747174441121864564981192169579319775140").map_err(|_| ()).unwrap(), Fq::from_str("668483225958754803422145467337449657507124472229215338363158498570144089070").map_err(|_| ()).unwrap(), Fq::from_str("8018593627904594737743996851069758892988858792719921037072184291504879074839").map_err(|_| ()).unwrap(), Fq::from_str("3097974004402447269527481357369894882867485227134964809919158640069796229244").map_err(|_| ()).unwrap(), Fq::from_str("6276251394932785315058947331559117228863052088611714658027864001977607355634").map_err(|_| ()).unwrap(), Fq::from_str("555157249776195994243133409895546885838817035421047469555273421939070131758").map_err(|_| ()).unwrap(), Fq::from_str("2253983755027777744446994494595394425023580055676366069172288601186472131593").map_err(|_| ()).unwrap(), Fq::from_str("5480270040441175242185972267659433587152906298166249721977047210293679189253").map_err(|_| ()).unwrap(), Fq::from_str("1501266407699423757633551540657886078948465047196058532929756167119070835283").map_err(|_| ()).unwrap(), Fq::from_str("6797535251191422788515387886057930780181051375445398590377107465128629258406").map_err(|_| ()).unwrap(), Fq::from_str("2410941480083866070559027300608645459741000163583004540996868884902668865858").map_err(|_| ()).unwrap(), Fq::from_str("1018566537460601455328115662216312963813925705698652520831854517210712109109").map_err(|_| ()).unwrap(), Fq::from_str("488786294241410388472809950053197107818795454083949867713246321756215692899").map_err(|_| ()).unwrap(), Fq::from_str("7722288006991271497149153298287616418813651114986036699272102593544332009488").map_err(|_| ()).unwrap(), Fq::from_str("2702345857074801038143192167202209111713156214492914703918944916809593697353").map_err(|_| ()).unwrap(), Fq::from_str("8275767366974083682922883722457100803977644313140884358110266464189724809815").map_err(|_| ()).unwrap(), Fq::from_str("7488421391296753451684892427964653636746495938417703324788663703515172705174").map_err(|_| ()).unwrap(), Fq::from_str("5011282101735262556600567688696705956364600100832095301130729311304936508599").map_err(|_| ()).unwrap(), Fq::from_str("2039161627862584880582888476628667644939736950155958101998515338704689103824").map_err(|_| ()).unwrap(), Fq::from_str("5965312308601731980104502870666258098491921582177160592030785741105323126137").map_err(|_| ()).unwrap(), Fq::from_str("6786147106206644543457961626731860588522029844679633868356093418275596964557").map_err(|_| ()).unwrap(), Fq::from_str("1605969801093612748158968935200204013845304331084157759240264951960851130521").map_err(|_| ()).unwrap(), Fq::from_str("3308495084830203288654798084517860939546944110847646553718688840783831023357").map_err(|_| ()).unwrap(), Fq::from_str("2304743572883697875845502324127187583081549252425459886030329897652180384036").map_err(|_| ()).unwrap(), Fq::from_str("5053417863143098266797397829076327321004836486860601550827330324811543775148").map_err(|_| ()).unwrap(), Fq::from_str("1675473735979033097123386334847156269681794557828238529484799470552225496137").map_err(|_| ()).unwrap(), Fq::from_str("2538157987899153070608977361610885936892455639778313040440089948575929591565").map_err(|_| ()).unwrap(), Fq::from_str("4948398789369353954337623145831916828353787132851990877645952029711902020296").map_err(|_| ()).unwrap(), Fq::from_str("6509805435878007802995395018106302549412314131803604852450780880595405984596").map_err(|_| ()).unwrap(), Fq::from_str("7040418453499481250448760178064445230449991478933641106912031883139318665246").map_err(|_| ()).unwrap(), Fq::from_str("7524831420484976071546904290033422473044384203280286266421365652166844983530").map_err(|_| ()).unwrap(), Fq::from_str("1389065656052332336786507198030494076633531096787803558400643683126275991587").map_err(|_| ()).unwrap(), Fq::from_str("7334277487252239082136841592734559841523488242116900563357252923726780819366").map_err(|_| ()).unwrap(), Fq::from_str("3220452037809119927291396378526660895790658398338636419237195342728474722926").map_err(|_| ()).unwrap(), Fq::from_str("2120958141785025555786988853446248372777455545071936982907568222534167917603").map_err(|_| ()).unwrap(), Fq::from_str("2046365321313950536784835305340390884196460437114581964521058265228142267748").map_err(|_| ()).unwrap(), Fq::from_str("4166070780259213324434433673427335156400462888169220287495172888761445278512").map_err(|_| ()).unwrap(), Fq::from_str("37448246733393365744439618142361611474131350746404852396478650806384235476").map_err(|_| ()).unwrap(), Fq::from_str("5066722662302357886694573395748819304180873031511933349751045589118051645384").map_err(|_| ()).unwrap(), Fq::from_str("8327008435126539448188216676070465661064681825560792258838135930928453596426").map_err(|_| ()).unwrap(), Fq::from_str("4126570936530606761552005116597648851221954548140776575366907901442481766240").map_err(|_| ()).unwrap(), Fq::from_str("2028599072563441598805340146983867902499209957772160137276005300150334111247").map_err(|_| ()).unwrap(), Fq::from_str("5492957911255821366974039414762376663316392680836056511321374570785040180490").map_err(|_| ()).unwrap(), Fq::from_str("5020498257377109227360618249542544949930229710187954095428553305398665775901").map_err(|_| ()).unwrap(), Fq::from_str("2252630548150556956680527121375469588106147747615475242476933730099408444682").map_err(|_| ()).unwrap(), Fq::from_str("7396677961238332186675955003292154481064857263001980517838630741126598313090").map_err(|_| ()).unwrap(), Fq::from_str("6725677987493295852696979506928516045154122184920259849807312201468108103021").map_err(|_| ()).unwrap(), Fq::from_str("1206359698294544036763360509088334857107693279934542380940889091295128090396").map_err(|_| ()).unwrap(), Fq::from_str("1090722283218218775472717466212814567315311824192500303613486537818957988813").map_err(|_| ()).unwrap(), Fq::from_str("4424974608315390535058154170976181286352444334315751158893690742064082684329").map_err(|_| ()).unwrap(), Fq::from_str("2503229292079826210103565525568283454571358589977885542137643537897451000469").map_err(|_| ()).unwrap(), Fq::from_str("151572031617036280958609617848937531067149659852080773360494521974119403314").map_err(|_| ()).unwrap(), Fq::from_str("7516224108274259455231609500125023273547005538038056166730717572682409757715").map_err(|_| ()).unwrap(), Fq::from_str("4344383705122555518091078149951116336723976647809750724518701471416796902283").map_err(|_| ()).unwrap(), Fq::from_str("2824023219149555903961443341842900177548959113459941561410262147693965931528").map_err(|_| ()).unwrap(), Fq::from_str("4634028328191934175614802722381059035705370841891448293086970276006956193156").map_err(|_| ()).unwrap(), Fq::from_str("2611240062937291166447085564269954738286850618471577865235963570865155739996").map_err(|_| ()).unwrap(), Fq::from_str("7363270328574318967120591373131512017815542399499973348227212494088321794708").map_err(|_| ()).unwrap(), Fq::from_str("8013799771208258129893075767577404816947984333135154678609227276232471999020").map_err(|_| ()).unwrap(), Fq::from_str("5044716502087801967806354858998409546955627036251833922200547389536706344268").map_err(|_| ()).unwrap(), Fq::from_str("4196070695349536502063197465323363626105684126022957408228735638757755528197").map_err(|_| ()).unwrap(), Fq::from_str("4622854284014393527351955824917406410362905247807106315987602360603655240879").map_err(|_| ()).unwrap(), Fq::from_str("788090736677799874230790145926853966465102354464240070942045526762063669154").map_err(|_| ()).unwrap(), Fq::from_str("4402627153697217910832669133492815480105350792694609175719573022112801001051").map_err(|_| ()).unwrap(), Fq::from_str("2012019704378814790366429813720542390744363343380156080331524639822604627555").map_err(|_| ()).unwrap(), Fq::from_str("5857191983966235070006491166849102594312083180294916349019608402906838822636").map_err(|_| ()).unwrap(), Fq::from_str("3767250396658320261180385235930425394211692167694341092584034642903525266399").map_err(|_| ()).unwrap(), Fq::from_str("1246677100122056393160190289384915942913903553035636523507102727672559151072").map_err(|_| ()).unwrap(), Fq::from_str("1532261696895114662547020765504208022098763838254524526221882062432517308451").map_err(|_| ()).unwrap(), Fq::from_str("3808732515606142777355391895027880381618676506069900187942407587064290794242").map_err(|_| ()).unwrap(), Fq::from_str("1353623476693847455479948941601601547113046326418692919598595779268402998581").map_err(|_| ()).unwrap(), Fq::from_str("4568034412324271719121325064468070213724889167849650919135763419284902226766").map_err(|_| ()).unwrap(), Fq::from_str("7526510426616559056662572333389144971303046771067900617866542671167191231461").map_err(|_| ()).unwrap(), Fq::from_str("1984090496354770469005916597848116103497584047469610223736896795951346117351").map_err(|_| ()).unwrap(), Fq::from_str("5541331787863042853282779497076079033660627728184507336806134271359483726681").map_err(|_| ()).unwrap(), Fq::from_str("1123848900066418393565590218457318554330813861593937062840629257573991618437").map_err(|_| ()).unwrap(), Fq::from_str("7119595159662415994152114190752555708079664776543939176828711488509346925273").map_err(|_| ()).unwrap(), Fq::from_str("4402771748854939356784761249919895162348707751181116782165024772616961372683").map_err(|_| ()).unwrap(), Fq::from_str("1238265437447562740111980649669713181292200355777789670554101826300760772353").map_err(|_| ()).unwrap(), Fq::from_str("2348497862084264554632767212774488376307766499049237756254491391649565468261").map_err(|_| ()).unwrap(), Fq::from_str("5261453224553581615160311404160249386402808097114542597496885462964979654036").map_err(|_| ()).unwrap(), Fq::from_str("5263827589381544755339163957749628136213310351975965597342349209572693870177").map_err(|_| ()).unwrap(), Fq::from_str("3560060697657925012926708814205229707654047798512692267374898529520880562411").map_err(|_| ()).unwrap(), Fq::from_str("2373941392307013801383592832488158577752891975962531227890579346355584846451").map_err(|_| ()).unwrap(), Fq::from_str("1961718924193031296798751690610974386828264605504889890771349325463025336195").map_err(|_| ()).unwrap(), Fq::from_str("2868124060985675920436079106596156284905943204632191942776718861373436542214").map_err(|_| ()).unwrap(), Fq::from_str("7845669997742840217688401931462742306009286446506113818599869436449377367754").map_err(|_| ()).unwrap(), Fq::from_str("6173407037353888350243445875635080301447444707547969387574700153706191518628").map_err(|_| ()).unwrap(), Fq::from_str("7098672234934132886939827569385283896802454444867206042797084120044836023173").map_err(|_| ()).unwrap(), Fq::from_str("5351899839977801032921348451916620591965842541634687391321577183284412726675").map_err(|_| ()).unwrap(), Fq::from_str("5620070496211129683300134579883602187317512502813714244130767313773035697719").map_err(|_| ()).unwrap(), Fq::from_str("6979709989426911001555340276783571500889381472387839399740190281565272894942").map_err(|_| ()).unwrap(), Fq::from_str("5135679336879799934417470005708054630248446694753779453216003661110099588738").map_err(|_| ()).unwrap(), Fq::from_str("138682133719722492420465554190750590837692301151943132427693112118115423576").map_err(|_| ()).unwrap(), Fq::from_str("3151429238189687747957628376177893410569754087843736384164577812731670460702").map_err(|_| ()).unwrap(), Fq::from_str("121814244732221808057679271483647003115742086673430961846079912667911157285").map_err(|_| ()).unwrap(), Fq::from_str("8371534681354007650628559426369748872592875254339532946571231278729041076560").map_err(|_| ()).unwrap(), Fq::from_str("3224012810937385216119822993567522300423926201642509833393672779197095195785").map_err(|_| ()).unwrap(), Fq::from_str("6906061554583095104670274977270927222784149562340469632678517151372610188027").map_err(|_| ()).unwrap(), Fq::from_str("7241632034261962184770214288273863345887509924743840645741009488606102609959").map_err(|_| ()).unwrap(), Fq::from_str("1777064018030106946519734883392052222472885181372642200849135017704677431530").map_err(|_| ()).unwrap(), Fq::from_str("8324217430862472098854213825386877833955599293369985729017003228770288665572").map_err(|_| ()).unwrap(), Fq::from_str("5729830751513293833514450194921789300271973437013945551402502294027950049854").map_err(|_| ()).unwrap(), Fq::from_str("2187758249046601765496974874050556156501868988788103300613705176170900124540").map_err(|_| ()).unwrap(), Fq::from_str("3661666483638282285384645460120103900291506320035168165941968172560553131692").map_err(|_| ()).unwrap(), Fq::from_str("71172694711798875087336054947012411069704167761224496888177661616309271064").map_err(|_| ()).unwrap(), Fq::from_str("5479753513109529765878513587350339376225541758759421668496911367601412633643").map_err(|_| ()).unwrap(), Fq::from_str("6657339706920780308636317262842926498794391181237998790979567359048507409879").map_err(|_| ()).unwrap(), Fq::from_str("2844473401317966605062077825184314014360268580545792284786608033783639709289").map_err(|_| ()).unwrap(), Fq::from_str("5533028151199355284748909539327941418386476750051202689820514906007980206539").map_err(|_| ()).unwrap(), Fq::from_str("2147788020290210661458158885081344432970895350439383460330782349760173328255").map_err(|_| ()).unwrap()]), +// mds: MdsMatrix::from_elements(vec![Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap()]), +// alpha: Alpha::Exponent(17), +// rounds: RoundNumbers {r_P: 31, r_F: 8}, +// optimized_mds: OptimizedMdsMatrices { +// M_hat: SquareMatrix::new(6, 6, vec![Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap()]), +// v: Matrix::new(1, 6, vec![Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap()]), +// w: Matrix::new(6, 1, vec![Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap()]), +// M_prime: SquareMatrix::new(7, 7, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap()]), +// M_doubleprime: SquareMatrix::new(7, 7, vec![Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("4222230874714185212124412469390773265687949667577031913967616727958704619531").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929237").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159454").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3838391704285622920113102244900702968807226970524574467243287934507913290365").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6141426726856996672180963591841124750091563152839319147589260695212661264822").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6082374546791064011871531249611883165956067353292787232708594726989462598734").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap()]), +// M_inverse: SquareMatrix::new(7, 7, vec![Fq::from_str("20612592").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917192806825").map_err(|_| ()).unwrap(), Fq::from_str("901800900").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455915485397121").map_err(|_| ()).unwrap(), Fq::from_str("2229907680").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455916071294433").map_err(|_| ()).unwrap(), Fq::from_str("325909584").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917192806825").map_err(|_| ()).unwrap(), Fq::from_str("2308610304").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455907669789321").map_err(|_| ()).unwrap(), Fq::from_str("20987366400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455892880254561").map_err(|_| ()).unwrap(), Fq::from_str("14820309504").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455913777675105").map_err(|_| ()).unwrap(), Fq::from_str("901800900").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455907669789321").map_err(|_| ()).unwrap(), Fq::from_str("41503336875").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455827229149041").map_err(|_| ()).unwrap(), Fq::from_str("106135029000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455852901195441").map_err(|_| ()).unwrap(), Fq::from_str("15888092220").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455915485397121").map_err(|_| ()).unwrap(), Fq::from_str("20987366400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455827229149041").map_err(|_| ()).unwrap(), Fq::from_str("197317120000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455683799863041").map_err(|_| ()).unwrap(), Fq::from_str("142714091520").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455882102367441").map_err(|_| ()).unwrap(), Fq::from_str("2229907680").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455892880254561").map_err(|_| ()).unwrap(), Fq::from_str("106135029000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455683799863041").map_err(|_| ()).unwrap(), Fq::from_str("277995157440").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455746821301521").map_err(|_| ()).unwrap(), Fq::from_str("42368245920").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455916071294433").map_err(|_| ()).unwrap(), Fq::from_str("14820309504").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455852901195441").map_err(|_| ()).unwrap(), Fq::from_str("142714091520").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455746821301521").map_err(|_| ()).unwrap(), Fq::from_str("105089467392").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891217959745").map_err(|_| ()).unwrap(), Fq::from_str("325909584").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455913777675105").map_err(|_| ()).unwrap(), Fq::from_str("15888092220").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455882102367441").map_err(|_| ()).unwrap(), Fq::from_str("42368245920").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891217959745").map_err(|_| ()).unwrap(), Fq::from_str("6547819824").map_err(|_| ()).unwrap()]), +// M_hat_inverse: SquareMatrix::new(6, 6, vec![Fq::from_str("36072036").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917138698771").map_err(|_| ()).unwrap(), Fq::from_str("787026240").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455916294285201").map_err(|_| ()).unwrap(), Fq::from_str("771891120").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917199725737").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917138698771").map_err(|_| ()).unwrap(), Fq::from_str("2049547500").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455911397233041").map_err(|_| ()).unwrap(), Fq::from_str("8576568000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455911436272041").map_err(|_| ()).unwrap(), Fq::from_str("1629547920").map_err(|_| ()).unwrap(), Fq::from_str("787026240").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455911397233041").map_err(|_| ()).unwrap(), Fq::from_str("17758540800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891924579841").map_err(|_| ()).unwrap(), Fq::from_str("17839261440").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455912520595281").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455916294285201").map_err(|_| ()).unwrap(), Fq::from_str("8576568000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891924579841").map_err(|_| ()).unwrap(), Fq::from_str("36759690240").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891562581841").map_err(|_| ()).unwrap(), Fq::from_str("7110754560").map_err(|_| ()).unwrap(), Fq::from_str("771891120").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455911436272041").map_err(|_| ()).unwrap(), Fq::from_str("17839261440").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891562581841").map_err(|_| ()).unwrap(), Fq::from_str("18244699200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455912372454561").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917199725737").map_err(|_| ()).unwrap(), Fq::from_str("1629547920").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455912520595281").map_err(|_| ()).unwrap(), Fq::from_str("7110754560").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455912372454561").map_err(|_| ()).unwrap(), Fq::from_str("1394801856").map_err(|_| ()).unwrap()]), +// M_00: Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), +// M_i: Matrix::new(7, 7, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2971532415911286051480807062801752246591259658502923419803409154127716874227").map_err(|_| ()).unwrap(), Fq::from_str("186721909275808996213483557735547595196583288549267688741666424698377478502").map_err(|_| ()).unwrap(), Fq::from_str("171569226090454573056015571244986560811254383892286118258836989224221642407").map_err(|_| ()).unwrap(), Fq::from_str("3059343727662923148040974376454314232464250064500758647733074274651761726585").map_err(|_| ()).unwrap(), Fq::from_str("4534790817941674769520151899347645131818454957902974337909760859064524815201").map_err(|_| ()).unwrap(), Fq::from_str("752504296504922106039276029343024737384939687135507584023218842040330119392").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("186721909275808996213483557735547595196583288549267688741666424698377478502").map_err(|_| ()).unwrap(), Fq::from_str("6878014754292273965662364339621838293207934661231232074331918091480453008340").map_err(|_| ()).unwrap(), Fq::from_str("183363162394153695662618300137233056599401818684870300820436590183000839325").map_err(|_| ()).unwrap(), Fq::from_str("323309267169864967183993273237976405791799941298379378023660391163003148074").map_err(|_| ()).unwrap(), Fq::from_str("2984385967212965149577676299752889643335871322269624334601938328063273591337").map_err(|_| ()).unwrap(), Fq::from_str("2387384200502060729167223926301911620388467206818002709702008525318991518803").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("171569226090454573056015571244986560811254383892286118258836989224221642407").map_err(|_| ()).unwrap(), Fq::from_str("183363162394153695662618300137233056599401818684870300820436590183000839325").map_err(|_| ()).unwrap(), Fq::from_str("2202640673133172626883180044813653960680889430908222833514846101262482081955").map_err(|_| ()).unwrap(), Fq::from_str("4888295793251851281899864344306186279311431201119991135199837230820994784636").map_err(|_| ()).unwrap(), Fq::from_str("2433731852407108819432196859978838899151281290436756458939839325499215812031").map_err(|_| ()).unwrap(), Fq::from_str("731926506771160032112511263905821283491821021472892417724296623943939021102").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3059343727662923148040974376454314232464250064500758647733074274651761726585").map_err(|_| ()).unwrap(), Fq::from_str("323309267169864967183993273237976405791799941298379378023660391163003148074").map_err(|_| ()).unwrap(), Fq::from_str("4888295793251851281899864344306186279311431201119991135199837230820994784636").map_err(|_| ()).unwrap(), Fq::from_str("4879307465283136396656540908967210645566803069610027203615451315780292362539").map_err(|_| ()).unwrap(), Fq::from_str("53588176193090599021120787870659787980315522270614534505384592464815769697").map_err(|_| ()).unwrap(), Fq::from_str("408978125764434241332678747716884128531757404579793070344432643042299921165").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4534790817941674769520151899347645131818454957902974337909760859064524815201").map_err(|_| ()).unwrap(), Fq::from_str("2984385967212965149577676299752889643335871322269624334601938328063273591337").map_err(|_| ()).unwrap(), Fq::from_str("2433731852407108819432196859978838899151281290436756458939839325499215812031").map_err(|_| ()).unwrap(), Fq::from_str("53588176193090599021120787870659787980315522270614534505384592464815769697").map_err(|_| ()).unwrap(), Fq::from_str("3547177385091292298144724315597646110249274215668284461731278710569085728882").map_err(|_| ()).unwrap(), Fq::from_str("5351366443528656762905344630680491023130811138760868630072321645701479274440").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("752504296504922106039276029343024737384939687135507584023218842040330119392").map_err(|_| ()).unwrap(), Fq::from_str("2387384200502060729167223926301911620388467206818002709702008525318991518803").map_err(|_| ()).unwrap(), Fq::from_str("731926506771160032112511263905821283491821021472892417724296623943939021102").map_err(|_| ()).unwrap(), Fq::from_str("408978125764434241332678747716884128531757404579793070344432643042299921165").map_err(|_| ()).unwrap(), Fq::from_str("5351366443528656762905344630680491023130811138760868630072321645701479274440").map_err(|_| ()).unwrap(), Fq::from_str("6443272067441507346009006217334521613736782334945581007272802366242342772219").map_err(|_| ()).unwrap()]), +// v_collection: vec![Matrix::new(1, 6, vec![Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("7992079869994707722949780745632535110052190442199381837152988806493262315521").map_err(|_| ()).unwrap(), Fq::from_str("2400974937883106114672334551046419876877314235570589973299839194906676079275").map_err(|_| ()).unwrap(), Fq::from_str("1495094186720882779478446055629510586276010748690967517684035711738816437362").map_err(|_| ()).unwrap(), Fq::from_str("4553294399166630813180549490103937947111116882222551044268790113481775975974").map_err(|_| ()).unwrap(), Fq::from_str("4721650076204707538087345000927459081142480643047726768984534143485978627990").map_err(|_| ()).unwrap(), Fq::from_str("2863481130378056794722734134719622953652020593221982834037837906540290599614").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("2768918473928334563491601943898525318711312384477821833903327906778447410489").map_err(|_| ()).unwrap(), Fq::from_str("390642325379555301779940889089724185339708502097253513681223943887364803760").map_err(|_| ()).unwrap(), Fq::from_str("3341494777613818948885593684620865393793543176676768812401695367227353712488").map_err(|_| ()).unwrap(), Fq::from_str("3238939092625012882967350941997562123576024993494722172637725731749557095600").map_err(|_| ()).unwrap(), Fq::from_str("4719349967830965473744809299509667812604001855667592936741585606643692149352").map_err(|_| ()).unwrap(), Fq::from_str("4118738110220967041544862372729285207062492976349765936513039911780592002098").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("2327497137436718627416140967107253516969051692346333557812593379728310855116").map_err(|_| ()).unwrap(), Fq::from_str("7027060212920793663243495857988487919802233961807448052017033131129072623221").map_err(|_| ()).unwrap(), Fq::from_str("4986892509600647556741276362324904991790885183785366525418677315894485947761").map_err(|_| ()).unwrap(), Fq::from_str("1514196322905422597773563541749108811799537189448954309915737826284173592065").map_err(|_| ()).unwrap(), Fq::from_str("2249325158676764834620105602954601732785960081258375253389376891593204700996").map_err(|_| ()).unwrap(), Fq::from_str("8292955926579449576107812791030712311452043412867290027596539289541535522336").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("4271217437818815949938990517320338285099458061324498208787759561521720261113").map_err(|_| ()).unwrap(), Fq::from_str("7133074491574613903248543904967935845737671052466549454760124028941233544522").map_err(|_| ()).unwrap(), Fq::from_str("6296277583242434657903691348184845043089157989002336901640786368030837706503").map_err(|_| ()).unwrap(), Fq::from_str("3166968730869456307780998523723323465244619347522329739887414362745055780253").map_err(|_| ()).unwrap(), Fq::from_str("1011565385556723881562935636761493104958379987370689642626714748400539653406").map_err(|_| ()).unwrap(), Fq::from_str("2954554307111187065491675606782183162991387038143329464047999217849246204012").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("6344947172936788237003814657546218017886560198045266774401313596768565864541").map_err(|_| ()).unwrap(), Fq::from_str("3713003075137186807051079872378882285939755720355584380535354110659107294575").map_err(|_| ()).unwrap(), Fq::from_str("5152590182003496369775702721302332735216105958051124635273579451994132815179").map_err(|_| ()).unwrap(), Fq::from_str("1307013476906003321873015425370921844153846593509911768631796973903071734623").map_err(|_| ()).unwrap(), Fq::from_str("7678377664054863651940730677777426644560395525437392418262453813469093423909").map_err(|_| ()).unwrap(), Fq::from_str("7585889197547988929336839597495982627948266501715953301285214846469351262193").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("3633240764036730302829799241612384674818969520874781821058805867490455983157").map_err(|_| ()).unwrap(), Fq::from_str("2271709291405670066056603360416702015832511486624100124944712619160478403539").map_err(|_| ()).unwrap(), Fq::from_str("2193969055596424961106027792474671936780332680786760487915444318615876218096").map_err(|_| ()).unwrap(), Fq::from_str("5325697257668381005942764630668645989999759604505406772342071072526706670307").map_err(|_| ()).unwrap(), Fq::from_str("4730786278433336134651262395727595065042879520766462401226585451158905758810").map_err(|_| ()).unwrap(), Fq::from_str("6470817977317643965786306269949209657397893408314615347946520127545549358598").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("1804643137399501997892145221142349350062557457891317434975618667555841579290").map_err(|_| ()).unwrap(), Fq::from_str("4148350407437797777266489015241457439089581174966917344245442806404723533240").map_err(|_| ()).unwrap(), Fq::from_str("1362921597439020253582567376557520709739025907567831051509120598334422442772").map_err(|_| ()).unwrap(), Fq::from_str("7767987822764109549530323326214711330446552401944236086829655879830224255404").map_err(|_| ()).unwrap(), Fq::from_str("738474159265524751959043072028569272247479454111304610092650100105873348475").map_err(|_| ()).unwrap(), Fq::from_str("8126496732685771106040829934119202733259053277370631193395442806484780250105").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("604259321698896847790373602007734259257224956435886231718382787067516452575").map_err(|_| ()).unwrap(), Fq::from_str("7890756385333024244643106904245128455457999845996640138648620086273529574872").map_err(|_| ()).unwrap(), Fq::from_str("5384484290573392919892685721229692603955265518656239599366064134080331150756").map_err(|_| ()).unwrap(), Fq::from_str("5075492807667910554854483463036160344630540108549987845023663819348285370139").map_err(|_| ()).unwrap(), Fq::from_str("3759501637553048143369895401832756596707795281888811801227629449525465314470").map_err(|_| ()).unwrap(), Fq::from_str("1407293680556190241562496593446139970756456679522246187412238430873051529548").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("3779930024374424479555590057209848113560145826106709240135203119060739421956").map_err(|_| ()).unwrap(), Fq::from_str("6961850372861798510287610705950380316759460313239607079580294484733986084733").map_err(|_| ()).unwrap(), Fq::from_str("2984249821372139948857292705782224945602096484420679430340040977927960386230").map_err(|_| ()).unwrap(), Fq::from_str("27316756714969795316490676801391467524785542207044951498839555833562070262").map_err(|_| ()).unwrap(), Fq::from_str("5976606160493736325868817736717792627076259638061437576653350786274679361773").map_err(|_| ()).unwrap(), Fq::from_str("224876311782950451539995454407053277116060857536520210942760060162752854011").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("4955291914153931034825808818521925115939289999350929183099214254110926278122").map_err(|_| ()).unwrap(), Fq::from_str("6987333570739662956676463142636190127757043786003275247382629721771447545475").map_err(|_| ()).unwrap(), Fq::from_str("5528748383645271914644859952110503234146840824880133768530126692882774213853").map_err(|_| ()).unwrap(), Fq::from_str("4709941490691789097736576597266091150508411443160619838738784384406239651314").map_err(|_| ()).unwrap(), Fq::from_str("5635257327009345870850179100670864958913188441579286691253101961921449428807").map_err(|_| ()).unwrap(), Fq::from_str("6357447447406381200258919404586301438328184250241912943129018587607864264656").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("3323526238693028291659175131900839845766559375176859383887048667810017779920").map_err(|_| ()).unwrap(), Fq::from_str("259015480570643608683584850533938410337013173115267025007113449688099907661").map_err(|_| ()).unwrap(), Fq::from_str("1782523703735097240127183266065276335911308681464729426279652136355520240270").map_err(|_| ()).unwrap(), Fq::from_str("2505527043450937088610326430439132872477914039077900293440797157888058002140").map_err(|_| ()).unwrap(), Fq::from_str("2706759487962169205717504449325545627039776222411638449607886578747780287300").map_err(|_| ()).unwrap(), Fq::from_str("2768515238740647481746046219999136104654387949908480290919981398852317543977").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("2823198562735937069527670429520260372423636886876867432966981737644494818575").map_err(|_| ()).unwrap(), Fq::from_str("2408256888424885112079591420303146947714638647773938774567664304344118054240").map_err(|_| ()).unwrap(), Fq::from_str("4658918560159645496186157367158442238529974205112543302077659248985492246584").map_err(|_| ()).unwrap(), Fq::from_str("7047369142792914103336136353001081256611097211997660456007691752759174101341").map_err(|_| ()).unwrap(), Fq::from_str("4137626172684074448770720893250301887786479528327279266087239230936650360863").map_err(|_| ()).unwrap(), Fq::from_str("4600823758612394242491233053721253163318785578501576974189513328159243409479").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("1457452467467324445825354759502437222687338714696576946498157051037951095497").map_err(|_| ()).unwrap(), Fq::from_str("572185086166093350300248602124835164252957797536269343092702972292406721769").map_err(|_| ()).unwrap(), Fq::from_str("375507034351175620416183353751741018151850383770460361090460190272934066962").map_err(|_| ()).unwrap(), Fq::from_str("8385315398347827003747853011292188020245328012469399813008893861594009021083").map_err(|_| ()).unwrap(), Fq::from_str("2018462698917613238438997644206820102431756452641295936632999179192615642414").map_err(|_| ()).unwrap(), Fq::from_str("7908888764265328835673473216839016757412647830054190424517934029795934333335").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("7659164801145646626814986844830311716251402235734340761554764194202408740203").map_err(|_| ()).unwrap(), Fq::from_str("2280572786444500051293327673737782500962544310705112166461600186675096392629").map_err(|_| ()).unwrap(), Fq::from_str("5797289699486501736648385448361731791173415431904203287915686506129309317811").map_err(|_| ()).unwrap(), Fq::from_str("309516798119063989349747065107692209017586995167526997803141110082423199051").map_err(|_| ()).unwrap(), Fq::from_str("6987829457800001580263330220326477757312146002166840381406236751807812734595").map_err(|_| ()).unwrap(), Fq::from_str("3573293242211115572375585879384780991073468600067229441489796956652145548760").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("6913230520739304537684162939665887112556563997976053315466810090217988752944").map_err(|_| ()).unwrap(), Fq::from_str("878570080567377334739150071807321599939730189375918370216074727611936409223").map_err(|_| ()).unwrap(), Fq::from_str("2937090995014433089078245105618695814724783942922696703157618620510350033232").map_err(|_| ()).unwrap(), Fq::from_str("8321335430874574197004632306034006293742002828891072892783045851538109349687").map_err(|_| ()).unwrap(), Fq::from_str("6703396323441407289054101792401921107339395525549166965716835828144862935657").map_err(|_| ()).unwrap(), Fq::from_str("7981157534429456627251922015725247638058718560368000049447170697424187823765").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("3406040245914593459201988905832973653763939543017083311401987597133896186004").map_err(|_| ()).unwrap(), Fq::from_str("6719892518358096922360311024656759390112987630121744699683778208789109708980").map_err(|_| ()).unwrap(), Fq::from_str("4120931279238012564995997542799695468600389707240705956463031772869350982446").map_err(|_| ()).unwrap(), Fq::from_str("4821529834864949965445702867483423396497428237762794632531037976039217207758").map_err(|_| ()).unwrap(), Fq::from_str("4368153594563176824445777540536364229696491498760708732282363653286727590317").map_err(|_| ()).unwrap(), Fq::from_str("2809979344891853744733163055173964932021145937950394306579825690484434996852").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("2169089802823167233694168231653589499983287197905996013634547680871589911846").map_err(|_| ()).unwrap(), Fq::from_str("8043366846396684996803153547701316907486853456017101110993970004381981172608").map_err(|_| ()).unwrap(), Fq::from_str("4337024048992420305249758485692125528051187917843229901637206221823495725611").map_err(|_| ()).unwrap(), Fq::from_str("3879961221429927232007254860210576170111768768505481975736357869623697449267").map_err(|_| ()).unwrap(), Fq::from_str("2831448238952612834889178505177298512177094599330545187556904977665994153519").map_err(|_| ()).unwrap(), Fq::from_str("7911296809503676750079719485483266056330132951586854486165456996937281246225").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("4360577751598251443789350641893513497267286834366304610297037166297502140865").map_err(|_| ()).unwrap(), Fq::from_str("245392484555628045512953049249084465517336666377483464922307079679412032594").map_err(|_| ()).unwrap(), Fq::from_str("8131376494830434978991910364061547715814456858699143618464048389850916495304").map_err(|_| ()).unwrap(), Fq::from_str("4303357116753189179755435352506698625993860632018961817221653363073421605551").map_err(|_| ()).unwrap(), Fq::from_str("5475538941174116944168813910979568357127272783189294540580767652301126750820").map_err(|_| ()).unwrap(), Fq::from_str("1213363963268142990085233684143983290510566594530609859286044551429896518762").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("5194968509028232939505565441480429795924044289405054432844873084494956981042").map_err(|_| ()).unwrap(), Fq::from_str("3339670687515266746076864263975658693121911316758729968755577987089274104131").map_err(|_| ()).unwrap(), Fq::from_str("5651849134818027659080808521198039120782090975677462664032542433372486989729").map_err(|_| ()).unwrap(), Fq::from_str("3420499397483573303157014937470048467469939224584966186661369284206294376334").map_err(|_| ()).unwrap(), Fq::from_str("4129598328560531351709336581780087796070371276088587604563881631487174216338").map_err(|_| ()).unwrap(), Fq::from_str("6644756600626228865698859345091173225505897653872661586955701155264222960300").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("3986684349493474991649489907681056939682958623892310913719091217007666755897").map_err(|_| ()).unwrap(), Fq::from_str("327176924856451208981276134998379869770062842638901321796043647507966610743").map_err(|_| ()).unwrap(), Fq::from_str("1187796565822843833708875996460989236478576641001829504485590611431129523823").map_err(|_| ()).unwrap(), Fq::from_str("4627537935009432513142903965547069426720172883635794424402963121304865007661").map_err(|_| ()).unwrap(), Fq::from_str("2700275217520338411096320582320968544157205723036502430829135416335561594133").map_err(|_| ()).unwrap(), Fq::from_str("2010982744359185978033316039085624780275063506780801742451967544059579582778").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("62320420000000082093831685700692039543455003776204858891538140700730562780").map_err(|_| ()).unwrap(), Fq::from_str("1030473664643997546892309530264610266562252064765767989420593343119523365039").map_err(|_| ()).unwrap(), Fq::from_str("3775424158905106596190209034980311526318993016990633917227873200003608699756").map_err(|_| ()).unwrap(), Fq::from_str("5974263175179782189682688179096432481883774971814035358332879844030775931428").map_err(|_| ()).unwrap(), Fq::from_str("2640226464730323586704804033099750959805295453135356862672242892720496268119").map_err(|_| ()).unwrap(), Fq::from_str("8002163508658524653520615183578621606921539531587925684792192660184886980755").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("691280730493729216703430834325558620682769299173691343365944785758763047868").map_err(|_| ()).unwrap(), Fq::from_str("4119931719292839649421913734519490484021535835673728385117744421025476922754").map_err(|_| ()).unwrap(), Fq::from_str("3336230237376767290239549407498555620337888923640971638181172506247523415292").map_err(|_| ()).unwrap(), Fq::from_str("5062448259439827405458323602642928024404096034675093829669184681939070922779").map_err(|_| ()).unwrap(), Fq::from_str("7213237486779785173776222423449751232607441389041088658694926504335765055239").map_err(|_| ()).unwrap(), Fq::from_str("279468899677344087839039447509430543322933366755265852333823117675260543537").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("897995524923151874204111111262730806578836541267003314322406203899040805389").map_err(|_| ()).unwrap(), Fq::from_str("5479704205758736332607406159422767470050176207843890033213762409088531337153").map_err(|_| ()).unwrap(), Fq::from_str("1681670828251006565041847492695775223718890987641504922146296378400634282651").map_err(|_| ()).unwrap(), Fq::from_str("4732714417093501014308524891842081985702371381289583422397068939092320865389").map_err(|_| ()).unwrap(), Fq::from_str("7272371774227848893494196263072662939920596010915412568335234864584713153035").map_err(|_| ()).unwrap(), Fq::from_str("7493068195260429794675685959421480208652466916482902456883009489376311197921").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("7702815478478514521701541123140603389699263970322897445281310660622840913737").map_err(|_| ()).unwrap(), Fq::from_str("4188794212871506418360682573034054099921577729476808717530816826995761620864").map_err(|_| ()).unwrap(), Fq::from_str("835608170379202553185618372885326648949518436995563652190406505915370722674").map_err(|_| ()).unwrap(), Fq::from_str("4046128912327988078070215313283311540030645981021489992643379538966290463143").map_err(|_| ()).unwrap(), Fq::from_str("6800097811760596404542299388591346960309301857724844653559409281805123921815").map_err(|_| ()).unwrap(), Fq::from_str("5233002066189155441689969077161996207831496096774982003037111756375909305057").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("5693575984813870208886090686958376767942919984076686826314075819406693357115").map_err(|_| ()).unwrap(), Fq::from_str("1673383684557377085138754431432381708512163663619744494364185316167642829139").map_err(|_| ()).unwrap(), Fq::from_str("5742486983635806136512567664316411501363882099678481167078842119610752489373").map_err(|_| ()).unwrap(), Fq::from_str("1694513786365278810553764605135878317964196139382277672113919449181980565862").map_err(|_| ()).unwrap(), Fq::from_str("7380814210861661532301767653840588064429392733090126387661183815352799317375").map_err(|_| ()).unwrap(), Fq::from_str("7085891307035659653390675208067614851382123841240589557475796465408539761469").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("6547869538324066602850908408298264694345256117322034970199481297929958411615").map_err(|_| ()).unwrap(), Fq::from_str("7332387606884107254870646732635892592261432704483778002493738638111043992105").map_err(|_| ()).unwrap(), Fq::from_str("6742000149393280800083266454420071646721497345052615543539504296217070579417").map_err(|_| ()).unwrap(), Fq::from_str("6495994531606341510751550342241116238121080840162105656705775342189804517181").map_err(|_| ()).unwrap(), Fq::from_str("586603087362199507562771084888513879800221064624129056723478396083904343376").map_err(|_| ()).unwrap(), Fq::from_str("6774051440877927848134032916449754949453620909444130679324306069789791753664").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("4257326995725534305721882447368934910773550510778071306430418447853777775052").map_err(|_| ()).unwrap(), Fq::from_str("4202117970594662030203468603818939602501567096577993999017471841515492725043").map_err(|_| ()).unwrap(), Fq::from_str("6976403048862011221249333237090614675202663631455431445386958934096391690840").map_err(|_| ()).unwrap(), Fq::from_str("2808537441332221258433677344213859082405312320403187797854727579979313542432").map_err(|_| ()).unwrap(), Fq::from_str("883388542378631172482616227511249901109681641934985320810473744099020836845").map_err(|_| ()).unwrap(), Fq::from_str("2977107441688382108192492711126319843440372379163053797449179494013580160637").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("5713473266986796506811001887871816973415558565554940938139635148763794224262").map_err(|_| ()).unwrap(), Fq::from_str("4637959147832857689884957887319565727209143127817227072780119194297178805014").map_err(|_| ()).unwrap(), Fq::from_str("4855692527966263955051790710403356853449219823450653161958996979000781189584").map_err(|_| ()).unwrap(), Fq::from_str("925019382016372314618558131501990895754156999722676544190390953561091127847").map_err(|_| ()).unwrap(), Fq::from_str("6105423255520462525662991288037968308792655943978581420535598040036599991107").map_err(|_| ()).unwrap(), Fq::from_str("2583976545504230682979644750684382262608387235801641445703856992557442328241").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("5177706977962292842851753131934739566931571273157939983013622125850694666613").map_err(|_| ()).unwrap(), Fq::from_str("6027171566415239037360005269963084906418120366156018575196784770066430293982").map_err(|_| ()).unwrap(), Fq::from_str("7298767999809211852257612226305319450835672742831373219899936566011927244606").map_err(|_| ()).unwrap(), Fq::from_str("6628611823733949782085400455554362990990087712656001119059742556615651144627").map_err(|_| ()).unwrap(), Fq::from_str("3912675480422924202570397920970262758909643800193454897495816031838465649584").map_err(|_| ()).unwrap(), Fq::from_str("6776290655773766806134037706320799618035287628352809475860968944984210923889").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("3935774520161526740097689550249405987046328390443521871924853723988707896330").map_err(|_| ()).unwrap(), Fq::from_str("6918786608398592617276629876715484486041233343502195959209083096568163992460").map_err(|_| ()).unwrap(), Fq::from_str("3798804619192181012547382063045284903891320386224253033203661634354532335359").map_err(|_| ()).unwrap(), Fq::from_str("6958359647886431719493646056064811341300360163107724957953149340023495089048").map_err(|_| ()).unwrap(), Fq::from_str("6983827742609619254818998935222656639601430411092917449808525919708994534917").map_err(|_| ()).unwrap(), Fq::from_str("2677669127039915070153922045109578473191675770880810440570147864345552626822").map_err(|_| ()).unwrap()])], +// w_hat_collection: vec![Matrix::new(6, 1, vec![Fq::from_str("4222230874714185212124412469390773265687949667577031913967616727958704619531").map_err(|_| ()).unwrap(), Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929237").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159454").map_err(|_| ()).unwrap(), Fq::from_str("3838391704285622920113102244900702968807226970524574467243287934507913290365").map_err(|_| ()).unwrap(), Fq::from_str("6141426726856996672180963591841124750091563152839319147589260695212661264822").map_err(|_| ()).unwrap(), Fq::from_str("6082374546791064011871531249611883165956067353292787232708594726989462598734").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("4222230874714185212124412469390773265687949667577031913967616728218408433999").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233453922486635241").map_err(|_| ()).unwrap(), Fq::from_str("5920955126100").map_err(|_| ()).unwrap(), Fq::from_str("6909105067714121256203584040821265343853008546944234041037918273581901234739").map_err(|_| ()).unwrap(), Fq::from_str("5373748385999872088158343142860984156330117758734404254140603114305521263287").map_err(|_| ()).unwrap(), Fq::from_str("7322470328175649878369610436425956432801479143769957445202580058028627621964").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("19694526679434762608922").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063676511134982758038587766").map_err(|_| ()).unwrap(), Fq::from_str("449782197840604804334880").map_err(|_| ()).unwrap(), Fq::from_str("6909105067714121256203584040821265343853008546944233392444095909506781412099").map_err(|_| ()).unwrap(), Fq::from_str("1535356681714249168045240897960281187522890788209830242838847199288190395902").map_err(|_| ()).unwrap(), Fq::from_str("6318583267054794653109260618528849502498050551478914766817831298892896986601").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("1497032304330324162618458541417474").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375887824981810411585137515900771992241").map_err(|_| ()).unwrap(), Fq::from_str("34189292491655564496915855909282960").map_err(|_| ()).unwrap(), Fq::from_str("767678340857124584022620448980140593761396092444739590789666329896247709571").map_err(|_| ()).unwrap(), Fq::from_str("6909105067714121256203584040821265343853043204558323526628825895326181628259").map_err(|_| ()).unwrap(), Fq::from_str("3365974263758161637637643507066770295723251041050700771527752329307650396823").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("113794127934652073573359854518539457356074408").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938780671607019838393861908837732848909298605355941").map_err(|_| ()).unwrap(), Fq::from_str("2598835557921291792385119776205377404281832320").map_err(|_| ()).unwrap(), Fq::from_str("6141426726856996672180963591837377175954278226909094808814703658100074323128").map_err(|_| ()).unwrap(), Fq::from_str("3070713363428498336090481795923196809230236874981638381328917319064102149484").map_err(|_| ()).unwrap(), Fq::from_str("5609957106263602729396072511777225851849766536266586933036012637836350010753").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("8649849297986071665276157533420698605253745215327156136").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424182319188751980067582585362494872935535074887074931523841").map_err(|_| ()).unwrap(), Fq::from_str("197545658421149818917561971141042446745854486127340997440").map_err(|_| ()).unwrap(), Fq::from_str("6141426726856996671896098703722601375622694308040571764542738889888950803608").map_err(|_| ()).unwrap(), Fq::from_str("3070713363428498336290733417831436517150502940615193805698933884644612054444").map_err(|_| ()).unwrap(), Fq::from_str("6023322366725131351507016665858479160691537412781490695942055328652698883770").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("657502230041317283767025639240476313891746830730683023968962359712").map_err(|_| ()).unwrap(), Fq::from_str("8444461744373059349037989890554749705790828340758533079207675960904452050641").map_err(|_| ()).unwrap(), Fq::from_str("15016066346629390132233299998858409247978718327591153325656946772480").map_err(|_| ()).unwrap(), Fq::from_str("2303035000917898327698950636348149247382811606268184512293140923890221835113").map_err(|_| ()).unwrap(), Fq::from_str("6141426742078751808016463421651164549794229779725621836880502819458640449688").map_err(|_| ()).unwrap(), Fq::from_str("5432800561878830456759146117323331318538544406461292221688948900282725875236").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("7756502168100571184376896302280551277548793166114668639883983616612521596699").map_err(|_| ()).unwrap(), Fq::from_str("4175157724607359289427558086631305210641516791653385486531603261744641783086").map_err(|_| ()).unwrap(), Fq::from_str("1416059597121053958848128267926139362734506289103718408674495275160432533625").map_err(|_| ()).unwrap(), Fq::from_str("2256677883012223113115674666522881880127488799250977469310075151400801433097").map_err(|_| ()).unwrap(), Fq::from_str("7071292475951265952987682896495006531647953024574866860245107900298149912242").map_err(|_| ()).unwrap(), Fq::from_str("2211106407139492155021949863554524644063070656030909157002547259089747550493").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("2602263341124119419147600624827447438986082328034425967696066618778512554933").map_err(|_| ()).unwrap(), Fq::from_str("2165915860896437438973961461429867834313126926074653100329148237021540506883").map_err(|_| ()).unwrap(), Fq::from_str("6929600495258348942343968645229240170562040042475317316542332746442883564751").map_err(|_| ()).unwrap(), Fq::from_str("7091627611238271039649712494089312289697889252980980096327086917449089768931").map_err(|_| ()).unwrap(), Fq::from_str("8401748971212958946521855216348549536545094243962934281840752808796068499726").map_err(|_| ()).unwrap(), Fq::from_str("7688672667136922415527838349445896811460438379038109343148065330626378989651").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("5527133803268077686151225145760980816565460725760488585529151764746659819444").map_err(|_| ()).unwrap(), Fq::from_str("1420465977977641080545070749415982853445599051771707088951082713745042631908").map_err(|_| ()).unwrap(), Fq::from_str("7047376190395367960949164888487996847279638781138175230063141865103094484458").map_err(|_| ()).unwrap(), Fq::from_str("2165145780342348990506906048672931216628755607705753985811995151202431804300").map_err(|_| ()).unwrap(), Fq::from_str("2330363392623895453330675002828476643751718479485796885705257620311258600906").map_err(|_| ()).unwrap(), Fq::from_str("708265230616189882069062451862440500827149299926423694051099015440875980243").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("2454094302824264707580445601970407527679048995808759039105841156977396020695").map_err(|_| ()).unwrap(), Fq::from_str("821335875430970773649202361630472362858048177062168250440298869253462060615").map_err(|_| ()).unwrap(), Fq::from_str("183573162384463899471570488290746850693500901219325686699411738076309511863").map_err(|_| ()).unwrap(), Fq::from_str("2796668117021201703320298849755532965523877585208601885396540013497772367925").map_err(|_| ()).unwrap(), Fq::from_str("5162031161158159530842102736359466134637688706608492790439123517498529951931").map_err(|_| ()).unwrap(), Fq::from_str("4091570422617304951741307638791061524968671405739168022549238038269479562245").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("737417062310641875717854177587329774735105148895641355087952769430553423077").map_err(|_| ()).unwrap(), Fq::from_str("4273603383860682790263241825695980936923693387937117633041424439557261189556").map_err(|_| ()).unwrap(), Fq::from_str("5613953334394940835192344443865169572035923269136339989725300651448437779043").map_err(|_| ()).unwrap(), Fq::from_str("5970741496963160151975575467965326108716841245297538137214719049177398175727").map_err(|_| ()).unwrap(), Fq::from_str("7183381362659247193528739142776882367501368440330884271377441605859256127998").map_err(|_| ()).unwrap(), Fq::from_str("513780765249169544963825173309893735540585013338068892775669096687804559139").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("2779629536295250731092438621118036921956697128125483760481776504081122115914").map_err(|_| ()).unwrap(), Fq::from_str("7394253754673156168452362255058891835420133990688577653209860752925696911785").map_err(|_| ()).unwrap(), Fq::from_str("415745502887986010638221288974137687574267613480360770748702995943235080703").map_err(|_| ()).unwrap(), Fq::from_str("4713860786245012428396497117005083142025054946867179299997449162783175709618").map_err(|_| ()).unwrap(), Fq::from_str("7421846132699326412452212935882185153701192583144272690124119786946541259588").map_err(|_| ()).unwrap(), Fq::from_str("4269853562516389470459167819117890630233818826455773032009793737526728914721").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("2729197371782575407599408379923690936957171100442605056593066227422321836812").map_err(|_| ()).unwrap(), Fq::from_str("2504325774583278165172327070553467359549266683503885693897641678809738304364").map_err(|_| ()).unwrap(), Fq::from_str("8010149206438103026942512144092961515512701514783471849833737658763585770215").map_err(|_| ()).unwrap(), Fq::from_str("7740593142796423942166875020873412727523565414296365088900809828363014813078").map_err(|_| ()).unwrap(), Fq::from_str("3889214044397985400634811245878178974364309864185248558312333288913117782467").map_err(|_| ()).unwrap(), Fq::from_str("7147195344077222712727860397001802884814268857523195957699287548038977344480").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("6525055137991025563442641792948601343252219443789817517262328532767297194932").map_err(|_| ()).unwrap(), Fq::from_str("4176104461436890274614849205817920116490813517963174316393509490755333125639").map_err(|_| ()).unwrap(), Fq::from_str("3763688205247176372714916105480966950087380206203629894502527791223781539850").map_err(|_| ()).unwrap(), Fq::from_str("6740121658694194863667067253050047084682118177445547374080792520025172439572").map_err(|_| ()).unwrap(), Fq::from_str("277743261640993205738189477176807889297707699564529302694786704219164803122").map_err(|_| ()).unwrap(), Fq::from_str("7561320922915877454592910217702443984638836770715812956701473878298965141543").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("678037994656638315044320375806213045333413303499346347761819782873358347299").map_err(|_| ()).unwrap(), Fq::from_str("3068859481908195193410796579511918175163642611384057677410991117039998101518").map_err(|_| ()).unwrap(), Fq::from_str("643496455385992335466025720988443201782291086775247314069940336031282257224").map_err(|_| ()).unwrap(), Fq::from_str("117008816555618128517407003888800521248168345403971286470219940711833605941").map_err(|_| ()).unwrap(), Fq::from_str("2193556659204886673185266460823286263515142486003081854295416181816963862972").map_err(|_| ()).unwrap(), Fq::from_str("526484012518620576802050623949095054805646484574753287924982547880486118095").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("1271681513644441576881320605484022904856585972264708373840155481588191464418").map_err(|_| ()).unwrap(), Fq::from_str("354302809621521641910052682190715354449567975654901328882040313605911394317").map_err(|_| ()).unwrap(), Fq::from_str("4864686249647799165085767915833712762108918965054447425381759787413914253569").map_err(|_| ()).unwrap(), Fq::from_str("3308000603710509123917501267387805188495421125708699886017151696212993621103").map_err(|_| ()).unwrap(), Fq::from_str("6301637987523405000406147772970404642530461143188930033078907205473208589886").map_err(|_| ()).unwrap(), Fq::from_str("6604928023250481449541821793422532372126522613671917245836875687405344779190").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("4455309302437988400247978836649149373064349787700165136763216616954129866804").map_err(|_| ()).unwrap(), Fq::from_str("3498248107762194682617173362097779965602870558832307975328475786013507978508").map_err(|_| ()).unwrap(), Fq::from_str("1566139969472275797575198116176816662668233129953917181580670671577078937849").map_err(|_| ()).unwrap(), Fq::from_str("1355147466212180870983886499378631512348142617378543897159003413651672684920").map_err(|_| ()).unwrap(), Fq::from_str("3529686117689783675017612646957517855192834636228967262187459527141362160235").map_err(|_| ()).unwrap(), Fq::from_str("492332142737138848780130509214129818118200587391154423991013494407255765902").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("4870629149819877404691719630975370611347013605793410713942417073069370371875").map_err(|_| ()).unwrap(), Fq::from_str("2399078142980031140291521751388842961085997337576968862512067215563093822204").map_err(|_| ()).unwrap(), Fq::from_str("3708877822583507743350110323522733863528643355466751851275704717214938918404").map_err(|_| ()).unwrap(), Fq::from_str("4659934970686421571857112812473321425164764393952157820004126478998490835412").map_err(|_| ()).unwrap(), Fq::from_str("4943573888412009109384646950610736804563962845255262704208403178778984841942").map_err(|_| ()).unwrap(), Fq::from_str("574190747345028748757479941424031591917303217731663302226030530784513235264").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("8413802661647996069929242978558377227858274358336126427211903639327803833209").map_err(|_| ()).unwrap(), Fq::from_str("519364413056777122986410731670806373800886479563051852550120848319225505878").map_err(|_| ()).unwrap(), Fq::from_str("7926804546501459228201204623325131860939001673282462498572744669512703076804").map_err(|_| ()).unwrap(), Fq::from_str("5650310321905591539559963214069793334754737568666543702646448786051353553296").map_err(|_| ()).unwrap(), Fq::from_str("2212379372877387742218381359390418343683168694381553896470110889296755279013").map_err(|_| ()).unwrap(), Fq::from_str("6836660046038469548805291223101800861311375959194362298531717617207198616422").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("4783393037952393291676157314203688715572568898491170576394490367655354700330").map_err(|_| ()).unwrap(), Fq::from_str("2564092004508338917172131695917182632124512867963633069036512436771487570987").map_err(|_| ()).unwrap(), Fq::from_str("6234763871139151449222613007869400141739427704391662491715437446263922756941").map_err(|_| ()).unwrap(), Fq::from_str("689103049127644270925099406037243367835562644586412023094949236816236531237").map_err(|_| ()).unwrap(), Fq::from_str("6851846354321535101578840356262994164671494700472243045405214332342721815881").map_err(|_| ()).unwrap(), Fq::from_str("5997292496028420476680707772620912594076026332432398364354381333842798084707").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("5160102254338178203639481010905547148079652309603644336740772043727665352789").map_err(|_| ()).unwrap(), Fq::from_str("1908587684123490184383493488393345901623694825735646560701708684401216116190").map_err(|_| ()).unwrap(), Fq::from_str("4607754449958274888663224753679727931518293982567530170325818946763802137602").map_err(|_| ()).unwrap(), Fq::from_str("3077300517885992872375505511813200362773532385839710312034164426589540687002").map_err(|_| ()).unwrap(), Fq::from_str("7532020324106484066925224084668148085387790393589392812602736372278615054276").map_err(|_| ()).unwrap(), Fq::from_str("344977220186613806599384685408032848394016886221781259797052361089856749437").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("3393918342469034924348116688940468088553725054272081137005893644398233292695").map_err(|_| ()).unwrap(), Fq::from_str("356281899587848124367887360007515220926404349673435312940743989041434010720").map_err(|_| ()).unwrap(), Fq::from_str("1758742446842427957265238289578738315501946123766607371038897954137567662312").map_err(|_| ()).unwrap(), Fq::from_str("3153279758273655617261199850808939384868848311566803603932878356236952020290").map_err(|_| ()).unwrap(), Fq::from_str("8018464815556207986344462980286589026737429793071319925512400071857345028066").map_err(|_| ()).unwrap(), Fq::from_str("2385617689466097179116916530734940962465651152336581042090550709183334141063").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("7426963327539378639426037730546639936416434663632106359847322808760959464570").map_err(|_| ()).unwrap(), Fq::from_str("5274296489964292775051093492157325226405689693565091986859809652401309607823").map_err(|_| ()).unwrap(), Fq::from_str("7827241313868774196245990793266909562648160445985645425406006810232271513840").map_err(|_| ()).unwrap(), Fq::from_str("3043499501949644477529208269833298836634909727183364948493064469038391134262").map_err(|_| ()).unwrap(), Fq::from_str("4340713803276461970375821544340407909092462955482721062263750193918064951694").map_err(|_| ()).unwrap(), Fq::from_str("5727982185296156082216966520688456783134943785289401264046725930042185635011").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("1044627383774178740246927034855276531721947891017405155504934664363963744205").map_err(|_| ()).unwrap(), Fq::from_str("3358443304821405853608077528484150146664863668795435090092302471470268187768").map_err(|_| ()).unwrap(), Fq::from_str("4393709706901091014969955480781664800996324532875596929838737765289660236287").map_err(|_| ()).unwrap(), Fq::from_str("5249451643950974464239301173831437707893267000803842660603692970765214658517").map_err(|_| ()).unwrap(), Fq::from_str("720403292222864764664662027099398853890117824525950586777116939477195987659").map_err(|_| ()).unwrap(), Fq::from_str("5135595196690594471321330706235194948208391266704109894291833948815105874156").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("1411014658510544882011475882370510673755434974948582565623271410876437451508").map_err(|_| ()).unwrap(), Fq::from_str("6948020882432572845197507952592969590694368103230430179570315615182282374398").map_err(|_| ()).unwrap(), Fq::from_str("6722964559981414065014969805335853003762918744908784920346397308171250169960").map_err(|_| ()).unwrap(), Fq::from_str("2455008936040100351240439755188491639058940013744234884624742038391114271446").map_err(|_| ()).unwrap(), Fq::from_str("519816307152140593257787552575361125906303707515220408961641101170845443050").map_err(|_| ()).unwrap(), Fq::from_str("6990382301199766734460364366996477159573560505261295017350942537257110652072").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("6714817096485701269481109364929965797023541742145557630544747997567839963519").map_err(|_| ()).unwrap(), Fq::from_str("4331876343893338488032725680021976137450544850291034412406871631704743586996").map_err(|_| ()).unwrap(), Fq::from_str("4635491174536761845308076787184519522702318218214225197392511044101416167838").map_err(|_| ()).unwrap(), Fq::from_str("7148265332819971213228527024783778597456328611568263264306119796668704183952").map_err(|_| ()).unwrap(), Fq::from_str("1444627790663353353628686023038051023634720862749153089014038404402852461112").map_err(|_| ()).unwrap(), Fq::from_str("5432552600858643112835107870131399115614741437380771002580944946833822933486").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("36842954376282979636557832682570642199266089699974775228248015408517509598").map_err(|_| ()).unwrap(), Fq::from_str("3026632691904039826108148794203883114232689902166652584331086002056629405140").map_err(|_| ()).unwrap(), Fq::from_str("7531168873176286077504374988548521825061872227636117160324933042887207703416").map_err(|_| ()).unwrap(), Fq::from_str("4106920952486254052597445599294048235835798103471802269193721813167710014279").map_err(|_| ()).unwrap(), Fq::from_str("7269478701521338174232988927503711794306378586726632748184437594824939217117").map_err(|_| ()).unwrap(), Fq::from_str("558872339179120902377263825890376033023587089352726486070837167228158365326").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("1548106820955839682293083625960349362535457133113634764223604681890115013651").map_err(|_| ()).unwrap(), Fq::from_str("4465281856335466678255125519673078819332377819720506371536654186525547242633").map_err(|_| ()).unwrap(), Fq::from_str("969773745441015858618983302688992181994425869758184064198996358037931424628").map_err(|_| ()).unwrap(), Fq::from_str("6280083935111582346708241309314509219070063468817439813483624632389419612812").map_err(|_| ()).unwrap(), Fq::from_str("5476655022179055938380910634396262067255155917597423161617148936716657922289").map_err(|_| ()).unwrap(), Fq::from_str("627097700844318626010053727275562019117584226452500403394783478047233703389").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("6118385258536040171789235122924575316438695697671861034911199061163074354147").map_err(|_| ()).unwrap(), Fq::from_str("6421295601851675449477168237283435552411514462601604107105032584911433751679").map_err(|_| ()).unwrap(), Fq::from_str("306373887315817443013092597694335151734702043938881288546684435295134210676").map_err(|_| ()).unwrap(), Fq::from_str("2241657777906355269052947603870169536855359103764382739209403126592539928079").map_err(|_| ()).unwrap(), Fq::from_str("4692167130329292138793589348243934406799530771369829890306782340284201189081").map_err(|_| ()).unwrap(), Fq::from_str("2192185799726907056194145512061571885230129215042723669930788085067747858131").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("7558776603930954101476040867719934215584329313775144345099897265341944047864").map_err(|_| ()).unwrap(), Fq::from_str("804545479171765838397001620010222983942166928200971493451522183079506799291").map_err(|_| ()).unwrap(), Fq::from_str("6658318296305447316451052953794899075501719904570254317018749819128942062534").map_err(|_| ()).unwrap(), Fq::from_str("2329968286560061123042124490889763719808027907946200461336848278774006569355").map_err(|_| ()).unwrap(), Fq::from_str("4647212202583877826756895323295662908730216001878570539128728543881363358774").map_err(|_| ()).unwrap(), Fq::from_str("7479084682217356250593141538344815887129372946396996095370364143452914287245").map_err(|_| ()).unwrap()])], +// }, +// optimized_arc: OptimizedArcMatrix::new(39, 7, vec![Fq::from_str("3267179889377925711574658284856732208025355841040084473551461173520230225381").map_err(|_| ()).unwrap(), Fq::from_str("4218970795463228197327790213244921451375713052676530804173314273248521302251").map_err(|_| ()).unwrap(), Fq::from_str("6558452507257297773903880599933734956650828395452896303007568859251089292382").map_err(|_| ()).unwrap(), Fq::from_str("4042547271226656281806908526176747617793733742101121262910694724314042815131").map_err(|_| ()).unwrap(), Fq::from_str("4484826253675472206510819347554710738378387223810894155307581506069733612810").map_err(|_| ()).unwrap(), Fq::from_str("3340623787106332728769891522629193546852430705194948956506410107893436206270").map_err(|_| ()).unwrap(), Fq::from_str("1146818540713897566188401511637220499025428484560997690844890982000538808551").map_err(|_| ()).unwrap(), Fq::from_str("6089924376626192718256476404089056274813344438059373355846067526383524489588").map_err(|_| ()).unwrap(), Fq::from_str("3252380459144218718661502728554356451451872089835332429937606714939592080537").map_err(|_| ()).unwrap(), Fq::from_str("7116956469008263816717247030121065061393433609954531462053914466227296297033").map_err(|_| ()).unwrap(), Fq::from_str("2749312272215231848139078131254509267239590195342230643928479893117354148584").map_err(|_| ()).unwrap(), Fq::from_str("764882704567509245651596837424209709274533314828826071535700095515278197679").map_err(|_| ()).unwrap(), Fq::from_str("4932281286580045638368979604177064776138370306619513783360199241458597325911").map_err(|_| ()).unwrap(), Fq::from_str("6484320961953933323289746320919349728579597325051701151281300835155595148740").map_err(|_| ()).unwrap(), Fq::from_str("6682606457331543519450813892692923338913286820264911373641321435621952784002").map_err(|_| ()).unwrap(), Fq::from_str("6625780871179973490233386959951589849631496582163936124259260687776843181994").map_err(|_| ()).unwrap(), Fq::from_str("7949225290500346406153571792115001941134688057907882657603244062341345143557").map_err(|_| ()).unwrap(), Fq::from_str("6392844449548821017972820206673777102358896581926384483680180004397700038029").map_err(|_| ()).unwrap(), Fq::from_str("3392678655944756762416562388041708502386246415055289087688321666480356102352").map_err(|_| ()).unwrap(), Fq::from_str("1482525589417638728292358287918496174732548433885907700008322735579133317611").map_err(|_| ()).unwrap(), Fq::from_str("3098572574557576897289665910879403912332252678168883273111538708481992361738").map_err(|_| ()).unwrap(), Fq::from_str("5529056592387037922896478601046572040782992911318540751019232411511652047969").map_err(|_| ()).unwrap(), Fq::from_str("3748164104379232094417838431717964236407138591232998705172215282549268275626").map_err(|_| ()).unwrap(), Fq::from_str("7993215220832663678736550799426833055975676440107252656509024603970443366873").map_err(|_| ()).unwrap(), Fq::from_str("5554706095086365018531517384733334573065210312805294463584717615914523071948").map_err(|_| ()).unwrap(), Fq::from_str("2443631285780523173220046820359095033333463124538739189832478296145755085550").map_err(|_| ()).unwrap(), Fq::from_str("1220796011041198056582991284907417463980599290206522252014247996281492269358").map_err(|_| ()).unwrap(), Fq::from_str("1682760707303747404170762352671876629726555466723959746802386893894433719465").map_err(|_| ()).unwrap(), Fq::from_str("3051923729738325569700743140016346599799580971673827402271729235767984866691").map_err(|_| ()).unwrap(), Fq::from_str("7563176581771672618255447019898227372221620915263206079381670008997384230483").map_err(|_| ()).unwrap(), Fq::from_str("6714389944529537488857452034094868070645683033112486934483248858539099368014").map_err(|_| ()).unwrap(), Fq::from_str("7493906226657143301604183755067902519920822547119913298302294623502238733674").map_err(|_| ()).unwrap(), Fq::from_str("2154229324145977209709505054539133771940440151492224785606993781621358928730").map_err(|_| ()).unwrap(), Fq::from_str("7456876762420982497005391795935505349258720733415090396527680093854035684367").map_err(|_| ()).unwrap(), Fq::from_str("2463860822091516107069327148389300215821586320398049504393157965063872793114").map_err(|_| ()).unwrap(), Fq::from_str("7457734898674665726899333231363665869048074122705641470037575830423177022983").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6606638027680683034019087360504930965296383619912667674373484912931510081604").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3896120473808259659498886851165050715042137210210508969425175628918596110703").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4177785039984150553207166633005666784182736665405993035615821533100346473102").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2251264701928031600714846652509034432058540215603054186751448537230602211233").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5918356541462280245369962174485820011301090124256309721902773908738295333234").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4488288402938721031665768590845827018046248664515272235168813500747779130469").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("420804516809894227524959414447369962794383714748308458102009786417751385338").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1611892711560390106144670651718407615978367227165742318749208966143654708953").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3625688803767314787198072508648376639173374598674550917856802780225203641909").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5858314979178924176986455221724067371667793542695736437793040582649231142217").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4718469649382301003608330023856268030475656658372577531043938083130450360244").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7101923401566220379502756714091944759289065666990111994223809262581510991930").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2205893178730705290412148160747666618068740934944353076517034081562976037846").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("566819841478218788433029207586828887815246268605467258094080218381409354679").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8338268662992166550895097018748216356557418021592425015601050125971961877922").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("550747726396516458904193097749683959139768812560046963055412203445141510555").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6649371484039146069959271641955740256733353418841311643978236734398595127934").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2401235852414872890161144154127434587596859309807274678173402920624069948487").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2359766917637333091301887580657348885955799935313770486384545232084724526410").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1536556904746856543160299837694949527224460265981570672200684249095439228342").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5239491739480094741737608066646010096816870470677999810889296988406366638984").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8351070687600450810120155572058954232266570466877012525797484411025940422009").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3350142567086983170974492599937588617046949185020614743476460067513217808235").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1380167696271416207304028914120094605829261661079429177783223779312922081950").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("200591230621722282999884256572529502020351906981653626535579613005322864375").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6112426468352321907537481445509868610249385338744048909702839757395982274228").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4234794823819824216288706384030793953524919518937019309684882995210561605401").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2617023030286105441547722950902887917262286407967232161936665945310280906622").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2625262002311345264309624648651677447307963829568516041674770057182326832869").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2373941392307013801383592832488158577752891975962531227890579346355584846451").map_err(|_| ()).unwrap(), Fq::from_str("1961718924193031296798751690610974386828264605504889890771349325463025336195").map_err(|_| ()).unwrap(), Fq::from_str("2868124060985675920436079106596156284905943204632191942776718861373436542214").map_err(|_| ()).unwrap(), Fq::from_str("7845669997742840217688401931462742306009286446506113818599869436449377367754").map_err(|_| ()).unwrap(), Fq::from_str("6173407037353888350243445875635080301447444707547969387574700153706191518628").map_err(|_| ()).unwrap(), Fq::from_str("7098672234934132886939827569385283896802454444867206042797084120044836023173").map_err(|_| ()).unwrap(), Fq::from_str("5351899839977801032921348451916620591965842541634687391321577183284412726675").map_err(|_| ()).unwrap(), Fq::from_str("5620070496211129683300134579883602187317512502813714244130767313773035697719").map_err(|_| ()).unwrap(), Fq::from_str("6979709989426911001555340276783571500889381472387839399740190281565272894942").map_err(|_| ()).unwrap(), Fq::from_str("5135679336879799934417470005708054630248446694753779453216003661110099588738").map_err(|_| ()).unwrap(), Fq::from_str("138682133719722492420465554190750590837692301151943132427693112118115423576").map_err(|_| ()).unwrap(), Fq::from_str("3151429238189687747957628376177893410569754087843736384164577812731670460702").map_err(|_| ()).unwrap(), Fq::from_str("121814244732221808057679271483647003115742086673430961846079912667911157285").map_err(|_| ()).unwrap(), Fq::from_str("8371534681354007650628559426369748872592875254339532946571231278729041076560").map_err(|_| ()).unwrap(), Fq::from_str("3224012810937385216119822993567522300423926201642509833393672779197095195785").map_err(|_| ()).unwrap(), Fq::from_str("6906061554583095104670274977270927222784149562340469632678517151372610188027").map_err(|_| ()).unwrap(), Fq::from_str("7241632034261962184770214288273863345887509924743840645741009488606102609959").map_err(|_| ()).unwrap(), Fq::from_str("1777064018030106946519734883392052222472885181372642200849135017704677431530").map_err(|_| ()).unwrap(), Fq::from_str("8324217430862472098854213825386877833955599293369985729017003228770288665572").map_err(|_| ()).unwrap(), Fq::from_str("5729830751513293833514450194921789300271973437013945551402502294027950049854").map_err(|_| ()).unwrap(), Fq::from_str("2187758249046601765496974874050556156501868988788103300613705176170900124540").map_err(|_| ()).unwrap(), Fq::from_str("3661666483638282285384645460120103900291506320035168165941968172560553131692").map_err(|_| ()).unwrap(), Fq::from_str("71172694711798875087336054947012411069704167761224496888177661616309271064").map_err(|_| ()).unwrap(), Fq::from_str("5479753513109529765878513587350339376225541758759421668496911367601412633643").map_err(|_| ()).unwrap(), Fq::from_str("6657339706920780308636317262842926498794391181237998790979567359048507409879").map_err(|_| ()).unwrap(), Fq::from_str("2844473401317966605062077825184314014360268580545792284786608033783639709289").map_err(|_| ()).unwrap(), Fq::from_str("5533028151199355284748909539327941418386476750051202689820514906007980206539").map_err(|_| ()).unwrap(), Fq::from_str("2147788020290210661458158885081344432970895350439383460330782349760173328255").map_err(|_| ()).unwrap()]), +// } +// } + +// /// Parameters for the rate-7 instance of Poseidon. +// pub fn rate_7() -> PoseidonParameters { +// PoseidonParameters { +// M: 128, +// t: 8, +// arc: ArcMatrix::new(39, 8, vec![Fq::from_str("8272449376473671765296008869302038521165312284059868547350729170495609308478").map_err(|_| ()).unwrap(), Fq::from_str("4148638154552987643427927719929617623033282419205047107576105870710636474516").map_err(|_| ()).unwrap(), Fq::from_str("4610941420378965310285838612448425703694278187368438665958951036771382090951").map_err(|_| ()).unwrap(), Fq::from_str("4189826392798972095615428009133315511437859427098777387981389252767021216956").map_err(|_| ()).unwrap(), Fq::from_str("3485778653302006026931053379631767402100167194043813051334318884790009606746").map_err(|_| ()).unwrap(), Fq::from_str("6997258294599821948176438428013771474496501637817875041649844838098869986336").map_err(|_| ()).unwrap(), Fq::from_str("4727315047627304951694923894487815521672122955066864851590793419420877448838").map_err(|_| ()).unwrap(), Fq::from_str("8323215308029035830922479600341609342422153730357233252273677915504737315769").map_err(|_| ()).unwrap(), Fq::from_str("5637158139100131712830467651283357933314259485688016797833552952753722230574").map_err(|_| ()).unwrap(), Fq::from_str("108652494334494423537470670066593093589367691856837736916781504579141415881").map_err(|_| ()).unwrap(), Fq::from_str("4282654110357871098442082930601101276537207779575238008006989562579070025596").map_err(|_| ()).unwrap(), Fq::from_str("4983986459778055581371939303652208870578018890190948885506698845403601706443").map_err(|_| ()).unwrap(), Fq::from_str("7812942429443051975589393178689314192901424482402091373617863947800041031380").map_err(|_| ()).unwrap(), Fq::from_str("41843404634003821257499508246384846359567653827738009587074364821357556674").map_err(|_| ()).unwrap(), Fq::from_str("3256367381652958574022221764563986866005281747176483523562910892352385700536").map_err(|_| ()).unwrap(), Fq::from_str("5081754897888927450572755485400127827962724388364782188548629761403223168208").map_err(|_| ()).unwrap(), Fq::from_str("3140662389046800714717134038842932929914881789234256624133712658493702862986").map_err(|_| ()).unwrap(), Fq::from_str("5837678370345291060707921053934078274570658514314699024317340256646194510315").map_err(|_| ()).unwrap(), Fq::from_str("1758249205614064761923397241362751226590619464566451174621990840706075711533").map_err(|_| ()).unwrap(), Fq::from_str("2996424966666775948197322316539263332388876501081218038331262962889143767323").map_err(|_| ()).unwrap(), Fq::from_str("5569073755001022846727381324947502843907951568584887846136479111303763947571").map_err(|_| ()).unwrap(), Fq::from_str("2152697470307011874759937686919219515105381348752365467161409416739810705705").map_err(|_| ()).unwrap(), Fq::from_str("2547478791649003851472374459274423878735641266844974068366653679604458605992").map_err(|_| ()).unwrap(), Fq::from_str("5819954505684844235667713476731504359909606655725958006022735818802065644880").map_err(|_| ()).unwrap(), Fq::from_str("2946723954639143698985169687050778926763705251783882355884017269111316721156").map_err(|_| ()).unwrap(), Fq::from_str("6674853737187547917453936531282787623469969017096699291523892007866852923446").map_err(|_| ()).unwrap(), Fq::from_str("5128641242163000635309430370963825992485844601443450009390057810268350954415").map_err(|_| ()).unwrap(), Fq::from_str("7352715836632872274247822067257986059394276266477211651891582858684335942428").map_err(|_| ()).unwrap(), Fq::from_str("6217878791689924076142875699523164926319528131418439289154670832402836449354").map_err(|_| ()).unwrap(), Fq::from_str("7597096949831323643078864071580889261097889487612663379874935302362723251908").map_err(|_| ()).unwrap(), Fq::from_str("237095701117524079797711198067928714601748963673162707716983647008814265398").map_err(|_| ()).unwrap(), Fq::from_str("81542366906477747415301649039728726195369083982626300684546056109880517297").map_err(|_| ()).unwrap(), Fq::from_str("7969630902758093833683878012450239872858160201838806304585343230952248744893").map_err(|_| ()).unwrap(), Fq::from_str("7316377572719821258453016885761550936433699619018709722118975759663969037436").map_err(|_| ()).unwrap(), Fq::from_str("3207827889377644662547841949258701640846910482047864903394795911204521625717").map_err(|_| ()).unwrap(), Fq::from_str("6413940547842866445385786420255165709131889744069745080884072064648094675572").map_err(|_| ()).unwrap(), Fq::from_str("4470034231322139393244401663130930843870170862250053073895724359300231030494").map_err(|_| ()).unwrap(), Fq::from_str("5985167286477158071662871046181300194905193138887251008228776699334161724649").map_err(|_| ()).unwrap(), Fq::from_str("4452904839488101491301112737515512023767891716505993453839350251808627474304").map_err(|_| ()).unwrap(), Fq::from_str("7860895867021231156914226137129456862426923892375642308547029895248541661553").map_err(|_| ()).unwrap(), Fq::from_str("6630686865763006697479097101020958994896044128307934854628091355832658931207").map_err(|_| ()).unwrap(), Fq::from_str("4575237871949309158131429656894197089450967121612001149478762082600131288476").map_err(|_| ()).unwrap(), Fq::from_str("766939745831065248189916028819932463734747817275069322853142547284848119411").map_err(|_| ()).unwrap(), Fq::from_str("2521363578568164921332548196959960367230186196038809440843174398050883733227").map_err(|_| ()).unwrap(), Fq::from_str("2233887665030634678034714762840607924432402341879481284411152084913926243816").map_err(|_| ()).unwrap(), Fq::from_str("1363145196169027166624365704741212262168466737920409271006019942527593579043").map_err(|_| ()).unwrap(), Fq::from_str("1728748828489523871369663443259576335445953252043747674734851978163284572347").map_err(|_| ()).unwrap(), Fq::from_str("3589764404206988851048143499419191311969029478266107959684865529873240501288").map_err(|_| ()).unwrap(), Fq::from_str("454582061846842940537911725193464848400438118719936897433155053207150006163").map_err(|_| ()).unwrap(), Fq::from_str("6097880848523255981783663207288828946664464748659437953833943301002070708011").map_err(|_| ()).unwrap(), Fq::from_str("6606494069007891346510409957417828767102023178333954862905901017371032576703").map_err(|_| ()).unwrap(), Fq::from_str("4107615390589339392820548815643444727694000077684088530907935118807954536569").map_err(|_| ()).unwrap(), Fq::from_str("1003918606062413360733488776720819899764655273788616417267649862117087160569").map_err(|_| ()).unwrap(), Fq::from_str("4967481022167399504714248462864334298293877052822767813298305699437148004423").map_err(|_| ()).unwrap(), Fq::from_str("7505807054377625488069618334595947210934444806903660876361926590185586442625").map_err(|_| ()).unwrap(), Fq::from_str("2937235658203904617712096065495213327167588881165918700771977595840739785540").map_err(|_| ()).unwrap(), Fq::from_str("3743920883448077512632614147297013095277830755810197805164568256886272231293").map_err(|_| ()).unwrap(), Fq::from_str("4675256943483187667445429177126032505760078656735578452557765669667886631950").map_err(|_| ()).unwrap(), Fq::from_str("457954792243890278352137958612420889090804294568854585984572595286485729090").map_err(|_| ()).unwrap(), Fq::from_str("853849747687579901321157781987563742960717711795759914963161381658119818700").map_err(|_| ()).unwrap(), Fq::from_str("8222541276506899231460690122857140339276358286108222152936800844854572097455").map_err(|_| ()).unwrap(), Fq::from_str("7438406943200357502672401610848443965649812236955334945447954905769718300513").map_err(|_| ()).unwrap(), Fq::from_str("2640696199554128576427187811969038868579739879509924283967463389130356425075").map_err(|_| ()).unwrap(), Fq::from_str("2655652588635129222042210269984915965810480642384939386497721975915298799897").map_err(|_| ()).unwrap(), Fq::from_str("3217782621522243223548045738370772617329805040816918825611164431186047161493").map_err(|_| ()).unwrap(), Fq::from_str("947337883334508960509785476955419483097351316459470904704471240368983130317").map_err(|_| ()).unwrap(), Fq::from_str("6893498773873549648445806320954175770417825628673932018859169967779061669525").map_err(|_| ()).unwrap(), Fq::from_str("3549512494769711136877093045046220046555277099241366676305738541088437234800").map_err(|_| ()).unwrap(), Fq::from_str("188595022227591198772700874154043466570753818796304743231710175490064810553").map_err(|_| ()).unwrap(), Fq::from_str("7926280734182825119014941098863511068008726025720447818037681597094028288687").map_err(|_| ()).unwrap(), Fq::from_str("5328823006174239298836209859004707742902620901161932353646613955574632849830").map_err(|_| ()).unwrap(), Fq::from_str("3643132442411531550762707210036054181111950121816801222793446946975671426944").map_err(|_| ()).unwrap(), Fq::from_str("223811283886641278441633783763730335821391676025225789605640185401047180328").map_err(|_| ()).unwrap(), Fq::from_str("8105880403956334966170035890059708655437042366031673977270600203028614932716").map_err(|_| ()).unwrap(), Fq::from_str("7291355104533494809155393706541735791575586647249043086018796878886658168102").map_err(|_| ()).unwrap(), Fq::from_str("7611701800471868248724290484349188144353618836337988703536700402080844390332").map_err(|_| ()).unwrap(), Fq::from_str("1436786789990417548761477983450497180735471335332880597317434589805856427771").map_err(|_| ()).unwrap(), Fq::from_str("7600085433595855824996872008078098226260886015198064396437327207276917121720").map_err(|_| ()).unwrap(), Fq::from_str("5029449320917522052289391657447529701127506383746674724200291418366055244112").map_err(|_| ()).unwrap(), Fq::from_str("6886825880948667116018395022681308947452993793907932102687592989125186041774").map_err(|_| ()).unwrap(), Fq::from_str("5845241369239092051204667517323930061829070088554172171792110724198606401412").map_err(|_| ()).unwrap(), Fq::from_str("4162725373069625128551984577973151037992554335378296833000957757364090719940").map_err(|_| ()).unwrap(), Fq::from_str("3237246111767816396368458173267299399557492443072947364702415679925636571187").map_err(|_| ()).unwrap(), Fq::from_str("830701079037121106433992803311368087413846981956837462414498630581651793402").map_err(|_| ()).unwrap(), Fq::from_str("2196364324569118898404019786967816611441428716833788431451140967866871605803").map_err(|_| ()).unwrap(), Fq::from_str("6753922090288340120668448254869264195438903583210381863317254582876604059215").map_err(|_| ()).unwrap(), Fq::from_str("3278166685154456830901506486886389406639525283727907954935200636096028010850").map_err(|_| ()).unwrap(), Fq::from_str("5786959252098271000208967629797263716944656467823397231149097680939487648632").map_err(|_| ()).unwrap(), Fq::from_str("1908697537089514501783359248626973918401305040507758964257539878861345830490").map_err(|_| ()).unwrap(), Fq::from_str("5623482144375131023825905339360417675361217284375813015987496790143762179693").map_err(|_| ()).unwrap(), Fq::from_str("4069696247470142907808851317942521531222429930330519094286917875239205096382").map_err(|_| ()).unwrap(), Fq::from_str("7473708033898226549502377310715405001631633226016676732225225246104006304064").map_err(|_| ()).unwrap(), Fq::from_str("7968097074364896190426873307203920680578508830659346047441212030754294890547").map_err(|_| ()).unwrap(), Fq::from_str("2750027194169860594301948270681671971768983322995676262915003574138222334293").map_err(|_| ()).unwrap(), Fq::from_str("5926992445108463225458163957180508831154768105404460564971380259827882483888").map_err(|_| ()).unwrap(), Fq::from_str("8236286391698466571493128303242200865463018961214038675236970119480621222788").map_err(|_| ()).unwrap(), Fq::from_str("8334780562761233153941257145079302303490120745177090320723723636435406468801").map_err(|_| ()).unwrap(), Fq::from_str("949719520023679378768851557518699756924522256471503862479759499601220369534").map_err(|_| ()).unwrap(), Fq::from_str("5372483877960489505551208473749141362207477310379540533072313319778275921752").map_err(|_| ()).unwrap(), Fq::from_str("5749187993829590544609286084993648337986047815732954868582710978731469866982").map_err(|_| ()).unwrap(), Fq::from_str("4566976547402342111696723933810183167604073795281476956095621435462238669144").map_err(|_| ()).unwrap(), Fq::from_str("3258609544217448574198621491388339190182925542526479883374007068796823160057").map_err(|_| ()).unwrap(), Fq::from_str("1877893633883368995460699521630970116669587569933569267883836518571897778215").map_err(|_| ()).unwrap(), Fq::from_str("5946567171632824236333963154051878983043994432907168064027273967134014341427").map_err(|_| ()).unwrap(), Fq::from_str("105931664511336149957584997375530129929108061604718816766850425337966483819").map_err(|_| ()).unwrap(), Fq::from_str("3334436208623913462800910444002593149657843770356076722012842774818858193788").map_err(|_| ()).unwrap(), Fq::from_str("2542525398722164928349556023984418941288183915531914678385788069164453572484").map_err(|_| ()).unwrap(), Fq::from_str("4325729638094798167888033500432941197696802068677268118169676790569961279556").map_err(|_| ()).unwrap(), Fq::from_str("5086221959524628151988325986854153595750538180228152044781036556066799929135").map_err(|_| ()).unwrap(), Fq::from_str("814053785175139316093814632246124669245448274155786076572025583537106284178").map_err(|_| ()).unwrap(), Fq::from_str("856559262938027158334811547682069668183819901434802027583664868534912374762").map_err(|_| ()).unwrap(), Fq::from_str("7098002372386064108546794749664794680069755615559518896946628869991990938200").map_err(|_| ()).unwrap(), Fq::from_str("3692175837436518301650623692887323065336827487996896962549174591686028336225").map_err(|_| ()).unwrap(), Fq::from_str("1007582158016437529205780524083115117449712152139569389821288332592983438016").map_err(|_| ()).unwrap(), Fq::from_str("2847781526242572782394249062992590975075600946998798020950451429876955455347").map_err(|_| ()).unwrap(), Fq::from_str("4683135938877485667218909295587020784482020063366509400878909769039963402194").map_err(|_| ()).unwrap(), Fq::from_str("3071223860731265748299223217826645386000956812064841287233076908524780113711").map_err(|_| ()).unwrap(), Fq::from_str("465336005424349322459410135527270587484143218066190391405764495653890307638").map_err(|_| ()).unwrap(), Fq::from_str("3492521239902589258215993550954350302878198081888018022034188315933417282349").map_err(|_| ()).unwrap(), Fq::from_str("4652503015596864532936839963102524688315689115828904201661779672404133596246").map_err(|_| ()).unwrap(), Fq::from_str("6684493595002463532648655455829581530070483011366463933884714421685168062108").map_err(|_| ()).unwrap(), Fq::from_str("5144815691459069012290739686961880509034734568672359075047700851046282192984").map_err(|_| ()).unwrap(), Fq::from_str("8371739448006008802462855315414529155151374415405948579037680330595176885289").map_err(|_| ()).unwrap(), Fq::from_str("7562265460651226242904474681477097810256092178931499606342797263210024328912").map_err(|_| ()).unwrap(), Fq::from_str("2173115990036758502424877991024231517600619158057524800212336697746053937701").map_err(|_| ()).unwrap(), Fq::from_str("3250667032841248111949415525977085654656554385364739778848554685344763670402").map_err(|_| ()).unwrap(), Fq::from_str("964319544077259865638943155040799869001767127798523470355645153608731787358").map_err(|_| ()).unwrap(), Fq::from_str("2430625397940759018828403325697234910709308356345530717148345000606821958076").map_err(|_| ()).unwrap(), Fq::from_str("3001535549948948017968051344910179825469022106767548021637053637992914172619").map_err(|_| ()).unwrap(), Fq::from_str("5315142258465964331422831407649081078928730784491878179959989170251813258669").map_err(|_| ()).unwrap(), Fq::from_str("965329642546226660858115602501751516967460844522828532063227378062843450560").map_err(|_| ()).unwrap(), Fq::from_str("5401374926816885496189951921489312093848246583610832737254098205111592584029").map_err(|_| ()).unwrap(), Fq::from_str("4589429967151333056465198809951652750181579966978928736484472069481903686820").map_err(|_| ()).unwrap(), Fq::from_str("3458261861557917590305563421230461439522295470636639786838452072955923791588").map_err(|_| ()).unwrap(), Fq::from_str("3540986098747695482229933888622145098982183585657249365327909297854697622982").map_err(|_| ()).unwrap(), Fq::from_str("7470309027079141098627625264292527283122575469971006686552366285421096253077").map_err(|_| ()).unwrap(), Fq::from_str("2179322880286147185818971352290290535398107814740820178158943851622770567223").map_err(|_| ()).unwrap(), Fq::from_str("2089024225624099915154884013014820565635001045727245004973844249532877227137").map_err(|_| ()).unwrap(), Fq::from_str("3745196152859075670103663786165296848991734820226608733576975765763784214197").map_err(|_| ()).unwrap(), Fq::from_str("5672117491393732267161232737901625070111283663814490501970587252984671104420").map_err(|_| ()).unwrap(), Fq::from_str("5535101561762086991739090706628408222278165295627513352446657788234735178470").map_err(|_| ()).unwrap(), Fq::from_str("4440412540504162202198729017209308004949607304407749784221311782337858576119").map_err(|_| ()).unwrap(), Fq::from_str("3359457225420955510670545823689885262117252893127204615784464590776623693182").map_err(|_| ()).unwrap(), Fq::from_str("7718700411772965015689480507781316141517838375440370022460377848627123433547").map_err(|_| ()).unwrap(), Fq::from_str("2715335394270831764022982421053388805904453348572352072511789215823634657140").map_err(|_| ()).unwrap(), Fq::from_str("2305394127892986712263611635091515963372045710527019930680959161755991581436").map_err(|_| ()).unwrap(), Fq::from_str("2104972175624447794213330228917071364628371857711624604067665770479050713317").map_err(|_| ()).unwrap(), Fq::from_str("4990408798088167893471930814242652526162152619546041242615151653990184623175").map_err(|_| ()).unwrap(), Fq::from_str("3546351782556761966634238365300793530101766032734247847631348153218054433710").map_err(|_| ()).unwrap(), Fq::from_str("6941379896394926157279545496034560776204185627880417585133134949693486894967").map_err(|_| ()).unwrap(), Fq::from_str("3765682351607970622474687645495718516809053317470313795212873610836687492641").map_err(|_| ()).unwrap(), Fq::from_str("1207533003481997657312293689910907907236139141655579992322510033847857304531").map_err(|_| ()).unwrap(), Fq::from_str("2367608536896159625655496931554378270669809712765549804935381107581639335217").map_err(|_| ()).unwrap(), Fq::from_str("6740684757519218497781122306839073844591800192518192807966040074697494708307").map_err(|_| ()).unwrap(), Fq::from_str("4825078264829092308849020398835091230150958669789654848183245719996217810228").map_err(|_| ()).unwrap(), Fq::from_str("757849457700891267639946788002659929760787593114261537886517453442631326884").map_err(|_| ()).unwrap(), Fq::from_str("7617772044426127670284892056579815733041062017845578841457124144997188700609").map_err(|_| ()).unwrap(), Fq::from_str("6126914317054895618513724602591620020763139973453381199031734626160282424363").map_err(|_| ()).unwrap(), Fq::from_str("7309843634867779812093280088790495003505753384616149220486277128321443360023").map_err(|_| ()).unwrap(), Fq::from_str("1259045021150840298617452894914942995550334738680554788989111034227499491886").map_err(|_| ()).unwrap(), Fq::from_str("6908852663530609931869772676856572326587751586644415647416984824204508461868").map_err(|_| ()).unwrap(), Fq::from_str("2671163502279357383610023212372912845574427645391569743630053050134656449368").map_err(|_| ()).unwrap(), Fq::from_str("2253946543527456223564501046546653180581332524942313474306216527047916362566").map_err(|_| ()).unwrap(), Fq::from_str("2030100334146239207771413242471735260650620721144598972699602321723136370634").map_err(|_| ()).unwrap(), Fq::from_str("40136492577474487082578317934995153095444291472418348784208268307823576963").map_err(|_| ()).unwrap(), Fq::from_str("1328502896116213008216090269243206830476875304891514589862470805735960197505").map_err(|_| ()).unwrap(), Fq::from_str("2175457100448366043468948306824876374571255415169204367917523352636059523500").map_err(|_| ()).unwrap(), Fq::from_str("848096714151848638058077696231402045438976521686198724753397956243263361176").map_err(|_| ()).unwrap(), Fq::from_str("7326707703146548191924309921234510923213429298978752715858856593375670975031").map_err(|_| ()).unwrap(), Fq::from_str("8020848049439135363046795113229123697335011439425849583690097857796354293406").map_err(|_| ()).unwrap(), Fq::from_str("2872066176395073354270436839808457995283183903908368639216624738139270132084").map_err(|_| ()).unwrap(), Fq::from_str("5471198344191077510316915787799643927338870830479949711570028837725727564729").map_err(|_| ()).unwrap(), Fq::from_str("1741430244738961672359734090272574360220271561693335033986668762944253150357").map_err(|_| ()).unwrap(), Fq::from_str("4356718847916159090890175332029871781666686525313324801485121290210350977313").map_err(|_| ()).unwrap(), Fq::from_str("1915825281181304681717438772665664008551415142216399579957772298761588670131").map_err(|_| ()).unwrap(), Fq::from_str("6752507498248911914258494537015947822770496022652738004954334046021268179431").map_err(|_| ()).unwrap(), Fq::from_str("6435500822045476885664457278250354078183208240173088455313671699589064210926").map_err(|_| ()).unwrap(), Fq::from_str("4005655958479828597482874865200570219717330877601858610297703126495951848191").map_err(|_| ()).unwrap(), Fq::from_str("7603056894886664726937737797763939814260275998741045549962283638102561816924").map_err(|_| ()).unwrap(), Fq::from_str("7795000395210164850220878606140677113277107373288537208497722455538220318806").map_err(|_| ()).unwrap(), Fq::from_str("917320595292638661667403842817932900132962299959363554479605980634588307616").map_err(|_| ()).unwrap(), Fq::from_str("6195953597262272816204513727519160769187324292780523758506326479711653329716").map_err(|_| ()).unwrap(), Fq::from_str("5210320134011615244811769147852947156213832233893904017659562469491212996451").map_err(|_| ()).unwrap(), Fq::from_str("2678514272744198115243461877272315308662882251029646710852224841033352683757").map_err(|_| ()).unwrap(), Fq::from_str("8245480591264354451287811907600289397193312401022996926386207111592224163474").map_err(|_| ()).unwrap(), Fq::from_str("1810723795729939140285130542608913912106146186624803481958058125368137246958").map_err(|_| ()).unwrap(), Fq::from_str("6934231245879731726925076918123133287631381869999919632026827777187779792677").map_err(|_| ()).unwrap(), Fq::from_str("590834790443507840356941266970275491247008371407676094240923921500838927945").map_err(|_| ()).unwrap(), Fq::from_str("3878921643809799253821622216886490966257939494370483252296976611002702558042").map_err(|_| ()).unwrap(), Fq::from_str("928826120010035496569791931286940620206504111619818440942374788925304449363").map_err(|_| ()).unwrap(), Fq::from_str("6725026018629510451281875456543760311503078154949570854941233701799070311778").map_err(|_| ()).unwrap(), Fq::from_str("3003148202782596396359186535120522667375370570161108490841163463175802317848").map_err(|_| ()).unwrap(), Fq::from_str("1886891004374730958071000580978109068595840002475804123014204342684111463015").map_err(|_| ()).unwrap(), Fq::from_str("4565805385814231959782079505107795930916475365536886260229957711935491849452").map_err(|_| ()).unwrap(), Fq::from_str("1211834574858376502921448977740611760260468466113172479096577881268438497754").map_err(|_| ()).unwrap(), Fq::from_str("6245508252456431611061613652416050411030580391326361212667451154702429416845").map_err(|_| ()).unwrap(), Fq::from_str("829315491499023305058712884431039396396667828840054776463716212478411575752").map_err(|_| ()).unwrap(), Fq::from_str("7538445340263150076248828200494071745257103202342849297416972546781664247095").map_err(|_| ()).unwrap(), Fq::from_str("5643327396007828505091548576410746339436977397667960710498393093284201075199").map_err(|_| ()).unwrap(), Fq::from_str("7515779657260457854721203868528633163235381684326685705752702650452559910840").map_err(|_| ()).unwrap(), Fq::from_str("7452702100554733045412057646117433044694697722837077538785827886899132485977").map_err(|_| ()).unwrap(), Fq::from_str("4553783823481622598308870589366435852853680348100846921212856662869809684516").map_err(|_| ()).unwrap(), Fq::from_str("582929454544911278140721152001621380689152904415578510371086119231524052122").map_err(|_| ()).unwrap(), Fq::from_str("2284335772357371554233517681079027956753057991678774936927402945058752085321").map_err(|_| ()).unwrap(), Fq::from_str("5456684552687898964128826005037487511571662299569174067002182911602835717397").map_err(|_| ()).unwrap(), Fq::from_str("2002766771156843817402660103013565137257774523956112626124274058994616233711").map_err(|_| ()).unwrap(), Fq::from_str("2312028605300893937127988713572164770169393391336467553404005721687095966100").map_err(|_| ()).unwrap(), Fq::from_str("7429303438479759992240463746909874635268332144238861549000030011997194127215").map_err(|_| ()).unwrap(), Fq::from_str("3106223239863153611616263771405196091523360216634991325659058227193347801900").map_err(|_| ()).unwrap(), Fq::from_str("6666946274405723279700227546539310587325390124439913891132320173241483283276").map_err(|_| ()).unwrap(), Fq::from_str("4676739466967224175622289159690926752476707108222464504599081378960389643604").map_err(|_| ()).unwrap(), Fq::from_str("5842607952834968017287120965908363015129772426718623461132697578633585777835").map_err(|_| ()).unwrap(), Fq::from_str("5364783892198285595872026636595901526366350468040516432385252101459015607425").map_err(|_| ()).unwrap(), Fq::from_str("3485071970907145275247724645416736271673602860278751978873660448943580044221").map_err(|_| ()).unwrap(), Fq::from_str("2798375185753767667864026874563050421569326201523512568962672770491907455655").map_err(|_| ()).unwrap(), Fq::from_str("2414417638752144032012037528494000192657497689382278627035876594592511005075").map_err(|_| ()).unwrap(), Fq::from_str("661987636789252083679799885930108147461569289914044898496917133723045450092").map_err(|_| ()).unwrap(), Fq::from_str("5687593546992634801859329177869530088715688782465673628312854308203741896917").map_err(|_| ()).unwrap(), Fq::from_str("7224382516678941224777121759643483563668065974824311819278532059088473345148").map_err(|_| ()).unwrap(), Fq::from_str("431324183660472307669367902329073117234054304078961028486928758152864434759").map_err(|_| ()).unwrap(), Fq::from_str("4518877277533199499328766120518460996085100690609686158177602172519906068797").map_err(|_| ()).unwrap(), Fq::from_str("5391835477134703796034069251540723745522041339998688727108117190445638218851").map_err(|_| ()).unwrap(), Fq::from_str("3084131590160580774264885819879705586133663474490831704510266745422724996982").map_err(|_| ()).unwrap(), Fq::from_str("7779069091452917819020830713067226165449989015518979911433840971527131208460").map_err(|_| ()).unwrap(), Fq::from_str("185039770821595137236804133069099322985998472494483272069999744789889748848").map_err(|_| ()).unwrap(), Fq::from_str("8029477893257488211042037110746440704171814734977854419426564734945403648225").map_err(|_| ()).unwrap(), Fq::from_str("3768811872439582740294129582266604115776257432703540992101255817181729546568").map_err(|_| ()).unwrap(), Fq::from_str("1482701443747440584653760022259498129978952597727550260447685354298247805065").map_err(|_| ()).unwrap(), Fq::from_str("6940725841548915128089313173093112642668367371612971137422813583883070977419").map_err(|_| ()).unwrap(), Fq::from_str("7498036603151279444684091327644632652332501180713944745737503727104975850454").map_err(|_| ()).unwrap(), Fq::from_str("4485051050305917836897380943903236575176223122801326374563206647816422053464").map_err(|_| ()).unwrap(), Fq::from_str("2862270592035779624634242584383423114075858614411294290698966342579552164222").map_err(|_| ()).unwrap(), Fq::from_str("1647597539230627465120566478976349420540412563694969080667082579863039057373").map_err(|_| ()).unwrap(), Fq::from_str("2670201293323303124920879729977856964926310351640714430891874568696667805337").map_err(|_| ()).unwrap(), Fq::from_str("3944874080431099508600740397660159104644491848586265845399439481741594893428").map_err(|_| ()).unwrap(), Fq::from_str("7441608756273399065608904743120755272296171834839220814870650164707179356912").map_err(|_| ()).unwrap(), Fq::from_str("6448147535752588404685046340000155603472743418043360747756219986387781466729").map_err(|_| ()).unwrap(), Fq::from_str("5246883906182231937623153878741265494276942057768692645745562548865838158227").map_err(|_| ()).unwrap(), Fq::from_str("4146044029517896137506086049777462016160932079767861805167428658152269564679").map_err(|_| ()).unwrap(), Fq::from_str("4856783742090289027612628795887617911978474669313962818839010919653628981233").map_err(|_| ()).unwrap(), Fq::from_str("2994890752665575333204004982104058531275290219946751520581554652298499133699").map_err(|_| ()).unwrap(), Fq::from_str("2449052342444801026698260247824121080288486515536555296023314187125749374667").map_err(|_| ()).unwrap(), Fq::from_str("2998786513251520792110140149737413892348621005345980678472512625605781277269").map_err(|_| ()).unwrap(), Fq::from_str("660277759815832118079627194170579158731511263502134490252450512640490622254").map_err(|_| ()).unwrap(), Fq::from_str("7602834738389654410189879303443257302829142924668683337951052496876613659845").map_err(|_| ()).unwrap(), Fq::from_str("4340254507665859492530130696279616022801890966228654788432228468846874201375").map_err(|_| ()).unwrap(), Fq::from_str("5538783359704656375901433745566656948139511044612264529704996966790826021331").map_err(|_| ()).unwrap(), Fq::from_str("3740488357066247880091047485243143039778583067909431245989521589582403638447").map_err(|_| ()).unwrap(), Fq::from_str("6444251413257263526126290780550542774216406844238753461960215028723949862696").map_err(|_| ()).unwrap(), Fq::from_str("7341641947663484844328043515343729807909123936609985775023717633635987610112").map_err(|_| ()).unwrap(), Fq::from_str("954055219472603312910258066170353018500350168365512755779257151877511630849").map_err(|_| ()).unwrap(), Fq::from_str("621979679398477706810119322235034055302387926836012978866753665488872010166").map_err(|_| ()).unwrap(), Fq::from_str("3045972520082664782397200265123298357095533988312257765706650537831607944165").map_err(|_| ()).unwrap(), Fq::from_str("3774523491402165283426529523346257893701036791463548019014538571630832704683").map_err(|_| ()).unwrap(), Fq::from_str("2633833230646472413009451168674544903622103194742856911343971423451860020388").map_err(|_| ()).unwrap(), Fq::from_str("2372068134128172337438976361288541510866738140480909090174334164945407149325").map_err(|_| ()).unwrap(), Fq::from_str("4819747858487835465383178000494913565381678619979030845813448322856621588130").map_err(|_| ()).unwrap(), Fq::from_str("8147948816888556558788092973070747332316476606228906915149695608802272561318").map_err(|_| ()).unwrap(), Fq::from_str("1970454002571994669100590431760352850990506694744060999685808298178024455964").map_err(|_| ()).unwrap(), Fq::from_str("2382858340760720645193645833728214361901466798856555408619241315953704006287").map_err(|_| ()).unwrap(), Fq::from_str("4540589684254621896005473622215466361161492265388117654076724327951184932003").map_err(|_| ()).unwrap(), Fq::from_str("5890930679685294775127431961519672035001620239007610895722648188666415313360").map_err(|_| ()).unwrap(), Fq::from_str("4865100902944156473127085391446401225646462288726828322536464280533200989062").map_err(|_| ()).unwrap(), Fq::from_str("3640872870152505776282378684709027479987537052878181719999535648429006990754").map_err(|_| ()).unwrap(), Fq::from_str("4779523772891030661115866801947819205976229759777229507696949668063262418709").map_err(|_| ()).unwrap(), Fq::from_str("365885605870642222320559055492012121319541489302160518999844827775852861569").map_err(|_| ()).unwrap(), Fq::from_str("1071971747185306581402948225183571120598245219902341532930085617181119603325").map_err(|_| ()).unwrap(), Fq::from_str("6856531985325327376182983118412466978838692044064549776560719026899179236755").map_err(|_| ()).unwrap(), Fq::from_str("3041505653817756266549815698332245539498299392746043138164441503445649195214").map_err(|_| ()).unwrap(), Fq::from_str("1648538485556134432618529454438366597771911820623077423559278747670707945349").map_err(|_| ()).unwrap(), Fq::from_str("8021843423576337942812993729691463285991026345526291427970076858087072972681").map_err(|_| ()).unwrap(), Fq::from_str("3507873657708557599838709925109001352680898474781609934600305570106363693891").map_err(|_| ()).unwrap(), Fq::from_str("3075383093881241495899353144182411167741769296334327341278851133385063141014").map_err(|_| ()).unwrap(), Fq::from_str("8347930078798039471049340625814038199459634608701298651893809115795742304550").map_err(|_| ()).unwrap(), Fq::from_str("4956438466327574269145554000595944930223480515490309938282011695704748745643").map_err(|_| ()).unwrap(), Fq::from_str("2154123169732422630171543118390041433815790688868035745995458312417851614105").map_err(|_| ()).unwrap(), Fq::from_str("471581645724928297880218751701571715649648075005561136173031649772147644664").map_err(|_| ()).unwrap(), Fq::from_str("6282973807228559347678931248652784570495288746294696867286034565521376625120").map_err(|_| ()).unwrap(), Fq::from_str("1416024922195333694909038858996253797782585494758699299469010179303933407535").map_err(|_| ()).unwrap(), Fq::from_str("2536786345769540458457197026434576201843040132602962654330301529321277853807").map_err(|_| ()).unwrap(), Fq::from_str("3625346994346262101074016662525684274846352014684613212636681749029860414438").map_err(|_| ()).unwrap(), Fq::from_str("8185154950738214151796515968928351126603905297125790874608920063796767252690").map_err(|_| ()).unwrap(), Fq::from_str("2091359350151991805321734262591896664272488333838196693958572789838473427626").map_err(|_| ()).unwrap(), Fq::from_str("7893870176223799684038550109973360297326111269737078480578958224089785457116").map_err(|_| ()).unwrap(), Fq::from_str("1520182496293084184060350659186894159187633793202146327512504615309868073244").map_err(|_| ()).unwrap(), Fq::from_str("986343632237534315729765358105004123719914801088741895575181866570497964221").map_err(|_| ()).unwrap(), Fq::from_str("4097141299559832108681797482282499886552681964557682291595867549941946001900").map_err(|_| ()).unwrap(), Fq::from_str("5170162657752733961617316579862704251015678496124961523018864855203991590574").map_err(|_| ()).unwrap(), Fq::from_str("7493448755702210572189375484947729156648010297427762392736281250135251611888").map_err(|_| ()).unwrap(), Fq::from_str("6306473423076606291527527393606984727052936248884714392394987865264933460998").map_err(|_| ()).unwrap(), Fq::from_str("6490159471621292220891426718270011645908869111376473944426770950932725435316").map_err(|_| ()).unwrap(), Fq::from_str("3085590823906807640982299920152736395554307120994537085809023375753886005214").map_err(|_| ()).unwrap(), Fq::from_str("6470210152105334455344254379422681911310598808426785938835085698000538958774").map_err(|_| ()).unwrap(), Fq::from_str("6384336895500659645759952084976852819294861590593737217260679303514486658147").map_err(|_| ()).unwrap(), Fq::from_str("5403908794555626454891599520460723503768107553937985694373405266900803378169").map_err(|_| ()).unwrap(), Fq::from_str("7491312003383848086366979202793200051175563793929611119984170139909207668912").map_err(|_| ()).unwrap(), Fq::from_str("4387144195323867178748400107405487976710661311964448504266174388350850987894").map_err(|_| ()).unwrap(), Fq::from_str("2359754701244196043720426483051454843104685842583792338379012975172349507848").map_err(|_| ()).unwrap(), Fq::from_str("6267415440471529358165929206436078810779767091328742668461372203706996320269").map_err(|_| ()).unwrap(), Fq::from_str("244265221148857592230117779251126109093672259705074593425726854244432431537").map_err(|_| ()).unwrap(), Fq::from_str("3339783573831930710228181302359655715657861147157281612383276198708893187560").map_err(|_| ()).unwrap(), Fq::from_str("4616762454119578616027399475977737765223162792543279667476807359876684539357").map_err(|_| ()).unwrap(), Fq::from_str("2701067941287335451337695832217251573222436646292125046249999856859643981490").map_err(|_| ()).unwrap(), Fq::from_str("5393196336119855744824571655674412475633706505827284947563193413492438488691").map_err(|_| ()).unwrap(), Fq::from_str("6796573436449302551523083955724739045751503643681750413111371067794789878597").map_err(|_| ()).unwrap(), Fq::from_str("1717871245275641451442602910236392322516037306074008675881250178168072663141").map_err(|_| ()).unwrap(), Fq::from_str("2525541969317989804751812899254922410702247459776828808500461785313548593449").map_err(|_| ()).unwrap(), Fq::from_str("4393406080224759831407943487747233497883289715389419134393180407785819428816").map_err(|_| ()).unwrap(), Fq::from_str("759271099303622493097265875295304471216619404471506323635435779228707599323").map_err(|_| ()).unwrap(), Fq::from_str("6657858624373344153040139320987988391335408962732827923838403731161871088770").map_err(|_| ()).unwrap(), Fq::from_str("6939038849898671885316533183739266254229700214001815157826574893807635000524").map_err(|_| ()).unwrap(), Fq::from_str("2956062250044031925588211089300332661152138256628933421957907397358544574740").map_err(|_| ()).unwrap()]), +// mds: MdsMatrix::from_elements(vec![Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("8042344523265114689760785655982425267977046985861013169462127100873723084801").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("8042344523265114689760785655982425267977046985861013169462127100873723084801").map_err(|_| ()).unwrap(), Fq::from_str("1151517511285686876033930673470210890642168091157372340172986380352373987142").map_err(|_| ()).unwrap()]), +// alpha: Alpha::Exponent(17), +// rounds: RoundNumbers {r_P: 31, r_F: 8}, +// optimized_mds: OptimizedMdsMatrices { +// M_hat: SquareMatrix::new(7, 7, vec![Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("8042344523265114689760785655982425267977046985861013169462127100873723084801").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("8042344523265114689760785655982425267977046985861013169462127100873723084801").map_err(|_| ()).unwrap(), Fq::from_str("1151517511285686876033930673470210890642168091157372340172986380352373987142").map_err(|_| ()).unwrap()]), +// v: Matrix::new(1, 7, vec![Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap()]), +// w: Matrix::new(7, 1, vec![Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap()]), +// M_prime: SquareMatrix::new(8, 8, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("8042344523265114689760785655982425267977046985861013169462127100873723084801").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("8042344523265114689760785655982425267977046985861013169462127100873723084801").map_err(|_| ()).unwrap(), Fq::from_str("1151517511285686876033930673470210890642168091157372340172986380352373987142").map_err(|_| ()).unwrap()]), +// M_doubleprime: SquareMatrix::new(8, 8, vec![Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("1876547055428526760944183319729232562527977630034236406207829656870535386466").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3940748816399906197982784971431388381308753023071896453036442279428124311489").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974457").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1279463901428540973371034081633567656269075656841524822414429311502637763217").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4015548244483420901041399271588427721213714369164170211885285839177509288748").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6436687627186659973728125302987332670769042150571978721992590536328654594667").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4200578408690009903344287277240051351504934541076636878511372539610198442011").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap()]), +// M_inverse: SquareMatrix::new(8, 8, vec![Fq::from_str("331273800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455913286720641").map_err(|_| ()).unwrap(), Fq::from_str("21024843840").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455860068755841").map_err(|_| ()).unwrap(), Fq::from_str("90789098400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455833603917441").map_err(|_| ()).unwrap(), Fq::from_str("41902660800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455908629633921").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455913286720641").map_err(|_| ()).unwrap(), Fq::from_str("51943731840").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455649820317441").map_err(|_| ()).unwrap(), Fq::from_str("735869534400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454744134736641").map_err(|_| ()).unwrap(), Fq::from_str("1089469180800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455369881137921").map_err(|_| ()).unwrap(), Fq::from_str("115232317200").map_err(|_| ()).unwrap(), Fq::from_str("21024843840").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455649820317441").map_err(|_| ()).unwrap(), Fq::from_str("1389975787200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233452068245520641").map_err(|_| ()).unwrap(), Fq::from_str("6173658691200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233450155327793921").map_err(|_| ()).unwrap(), Fq::from_str("2908743037200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455302836880641").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455860068755841").map_err(|_| ()).unwrap(), Fq::from_str("735869534400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233452068245520641").map_err(|_| ()).unwrap(), Fq::from_str("10722670358400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233438631164903681").map_err(|_| ()).unwrap(), Fq::from_str("16205854064400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233447704487722241").map_err(|_| ()).unwrap(), Fq::from_str("1741288348800").map_err(|_| ()).unwrap(), Fq::from_str("90789098400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454744134736641").map_err(|_| ()).unwrap(), Fq::from_str("6173658691200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233438631164903681").map_err(|_| ()).unwrap(), Fq::from_str("27991929747600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233429572063594241").map_err(|_| ()).unwrap(), Fq::from_str("13397846716800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233453068028304641").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455833603917441").map_err(|_| ()).unwrap(), Fq::from_str("1089469180800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233450155327793921").map_err(|_| ()).unwrap(), Fq::from_str("16205854064400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233429572063594241").map_err(|_| ()).unwrap(), Fq::from_str("24881715331200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233443224712349441").map_err(|_| ()).unwrap(), Fq::from_str("2706911887680").map_err(|_| ()).unwrap(), Fq::from_str("41902660800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455369881137921").map_err(|_| ()).unwrap(), Fq::from_str("2908743037200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233447704487722241").map_err(|_| ()).unwrap(), Fq::from_str("13397846716800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233443224712349441").map_err(|_| ()).unwrap(), Fq::from_str("6492802639680").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454529249296641").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455908629633921").map_err(|_| ()).unwrap(), Fq::from_str("115232317200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455302836880641").map_err(|_| ()).unwrap(), Fq::from_str("1741288348800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233453068028304641").map_err(|_| ()).unwrap(), Fq::from_str("2706911887680").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454529249296641").map_err(|_| ()).unwrap(), Fq::from_str("297462844800").map_err(|_| ()).unwrap()]), +// M_hat_inverse: SquareMatrix::new(7, 7, vec![Fq::from_str("641280640").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455911462818561").map_err(|_| ()).unwrap(), Fq::from_str("22299076800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455873954627841").map_err(|_| ()).unwrap(), Fq::from_str("46558512000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891336472321").map_err(|_| ()).unwrap(), Fq::from_str("5975009040").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455911462818561").map_err(|_| ()).unwrap(), Fq::from_str("55599031488").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455707454854401").map_err(|_| ()).unwrap(), Fq::from_str("411577246080").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455474172204801").map_err(|_| ()).unwrap(), Fq::from_str("249320831760").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455860049152257").map_err(|_| ()).unwrap(), Fq::from_str("22299076800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455707454854401").map_err(|_| ()).unwrap(), Fq::from_str("797553993600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454345932481281").map_err(|_| ()).unwrap(), Fq::from_str("1699914762000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454957457373441").map_err(|_| ()).unwrap(), Fq::from_str("221618517120").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455873954627841").map_err(|_| ()).unwrap(), Fq::from_str("411577246080").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454345932481281").map_err(|_| ()).unwrap(), Fq::from_str("3110214416400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233452539800823041").map_err(|_| ()).unwrap(), Fq::from_str("1913978102400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455474172204801").map_err(|_| ()).unwrap(), Fq::from_str("46558512000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455474172204801").map_err(|_| ()).unwrap(), Fq::from_str("1699914762000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233452539800823041").map_err(|_| ()).unwrap(), Fq::from_str("3680727120000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233453825206455041").map_err(|_| ()).unwrap(), Fq::from_str("485855979840").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891336472321").map_err(|_| ()).unwrap(), Fq::from_str("249320831760").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454957457373441").map_err(|_| ()).unwrap(), Fq::from_str("1913978102400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233453825206455041").map_err(|_| ()).unwrap(), Fq::from_str("1192555586880").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455639777250561").map_err(|_| ()).unwrap(), Fq::from_str("5975009040").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455860049152257").map_err(|_| ()).unwrap(), Fq::from_str("221618517120").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455474172204801").map_err(|_| ()).unwrap(), Fq::from_str("485855979840").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455639777250561").map_err(|_| ()).unwrap(), Fq::from_str("64780797312").map_err(|_| ()).unwrap()]), +// M_00: Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), +// M_i: Matrix::new(8, 8, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5987802675949301722734385919344137409857194935044766256074095640396681039620").map_err(|_| ()).unwrap(), Fq::from_str("3553705083859528362617438366698217359460023642562222809102497295709732843049").map_err(|_| ()).unwrap(), Fq::from_str("1471498806406329435653147925889651042291246022460863395407601073234501312545").map_err(|_| ()).unwrap(), Fq::from_str("7327333833707077501239003319093682957785371992237509876238455576393180821184").map_err(|_| ()).unwrap(), Fq::from_str("4528896639439799324617953490368919146378250448146155586883292735308991953644").map_err(|_| ()).unwrap(), Fq::from_str("237790219739220190185128338681864436314293209860904232407596054589852123998").map_err(|_| ()).unwrap(), Fq::from_str("7980037802415770957241592981036111647175626945384370454240323936626768569375").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3553705083859528362617438366698217359460023642562222809102497295709732843049").map_err(|_| ()).unwrap(), Fq::from_str("3508443347698883923356335547785729687612222249185397723735886584774205036076").map_err(|_| ()).unwrap(), Fq::from_str("4560714272573214180482754936523249208839114909110599725316757684969169339990").map_err(|_| ()).unwrap(), Fq::from_str("6144159359716410116981577774822403752412981418640990629076790115919294821466").map_err(|_| ()).unwrap(), Fq::from_str("951590151720823176384478317185369533014426946486914990566558990833034190696").map_err(|_| ()).unwrap(), Fq::from_str("5247386132682151562738764958592545833305864671135408282506693808101502023013").map_err(|_| ()).unwrap(), Fq::from_str("8337767701504474018913570462304750872904718586427535123402022807024886922784").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1471498806406329435653147925889651042291246022460863395407601073234501312545").map_err(|_| ()).unwrap(), Fq::from_str("4560714272573214180482754936523249208839114909110599725316757684969169339990").map_err(|_| ()).unwrap(), Fq::from_str("1786015959091056798080035641825072671264475024520963143882954708758594992367").map_err(|_| ()).unwrap(), Fq::from_str("1950891177939887640697138530443964835164958008167870202318068975784795408880").map_err(|_| ()).unwrap(), Fq::from_str("6717212549584634724964634331096801776928043887780579188448771387758173398978").map_err(|_| ()).unwrap(), Fq::from_str("635198105378237387307776049704032658349755686396875644857765922796927875915").map_err(|_| ()).unwrap(), Fq::from_str("3095148013001311046817328885645685570642748290737833907229522220911216382997").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7327333833707077501239003319093682957785371992237509876238455576393180821184").map_err(|_| ()).unwrap(), Fq::from_str("6144159359716410116981577774822403752412981418640990629076790115919294821466").map_err(|_| ()).unwrap(), Fq::from_str("1950891177939887640697138530443964835164958008167870202318068975784795408880").map_err(|_| ()).unwrap(), Fq::from_str("8387532266654620581348630508238588355481223248899836244135652430363895602355").map_err(|_| ()).unwrap(), Fq::from_str("2650694787661483373619145108833496474237329209702318227944058573141282685946").map_err(|_| ()).unwrap(), Fq::from_str("5533919037673724620511302335117804120276201450591187300716841214469989374792").map_err(|_| ()).unwrap(), Fq::from_str("5246922544191653694134152075354469250176891713518109233999908508463235368025").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4528896639439799324617953490368919146378250448146155586883292735308991953644").map_err(|_| ()).unwrap(), Fq::from_str("951590151720823176384478317185369533014426946486914990566558990833034190696").map_err(|_| ()).unwrap(), Fq::from_str("6717212549584634724964634331096801776928043887780579188448771387758173398978").map_err(|_| ()).unwrap(), Fq::from_str("2650694787661483373619145108833496474237329209702318227944058573141282685946").map_err(|_| ()).unwrap(), Fq::from_str("4683860795254151995118777804192174160709422264912795099871743771790179518211").map_err(|_| ()).unwrap(), Fq::from_str("7485050546895969666725737679261803808393726473422573724872927284363282181066").map_err(|_| ()).unwrap(), Fq::from_str("7075563150891563543018066683010289076432378200940445857257754620150534944364").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("237790219739220190185128338681864436314293209860904232407596054589852123998").map_err(|_| ()).unwrap(), Fq::from_str("5247386132682151562738764958592545833305864671135408282506693808101502023013").map_err(|_| ()).unwrap(), Fq::from_str("635198105378237387307776049704032658349755686396875644857765922796927875915").map_err(|_| ()).unwrap(), Fq::from_str("5533919037673724620511302335117804120276201450591187300716841214469989374792").map_err(|_| ()).unwrap(), Fq::from_str("7485050546895969666725737679261803808393726473422573724872927284363282181066").map_err(|_| ()).unwrap(), Fq::from_str("3417748148482912299230167032939376641166673547855060675897122853291289371726").map_err(|_| ()).unwrap(), Fq::from_str("4963343343321585433868151343546992102250304092632696150330940061467712531806").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7980037802415770957241592981036111647175626945384370454240323936626768569375").map_err(|_| ()).unwrap(), Fq::from_str("8337767701504474018913570462304750872904718586427535123402022807024886922784").map_err(|_| ()).unwrap(), Fq::from_str("3095148013001311046817328885645685570642748290737833907229522220911216382997").map_err(|_| ()).unwrap(), Fq::from_str("5246922544191653694134152075354469250176891713518109233999908508463235368025").map_err(|_| ()).unwrap(), Fq::from_str("7075563150891563543018066683010289076432378200940445857257754620150534944364").map_err(|_| ()).unwrap(), Fq::from_str("4963343343321585433868151343546992102250304092632696150330940061467712531806").map_err(|_| ()).unwrap(), Fq::from_str("8159993471843855332094099775842401052452467944366702145198144441356061228407").map_err(|_| ()).unwrap()]), +// v_collection: vec![Matrix::new(1, 7, vec![Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("5219146497910590053876009857996928064530937783532720004765526233171176543574").map_err(|_| ()).unwrap(), Fq::from_str("7899780168450127086835062905352785829862723475259935282824541722792671118598").map_err(|_| ()).unwrap(), Fq::from_str("8067124429871446632935527648921999756408570143481961188723500863706443405818").map_err(|_| ()).unwrap(), Fq::from_str("4429969631449676176188987442517409199991973239572039784208562210514978807837").map_err(|_| ()).unwrap(), Fq::from_str("3498505526508972792512927050497411340209246826006802252908736972880120073444").map_err(|_| ()).unwrap(), Fq::from_str("5696732086386662823969710914775098188683101104282602265196266433118929294697").map_err(|_| ()).unwrap(), Fq::from_str("4637987270057961719928725688465944067528292177932567189877466188757148737872").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7415693080699932064364849636074970636625742841193427172306106792355821729407").map_err(|_| ()).unwrap(), Fq::from_str("5391905966602543289406683148770611740036208408712987814963626389129094231390").map_err(|_| ()).unwrap(), Fq::from_str("7063566820767301122758024960012172736112562763789704908071087116185515244386").map_err(|_| ()).unwrap(), Fq::from_str("4073359495093618330560810719601847054572773308210789257623555721217937299615").map_err(|_| ()).unwrap(), Fq::from_str("4810356859393596811894340406879850492222203487617904700559785794130590739481").map_err(|_| ()).unwrap(), Fq::from_str("7891574885194451625400293769476857514010232262187438024394094254239472968266").map_err(|_| ()).unwrap(), Fq::from_str("3308634882010814802384259353585548921336022975300912838553343585716795852178").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("579073959925806491953540826025781735378520241546644982357934608498807236184").map_err(|_| ()).unwrap(), Fq::from_str("2907226757671246798681581930419855667608471662674916637084392882988970852583").map_err(|_| ()).unwrap(), Fq::from_str("8156406236938990361476914247603978213558239661537529232857139585183723547841").map_err(|_| ()).unwrap(), Fq::from_str("5243026264413841311155283516691647864915859747889312836817177160806140861274").map_err(|_| ()).unwrap(), Fq::from_str("6575655272740609656600320613123041637168155202248295957098678098769321491790").map_err(|_| ()).unwrap(), Fq::from_str("4825320608297442975315222076964475406171816389454849516794472330236729339594").map_err(|_| ()).unwrap(), Fq::from_str("974743027463604342780669477305383217358432018569005521612149956927566172268").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("3574936129284657137947148210970002706352158491363595460951898503884178385217").map_err(|_| ()).unwrap(), Fq::from_str("2645177403441472977319190318136965589313267860656229331796029563726252613752").map_err(|_| ()).unwrap(), Fq::from_str("2290263721944597416384490908094950593869119707645489202242107971524589380613").map_err(|_| ()).unwrap(), Fq::from_str("5791632002335649526864557012489252809115071401905890338234871396931239040306").map_err(|_| ()).unwrap(), Fq::from_str("794639593196062266821628409361492770613558676051338103517009785469926246152").map_err(|_| ()).unwrap(), Fq::from_str("610352968679606882198703556973663980339738544578371485313426020880831163161").map_err(|_| ()).unwrap(), Fq::from_str("4910144646748681105322539635150289921989139879696515742553249594832949530333").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("4730502537277752940588121584558756294403865542173129225143110856167856031643").map_err(|_| ()).unwrap(), Fq::from_str("6893955669674486886581759798105165730772561974844595049036458705642028644437").map_err(|_| ()).unwrap(), Fq::from_str("7107040296125890793195024914039920264826542368573246995877913824761506257896").map_err(|_| ()).unwrap(), Fq::from_str("7789699459005903584349152278301427638773525354818791542919178568458284630759").map_err(|_| ()).unwrap(), Fq::from_str("4546110736822651777310046028398708729766201966608524881508681707518874426125").map_err(|_| ()).unwrap(), Fq::from_str("2060511813305880084114582417089748441359691618769269705763905261737275558681").map_err(|_| ()).unwrap(), Fq::from_str("2791397867587663277090301095251556721321704086298635963805460370120822994894").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7642892199182292173023175522572484012093196254898777241608588771772720163462").map_err(|_| ()).unwrap(), Fq::from_str("3433840508679392671375376209567845274889554655260280739185505981916839072460").map_err(|_| ()).unwrap(), Fq::from_str("1592423932310440230146378604626640092213187726585085264923403126541689131414").map_err(|_| ()).unwrap(), Fq::from_str("1067672748385758625392479661696295307429418798809950746556323793442631948787").map_err(|_| ()).unwrap(), Fq::from_str("1356404616469048446953514899679085784101960908561894133021765961085416743216").map_err(|_| ()).unwrap(), Fq::from_str("4393349844635422641754579540656962737075487462085058301475752751294988314485").map_err(|_| ()).unwrap(), Fq::from_str("6759796157382764528040137610573218386127935026179881706033917731793102622352").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("4125103463970419603397915653877922802488806283516324893288974204174483056788").map_err(|_| ()).unwrap(), Fq::from_str("5591634307151490754844500409194491577227754096314058218954740936405232230035").map_err(|_| ()).unwrap(), Fq::from_str("3041461786294355221095900899936074454982148181448250132594371583680037319675").map_err(|_| ()).unwrap(), Fq::from_str("1443520442884336543332900885259183427403063748640361379559162193352537692636").map_err(|_| ()).unwrap(), Fq::from_str("3069759010130040043167675039546268816663342559067709434766787980246793735035").map_err(|_| ()).unwrap(), Fq::from_str("7961014071743534019014632448301344184990745512052695141346453071736340876493").map_err(|_| ()).unwrap(), Fq::from_str("18215202940431684213494834772814725774891716048434570833729449898243135326").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7157496258599630562443972470145215044976756443455976232702688889408096009174").map_err(|_| ()).unwrap(), Fq::from_str("7520287540794388925603391285905662999662867195701633633495232082926266548052").map_err(|_| ()).unwrap(), Fq::from_str("5865678293200537496037868265176039708372417614631306379269068101604940433194").map_err(|_| ()).unwrap(), Fq::from_str("48004315796779157691424675110866081084916533064693197340621977788423547542").map_err(|_| ()).unwrap(), Fq::from_str("678794553559570614270566850828831439399778738331790728297982871331582695195").map_err(|_| ()).unwrap(), Fq::from_str("3665848980303301998938665417345118587489227783966860769406538529633068046058").map_err(|_| ()).unwrap(), Fq::from_str("1147022452428813261950595937478921464670665000738494818578826520030558355324").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("5324236208655075021241096182211904237241693203573283720021860333722404902980").map_err(|_| ()).unwrap(), Fq::from_str("4094213580406721438004663397518300270502593826351509547417470918983127495970").map_err(|_| ()).unwrap(), Fq::from_str("6749186843058419358266132619994906322856735047708966524828454143835374429502").map_err(|_| ()).unwrap(), Fq::from_str("723722231207513615028524829855221273358994271482865755442408338017731744886").map_err(|_| ()).unwrap(), Fq::from_str("7150850632600139328249708382337907214476473094637731404400622130609232473383").map_err(|_| ()).unwrap(), Fq::from_str("6548828407143582984841181386186939307913973375652499436454528279387602376804").map_err(|_| ()).unwrap(), Fq::from_str("168810805010511092998729383838161121133729456921756120521404728421135571883").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("5502532178759265731922186416182516703534981692927666071294802462928470062591").map_err(|_| ()).unwrap(), Fq::from_str("35560602429301782167644924730904022195101978722665956370542867412801820020").map_err(|_| ()).unwrap(), Fq::from_str("6288120325409583536815287773718836993665637550784543329270101530579045167924").map_err(|_| ()).unwrap(), Fq::from_str("2626406123776297952320347407918527613620788484211418654778179254193178718441").map_err(|_| ()).unwrap(), Fq::from_str("562820747307969563357403167937906730848485709882473765169093216403459074069").map_err(|_| ()).unwrap(), Fq::from_str("1956005757288702414229669271786024402820651646481176857713366771349584073769").map_err(|_| ()).unwrap(), Fq::from_str("858227876316805370593658907888007228450187522054302698566191984336756435088").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("6822401393300855116879285139877907407888065600055085280099706605824930504490").map_err(|_| ()).unwrap(), Fq::from_str("8236741597069294960383919545799191089447620562415116551622211968529054290005").map_err(|_| ()).unwrap(), Fq::from_str("2948988990576160075655618796344161346248671903482386925364069446031509662159").map_err(|_| ()).unwrap(), Fq::from_str("4927987915431003083735924942091663872689442004725074752099182543538781559525").map_err(|_| ()).unwrap(), Fq::from_str("5067820357846738599078560193790331534070413522585988304352990283690165834052").map_err(|_| ()).unwrap(), Fq::from_str("3740404546645824275910830029071616233755675437919341362169280304043321212195").map_err(|_| ()).unwrap(), Fq::from_str("2111200376139609315307658664556561824110594055775683837622575644075659717842").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("2174539996425559666826410891902127156721562825661764032133784573788648557786").map_err(|_| ()).unwrap(), Fq::from_str("769248806812050516283801371439836604797755950190689340673851701602214018327").map_err(|_| ()).unwrap(), Fq::from_str("2675108534474186087748721950283638103718426217979823986744458730333158817982").map_err(|_| ()).unwrap(), Fq::from_str("484239727951207591417552519171991452663618328098922010975903490745815649731").map_err(|_| ()).unwrap(), Fq::from_str("771595101981472953058810896565135008762469352363117779833598904370472185034").map_err(|_| ()).unwrap(), Fq::from_str("1044782380823930343902684601198514834772684376963122371608530897699395332966").map_err(|_| ()).unwrap(), Fq::from_str("2292437741777702734055940231229102241274442374524847813496630313228835284426").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("3359417340608624162898658408956286189294127743380243454207081499618581612673").map_err(|_| ()).unwrap(), Fq::from_str("7028496655273398671172395158474667041916231378840461235980340040146883807139").map_err(|_| ()).unwrap(), Fq::from_str("1612024885140962802803680529119798987213924573486801427376405219829257052650").map_err(|_| ()).unwrap(), Fq::from_str("4432622732158192977140269005261356459651503573460247812157348947803331784585").map_err(|_| ()).unwrap(), Fq::from_str("7347726614280935207472751412467736967521608220419124825798685134005164056256").map_err(|_| ()).unwrap(), Fq::from_str("2275564718237426779918817558328920283123722669878267073152295742787702504365").map_err(|_| ()).unwrap(), Fq::from_str("2042118618486735390004430938217940358056505093397859879936401601617026670535").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("4137824898590194285666074961589565128994125672725963044981003510292835072481").map_err(|_| ()).unwrap(), Fq::from_str("8123524316822506389839988823183224921909493290119323233568872009084270935759").map_err(|_| ()).unwrap(), Fq::from_str("3678638619593349297103604479772218342641348071724409374902846425087192531865").map_err(|_| ()).unwrap(), Fq::from_str("4480175025246479133746279206422857025373263631098300777426299345601747002709").map_err(|_| ()).unwrap(), Fq::from_str("1665333334942408675117838283810122509139451255623682654356281056741745847605").map_err(|_| ()).unwrap(), Fq::from_str("6825032770884547870364827095941136814656245118800013383740443201823168355372").map_err(|_| ()).unwrap(), Fq::from_str("93302708605752771400032577809696538155815798380647736995832995073251554726").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7904420687476998167792245818781400836131164255195937753284185830321868382235").map_err(|_| ()).unwrap(), Fq::from_str("1555153458340522383173824435718545771177056983547210273013219072135561351670").map_err(|_| ()).unwrap(), Fq::from_str("830383350906804189259112282234353353608119182204451912387705203989961757087").map_err(|_| ()).unwrap(), Fq::from_str("3456456284559078554508146465285483532222154488970420706158742089993140906034").map_err(|_| ()).unwrap(), Fq::from_str("3671238262333634058973205736366985715425186279267598310447904053249922853719").map_err(|_| ()).unwrap(), Fq::from_str("7405764832808601103711929445934321604116979188067454894812221813322922475490").map_err(|_| ()).unwrap(), Fq::from_str("7593469988847892207884232876611533002833419361277957140461596326108643694698").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("1978273272299834292591126783774413913593812309894639240806482874369860378822").map_err(|_| ()).unwrap(), Fq::from_str("8316127508943490476713947811908356514809995669643367363097055778835361418237").map_err(|_| ()).unwrap(), Fq::from_str("504479419995849636058622125345465287440727856190299396307763746692714961057").map_err(|_| ()).unwrap(), Fq::from_str("7900908390841890265211288235756266286145740680496789614172974839654237467253").map_err(|_| ()).unwrap(), Fq::from_str("5813384146097420947212046394535737585759957512993864723250970463300421178064").map_err(|_| ()).unwrap(), Fq::from_str("1032637872845236297346329846281096302654244366628952580043191441147397660125").map_err(|_| ()).unwrap(), Fq::from_str("343379830722556770456326323352139963875167070080580201515690987065251486912").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("3574664812163336457293878436783012641794978309822833775924762357291748278557").map_err(|_| ()).unwrap(), Fq::from_str("2502722352743876750952322924868196768348150146414241605763056199057187860110").map_err(|_| ()).unwrap(), Fq::from_str("3448300331792167149277248613327659175711861373649823893074345603645806844868").map_err(|_| ()).unwrap(), Fq::from_str("8169708347265401538506618095762903937495242711089275307640012779642671083045").map_err(|_| ()).unwrap(), Fq::from_str("2188454359516425210667651089970577635410627667522295286860289340428351181434").map_err(|_| ()).unwrap(), Fq::from_str("7705026160374792680627522380210282027407377856374049229750363731541432103743").map_err(|_| ()).unwrap(), Fq::from_str("427693743177362918507683318288154679859115633935674271625560083860760601624").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7177006381743154255082939477979950691406063383680689661265803200866395370786").map_err(|_| ()).unwrap(), Fq::from_str("2217914183345151528285084611709360347039873199328443402397971785242531857036").map_err(|_| ()).unwrap(), Fq::from_str("56117075176406383403379240299626338903643468387347752957507159953115989224").map_err(|_| ()).unwrap(), Fq::from_str("6700013260335466131512998478978138964671359794982252989435652507186376094550").map_err(|_| ()).unwrap(), Fq::from_str("3538103420893712641300679553747307593125100565205702231674611866046469798960").map_err(|_| ()).unwrap(), Fq::from_str("3535761337917069397853979605527391881530205022862882522721056714517399516201").map_err(|_| ()).unwrap(), Fq::from_str("4792932734184078531929839957316952869907553251015932106108001525422724689996").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("3627065917965011067928814538573355934296255750858331870507121772570339368954").map_err(|_| ()).unwrap(), Fq::from_str("5894514926968401584306172853036531498444743856778512594048306622363295971370").map_err(|_| ()).unwrap(), Fq::from_str("6953962099089743276810433784966387364821314174819222022830612122697916386003").map_err(|_| ()).unwrap(), Fq::from_str("1369363699880882253972635974711633257431434510236154514579968798052244619363").map_err(|_| ()).unwrap(), Fq::from_str("1345000968885262957906117677255165119462115545467261937625319008684764226272").map_err(|_| ()).unwrap(), Fq::from_str("2574908814979798335811710530680921856151750921313368821150534513908804942904").map_err(|_| ()).unwrap(), Fq::from_str("2274122711934267684748591252330176584191821122950998488559364329776334110412").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("5058358197187775448457187896642003602140930050042561514437451864437419663789").map_err(|_| ()).unwrap(), Fq::from_str("8169315541354842035448700926046485995357477895212518967589633380337342330868").map_err(|_| ()).unwrap(), Fq::from_str("4208866343764157044149396781711324601057077504495906334792068243219686230392").map_err(|_| ()).unwrap(), Fq::from_str("4492855826534130272657431599914280592446889868219419378568368186789126664310").map_err(|_| ()).unwrap(), Fq::from_str("8354201251122896161461677259713964234072404985185364660849123593411981126696").map_err(|_| ()).unwrap(), Fq::from_str("3441632979435452241638199024701271594593258333968734196559390055346359710994").map_err(|_| ()).unwrap(), Fq::from_str("7205797181716337159713173844648591196641795585853171012368744221891176842494").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("4688894183395564384735085304769791579904390152119790455597579213305686209138").map_err(|_| ()).unwrap(), Fq::from_str("1720984636446161686724852085221993383599577456401369793638420309409664465509").map_err(|_| ()).unwrap(), Fq::from_str("7512618564374751996148862034970031319672019085411400229862351883599296147621").map_err(|_| ()).unwrap(), Fq::from_str("6438438929497042201268729870346789904686350582968390036349034966681318053266").map_err(|_| ()).unwrap(), Fq::from_str("954391960697389704486808439769294829496354946916643936579856657620573939853").map_err(|_| ()).unwrap(), Fq::from_str("919690982656537728246307165544427390829435490213889749014397264916486824772").map_err(|_| ()).unwrap(), Fq::from_str("552019023398190790458068343809201163100153476773434103925036577698292446607").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7023261662395900523393369237387433571581176531290068105857812129213894430660").map_err(|_| ()).unwrap(), Fq::from_str("3139221192647842444391960382090696051605219119850609505342162707013483456143").map_err(|_| ()).unwrap(), Fq::from_str("934601359865684394521084046280192088038457606280193920222996751431527940648").map_err(|_| ()).unwrap(), Fq::from_str("3530715520073224219879340990263113036296244875680177143570902501651392528002").map_err(|_| ()).unwrap(), Fq::from_str("3544555912556702704621300521038529610722334740547723147079556692628145155871").map_err(|_| ()).unwrap(), Fq::from_str("4100540746209267768748482676428079373467886882759412040612266343752742681678").map_err(|_| ()).unwrap(), Fq::from_str("6728732194524499650606291010620190118646942370570503244300760817501662832276").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7368817873751876582496989433342624006233500116260591421769273016378544156304").map_err(|_| ()).unwrap(), Fq::from_str("6571617532986588963636284663084898135265943506679752032808038593840690550041").map_err(|_| ()).unwrap(), Fq::from_str("5342984625831497563205296500949597710867570731333920373077104072376312217109").map_err(|_| ()).unwrap(), Fq::from_str("2686676745851327222300965995817661504584394905268737191520278982163850818493").map_err(|_| ()).unwrap(), Fq::from_str("1763152377567147521803938002046151991534295992834343384819829435110945794799").map_err(|_| ()).unwrap(), Fq::from_str("4893330949619348361167642669972637735325671619271883656430481517113966806946").map_err(|_| ()).unwrap(), Fq::from_str("414344109355501870156709841330000678144374572028269579598657927336862145505").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("3865112971120624110022577332710387002236164556958861040953573633602069504967").map_err(|_| ()).unwrap(), Fq::from_str("6799696086859597228356355342638832485805468253947231149032404678115715746734").map_err(|_| ()).unwrap(), Fq::from_str("7933355749454024838361918663497810781569445010357336237387755837582242577436").map_err(|_| ()).unwrap(), Fq::from_str("7549760862785332633177298822090871736934164243141323492825789299131659718460").map_err(|_| ()).unwrap(), Fq::from_str("5207516807486724388620727435950185632988341488489834724044899978032154858408").map_err(|_| ()).unwrap(), Fq::from_str("6924559754387258858153869967765663638868546501283524478566330743582082205732").map_err(|_| ()).unwrap(), Fq::from_str("841345160146100964645129849608848330313946253894268274850157330232572830629").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("1389446611567558294147758526712362771127004014674874584067665147933372850118").map_err(|_| ()).unwrap(), Fq::from_str("6397034856725794996766551865270005250377704486901984596519747198554061148465").map_err(|_| ()).unwrap(), Fq::from_str("205091484996310478205703607716484078123053032065875030687222830709169725972").map_err(|_| ()).unwrap(), Fq::from_str("6760700655223747282503709932399015496786065040576644044409208187280186899640").map_err(|_| ()).unwrap(), Fq::from_str("6208839752299751281929089777333555574637643038073339905446787043144565458232").map_err(|_| ()).unwrap(), Fq::from_str("7799020404886684366046619883196793726934585574318686715186038482331817391940").map_err(|_| ()).unwrap(), Fq::from_str("2096892926148424031780972095669470073193351141524607985243983251877644113229").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("621782867159875264358700569196861886225263328356198879034425424109187183714").map_err(|_| ()).unwrap(), Fq::from_str("3512738818249127629435053711663315906049595101189715112136086738800582609601").map_err(|_| ()).unwrap(), Fq::from_str("3192249988371773259853623429379386166722766832020189919449930172723474476574").map_err(|_| ()).unwrap(), Fq::from_str("3089339745538850097130804756733874704612142248507766167096123277397531297047").map_err(|_| ()).unwrap(), Fq::from_str("3083625222105880065195444481164146971731794592933533958669703693809500778892").map_err(|_| ()).unwrap(), Fq::from_str("3273363364850963237981488703768333764275671812843766981483361416179996953511").map_err(|_| ()).unwrap(), Fq::from_str("7748033361405347289752809537097699489635473435337400646842573868428162224866").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("1545625684590523475787632627291017308379651563860294214155832906269302310704").map_err(|_| ()).unwrap(), Fq::from_str("1202311766334514351306399525003248301450683432994462553910755004165884142433").map_err(|_| ()).unwrap(), Fq::from_str("2947200870033348813479419826439728846859029549028835010967423259467912433334").map_err(|_| ()).unwrap(), Fq::from_str("2508591113733320408922890896679591128908716439375370130348925879771969289506").map_err(|_| ()).unwrap(), Fq::from_str("1164803469926668468468377640760689999616473384457624926818957202174658653063").map_err(|_| ()).unwrap(), Fq::from_str("2932649542154101984475205582120208530940935610581291905335736294371023919798").map_err(|_| ()).unwrap(), Fq::from_str("2825614731816557815225412156228666173831383093588979868493851366840372506315").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7329082863975206882581081919461170442814649825411789773837117434173648601584").map_err(|_| ()).unwrap(), Fq::from_str("5180348996880381086795081621809250959135148058360471923036454708038250136600").map_err(|_| ()).unwrap(), Fq::from_str("4624622061638310709236430231388578596380377046606832730205643038500787334557").map_err(|_| ()).unwrap(), Fq::from_str("5304546910495849338546351160540497732865593813864779803460859431654853358340").map_err(|_| ()).unwrap(), Fq::from_str("3571359489158352685288273516666561349519419367196182175433016369605513511955").map_err(|_| ()).unwrap(), Fq::from_str("5709312927520532191687554001871301105905529279522595903967130804723854957820").map_err(|_| ()).unwrap(), Fq::from_str("7366486316821458107983173143814434159831765190702826324948222927269770816717").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("5233654585352624813407638537397807226928652120346714028342769151727893699327").map_err(|_| ()).unwrap(), Fq::from_str("185603810584831040910145966955984825695608102565502526623716188221215566339").map_err(|_| ()).unwrap(), Fq::from_str("3162150505327454394653368945400057372042633964254024335551309199365577734169").map_err(|_| ()).unwrap(), Fq::from_str("7302823677701409286756593017904335141152970388909073078892389778015293471084").map_err(|_| ()).unwrap(), Fq::from_str("5792828468757570165733388860635984484717441089790307514809200926639244357501").map_err(|_| ()).unwrap(), Fq::from_str("337196961175007424160849138323492834759981681249389623278091568473208726145").map_err(|_| ()).unwrap(), Fq::from_str("6532476656365069077985695592066985591611407773678090844920845869661790728635").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("591974908425765936009237241734941323627256550053973883199004838658865252279").map_err(|_| ()).unwrap(), Fq::from_str("2203332906052779152418481494350866767263282811690502934939569671652009638025").map_err(|_| ()).unwrap(), Fq::from_str("1879441701543400346585910122900901984903428399131693026457756745004883591950").map_err(|_| ()).unwrap(), Fq::from_str("8413835281132999135870465797954119754718546116888646532517168433884922949283").map_err(|_| ()).unwrap(), Fq::from_str("2532623531753300235535073800876012110115713687387112403872832110951915450813").map_err(|_| ()).unwrap(), Fq::from_str("5463927936086078298396594311349737473363583404692473092511607811895072393682").map_err(|_| ()).unwrap(), Fq::from_str("995802384113279216268392612242705530636879747323240252027594260573840283293").map_err(|_| ()).unwrap()])], +// w_hat_collection: vec![Matrix::new(7, 1, vec![Fq::from_str("1876547055428526760944183319729232562527977630034236406207829656870535386466").map_err(|_| ()).unwrap(), Fq::from_str("3940748816399906197982784971431388381308753023071896453036442279428124311489").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974457").map_err(|_| ()).unwrap(), Fq::from_str("1279463901428540973371034081633567656269075656841524822414429311502637763217").map_err(|_| ()).unwrap(), Fq::from_str("4015548244483420901041399271588427721213714369164170211885285839177509288748").map_err(|_| ()).unwrap(), Fq::from_str("6436687627186659973728125302987332670769042150571978721992590536328654594667").map_err(|_| ()).unwrap(), Fq::from_str("4200578408690009903344287277240051351504934541076636878511372539610198442011").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("7506188221714107043776733278916930250111910520136945624831318658871097313992").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890102709218623488672684285930454").map_err(|_| ()).unwrap(), Fq::from_str("1535356681714249168045240897960281187522890788209829786897316313475061094982").map_err(|_| ()).unwrap(), Fq::from_str("5117855605714163893484136326534270625076302627366099289657714986643616618580").map_err(|_| ()).unwrap(), Fq::from_str("2066826302307643110830131978023455444742352984128617020823311345096204840493").map_err(|_| ()).unwrap(), Fq::from_str("7735835588637178500535636832030647521749949740595680849367240442898918223437").map_err(|_| ()).unwrap(), Fq::from_str("1732197281934024702410015372057753134641210120031602836499535391175025879992").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4691367638571316902360458299323081406319944075085869094283047544128965097245").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890100067942747205993134377700694").map_err(|_| ()).unwrap(), Fq::from_str("3838391704285622920113102244900702968807226970534684532047125900347329284655").map_err(|_| ()).unwrap(), Fq::from_str("5885533946571288477506756775514411218837748021450960338988386640059762345271").map_err(|_| ()).unwrap(), Fq::from_str("1889669762109845129901834951335730692335865585510842301499652689757663100384").map_err(|_| ()).unwrap(), Fq::from_str("767678340857124584022620448980140593761445394092527664623665177688863847331").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890105582445746383624538643981654").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("1876547055428526760944183319729232564996830558882921370085200635914161757298").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697664133979269129411577729222157622700660054").map_err(|_| ()).unwrap(), Fq::from_str("1535356681714249168045240897960281277282898449313996749172572207011231438662").map_err(|_| ()).unwrap(), Fq::from_str("5117855605714163893484136326534270447032358682750967335661760440047530741140").map_err(|_| ()).unwrap(), Fq::from_str("3602182984021892278875372875983736825998991950905668480067448289259195809907").map_err(|_| ()).unwrap(), Fq::from_str("5491852746131737408777207827319467214623371274702956479872978501098272951891").map_err(|_| ()).unwrap(), Fq::from_str("3031345243384543229217526901101068011131563559922350480013285743181620779586").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("7506188221714107043776755198137225704302301452691470069439610796715417563592").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832341763431709994046159475425538184112360852222253028694").map_err(|_| ()).unwrap(), Fq::from_str("5373748385999872088159140059265887620864401844143310311532857965386390688117").map_err(|_| ()).unwrap(), Fq::from_str("511785560571416389346832904844148528158598915245801513580781857931654793154").map_err(|_| ()).unwrap(), Fq::from_str("3897443884351555580424254613757089002584166097452827235892132265594076125342").map_err(|_| ()).unwrap(), Fq::from_str("944834881054922564949941060147858147922611614540486226224274701050365732592").map_err(|_| ()).unwrap(), Fq::from_str("2381771262659283965813997617132079911750436851670610825625736214110550870909").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4691367638765922348505423816524139023476165361506542695484181104583152617245").map_err(|_| ()).unwrap(), Fq::from_str("5629641164437155592816387068688323147753438089075869791870972562874505188694").map_err(|_| ()).unwrap(), Fq::from_str("3070713370503762439009237301418464522683398272130995948634360329226078006924").map_err(|_| ()).unwrap(), Fq::from_str("1279463887394362913071717151070872368042983174217235076478638512008472662885").map_err(|_| ()).unwrap(), Fq::from_str("7972044324171824104064096186155445045013212005033835133164006886912409668745").map_err(|_| ()).unwrap(), Fq::from_str("8444461740759459060495145807914439351449455218504439619235371916455879639041").map_err(|_| ()).unwrap(), Fq::from_str("5629641168296342910514168466499301086206267018139985757291273012023859172694").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("6972172146678521646521066467591452770941415852427147751321957654196549786534").map_err(|_| ()).unwrap(), Fq::from_str("2347145495980781705499203082181571214849452120480286352139140144970505477357").map_err(|_| ()).unwrap(), Fq::from_str("1047568412247903836923187409208220232812136970086040508140224750056493420925").map_err(|_| ()).unwrap(), Fq::from_str("4254698862624943857504879382001982149696583163008759658612088952586733163226").map_err(|_| ()).unwrap(), Fq::from_str("6315724568176583725358769253035722528512823976618810746178178949160582808225").map_err(|_| ()).unwrap(), Fq::from_str("1808433681143102398596263992246537263717393877526593947706580140042983806051").map_err(|_| ()).unwrap(), Fq::from_str("6843905112036599447213157812378286454152663935373616742808805940508695305177").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("1729565466604918195154479677200796809978101943095013566904965953994961504272").map_err(|_| ()).unwrap(), Fq::from_str("833944992161644786107658298864925414856158117984751724934838393992941514330").map_err(|_| ()).unwrap(), Fq::from_str("941357990821498245833242093841393955005889889527688615335027719936849380273").map_err(|_| ()).unwrap(), Fq::from_str("3253209925215144859995781254312415112132598506806876838621021573241936411228").map_err(|_| ()).unwrap(), Fq::from_str("3200399487414284172624656113953681437295262223130511720215402697409152108104").map_err(|_| ()).unwrap(), Fq::from_str("7575037554886651505716791436244547803360374756952605023249991880668693603906").map_err(|_| ()).unwrap(), Fq::from_str("3624213020401957045328050862151116881185438564867367062590678688829450989023").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("7840238751651172111315369018969012586573478175686246090882431772771293058969").map_err(|_| ()).unwrap(), Fq::from_str("7634051586755370991827493225306990673382943825574572126978367854745928059606").map_err(|_| ()).unwrap(), Fq::from_str("2305450724082239007555748390907063191255141221405967112821727903767276325969").map_err(|_| ()).unwrap(), Fq::from_str("1421278435935707711954065605572558083340539268830915540578626373104471532114").map_err(|_| ()).unwrap(), Fq::from_str("4719813761205374918095853450469223782954902447418206915711414459794089682848").map_err(|_| ()).unwrap(), Fq::from_str("6855769349651750698302136475949302764207280870728778064696355383564701893080").map_err(|_| ()).unwrap(), Fq::from_str("4385057805214878540075232250422029703370108714796245851266129166540079479345").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("5179691420155578585406107595071523172436905318526091719240735214486928072175").map_err(|_| ()).unwrap(), Fq::from_str("5372691709048573392973211037722420346553633341064829379048939858341364833644").map_err(|_| ()).unwrap(), Fq::from_str("6412480196738767123860661896935274531340568713622224785750041485021764730231").map_err(|_| ()).unwrap(), Fq::from_str("1876087993515156849197580045358369481490811946296405834995593030983210414024").map_err(|_| ()).unwrap(), Fq::from_str("1592314610138122947598448528315408251910836000489053235812566371448847239752").map_err(|_| ()).unwrap(), Fq::from_str("8062110400404906455161329394361574968761434187383684847371694238983093276486").map_err(|_| ()).unwrap(), Fq::from_str("1841867413146832890668993267315702904994180092227700185928827858142063575433").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4910632304406185473004058610353957462752801700756329602035494194172187281494").map_err(|_| ()).unwrap(), Fq::from_str("118391449438002460990304077187569321654231640788733944870191602291824494867").map_err(|_| ()).unwrap(), Fq::from_str("1513102093412661056661025570319663374641451139852041759617866411948786033234").map_err(|_| ()).unwrap(), Fq::from_str("6144666681799863152161805012227692428147095423027212442800675796813717186498").map_err(|_| ()).unwrap(), Fq::from_str("2581771351480587226498764208976386873377051431992415012778297532442748316168").map_err(|_| ()).unwrap(), Fq::from_str("3926916384010785158645453315811629925606996394996208190932284825957541429100").map_err(|_| ()).unwrap(), Fq::from_str("5787049311028145409943698751945095705096348906393912278149232817210124395136").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("2694546864817821170546433352762998120203753915754548284320719903681828218308").map_err(|_| ()).unwrap(), Fq::from_str("130981943402589242051027096717266657104612439970581678367300489610199718719").map_err(|_| ()).unwrap(), Fq::from_str("4776928240540258167706248126827500258919145325148334201458412666978683010782").map_err(|_| ()).unwrap(), Fq::from_str("4045432725957393234017489535469875038992605381438392185042200708474417370908").map_err(|_| ()).unwrap(), Fq::from_str("673714763111279057507323596434839870645185224265996472658627949025168210763").map_err(|_| ()).unwrap(), Fq::from_str("7493422158560634062692208084649709757062990990163728086145358223339978489284").map_err(|_| ()).unwrap(), Fq::from_str("8287878695162135331279729726965915160400130017415074650681865228016285102516").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4720791980586431679090467685511873181209162992218402917963914757979790369710").map_err(|_| ()).unwrap(), Fq::from_str("4678932308204327931969490167601179542933374435055101859351752284526243548707").map_err(|_| ()).unwrap(), Fq::from_str("3469751346316711443071121746828347796311287490344298484531510947618630292138").map_err(|_| ()).unwrap(), Fq::from_str("200349577196065912196957843459407175599426422635831565862013047540795832475").map_err(|_| ()).unwrap(), Fq::from_str("7395709417877530407579880809346613907852482476327971582355683191980541696765").map_err(|_| ()).unwrap(), Fq::from_str("554364021947203954692525123695668644862199005429734478709495476085331439258").map_err(|_| ()).unwrap(), Fq::from_str("6838805576060167543497530740136757904988146292234405926954502031399115866974").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("5851641428992944498225970191676011139927616628382479729715293600824089291924").map_err(|_| ()).unwrap(), Fq::from_str("7106532003787095148705386568560879842741551996552928948111492320079116096015").map_err(|_| ()).unwrap(), Fq::from_str("224501820112054270363380600227247039917499544972766439329884912842413414050").map_err(|_| ()).unwrap(), Fq::from_str("1127162082711690829045222078599691586821587330400944834069240790795699899068").map_err(|_| ()).unwrap(), Fq::from_str("5798822439126016187260713499025778075862089305814308478555434149304976901392").map_err(|_| ()).unwrap(), Fq::from_str("4209737562173919317621194630314244408012960707336110779235272838398593739028").map_err(|_| ()).unwrap(), Fq::from_str("2974234494097530292928176143106939971184117701227568930243967246458227551317").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("7772812954741869836637180023992453867931165204625440986065959296530160073215").map_err(|_| ()).unwrap(), Fq::from_str("4465944305445855244757940279729436266880665716788599493785440359721261721506").map_err(|_| ()).unwrap(), Fq::from_str("7065075864730562665936405311809470574554459892841370994127476218904330562654").map_err(|_| ()).unwrap(), Fq::from_str("2826258677922580420700412165088961267240983736469142652351925834777780680067").map_err(|_| ()).unwrap(), Fq::from_str("7095033285770044778643379560526017253450847368462382990132036819941366863511").map_err(|_| ()).unwrap(), Fq::from_str("2986127768027870011657973171881583071473857397012430712159793436707224411733").map_err(|_| ()).unwrap(), Fq::from_str("6340549894141248021660397979807074529771874236367321828946816037204437911362").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("195882422092013103373602239951432786240054223535314554365144234683903267917").map_err(|_| ()).unwrap(), Fq::from_str("5744661548076389989901764233438033940893474838392222207756754346502023963395").map_err(|_| ()).unwrap(), Fq::from_str("3391275279365955662042825734079749257572921952004778258232817473700256719782").map_err(|_| ()).unwrap(), Fq::from_str("5390756633253238752580139933234531698863653277792923229054615468401800582856").map_err(|_| ()).unwrap(), Fq::from_str("8077043215884919260035274879680443117912777494381243752506986540510599052133").map_err(|_| ()).unwrap(), Fq::from_str("5772964683743304509316738455191126313286622255913733148500235222630050675915").map_err(|_| ()).unwrap(), Fq::from_str("8410995765739590443396857464908600912424888535603351745109715613585818826754").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("8033300570689542909429729311799665636833898701625791361001886151598908149785").map_err(|_| ()).unwrap(), Fq::from_str("198887028740205765140811291119303598104175742644528804736142415737460662615").map_err(|_| ()).unwrap(), Fq::from_str("5773907049303743368959522427927434190003227864404283801392623065399949263008").map_err(|_| ()).unwrap(), Fq::from_str("7377923111711972976446685745675799818076285218032504430885934723620618949737").map_err(|_| ()).unwrap(), Fq::from_str("1990885066843671740853435967237164068311713610738317005284480417776696273973").map_err(|_| ()).unwrap(), Fq::from_str("1408060542912412797659601618849635411029239485868208213522765188130143030479").map_err(|_| ()).unwrap(), Fq::from_str("4272667495053194768941907841266337914537387719689882877192208470471802028072").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("1280541705404676393712433620141752742891865073604214841408428084128640715310").map_err(|_| ()).unwrap(), Fq::from_str("4365792738234205776051640669852060282605657818112750212449979792150698660021").map_err(|_| ()).unwrap(), Fq::from_str("2169654389356134963974782157472640896560661520459721934413850449529131221539").map_err(|_| ()).unwrap(), Fq::from_str("6953155509425645347661530699343912834303360066102449102583284522213697593811").map_err(|_| ()).unwrap(), Fq::from_str("5030756583598839172173627735755230335972342522521050163199401412566668421661").map_err(|_| ()).unwrap(), Fq::from_str("1174984193043137818193184645792991272490089670987619264898900569369186933996").map_err(|_| ()).unwrap(), Fq::from_str("7813247648535153376411270823539386289731187256077276187123568807942819337500").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("8045370883343592906319034832204469328968814009139709780825677784970470346630").map_err(|_| ()).unwrap(), Fq::from_str("3432891366645624853283914793139251546667602864231526550938382005461455614402").map_err(|_| ()).unwrap(), Fq::from_str("6943404575808555799702230502575082290739387233611384394314646314207131998755").map_err(|_| ()).unwrap(), Fq::from_str("2968252319173345876070553339689063753959519154738465866411690585919511517205").map_err(|_| ()).unwrap(), Fq::from_str("8155590636117151624723446019047124652607083719080945681199928612911914849400").map_err(|_| ()).unwrap(), Fq::from_str("6103919022579245252160198203656503024087928320941264640496017641292774845596").map_err(|_| ()).unwrap(), Fq::from_str("3963579110802215362848165655448465029470422864130708419310804850975765343313").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("208474123992408329007049099311695013855253221307133385207401001480901476151").map_err(|_| ()).unwrap(), Fq::from_str("3862036979998462428666425073670485953395791661453978943314661816332483084587").map_err(|_| ()).unwrap(), Fq::from_str("1860054712307019107151568851592732436986008083846154412662931648931405134295").map_err(|_| ()).unwrap(), Fq::from_str("7727501830330413312796055332659721679160822282912440621974577136455275367087").map_err(|_| ()).unwrap(), Fq::from_str("6576637429949023546228071485356312229506003314221597818677555821593564395192").map_err(|_| ()).unwrap(), Fq::from_str("3609487875239270810461077597722386101400168010223784364498721835383576610682").map_err(|_| ()).unwrap(), Fq::from_str("213457203808643633815104509907945709172481625382071750024507572599570798670").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("6431536127143882335643669716124729377553236599827642573468968751633695321743").map_err(|_| ()).unwrap(), Fq::from_str("7948748758408944439632399787810057973890333576166338269165287179094153710985").map_err(|_| ()).unwrap(), Fq::from_str("3643297833260159806732278250516499491379871897989670247070532201598000364129").map_err(|_| ()).unwrap(), Fq::from_str("3108770067264661975454522377905005677646891740631641166611468183109876429446").map_err(|_| ()).unwrap(), Fq::from_str("3659393035979706890154341166026954313167709844636842673138470367277606392492").map_err(|_| ()).unwrap(), Fq::from_str("4137549957447539929454795255423720438610733304644394040174947213394186139056").map_err(|_| ()).unwrap(), Fq::from_str("6245068119879337536401896390443737993562290722882889276353649888327283077907").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("1372005354715420535202493632127767974500947270944223538169627561226094071477").map_err(|_| ()).unwrap(), Fq::from_str("76117184258313660192786771042509509673890216216208183502539326831168477775").map_err(|_| ()).unwrap(), Fq::from_str("5665114254315591950564981477518610259459923596771612852566518876915038978034").map_err(|_| ()).unwrap(), Fq::from_str("7644790547456375147805321271568769250108391406619334054083690222378526082081").map_err(|_| ()).unwrap(), Fq::from_str("3715940602022552339242883357774975732777012501020641148216096654330326129756").map_err(|_| ()).unwrap(), Fq::from_str("2575510198638140464667791371138243953360289031989395447868121477240993561243").map_err(|_| ()).unwrap(), Fq::from_str("7771043163864483906117395806038464308962844971301098522283673146334075988243").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("7511608318142726670087065305750007700921745161598055138428567817400952878451").map_err(|_| ()).unwrap(), Fq::from_str("17642875791981381489885329598606849204411780884655599671693936555312813879").map_err(|_| ()).unwrap(), Fq::from_str("6180573009727882520553822636659239786453734655656434720374546424442378600980").map_err(|_| ()).unwrap(), Fq::from_str("690524128603773153648197393085258757067241114046690794737006302047404566693").map_err(|_| ()).unwrap(), Fq::from_str("5774711182959316157585498117763265701656350858063342519715224625900143562341").map_err(|_| ()).unwrap(), Fq::from_str("6717155113726666935118443690867736171109457779116852415386382728363872905066").map_err(|_| ()).unwrap(), Fq::from_str("7408704831345764845214264234026801997427335973510616930254381297980968056629").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4565256442346215774853772891913032281212779361339706061230721821018813326426").map_err(|_| ()).unwrap(), Fq::from_str("932768097413820357711546811379894043449519611138770755121142047881435819223").map_err(|_| ()).unwrap(), Fq::from_str("4582011657923209493259608444664710734944370495394739050752111203971168684120").map_err(|_| ()).unwrap(), Fq::from_str("7201187863209331527279944800204443410932577259849138036545489553565494961524").map_err(|_| ()).unwrap(), Fq::from_str("7429940763809531036239027016563518056485799281135049616686357360048025381476").map_err(|_| ()).unwrap(), Fq::from_str("5880092413258951489491829990144250509075714129271728738681740676628721314946").map_err(|_| ()).unwrap(), Fq::from_str("6635019251055222825513504926526960006567567868336673980003910633071737142110").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("2676767917380723618121069549278840020950830533956777842819084976061384007488").map_err(|_| ()).unwrap(), Fq::from_str("7335850977875350919356878288231490448051704971333524322968310651526743176649").map_err(|_| ()).unwrap(), Fq::from_str("5489275163586778597237393898027810529305453946733624560008563082558329672459").map_err(|_| ()).unwrap(), Fq::from_str("7532825360330372649519441662245099012227235660983284423975518417807941768103").map_err(|_| ()).unwrap(), Fq::from_str("6808696547028943210340303387500091993307571038348277524438851144542738932361").map_err(|_| ()).unwrap(), Fq::from_str("652525946773627791668052817505802500179905662466782623712932464954635097840").map_err(|_| ()).unwrap(), Fq::from_str("3028776668570346144076321985668953848899200404134186029842769031628265500993").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("2086717537168567595874528507628751697655869205210268390911719632623783724756").map_err(|_| ()).unwrap(), Fq::from_str("6369128981308628045054712785020425567379558664203371354008928504176254805894").map_err(|_| ()).unwrap(), Fq::from_str("902925663446395838458492495612352179135802043682117172546005917481995601052").map_err(|_| ()).unwrap(), Fq::from_str("756249192600122628843112783551733107290231495487895821367221900241545813550").map_err(|_| ()).unwrap(), Fq::from_str("3901946961785946014178360358513487464102920573692390346789637269723252566620").map_err(|_| ()).unwrap(), Fq::from_str("2084372406648728595461083720076781426193443287451032762661871433214858962627").map_err(|_| ()).unwrap(), Fq::from_str("203189105281363800138416804513711380834759656706287615359891697265414391592").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4571887597600061581636032265491360720832674055634258856751594627684293652663").map_err(|_| ()).unwrap(), Fq::from_str("3615517452247810838782256761448803817153217363669237369222855920322688432339").map_err(|_| ()).unwrap(), Fq::from_str("4116906712510784840149164032627379024964522136734431654030117362519110272406").map_err(|_| ()).unwrap(), Fq::from_str("7607250616054587482485157059974464806353753251474928972794845294247904194089").map_err(|_| ()).unwrap(), Fq::from_str("7645940000598066524988684211467539145690814830286920284055490119050574537680").map_err(|_| ()).unwrap(), Fq::from_str("2458144132282877388043045515095804621102154588266628053185217533284091997304").map_err(|_| ()).unwrap(), Fq::from_str("701118472179862917499550629534733263230436874833193439017731526990562964530").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("1077684492371111675934642649265884162676191599378783970366318737176363027192").map_err(|_| ()).unwrap(), Fq::from_str("6602875819143041892796615556605356908841160959329536598320512527551679789184").map_err(|_| ()).unwrap(), Fq::from_str("4962276641984552359079117089593963363296330043665029073179719871492465330621").map_err(|_| ()).unwrap(), Fq::from_str("4572594765283134638692619207550610826706659883081830876150676118444907651504").map_err(|_| ()).unwrap(), Fq::from_str("3576830796935768793629943514300990893488107714114106422530462297615120001803").map_err(|_| ()).unwrap(), Fq::from_str("4288217861539662722265938936026331499074523352723546606789797244790174019846").map_err(|_| ()).unwrap(), Fq::from_str("2753309121719585215636067389906767798495485248030815979016906082631596282300").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("3562330150389516353503071786623663120010722153569280423040902937353054570806").map_err(|_| ()).unwrap(), Fq::from_str("2886333704961071712871884327463180140859867702302335094155198888968897500634").map_err(|_| ()).unwrap(), Fq::from_str("7814881876898698126542491363119678800703671912971596677216786884230727364370").map_err(|_| ()).unwrap(), Fq::from_str("5977402345687747326675770766035691314577396515250829650189027830840251953938").map_err(|_| ()).unwrap(), Fq::from_str("1907332004071032020391007511261490294277591182367964017779706045054753304049").map_err(|_| ()).unwrap(), Fq::from_str("7597941001877662280813412206939632407616609340329339016577843815269850505887").map_err(|_| ()).unwrap(), Fq::from_str("3172571512946701860238805740931759804386612798898170576670888030370850064868").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4828918993861831819965590131669175698286098122597383097509451147209578460795").map_err(|_| ()).unwrap(), Fq::from_str("2398999624151656091311166758775063629882842912863357159645171755504082492332").map_err(|_| ()).unwrap(), Fq::from_str("1857507650251243830302196135774786963822939109169258292691951914546285338594").map_err(|_| ()).unwrap(), Fq::from_str("4869001947823583054618611464516298078230454774997288316889205611554943257556").map_err(|_| ()).unwrap(), Fq::from_str("6879147386315389121984906754150953309217404731469506210864659010696503841164").map_err(|_| ()).unwrap(), Fq::from_str("8232593534617146192159176270665904261385649930979502834219059864096961798932").map_err(|_| ()).unwrap(), Fq::from_str("1382505528006092444278356277274570839872020250731101098345024763734206494637").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4785698396222281748435513577476884856184575759142443962329689696420127159663").map_err(|_| ()).unwrap(), Fq::from_str("2063995161031395306645093700799473170679690097893142800516315229929439294551").map_err(|_| ()).unwrap(), Fq::from_str("205654954383710933270456828880992684613259878453300057831437368876707573248").map_err(|_| ()).unwrap(), Fq::from_str("7399910865345063292931400288535539953875220063541964509270851100757831806297").map_err(|_| ()).unwrap(), Fq::from_str("2595678523883848790422648423438509719566910824151068669142015641736384514534").map_err(|_| ()).unwrap(), Fq::from_str("7207370490454638207106812603067572089981569457164846175794006813719684799678").map_err(|_| ()).unwrap(), Fq::from_str("6932010022199487662466309052117135454573992130730154415887157502747011442251").map_err(|_| ()).unwrap()])], +// }, +// optimized_arc: OptimizedArcMatrix::new(39, 8, vec![Fq::from_str("8272449376473671765296008869302038521165312284059868547350729170495609308478").map_err(|_| ()).unwrap(), Fq::from_str("4148638154552987643427927719929617623033282419205047107576105870710636474516").map_err(|_| ()).unwrap(), Fq::from_str("4610941420378965310285838612448425703694278187368438665958951036771382090951").map_err(|_| ()).unwrap(), Fq::from_str("4189826392798972095615428009133315511437859427098777387981389252767021216956").map_err(|_| ()).unwrap(), Fq::from_str("3485778653302006026931053379631767402100167194043813051334318884790009606746").map_err(|_| ()).unwrap(), Fq::from_str("6997258294599821948176438428013771474496501637817875041649844838098869986336").map_err(|_| ()).unwrap(), Fq::from_str("4727315047627304951694923894487815521672122955066864851590793419420877448838").map_err(|_| ()).unwrap(), Fq::from_str("8323215308029035830922479600341609342422153730357233252273677915504737315769").map_err(|_| ()).unwrap(), Fq::from_str("5637158139100131712830467651283357933314259485688016797833552952753722230574").map_err(|_| ()).unwrap(), Fq::from_str("108652494334494423537470670066593093589367691856837736916781504579141415881").map_err(|_| ()).unwrap(), Fq::from_str("4282654110357871098442082930601101276537207779575238008006989562579070025596").map_err(|_| ()).unwrap(), Fq::from_str("4983986459778055581371939303652208870578018890190948885506698845403601706443").map_err(|_| ()).unwrap(), Fq::from_str("7812942429443051975589393178689314192901424482402091373617863947800041031380").map_err(|_| ()).unwrap(), Fq::from_str("41843404634003821257499508246384846359567653827738009587074364821357556674").map_err(|_| ()).unwrap(), Fq::from_str("3256367381652958574022221764563986866005281747176483523562910892352385700536").map_err(|_| ()).unwrap(), Fq::from_str("5081754897888927450572755485400127827962724388364782188548629761403223168208").map_err(|_| ()).unwrap(), Fq::from_str("3140662389046800714717134038842932929914881789234256624133712658493702862986").map_err(|_| ()).unwrap(), Fq::from_str("5837678370345291060707921053934078274570658514314699024317340256646194510315").map_err(|_| ()).unwrap(), Fq::from_str("1758249205614064761923397241362751226590619464566451174621990840706075711533").map_err(|_| ()).unwrap(), Fq::from_str("2996424966666775948197322316539263332388876501081218038331262962889143767323").map_err(|_| ()).unwrap(), Fq::from_str("5569073755001022846727381324947502843907951568584887846136479111303763947571").map_err(|_| ()).unwrap(), Fq::from_str("2152697470307011874759937686919219515105381348752365467161409416739810705705").map_err(|_| ()).unwrap(), Fq::from_str("2547478791649003851472374459274423878735641266844974068366653679604458605992").map_err(|_| ()).unwrap(), Fq::from_str("5819954505684844235667713476731504359909606655725958006022735818802065644880").map_err(|_| ()).unwrap(), Fq::from_str("2946723954639143698985169687050778926763705251783882355884017269111316721156").map_err(|_| ()).unwrap(), Fq::from_str("6674853737187547917453936531282787623469969017096699291523892007866852923446").map_err(|_| ()).unwrap(), Fq::from_str("5128641242163000635309430370963825992485844601443450009390057810268350954415").map_err(|_| ()).unwrap(), Fq::from_str("7352715836632872274247822067257986059394276266477211651891582858684335942428").map_err(|_| ()).unwrap(), Fq::from_str("6217878791689924076142875699523164926319528131418439289154670832402836449354").map_err(|_| ()).unwrap(), Fq::from_str("7597096949831323643078864071580889261097889487612663379874935302362723251908").map_err(|_| ()).unwrap(), Fq::from_str("237095701117524079797711198067928714601748963673162707716983647008814265398").map_err(|_| ()).unwrap(), Fq::from_str("81542366906477747415301649039728726195369083982626300684546056109880517297").map_err(|_| ()).unwrap(), Fq::from_str("7969630902758093833683878012450239872858160201838806304585343230952248744893").map_err(|_| ()).unwrap(), Fq::from_str("3789327608923240559621438807555696123833071955799944159387139196635270052063").map_err(|_| ()).unwrap(), Fq::from_str("6942616259250924824073986423294800348651033465355434234434993171049712250516").map_err(|_| ()).unwrap(), Fq::from_str("2647437603096292336353677765155312490789174022898243243816650308367065378101").map_err(|_| ()).unwrap(), Fq::from_str("858333965015035637643335195902146224444598500681518760427029286506032744943").map_err(|_| ()).unwrap(), Fq::from_str("1085987275871688332924812187386406747246042360380060273363537934161803248437").map_err(|_| ()).unwrap(), Fq::from_str("131244237985541375592729188507346605049439505813779950494766218772899758145").map_err(|_| ()).unwrap(), Fq::from_str("8162284026136349222474753321840031971765915654813381581275117004695374042650").map_err(|_| ()).unwrap(), Fq::from_str("8377966484821285635062133307724528670490764417368291567050759399120800713798").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6683135554507103312548415634835771695346853367393830432480354483776963346061").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2364264937015271597195130959991703143036264788670414162349951210762322968487").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7177210463401468215533723224323420436159896385743502049044063066021320863299").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5321755656196686918677181304437356383675997707902461504646790696979458444105").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5273909547463914314311121506305889722562287170180792835051985610930490751736").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3524920266646250812189331201989872055640559899716802944944958871821450859410").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3301983957403153259338489549576582345951825570486799616806922754330762472977").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6673499656849907531628536663885825753664675720291382647320697476251378700120").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1425551101551462259535092602551860254166749477354386121616078836669644882196").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8053099556957609980711279208897255220880821260943259374965408763774661782217").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2309393037289334753926171018572958469284953624866032575895746422511308172679").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6739323531923276813794688774733915761174890747235564536150406736732855010836").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2113476282918034868081062154313983617562296599978058098083698921160825340508").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("291144037825967459368489782451793991392643527556288908882015551935442610051").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7881680865401501348808149620040019562419411500658158289003943905314003623546").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("398653848611615203461446873634902510920329653587500486676482630864147990938").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7542595010985278252426930418732019254441233633369170565525116826658577895896").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("624646061076484871998998136899085459755354844295806804251352949555781761900").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2878007940045280915232178001764062802242036376084965026739527182456170745800").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("957138565110708992656758056404288915794461431846827426815707069867574474195").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3573878058072025981267513622008560027419877239740926244852309429167924033178").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2753753270744095065090261815840182647789875208390784947622997744192408651519").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2674947701019192619637312463382626859837200638524022459273079560454426330098").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4616845004491896593243577117812476572782262747038425056775977006441329607530").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("472769197802757141666730694540641940396667319756835802922497001228129628101").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4649292990069818513168066888219552448438414049200294093658290508988720134989").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8376917518523341006108089001316126110827184327011733608448297453486530426437").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3811152039323168938101246639657115818769282522604240518662116231683280999657").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7758492066947493347583714495077260042960647116506643056327150605211157896111").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3625346994346262101074016662525684274846352014684613212636681749029860414438").map_err(|_| ()).unwrap(), Fq::from_str("8185154950738214151796515968928351126603905297125790874608920063796767252690").map_err(|_| ()).unwrap(), Fq::from_str("2091359350151991805321734262591896664272488333838196693958572789838473427626").map_err(|_| ()).unwrap(), Fq::from_str("7893870176223799684038550109973360297326111269737078480578958224089785457116").map_err(|_| ()).unwrap(), Fq::from_str("1520182496293084184060350659186894159187633793202146327512504615309868073244").map_err(|_| ()).unwrap(), Fq::from_str("986343632237534315729765358105004123719914801088741895575181866570497964221").map_err(|_| ()).unwrap(), Fq::from_str("4097141299559832108681797482282499886552681964557682291595867549941946001900").map_err(|_| ()).unwrap(), Fq::from_str("5170162657752733961617316579862704251015678496124961523018864855203991590574").map_err(|_| ()).unwrap(), Fq::from_str("7493448755702210572189375484947729156648010297427762392736281250135251611888").map_err(|_| ()).unwrap(), Fq::from_str("6306473423076606291527527393606984727052936248884714392394987865264933460998").map_err(|_| ()).unwrap(), Fq::from_str("6490159471621292220891426718270011645908869111376473944426770950932725435316").map_err(|_| ()).unwrap(), Fq::from_str("3085590823906807640982299920152736395554307120994537085809023375753886005214").map_err(|_| ()).unwrap(), Fq::from_str("6470210152105334455344254379422681911310598808426785938835085698000538958774").map_err(|_| ()).unwrap(), Fq::from_str("6384336895500659645759952084976852819294861590593737217260679303514486658147").map_err(|_| ()).unwrap(), Fq::from_str("5403908794555626454891599520460723503768107553937985694373405266900803378169").map_err(|_| ()).unwrap(), Fq::from_str("7491312003383848086366979202793200051175563793929611119984170139909207668912").map_err(|_| ()).unwrap(), Fq::from_str("4387144195323867178748400107405487976710661311964448504266174388350850987894").map_err(|_| ()).unwrap(), Fq::from_str("2359754701244196043720426483051454843104685842583792338379012975172349507848").map_err(|_| ()).unwrap(), Fq::from_str("6267415440471529358165929206436078810779767091328742668461372203706996320269").map_err(|_| ()).unwrap(), Fq::from_str("244265221148857592230117779251126109093672259705074593425726854244432431537").map_err(|_| ()).unwrap(), Fq::from_str("3339783573831930710228181302359655715657861147157281612383276198708893187560").map_err(|_| ()).unwrap(), Fq::from_str("4616762454119578616027399475977737765223162792543279667476807359876684539357").map_err(|_| ()).unwrap(), Fq::from_str("2701067941287335451337695832217251573222436646292125046249999856859643981490").map_err(|_| ()).unwrap(), Fq::from_str("5393196336119855744824571655674412475633706505827284947563193413492438488691").map_err(|_| ()).unwrap(), Fq::from_str("6796573436449302551523083955724739045751503643681750413111371067794789878597").map_err(|_| ()).unwrap(), Fq::from_str("1717871245275641451442602910236392322516037306074008675881250178168072663141").map_err(|_| ()).unwrap(), Fq::from_str("2525541969317989804751812899254922410702247459776828808500461785313548593449").map_err(|_| ()).unwrap(), Fq::from_str("4393406080224759831407943487747233497883289715389419134393180407785819428816").map_err(|_| ()).unwrap(), Fq::from_str("759271099303622493097265875295304471216619404471506323635435779228707599323").map_err(|_| ()).unwrap(), Fq::from_str("6657858624373344153040139320987988391335408962732827923838403731161871088770").map_err(|_| ()).unwrap(), Fq::from_str("6939038849898671885316533183739266254229700214001815157826574893807635000524").map_err(|_| ()).unwrap(), Fq::from_str("2956062250044031925588211089300332661152138256628933421957907397358544574740").map_err(|_| ()).unwrap()]), +// } +// } From 0e5073570d1f4b2f05462438b57d886e0a612a4e Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Mon, 1 Apr 2024 19:22:53 -0400 Subject: [PATCH 41/54] use for-poseidon377 branch of decaf377 --- poseidon-consistency/Cargo.toml | 2 +- poseidon-parameters/Cargo.toml | 2 +- poseidon-parameters/src/lib.rs | 2 +- poseidon-parameters/src/matrix.rs | 14 ++--- poseidon-parameters/src/mds_matrix.rs | 4 +- poseidon-parameters/src/tests.rs | 77 ++++++++++++++++--------- poseidon-paramgen/Cargo.toml | 2 +- poseidon-permutation/Cargo.toml | 3 +- poseidon-permutation/src/permutation.rs | 12 ++-- poseidon377/Cargo.toml | 8 +-- poseidon377/src/hash.rs | 5 +- poseidon377/src/lib.rs | 6 +- poseidon377/src/params.rs | 14 +++-- 13 files changed, 87 insertions(+), 64 deletions(-) diff --git a/poseidon-consistency/Cargo.toml b/poseidon-consistency/Cargo.toml index a485218..9e340cb 100644 --- a/poseidon-consistency/Cargo.toml +++ b/poseidon-consistency/Cargo.toml @@ -11,7 +11,7 @@ repository = "https://github.com/penumbra-zone/poseidon377" poseidon-parameters = { path = "../poseidon-parameters" } poseidon-paramgen = { path = "../poseidon-paramgen", default-features = false } poseidon-permutation = { path="../poseidon-permutation", default-features = false } -decaf377 = { version = "0.8", default-features = false } +decaf377 = { git = "https://github.com/penumbra-zone/decaf377.git", branch="for-poseidon377", default-features = false } [dev-dependencies] criterion = { version = "0.4", features=["html_reports"] } diff --git a/poseidon-parameters/Cargo.toml b/poseidon-parameters/Cargo.toml index 7f00a66..f1918cf 100644 --- a/poseidon-parameters/Cargo.toml +++ b/poseidon-parameters/Cargo.toml @@ -9,7 +9,7 @@ keywords = ["no_std"] repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] -decaf377 = { version="0.8.0", default-features = false } +decaf377 = { git = "https://github.com/penumbra-zone/decaf377.git", branch="for-poseidon377", default-features = false } [dev-dependencies] ark-ff = { version = "^0.4.0", default-features = false } diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index bfb1c8c..918d5b7 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -31,7 +31,7 @@ pub trait StuffThatNeedsToGoInDecaf377 { // TEMP impl StuffThatNeedsToGoInDecaf377 for Fq { fn pow>(&self, exp: S) -> Self { - let mut res = Fq::one(); + let mut res = Fq::from(1u64); let exp_u64 = exp.as_ref(); for _ in 0..exp_u64[0] { res *= self; diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 17977c4..1fd1669 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -210,7 +210,7 @@ impl SquareMatrixOperations } let determinant = self.determinant(); - if determinant == Fq::zero() { + if determinant == Fq::from(0u64) { return Err(PoseidonParameterError::NoMatrixInverse); } @@ -220,7 +220,7 @@ impl SquareMatrixOperations .hadamard_product(&cofactor_matrix) .expect("minor and cofactor matrix have correct dimensions"); let adj = signed_minors.transpose(); - let matrix_inverse = adj * (Fq::one() / determinant); + let matrix_inverse = adj * (Fq::from(1u64) / determinant); debug_assert_eq!(square_mat_mul(self, &matrix_inverse), identity); Ok(matrix_inverse) @@ -228,12 +228,12 @@ impl SquareMatrixOperations /// Construct an identity matrix fn identity() -> Self { - let elements = [Fq::zero(); N_ELEMENTS]; + let elements = [Fq::from(0u64); N_ELEMENTS]; let mut m = Self::new(&elements); // Set diagonals to 1 for i in 0..N_ROWS { - m.set_element(i, i, Fq::one()); + m.set_element(i, i, Fq::from(1u64)); } m @@ -266,14 +266,14 @@ impl SquareMatrixOperations /// Compute the cofactor matrix, i.e. $C_{ij} = (-1)^{i+j}$ fn cofactors(&self) -> Self { let dim = self.n_rows(); - let mut elements = [Fq::zero(); N_ELEMENTS]; + let mut elements = [Fq::from(0u64); N_ELEMENTS]; // TODO: non arkworks Fq::pow use crate::StuffThatNeedsToGoInDecaf377; let mut index = 0; for i in 0..dim { for j in 0..dim { - elements[index] = (-Fq::one()).pow([(i + j) as u64]); + elements[index] = (-Fq::from(1u64)).pow([(i + j) as u64]); index += 1; } } @@ -404,7 +404,7 @@ fn determinant< >( matrix: &SquareMatrix, ) -> Fq { - let mut det = Fq::zero(); + let mut det = Fq::from(0u64); let mut levi_civita = true; for i in 0..DIM { diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index 892f20b..0e5b308 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -99,7 +99,7 @@ impl< /// /// Ref: p.20 of the Poseidon paper pub fn w(&self) -> Matrix { - let mut elements = [Fq::zero(); STATE_SIZE_MINUS_1]; + let mut elements = [Fq::from(0u64); STATE_SIZE_MINUS_1]; for i in 1..self.n_rows() { elements[i - 1] = self.get_element(i, 0); } @@ -113,7 +113,7 @@ impl< /// Ref: p.20 of the Poseidon paper pub fn hat(&self) -> SquareMatrix { let dim = self.n_rows(); - let mut mhat_elements = [Fq::zero(); NUM_ELEMENTS_STATE_SIZE_MINUS_1_2]; + let mut mhat_elements = [Fq::from(0u64); NUM_ELEMENTS_STATE_SIZE_MINUS_1_2]; let mut index = 0; for i in 1..dim { for j in 1..dim { diff --git a/poseidon-parameters/src/tests.rs b/poseidon-parameters/src/tests.rs index 6732299..b339e6c 100644 --- a/poseidon-parameters/src/tests.rs +++ b/poseidon-parameters/src/tests.rs @@ -10,21 +10,26 @@ use crate::{matrix::SquareMatrix, matrix_ops::SquareMatrixOperations}; #[test] fn identity_matrix() { let identity = SquareMatrix::<2, 4>::identity(); - assert_eq!(identity.get_element(0, 0), Fq::one()); - assert_eq!(identity.get_element(0, 1), Fq::zero()); - assert_eq!(identity.get_element(1, 1), Fq::one()); - assert_eq!(identity.get_element(1, 0), Fq::zero()); + assert_eq!(identity.get_element(0, 0), Fq::from(1u64)); + assert_eq!(identity.get_element(0, 1), Fq::from(0u64)); + assert_eq!(identity.get_element(1, 1), Fq::from(1u64)); + assert_eq!(identity.get_element(1, 0), Fq::from(0u64)); } #[test] fn square_matmul() { let identity = SquareMatrix::<2, 4>::identity(); - let elements = &[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]; + let elements = &[ + Fq::from(1u64), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + ]; let matrix_2x2 = SquareMatrix::<2, 4>::new(elements); let res: SquareMatrix<2, 4> = square_mat_mul(&matrix_2x2, &identity); - assert_eq!(res.get_element(0, 0), Fq::one()); + assert_eq!(res.get_element(0, 0), Fq::from(1u64)); assert_eq!(res.get_element(0, 1), Fq::from(2u64)); assert_eq!(res.get_element(1, 0), Fq::from(3u64)); assert_eq!(res.get_element(1, 1), Fq::from(4u64)); @@ -33,7 +38,7 @@ fn square_matmul() { #[test] fn nonsquare_matmul_happy() { let test_elements = &[ - Fq::one(), + Fq::from(1u64), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64), @@ -58,7 +63,7 @@ fn nonsquare_matmul_happy() { #[test] fn hadamard_product() { let test_elements: [Fq; 6] = [ - Fq::one(), + Fq::from(1u64), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64), @@ -79,7 +84,7 @@ fn hadamard_product() { #[test] fn transpose() { let test_elements = &[ - Fq::one(), + Fq::from(1u64), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64), @@ -99,11 +104,16 @@ fn transpose() { assert_eq!(res.get_element(0, 2), Fq::from(5u64)); assert_eq!(res.get_element(1, 2), Fq::from(6u64)); - let test_elements = &[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]; + let test_elements = &[ + Fq::from(1u64), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + ]; let matrix_2x2 = SquareMatrix::<2, 4>::new(test_elements); let res = matrix_2x2.transpose(); - assert_eq!(res.get_element(0, 0), Fq::one()); + assert_eq!(res.get_element(0, 0), Fq::from(1u64)); assert_eq!(res.get_element(0, 1), Fq::from(3u64)); assert_eq!(res.get_element(1, 0), Fq::from(2u64)); assert_eq!(res.get_element(1, 1), Fq::from(4u64)); @@ -112,18 +122,25 @@ fn transpose() { #[test] fn cofactors() { let identity_1x1 = SquareMatrix::<1, 1>::identity(); - let test_elements = &[Fq::one()]; + let test_elements = &[Fq::from(1u64)]; let expected_res = SquareMatrix::new(test_elements); assert_eq!(identity_1x1.cofactors(), expected_res); let identity_2x2 = SquareMatrix::<2, 4>::identity(); - let test_elements = &[Fq::one(), -Fq::one(), -Fq::one(), Fq::one()]; + let test_elements = &[ + Fq::from(1u64), + -Fq::from(1u64), + -Fq::from(1u64), + Fq::from(1u64), + ]; let expected_res = SquareMatrix::new(test_elements); assert_eq!(identity_2x2.cofactors(), expected_res); } fn fq_strategy() -> BoxedStrategy { - any::<[u64; 4]>().prop_map(Fq::from_le_limbs).boxed() + any::<[u8; 16]>() + .prop_map(|bytes| Fq::from_le_bytes_mod_order(&bytes[..])) + .boxed() } proptest! { @@ -145,8 +162,12 @@ fn inverse() { SquareMatrix::<1, 1>::identity() ); - let matrix_2x2 = - SquareMatrix::<2, 4>::new(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]); + let matrix_2x2 = SquareMatrix::<2, 4>::new(&[ + Fq::from(1u64), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + ]); let res = matrix_2x2.inverse().unwrap(); assert_eq!( @@ -184,28 +205,32 @@ fn inverse() { Fq::from(2u64), -Fq::from(3u64), Fq::from(0u64), - ]) * (Fq::one() / Fq::from(10u64)); + ]) * (Fq::from(1u64) / Fq::from(10u64)); assert_eq!(res, expected_res); } #[test] fn create_matrix_from_array() { - let matrix_2x2 = - SquareMatrix::<2, 4>::new(&[Fq::one(), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64)]); - assert_eq!(matrix_2x2.get_element(0, 0), Fq::one()); + let matrix_2x2 = SquareMatrix::<2, 4>::new(&[ + Fq::from(1u64), + Fq::from(2u64), + Fq::from(3u64), + Fq::from(4u64), + ]); + assert_eq!(matrix_2x2.get_element(0, 0), Fq::from(1u64)); assert_eq!(matrix_2x2.get_element(0, 1), Fq::from(2u64)); assert_eq!(matrix_2x2.get_element(1, 0), Fq::from(3u64)); assert_eq!(matrix_2x2.get_element(1, 1), Fq::from(4u64)); let matrix_2x3 = Matrix::<2, 3, 6>::new(&[ - Fq::one(), + Fq::from(1u64), Fq::from(2u64), Fq::from(3u64), Fq::from(4u64), Fq::from(5u64), Fq::from(6u64), ]); - assert_eq!(matrix_2x3.get_element(0, 0), Fq::one()); + assert_eq!(matrix_2x3.get_element(0, 0), Fq::from(1u64)); assert_eq!(matrix_2x3.get_element(0, 1), Fq::from(2u64)); assert_eq!(matrix_2x3.get_element(0, 2), Fq::from(3u64)); assert_eq!(matrix_2x3.get_element(1, 0), Fq::from(4u64)); @@ -215,11 +240,11 @@ fn create_matrix_from_array() { #[test] fn determinant() { - let matrix_1x1 = SquareMatrix::<1, 1>::new(&[Fq::one()]); - assert_eq!(matrix_1x1.determinant(), Fq::one()); + let matrix_1x1 = SquareMatrix::<1, 1>::new(&[Fq::from(1u64)]); + assert_eq!(matrix_1x1.determinant(), Fq::from(1u64)); - let a = Fq::one(); - let b = Fq::one() + Fq::one(); + let a = Fq::from(1u64); + let b = Fq::from(1u64) + Fq::from(1u64); let c = Fq::from(3u64); let d = Fq::from(4u64); let matrix_2x2 = SquareMatrix::<2, 4>::new(&[a, b, c, d]); diff --git a/poseidon-paramgen/Cargo.toml b/poseidon-paramgen/Cargo.toml index e8fddd5..a41e7a3 100644 --- a/poseidon-paramgen/Cargo.toml +++ b/poseidon-paramgen/Cargo.toml @@ -20,7 +20,7 @@ rand_core = { version = "0.6.3", default-features = false, features = ["getrando poseidon-parameters = { path = "../poseidon-parameters", default-features = false, version = "1.0" } [dev-dependencies] -decaf377 = "0.8" +decaf377 = { git = "https://github.com/penumbra-zone/decaf377.git", branch="for-poseidon377", default-features = false } ark-bn254 = "0.4" ark-ed-on-bls12-377 = "0.4" ark-ed-on-bls12-381 = "0.4" diff --git a/poseidon-permutation/Cargo.toml b/poseidon-permutation/Cargo.toml index 32974b7..b67c0ae 100644 --- a/poseidon-permutation/Cargo.toml +++ b/poseidon-permutation/Cargo.toml @@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0" repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] -decaf377 = { version="0.8", default-features = false } +decaf377 = { git = "https://github.com/penumbra-zone/decaf377.git", branch="for-poseidon377", default-features = false } ark-ff = { version = "0.4", default-features = false, optional=true } ark-std = { version = "^0.4.0", default-features = false, optional=true } ark-r1cs-std = {version = "0.4", default-features = false, optional=true } @@ -23,4 +23,5 @@ std = [ "ark-ff/std", "ark-std/std", "poseidon-parameters/std", + "decaf377/std", ] diff --git a/poseidon-permutation/src/permutation.rs b/poseidon-permutation/src/permutation.rs index 87d46a0..9ca0d14 100644 --- a/poseidon-permutation/src/permutation.rs +++ b/poseidon-permutation/src/permutation.rs @@ -74,7 +74,7 @@ impl< ) -> Self { Self { parameters, - state_words: [Fq::zero(); STATE_SIZE], + state_words: [Fq::from(0u64); STATE_SIZE], } } @@ -222,7 +222,7 @@ impl< fn partial_sub_words(&mut self) { match self.parameters.alpha { Alpha::Exponent(exp) => self.state_words[0] = (self.state_words[0]).pow([exp as u64]), - Alpha::Inverse => self.state_words[0] = Fq::one() / self.state_words[0], + Alpha::Inverse => self.state_words[0] = Fq::from(1u64) / self.state_words[0], } } @@ -236,7 +236,7 @@ impl< } Alpha::Inverse => { for i in 0..STATE_SIZE { - self.state_words[i] = Fq::one() / self.state_words[i]; + self.state_words[i] = Fq::from(1u64) / self.state_words[i]; } } } @@ -244,7 +244,7 @@ impl< /// Applies the `MixLayer` using the M_i matrix. fn mix_layer_mi(&mut self) { - let mut new_state_words = [Fq::zero(); STATE_SIZE]; + let mut new_state_words = [Fq::from(0u64); STATE_SIZE]; for (i, row) in self.parameters.optimized_mds.M_i.iter_rows().enumerate() { let sum = row .iter() @@ -258,7 +258,7 @@ impl< /// Applies the `MixLayer` using the MDS matrix. fn mix_layer_mds(&mut self) { - let mut new_state_words = [Fq::zero(); STATE_SIZE]; + let mut new_state_words = [Fq::from(0u64); STATE_SIZE]; for (i, row) in self.parameters.mds.0 .0.iter_rows().enumerate() { let sum = row @@ -275,7 +275,7 @@ impl< fn sparse_mat_mul(&mut self, round_number: usize) { // mul_row = [(state_words[0] * v[i]) for i in range(0, t-1)] // add_row = [(mul_row[i] + state_words[i+1]) for i in range(0, t-1)] - let mut add_row = [Fq::zero(); STATE_SIZE_MINUS_1]; + let mut add_row = [Fq::from(0u64); STATE_SIZE_MINUS_1]; for (i, x) in self.parameters.optimized_mds.v_collection[round_number] .elements .iter() diff --git a/poseidon377/Cargo.toml b/poseidon377/Cargo.toml index a9d92e7..9c422de 100644 --- a/poseidon377/Cargo.toml +++ b/poseidon377/Cargo.toml @@ -13,9 +13,7 @@ ark-groth16 = { version = "0.4", default-features = false, optional=true } ark-r1cs-std = {version = "0.4", default-features = false, optional=true } ark-relations = { version="0.4", default-features = false, optional=true } ark-snark = { version = "0.4", default-features = false, optional=true } -decaf377 = { version="0.8", default-features = false, features = ["r1cs"] } -num-bigint = { version = "0.4.3", default-features = false } -once_cell = { version = "1.8", default-features = false } +decaf377 = { git = "https://github.com/penumbra-zone/decaf377.git", branch="for-poseidon377", default-features = false } poseidon-parameters = { version="1.0", path = "../poseidon-parameters", default-features = false } poseidon-permutation = { version="1.0", path = "../poseidon-permutation", default-features = false } @@ -37,7 +35,7 @@ ark-test-curves = { version = "0.4", features = ["bls12_381_curve", "mnt4_753_cu [features] default = ["arkworks"] -alloc = ["once_cell/alloc"] +alloc = ["decaf377/alloc"] arkworks = ["std", "decaf377/arkworks", "ark-ff/std", @@ -49,8 +47,6 @@ arkworks = ["std", "ark-serialize/std"] std = [ "alloc", - "num-bigint/std", - "once_cell/std", ] r1cs = [ "arkworks", diff --git a/poseidon377/src/hash.rs b/poseidon377/src/hash.rs index 2481d73..6758d1a 100644 --- a/poseidon377/src/hash.rs +++ b/poseidon377/src/hash.rs @@ -2,8 +2,9 @@ use crate::{Fq, Instance}; /// Hash a single [`Fq`] element with the provided `domain_separator`. pub fn hash_1(domain_separator: &Fq, value: Fq) -> Fq { - let params = &crate::RATE_1_PARAMS; - let mut state = Instance::new(params); + //let params = &crate::RATE_1_PARAMS; + let params = crate::params::rate_1(); + let mut state = Instance::new(¶ms); state.n_to_1_fixed_hash(&[*domain_separator, value]) } diff --git a/poseidon377/src/lib.rs b/poseidon377/src/lib.rs index dd09c9b..69af52c 100644 --- a/poseidon377/src/lib.rs +++ b/poseidon377/src/lib.rs @@ -1,8 +1,6 @@ //! An instantiation of Poseidon for the BLS12-377 scalar field. #![cfg_attr(not(feature = "std"), no_std)] -use once_cell::sync::Lazy; - mod hash; mod params; @@ -10,8 +8,8 @@ mod params; pub use hash::hash_1; /// Parameters for the rate-1 instance of Poseidon. -pub static RATE_1_PARAMS: Lazy> = - Lazy::new(params::rate_1); +// pub static RATE_1_PARAMS: Lazy> = +// Lazy::new(params::rate_1); // TODO: // Load parameters using const fn diff --git a/poseidon377/src/params.rs b/poseidon377/src/params.rs index e49f7c2..a97de39 100644 --- a/poseidon377/src/params.rs +++ b/poseidon377/src/params.rs @@ -1,4 +1,5 @@ -use core::str::FromStr; +use ark_std::str::FromStr; +// use core::str::FromStr; use decaf377::Fq; use poseidon_parameters::v1::{ Alpha, ArcMatrix, Matrix, MatrixOperations, MdsMatrix, OptimizedArcMatrix, @@ -10,11 +11,12 @@ pub fn rate_1() -> PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> { PoseidonParameters { M: 128, arc: ArcMatrix::<39, 2, 78>::new(&[ - Fq::from_str( - "5966135783811619788946141430599740285333890476176239487053701755282483259229", - ) - .map_err(|_| ()) - .unwrap(), + Fq::from_montgomery_limbs([ + 6258896775460530561, + 1267570262938364784, + 10583705394133388288, + 4331270346116315, + ]), Fq::from_str( "8248386181461625724624937953920458307783934991095828229311948662109703846229", ) From ee82471310cef0ec73e106143868f4a837750756 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 2 Apr 2024 14:41:08 -0400 Subject: [PATCH 42/54] remove temporary stuff that should go in decaf377 --- poseidon-parameters/src/lib.rs | 16 ---------------- poseidon-parameters/src/matrix.rs | 4 +--- poseidon-permutation/src/permutation.rs | 7 ++----- 3 files changed, 3 insertions(+), 24 deletions(-) diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index 918d5b7..c00ed77 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -23,19 +23,3 @@ pub mod v1; /// Structures related to Poseidon version 2 parameters. pub mod v2; - -pub trait StuffThatNeedsToGoInDecaf377 { - fn pow>(&self, exp: S) -> Self; -} - -// TEMP -impl StuffThatNeedsToGoInDecaf377 for Fq { - fn pow>(&self, exp: S) -> Self { - let mut res = Fq::from(1u64); - let exp_u64 = exp.as_ref(); - for _ in 0..exp_u64[0] { - res *= self; - } - res - } -} diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 1fd1669..6cf1579 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -268,12 +268,10 @@ impl SquareMatrixOperations let dim = self.n_rows(); let mut elements = [Fq::from(0u64); N_ELEMENTS]; - // TODO: non arkworks Fq::pow - use crate::StuffThatNeedsToGoInDecaf377; let mut index = 0; for i in 0..dim { for j in 0..dim { - elements[index] = (-Fq::from(1u64)).pow([(i + j) as u64]); + elements[index] = (-Fq::from(1u64)).power([(i + j) as u64]); index += 1; } } diff --git a/poseidon-permutation/src/permutation.rs b/poseidon-permutation/src/permutation.rs index 9ca0d14..a3c1c70 100644 --- a/poseidon-permutation/src/permutation.rs +++ b/poseidon-permutation/src/permutation.rs @@ -3,9 +3,6 @@ use decaf377::Fq; use poseidon_parameters::v1::{Alpha, MatrixOperations, PoseidonParameters}; -//temp -use poseidon_parameters::StuffThatNeedsToGoInDecaf377; - /// Represents a generic instance of `Poseidon`. /// /// Intended for generic fixed-width hashing. @@ -221,7 +218,7 @@ impl< /// Applies the partial `SubWords` layer. fn partial_sub_words(&mut self) { match self.parameters.alpha { - Alpha::Exponent(exp) => self.state_words[0] = (self.state_words[0]).pow([exp as u64]), + Alpha::Exponent(exp) => self.state_words[0] = (self.state_words[0]).power([exp as u64]), Alpha::Inverse => self.state_words[0] = Fq::from(1u64) / self.state_words[0], } } @@ -231,7 +228,7 @@ impl< match self.parameters.alpha { Alpha::Exponent(exp) => { for i in 0..STATE_SIZE { - self.state_words[i] = self.state_words[i].pow([exp as u64]); + self.state_words[i] = self.state_words[i].power([exp as u64]); } } Alpha::Inverse => { From 7f88c3269bc5a25c69821ac2158e73a4c276e9fd Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 2 Apr 2024 16:58:05 -0400 Subject: [PATCH 43/54] use const fns to instantiate parameters --- poseidon-parameters/src/arc_matrix.rs | 10 + poseidon-parameters/src/lib.rs | 2 - poseidon-parameters/src/matrix.rs | 14 + poseidon-parameters/src/mds_matrix.rs | 12 + poseidon377/src/hash.rs | 5 +- poseidon377/src/lib.rs | 6 +- poseidon377/src/params.rs | 1261 ++--------------------- poseidon377/src/params/rate_1.rs | 1317 +++++++++++++++++++++++++ 8 files changed, 1440 insertions(+), 1187 deletions(-) create mode 100644 poseidon377/src/params/rate_1.rs diff --git a/poseidon-parameters/src/arc_matrix.rs b/poseidon-parameters/src/arc_matrix.rs index 15dd152..81b8466 100644 --- a/poseidon-parameters/src/arc_matrix.rs +++ b/poseidon-parameters/src/arc_matrix.rs @@ -20,6 +20,11 @@ impl pub fn inner_elements(&self) -> [Fq; N_ELEMENTS] { self.0.elements } + + /// Create a new matrix from a slice of elements. + pub const fn new_from_known(elements: [Fq; N_ELEMENTS]) -> Self { + Self(Matrix::new_from_known(elements)) + } } impl MatrixOperations @@ -76,6 +81,11 @@ impl pub fn transpose(&self) -> OptimizedArcMatrix { OptimizedArcMatrix(self.0.transpose()) } + + /// Create a new matrix from a slice of elements. + pub const fn new_from_known(elements: [Fq; N_ELEMENTS]) -> Self { + Self(ArcMatrix::new_from_known(elements)) + } } impl MatrixOperations diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index c00ed77..a0916c1 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -5,8 +5,6 @@ //! The API here is split into [`v1`] and [`v2`] to avoid confusion //! between the two versions. -use decaf377::Fq; - mod alpha; mod arc_matrix; mod error; diff --git a/poseidon-parameters/src/matrix.rs b/poseidon-parameters/src/matrix.rs index 6cf1579..45a0517 100644 --- a/poseidon-parameters/src/matrix.rs +++ b/poseidon-parameters/src/matrix.rs @@ -31,6 +31,15 @@ impl } Matrix::::new(&transposed_elements) } + + /// Create a new matrix from a slice of elements. + pub const fn new_from_known(elements: [Fq; N_ELEMENTS]) -> Self { + if N_ELEMENTS != N_ROWS * N_COLS { + panic!("Matrix has an insufficient number of elements") + } + + Self { elements } + } } impl MatrixOperations @@ -321,6 +330,11 @@ impl SquareMatrix SquareMatrix<2, 4> { SquareMatrix::<2, 4>::new(&[a, b, c, d]) } + + /// Create a new matrix from a slice of elements. + pub const fn new_from_known(elements: [Fq; N_ELEMENTS]) -> Self { + Self(Matrix::new_from_known(elements)) + } } /// Multiply two matrices diff --git a/poseidon-parameters/src/mds_matrix.rs b/poseidon-parameters/src/mds_matrix.rs index 0e5b308..b7bb3c2 100644 --- a/poseidon-parameters/src/mds_matrix.rs +++ b/poseidon-parameters/src/mds_matrix.rs @@ -123,6 +123,18 @@ impl< } SquareMatrix::new(&mhat_elements) } + + /// Create a new matrix from a slice of elements. + /// + /// # Security + /// + /// You must ensure this matrix was generated securely, + /// using the Cauchy method in `fixed_cauchy_matrix` or + /// using the random subsampling method described in the original + /// paper. + pub const fn new_from_known(elements: [Fq; NUM_ELEMENTS]) -> Self { + Self(SquareMatrix::new_from_known(elements)) + } } /// Represents an optimized MDS (maximum distance separable) matrix. diff --git a/poseidon377/src/hash.rs b/poseidon377/src/hash.rs index 6758d1a..40bd9f9 100644 --- a/poseidon377/src/hash.rs +++ b/poseidon377/src/hash.rs @@ -2,8 +2,7 @@ use crate::{Fq, Instance}; /// Hash a single [`Fq`] element with the provided `domain_separator`. pub fn hash_1(domain_separator: &Fq, value: Fq) -> Fq { - //let params = &crate::RATE_1_PARAMS; - let params = crate::params::rate_1(); + let params = &crate::RATE_1_PARAMS; let mut state = Instance::new(¶ms); state.n_to_1_fixed_hash(&[*domain_separator, value]) } @@ -78,8 +77,6 @@ pub fn hash_1(domain_separator: &Fq, value: Fq) -> Fq { mod test { use core::str::FromStr; - use ark_ff::PrimeField; - use super::*; #[test] diff --git a/poseidon377/src/lib.rs b/poseidon377/src/lib.rs index 69af52c..4a29e97 100644 --- a/poseidon377/src/lib.rs +++ b/poseidon377/src/lib.rs @@ -8,11 +8,7 @@ mod params; pub use hash::hash_1; /// Parameters for the rate-1 instance of Poseidon. -// pub static RATE_1_PARAMS: Lazy> = -// Lazy::new(params::rate_1); - -// TODO: -// Load parameters using const fn +pub const RATE_1_PARAMS: PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> = params::rate_1::rate_1(); /// Parameters for the rate-2 instance of Poseidon. // pub static RATE_2_PARAMS: Lazy> = Lazy::new(params::rate_2); diff --git a/poseidon377/src/params.rs b/poseidon377/src/params.rs index a97de39..fd0c008 100644 --- a/poseidon377/src/params.rs +++ b/poseidon377/src/params.rs @@ -1,1119 +1,28 @@ -use ark_std::str::FromStr; -// use core::str::FromStr; -use decaf377::Fq; -use poseidon_parameters::v1::{ - Alpha, ArcMatrix, Matrix, MatrixOperations, MdsMatrix, OptimizedArcMatrix, - OptimizedMdsMatrices, PoseidonParameters, RoundNumbers, SquareMatrix, -}; - -/// Parameters for the rate-1 instance of Poseidon. -pub fn rate_1() -> PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> { - PoseidonParameters { - M: 128, - arc: ArcMatrix::<39, 2, 78>::new(&[ - Fq::from_montgomery_limbs([ - 6258896775460530561, - 1267570262938364784, - 10583705394133388288, - 4331270346116315, - ]), - Fq::from_str( - "8248386181461625724624937953920458307783934991095828229311948662109703846229", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "7899697948171006775608679894258092311173776732034376699480766172940143332902", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6159903727631813124658505727742008686518139735306098276802832804806992180150", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6603147245625769955556264626336290925453294494417468042132447023388340299439", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5452037251482288884459408199998243903142580394917869276146144672081622843033", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2115708492564482930864434704366485100751738113026748722601682745504297806604", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6133269380405971624163032902959596862025161741886995971748777100528132299512", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "1721373298675722117940847155120516423706154044622883045243024016434015697761", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2532176072218405331661057027566225726033916848962631064036767622968370620421", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "7524067696224680757975098555540410845710016011660137050724377830134384345101", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "429871330152690529194971512200321767443467690984017972743339762825407688724", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "4822017484452655916856912744980710231803358265071943154730711311103413373365", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "824805971881810943315480704737108941911470981122775059328188495378122732116", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "329423367343883915514983034403099471446131273787671146509854540644107913806", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "3883570534464466369989900277196782028657057428551976312572809240832449868758", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "54572309533869666713815545961978943833125965191367899718872564380412367827", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "104379966757231160002849091367321006399239678017811970878118738543783012285", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "3858794609418653642223132852951715558391493166064725133511836315778019207762", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "7972137249246669918452864163262970209957043950169362761933011015101944889612", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "8039476336099168668727095716808108897423850098843706006244337078630780735875", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "766430462054504684437076620779515009510608446229290910406705826112635319521", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "1157637743005900078763045828583815942936327706889163293509285927879248613852", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "183934423281730235616875364700958253948344322765356511034233191547769363772", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "1201562291895585824017244732773114229792892359638996784519703395328110117361", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "7310830976022972124006273496057736723302334623714327408809145379602290638605", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2276872920099944672856296669350324747933089853087959749074024714270320260388", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "966186309314558308244732353285518560026022414047505874760748721011885636552", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "4329502709342970939316184021870647333452252664602520071765724342507829556028", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "1337917261255725418250807303026010004761301733304867049551577706155074758165", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2839123367356547347441073953599915821128375251332356459441250279757074887817", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "224869059332792965060195408821564586206434504942125985103234074196709224834", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2118280724507514011418932238720730003985992189023324349392738827408813419470", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2024746817632649160329225850453502881580459753222774798266674540254096291210", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5307015204756219408960369558840758352147099769857833209947994256747928257137", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2407188252312221860580438003668742664004234794617922976059521488991595074312", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5700150280886935087009453247680311201121208454493198279022438029607234143353", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "828542545916769704315409945347237208572285442892223193990879248700065051975", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6424020944846567619673399158265606226806728227047720977493059829313969166558", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5956636828116256451736357524320841700115703677198610564962237869663858071864", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6933622218433329082021136266165495108542662690546278978263672802079585858771", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "204406226257651687195615478017955871586120607733975319305559723816453526010", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "431036448527621354942248671784563679512406095626139552665028723514906107279", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2016406250235180438600581178120561107077239174595547290770499452866017307935", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2447571947257624755418643779781470875695669518474076004121556310904642337555", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "823175697495712519803645407488370527154708792984128797959297156747503221464", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5808340764084155658475571734374743816943273999143774630733852180823715703009", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "7355041960620166894243633138047951214299390310721833447536481770010924182637", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2120887415217279631479397749634460783917137667543869946213939195926282168460", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "4106047313079529846051904718092551567497277064547982407065468562206559262083", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2869242011889231404909133868698817227497579259211963396424277007676681908030", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5830475615944010394710658533945042878499619156056253528544887424328284533333", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6445135510747273379638655974958831352681217556501517433182431280009829767448", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "3039442732831840251297958163526128870429881856309417478361276294396087226871", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "3750943880896182174971677063560735365855431148595700647372739176486892105360", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6501105879101363238574742431707671377990863722951661844266502035398320078655", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "8762940550008698267921660361508082078549552508484251072871737389499251780", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "7849014182562314090744458575516477908512244379446772221807253399687719915819", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "7819370335680637242579036089736241212018135042303573318142192088258427233896", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "747638661415129403364618594175025354868001628934615356530406778821361740441", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6658828034743151551710649802496724888729361547906353112540091368274558946461", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "8328145462438412881643804075368556833926038786901905782513874650031190195327", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "8320331650667342323383974431797077522417503304594901121399889421397646071868", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5449933697382452826795510354601320641289019263865712754592193870057100394478", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "4008518250088803388817191682256320373945471106849545040689587699114729889527", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5879283194171533756539189745601792737324595298734552274741868717138815351564", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6626699161525777173055182114141370998077087893099077308894619252233744717846", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "163741410170388028377206341187105220978890212501940049275941086737474403489", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2289406808035365551509331312793292709318048121336289318211070950581668590781", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5430151020513142173055352979265745660781724536468437563956825250123186769437", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "4040004656752387138938977569185095852881985565015580941465394860026553994036", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "1901308305061675634226724460540357576851952962685703065906892481358446930441", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2686273196094412130593768635962284067098909691815336855637195251162980171156", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "1123632222954904617550891255304448941562187156316217306121520482993732652419", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2124462098522865366594185315832211935844567922720223671250422450277331767386", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "3968009204129455601037289639721574073403531972013488960906721718883864047886", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "1041450153030980593059805000659658173285263988288148401600145800517153364524", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "7964222143364674108039807011723483055868039993122214029137966682187499721189", - ) - .map_err(|_| ()) - .unwrap(), - ]), - mds: MdsMatrix::from_elements(&[ - Fq::from_str( - "4222230874714185212124412469390773265687949667577031913967616727958704619521", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606159361", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606159361", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6333346312071277818186618704086159898531924501365547870951425091938056929281", - ) - .map_err(|_| ()) - .unwrap(), - ]), - alpha: Alpha::Exponent(17), - rounds: RoundNumbers { r_P: 31, r_F: 8 }, - optimized_mds: OptimizedMdsMatrices { - M_hat: SquareMatrix::<1, 1>::new(&[Fq::from_str( - "6333346312071277818186618704086159898531924501365547870951425091938056929281", - ) - .map_err(|_| ()) - .unwrap()]), - v: Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606159361", - ) - .map_err(|_| ()) - .unwrap()]), - w: Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606159361", - ) - .map_err(|_| ()) - .unwrap()]), - M_prime: SquareMatrix::<2, 4>::new(&[ - Fq::from_str("1").map_err(|_| ()).unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "6333346312071277818186618704086159898531924501365547870951425091938056929281", - ) - .map_err(|_| ()) - .unwrap(), - ]), - M_doubleprime: SquareMatrix::<2, 4>::new(&[ - Fq::from_str( - "4222230874714185212124412469390773265687949667577031913967616727958704619521", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606159361", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606159362", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("1").map_err(|_| ()).unwrap(), - ]), - M_inverse: SquareMatrix::<2, 4>::new(&[ - Fq::from_str("18").map_err(|_| ()).unwrap(), - Fq::from_str( - "8444461749428370424248824938781546531375899335154063827935233455917409239017", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "8444461749428370424248824938781546531375899335154063827935233455917409239017", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("36").map_err(|_| ()).unwrap(), - ]), - M_hat_inverse: SquareMatrix::<1, 1>::new(&[Fq::from_str("4").map_err(|_| ()).unwrap()]), - M_00: Fq::from_str( - "4222230874714185212124412469390773265687949667577031913967616727958704619521", - ) - .map_err(|_| ()) - .unwrap(), - M_i: Matrix::<2, 2, 4>::new(&[ - Fq::from_str("1").map_err(|_| ()).unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "1328466806588844283355748993677225123218781175064554027603160865731566895100", - ) - .map_err(|_| ()) - .unwrap(), - ]), - v_collection: [ - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606159361", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "7740756603642672888894756193883084320427907723891225175607297334590958469121", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8268535462981946040410307752556930978638901432338354164853249425585796546561", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8400480177816764328289195642225392643191649859450136412164737448334506065921", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8433466356525468900258917614642508059329836966228081973992609454021683445761", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8441712901202645043251348107746786913364383742922568364449577455443477790721", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8443774537371939078999455731022856626873020437096189962063819455798926376961", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444289946414262587936482636841874055250179610639595361467379955887788523521", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444418798674843465170739363296628412344469404025446711318270080910004060161", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444451011739988684479303544910317001618041852371909548780992612165557944321", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444459065006274989306444590313739148936434964458525258146673244979446415361", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461078322846565513229851664594685766033242480179185488093403182918533121", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461581651989459564926167002308569973432811985592667323448442733786562561", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461707484275183077850245836737041025282704361946037782287202621503569921", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461738942346613956081265545344158788245177456034380396996892593432821761", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461746806864471675639020472495938228985795729556466050674315086415134721", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461748772993936105528459204283883089170950297936987464093670709660712961", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461749264526302213000818887230869304217238940032117817448509615472107521", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461749387409393739868908807967615857978811100555900405787219341924956161", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461749418130166621585931288151802496419204140686846052871896773538168321", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461749425810359842015186908197849156029302400719582464643066131441471361", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461749427730408147122500813209360820931826965727766567585858470917297121", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461749428210420223399329289462238737157458106979812593321556555786253561", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "8444461749428330423242468536408525458216213865892292824099755481077003492671", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "4222230874714175211872823368797517997398028300261589163008747234248603182928", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "1055557718678543802968205842199379499349507075065397290752186808562150795732", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "263889429669635950742051460549844874837376768766349322688046702140537698933", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "6399318669488686805872131569223621117241268693557135201623436767473191354014", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5822060542086356913592445361696678544998266840966315714373475919827002458024", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "1455515135521589228398111340424169636249566710241578928593368979956750614506", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "4586109658594582519223940304496815674750341345137426646115958972947892273147", - ) - .map_err(|_| ()) - .unwrap()]), - ], - w_hat_collection: [ - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606159362", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606159366", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606159382", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606159446", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606159702", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606160726", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606164822", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606181206", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606246742", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611606508886", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611607557462", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611611751766", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611628528982", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611695637846", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970611964073302", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970613037815126", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970617332782422", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970634512651606", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970703232128342", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488970978110035286", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488972077621663062", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488976475668174166", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623488994067854218582", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623489064436598396246", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623489345911575106902", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623490471811481949526", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623494975411109320022", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623512989809618802006", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623585047403656729942", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218623873277779808441686", - ) - .map_err(|_| ()) - .unwrap()]), - Matrix::<1, 1, 1>::new(&[Fq::from_str( - "5629641166285580282832549959187697687583932890102709218625026199284415288662", - ) - .map_err(|_| ()) - .unwrap()]), - ], - }, - optimized_arc: OptimizedArcMatrix::<39, 2, 78>::new(&[ - Fq::from_str( - "5966135783811619788946141430599740285333890476176239487053701755282483259229", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "8248386181461625724624937953920458307783934991095828229311948662109703846229", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "7899697948171006775608679894258092311173776732034376699480766172940143332902", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6159903727631813124658505727742008686518139735306098276802832804806992180150", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6603147245625769955556264626336290925453294494417468042132447023388340299439", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "5452037251482288884459408199998243903142580394917869276146144672081622843033", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2115708492564482930864434704366485100751738113026748722601682745504297806604", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "6133269380405971624163032902959596862025161741886995971748777100528132299512", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "1721373298675722117940847155120516423706154044622883045243024016434015697761", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "3724565236254516963714184402682376811075312201052785286045653335186936485632", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2993926950520793195583012275961325592891236008388086182862520577566512461340", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "4844336353504503214469870071526764174731682540454932633018435766858296839637", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "2919936031876724957775716111440945766268285492401054580426406992584542459655", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "5663978257662262191024807546064736467552196158340325666330925183424594651456", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "7448085674097568817272567262403479077043705287324313131373550460383625800172", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "1844007775807385366821253113621394119303187242979498570585202448625529672973", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "2845375890334376795538685909086245364409288104637072625430989733829905037688", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "2964240408032926723856827507283082421025208343378464261229028275456762781251", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "230161891578056211559550657807190773174538079462586673639444384125685358297", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "2306877002508697181182344810930603763199115753709702823703230141504824250182", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "2123836318329453752354985637812824046744828725960282708932659514095027388057", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "7013570417631164963729263595330853907104728572996870230906776016200534001914", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "5000764729360823861687973987151560403669602887880054408060477297803844381647", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "3688012183046632864327681795121813640887482502925323142608857342284872442386", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "3146585007675813590062491760536779565347117627054638296154414219427913984786", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "7676678864432675901546415291553481115538823096046457940480569006553249093660", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "7596645725911019119226480160286640258958855561482821460006382366175556000662", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "2481820329715367246078919596300531087379530611060385987231004758392982276094", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "8195798223330388456752391304154387344999317395184697681713352179787447701761", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "2950101088303282476911765535847716840405588191771345438270963768698720082622", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "6089942152437650111763694671952061709483390843818617937525773543116658480118", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "968559139731456981305865940073176476284992478108629426225462874517877315869", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "4221404144830957915518954956743898127154116380416977979695345847323516205035", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "4704501190321898794037565838019368758488215190375880308834609880983882485439", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "1528540211343567129336669730723574951290951849444879952791957047609443553699", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "3615509814166558686447593855787063258143369710625250820322153815463017494590", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "198306532808076479412426644626589954978557884790678002247412851514091644371", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "5853689647732500931296921164824864754078960696720787779482381563682376644191", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "1960866047741380343536614319063463424777078726178059991360525871235725003606", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "3774777296033242440576566454498384754098369995505408300123039122605053797021", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str("0").map_err(|_| ()).unwrap(), - Fq::from_str( - "4040004656752387138938977569185095852881985565015580941465394860026553994036", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "1901308305061675634226724460540357576851952962685703065906892481358446930441", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2686273196094412130593768635962284067098909691815336855637195251162980171156", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "1123632222954904617550891255304448941562187156316217306121520482993732652419", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "2124462098522865366594185315832211935844567922720223671250422450277331767386", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "3968009204129455601037289639721574073403531972013488960906721718883864047886", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "1041450153030980593059805000659658173285263988288148401600145800517153364524", - ) - .map_err(|_| ()) - .unwrap(), - Fq::from_str( - "7964222143364674108039807011723483055868039993122214029137966682187499721189", - ) - .map_err(|_| ()) - .unwrap(), - ]), - } -} +pub mod rate_1; // /// Parameters for the rate-2 instance of Poseidon. // pub fn rate_2() -> PoseidonParameters { // PoseidonParameters { // M: 128, // t: 3, -// arc: ArcMatrix::new(39, 3, vec![Fq::from_str("308026635595114235070436728341841505234226384644787941764356225291780075012").map_err(|_| ()).unwrap(), Fq::from_str("686850750308311448868354907988153221833589417264043199872750834851275630399").map_err(|_| ()).unwrap(), Fq::from_str("5458865526113744175375673481036999502881423789202235030915223710930508573500").map_err(|_| ()).unwrap(), Fq::from_str("1216889461603982466063117074419064018993731784023337352219629352951004218382").map_err(|_| ()).unwrap(), Fq::from_str("4580374146984258872617301222640071415348151863297599652351895199406510624060").map_err(|_| ()).unwrap(), Fq::from_str("5287771711632967718595430906600106184880872479312192055075552617141548501299").map_err(|_| ()).unwrap(), Fq::from_str("3037526442503690560777271665669625925917538366486234291090702161060916614832").map_err(|_| ()).unwrap(), Fq::from_str("6275277408809697928512465960441767403986852341417079924634963619646806124417").map_err(|_| ()).unwrap(), Fq::from_str("7335650489313165022076032570688161581492191665821494053773844209042883340886").map_err(|_| ()).unwrap(), Fq::from_str("1627952039309156476645184308670263708019542166435650091304574646631569460339").map_err(|_| ()).unwrap(), Fq::from_str("6094265973203525089006037274771888959193635664689776329087130682272196094008").map_err(|_| ()).unwrap(), Fq::from_str("6490696528492405721785907440795129872072544933360586449368276289112880330670").map_err(|_| ()).unwrap(), Fq::from_str("1838969713611020994526552299650788115168140980815959904769759411371437475085").map_err(|_| ()).unwrap(), Fq::from_str("2150051935070463751493305482799641725706245753717668882294497822824388319578").map_err(|_| ()).unwrap(), Fq::from_str("4575572148360756475907353900681447955312802247778987169199474643005130716935").map_err(|_| ()).unwrap(), Fq::from_str("1851688896784243289932019446285888654652306219713142676419351172260600922714").map_err(|_| ()).unwrap(), Fq::from_str("6973552312635424934570970915726931835821737587964001373829651198305564713244").map_err(|_| ()).unwrap(), Fq::from_str("1813003948570365248649794664717915544584605337173583303735237517614852010262").map_err(|_| ()).unwrap(), Fq::from_str("8263838364638315756819655988900910418618512340908078920307324632543945164500").map_err(|_| ()).unwrap(), Fq::from_str("757943113036795101065823745544829115197604837832768830141778672857097207622").map_err(|_| ()).unwrap(), Fq::from_str("659325027542376965992085727974783614933698097545036724992593606308630964139").map_err(|_| ()).unwrap(), Fq::from_str("1225384975372888789772257703659435489309718895398738845602578994965191972389").map_err(|_| ()).unwrap(), Fq::from_str("7047321089114218473742436051763144729708458704973957631376463469541098276305").map_err(|_| ()).unwrap(), Fq::from_str("4896435516099794294013100518299784209896728776935133585568100103105644366269").map_err(|_| ()).unwrap(), Fq::from_str("2205611631605917342771043739003168054091728635889814050523595535007173267903").map_err(|_| ()).unwrap(), Fq::from_str("4474292819278150418223394712870944390214136577384608881113789172943901756185").map_err(|_| ()).unwrap(), Fq::from_str("5587482766701385940251260739243227887661785673403464848010833438080581211679").map_err(|_| ()).unwrap(), Fq::from_str("2641477529317380932697589512697916502009860625009330516388196585651681493176").map_err(|_| ()).unwrap(), Fq::from_str("7659241781098366386155720168632612014434481871232768282168172586344498585340").map_err(|_| ()).unwrap(), Fq::from_str("2213394414496632001850413419138630033341488354994088997070037377687913045198").map_err(|_| ()).unwrap(), Fq::from_str("8225722503382752487995602487837074631802103163654291534420243738097561923211").map_err(|_| ()).unwrap(), Fq::from_str("7339897388607796780814184350408038307549544998106959208719480969830754355714").map_err(|_| ()).unwrap(), Fq::from_str("6063557771009805901369588877386914456032427713266832819067913917532377663085").map_err(|_| ()).unwrap(), Fq::from_str("5509459114334322933080334148673613015218318202961864814558888525860239977647").map_err(|_| ()).unwrap(), Fq::from_str("1068773010324768699264514407746331217127187152280245817647555692667272524805").map_err(|_| ()).unwrap(), Fq::from_str("1475085787102796648525415834131411151818489668007757976944301855541062325957").map_err(|_| ()).unwrap(), Fq::from_str("7806695333926830350651265019724920668446960202327785464297697432575564892268").map_err(|_| ()).unwrap(), Fq::from_str("6262615427970190003802435633045752362752019983944651481699206198107630667501").map_err(|_| ()).unwrap(), Fq::from_str("5882310218697746646752824849544270655456741743515414997582197895094710858123").map_err(|_| ()).unwrap(), Fq::from_str("4020331411826639688300623264550213776493766044074688280569180938277859091874").map_err(|_| ()).unwrap(), Fq::from_str("5121255494220880264468029924121174240167067523779050306271979286616022983384").map_err(|_| ()).unwrap(), Fq::from_str("845210955510933566002116427536045841286540286530946099066621065119722796675").map_err(|_| ()).unwrap(), Fq::from_str("4111647319312005247588888076266870242762057231362139607364774953978018302987").map_err(|_| ()).unwrap(), Fq::from_str("974256221217239393715990077542507764506970329207579698526122990643033824957").map_err(|_| ()).unwrap(), Fq::from_str("8159194581608557426538516014063257877781718792172378782923721536338075157415").map_err(|_| ()).unwrap(), Fq::from_str("5801330700370167469894729208361580066110395695280140377467309877650005609388").map_err(|_| ()).unwrap(), Fq::from_str("3394916168528704906797115121684038788393911457592974647637601320052880312678").map_err(|_| ()).unwrap(), Fq::from_str("5972250532491093184876275293339222434229671963274971711757113836479449305852").map_err(|_| ()).unwrap(), Fq::from_str("577370828757987434131060765456679971208926305673729814931934265779321773430").map_err(|_| ()).unwrap(), Fq::from_str("507369807706785879972719468470742776325023232536230874775576358969660471171").map_err(|_| ()).unwrap(), Fq::from_str("8145685735375135873236047590991377004841377786797564751928308568246623719134").map_err(|_| ()).unwrap(), Fq::from_str("6266812424655557804232577725379349619924941193610964604533176490248029261290").map_err(|_| ()).unwrap(), Fq::from_str("5967069394383625926592344942286040375814323449026607622149927596188761075273").map_err(|_| ()).unwrap(), Fq::from_str("3098449309447928770326430524623708251070761959504942163830346543311329812530").map_err(|_| ()).unwrap(), Fq::from_str("7427687102404419444527513714902552301778528290974214220713506219999675675333").map_err(|_| ()).unwrap(), Fq::from_str("4042876682716610044719894233707888314141403055770188287172821864822020198057").map_err(|_| ()).unwrap(), Fq::from_str("6837118584037052064438949987261070301544840685414744015869031742089822922445").map_err(|_| ()).unwrap(), Fq::from_str("1590095428593559863629820253130343351544841134884391502296948548443287186727").map_err(|_| ()).unwrap(), Fq::from_str("7833716475035809798805452573207732340626115218296146847285921472768509634541").map_err(|_| ()).unwrap(), Fq::from_str("1978766321165168589630826892562241348143601476846182828696106373368314589991").map_err(|_| ()).unwrap(), Fq::from_str("7868843219594886750750407514795570643227076640179151649282544892407534950592").map_err(|_| ()).unwrap(), Fq::from_str("3987117632709535432627489164941561521764371714110622944508310419066492323867").map_err(|_| ()).unwrap(), Fq::from_str("4076651335938465583820584717335396202979827471201866993402454539589670076574").map_err(|_| ()).unwrap(), Fq::from_str("6097748422352539177536678843480748867533252126316441163794334575472761192228").map_err(|_| ()).unwrap(), Fq::from_str("6078805585843131510577316268189212746081092327434755953371890725413311537300").map_err(|_| ()).unwrap(), Fq::from_str("808152962788527242286089686410977174198722494768279927846476444721346446780").map_err(|_| ()).unwrap(), Fq::from_str("8245045639104682160533738142044010415064219273511255106133773733199124521153").map_err(|_| ()).unwrap(), Fq::from_str("4927398668407453175049439565878572621130445066312119547147153299334208840274").map_err(|_| ()).unwrap(), Fq::from_str("363071701490644073034803917900446378362169536640995003365310347872935927086").map_err(|_| ()).unwrap(), Fq::from_str("6845633336116955356908527722458493089296092216721078117361029212334156034899").map_err(|_| ()).unwrap(), Fq::from_str("5094161176623110722538832591662719638820846893811655692681247282139572370575").map_err(|_| ()).unwrap(), Fq::from_str("7895316786827468299318427673897436206788315682717422447392995386534194809245").map_err(|_| ()).unwrap(), Fq::from_str("4619732789620735261100885573296112045445141157388178713596060188742622627289").map_err(|_| ()).unwrap(), Fq::from_str("8422122828670140480638067294204606309187570277720043969595883578063866777035").map_err(|_| ()).unwrap(), Fq::from_str("992958244258733465815289318950280606760995861894444863716516601726621951905").map_err(|_| ()).unwrap(), Fq::from_str("6764013719997591825457793918699801796014086921189886289817845875572992948924").map_err(|_| ()).unwrap(), Fq::from_str("1769631866057478207885307356771710476532650071643225238577433500390003064798").map_err(|_| ()).unwrap(), Fq::from_str("8016530745695127030799369163106442821010868795114179395122623057639374511985").map_err(|_| ()).unwrap(), Fq::from_str("8047402967616037894798331978704326272668112374178700484265954166189443934757").map_err(|_| ()).unwrap(), Fq::from_str("7958790794400926032963336530767233388628124879210206645872619788929075456478").map_err(|_| ()).unwrap(), Fq::from_str("173252929061996890901264974543899995780593767283643983973014427458683001541").map_err(|_| ()).unwrap(), Fq::from_str("424155452932847713908278173876758151545515219770842719961252496605244210819").map_err(|_| ()).unwrap(), Fq::from_str("4963998855511100561599552018011798722633814204866173360361168413573963102186").map_err(|_| ()).unwrap(), Fq::from_str("4924076301193420725308802072131338491797915911003604974321332671027931187176").map_err(|_| ()).unwrap(), Fq::from_str("87738268021093433851281834491522887096402113566660018960879318272510245409").map_err(|_| ()).unwrap(), Fq::from_str("8189285308779873224020359279990375150459733757976267012947719806969677070800").map_err(|_| ()).unwrap(), Fq::from_str("7140245732247889400232233586175941378463217319557254345847453782157236936894").map_err(|_| ()).unwrap(), Fq::from_str("3743951945863470078600584990270648056104210006488008873331665117840812797880").map_err(|_| ()).unwrap(), Fq::from_str("7758108064106000033154897821365721729228420055510189063189732601086961159068").map_err(|_| ()).unwrap(), Fq::from_str("2942331573871054342107123741050322394352958878052608362425041477010616345589").map_err(|_| ()).unwrap(), Fq::from_str("7534481797769283402135041398750790178261361935710363254896834970993454697586").map_err(|_| ()).unwrap(), Fq::from_str("7432765185094764662620235238828375611563632895456898300218670191109969003682").map_err(|_| ()).unwrap(), Fq::from_str("6291527872301459316564295970257606704192931633697240620667776646184893228067").map_err(|_| ()).unwrap(), Fq::from_str("5813315419101033685338589591740539737255593497183538450695253259569871183939").map_err(|_| ()).unwrap(), Fq::from_str("5526672082176263237417520469010132662746348759226334285738656831590234548753").map_err(|_| ()).unwrap(), Fq::from_str("3332801859738332252857912215019184013542060534668701681483001518406654964330").map_err(|_| ()).unwrap(), Fq::from_str("1405201308866890283812006656161598509681885029723142585511085641864028595396").map_err(|_| ()).unwrap(), Fq::from_str("1492494789956752741222490333391378456618539215379349797045428691266085997365").map_err(|_| ()).unwrap(), Fq::from_str("8071212912433625994454068244446084774815031240954408676949101589537116165412").map_err(|_| ()).unwrap(), Fq::from_str("4776554854519122517933592399764150620363707384114137316897908201016415856781").map_err(|_| ()).unwrap(), Fq::from_str("125733739368601178383657902963503628562164711974256889561227003875613464767").map_err(|_| ()).unwrap(), Fq::from_str("6095291956682197100095438891582653659020834282561205807326323590973913331048").map_err(|_| ()).unwrap(), Fq::from_str("1222469665268606145803729120426500156401953546226735560453940247824615064170").map_err(|_| ()).unwrap(), Fq::from_str("3553916981699410215413275982884160504425690320454695706786765040400435191673").map_err(|_| ()).unwrap(), Fq::from_str("4597893035276850283590548632351419824369725156115729763845407308233992233881").map_err(|_| ()).unwrap(), Fq::from_str("4098945751589637585349322721645137714901277398725764380413825257514636605490").map_err(|_| ()).unwrap(), Fq::from_str("896241425392348667316141178956455644228372721471824108535546494759067376393").map_err(|_| ()).unwrap(), Fq::from_str("3992502368943038378368897680594056578803163431114935312687627167974272071263").map_err(|_| ()).unwrap(), Fq::from_str("2916896099606045408059702536614926909593404178656347225235372099792450298246").map_err(|_| ()).unwrap(), Fq::from_str("120269880148157352408037220674298509372962320809264336091966259007633284713").map_err(|_| ()).unwrap(), Fq::from_str("7722392890376228197239026921734213343834699657441777356614625170525296088221").map_err(|_| ()).unwrap(), Fq::from_str("2433763979138972299522164212362097495457810156842620348670661190742330717004").map_err(|_| ()).unwrap(), Fq::from_str("983738301417603757808483219105286248075595155162538643758190406964355750696").map_err(|_| ()).unwrap(), Fq::from_str("209202405659177692545688490614016438006505568346018036573546364833013030573").map_err(|_| ()).unwrap(), Fq::from_str("4653243085200282579438307546529783706597045845312243944557671219043378566385").map_err(|_| ()).unwrap(), Fq::from_str("5337014110345479543678006017350943272815297410632902615031016645483782346794").map_err(|_| ()).unwrap(), Fq::from_str("6325608705322012724565293795590543306557376953836287094512934948871034460300").map_err(|_| ()).unwrap()]), -// mds: MdsMatrix::from_elements(vec![Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159361").map_err(|_| ()).unwrap(), Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]), +// arc: ArcMatrix::new(39, 3, vec![Fq::from_montgomery_limbs([13532052565085671856, 13175575834742130482, 14571043277169067394, 1128324334676141805]), Fq::from_montgomery_limbs([10586567975029405298, 5987505274649066590, 9663655893165983133, 381788629769180835]), Fq::from_montgomery_limbs([7404335995308317606, 10342209374602516054, 14679697400509748167, 1259991645283011647]), Fq::from_montgomery_limbs([12711294721892819516, 8412935995118692797, 7069737649526067295, 549549236990677487]), Fq::from_montgomery_limbs([128694122049037398, 15825223235256271389, 74647683628497806, 403759781237802093]), Fq::from_montgomery_limbs([3501552524290051296, 10688664658423588201, 8345653809557910120, 766292783896459938]), Fq::from_montgomery_limbs([13998055823902745235, 15535161481341849823, 9848874496394823215, 579121379437172744]), Fq::from_montgomery_limbs([16363263235454987811, 9117252686821547535, 4794867261658414781, 418411818796950741]), Fq::from_montgomery_limbs([3710344964675021293, 13957371261080223237, 15195218532629186765, 760708816844813378]), Fq::from_montgomery_limbs([16135673103471103205, 13943139040297964408, 12037506718934223099, 1187380734246932890]), Fq::from_montgomery_limbs([11326210002632211732, 2893415499386035614, 2949171194607212014, 568849018592141776]), Fq::from_montgomery_limbs([13925494990768706056, 13969996543019858204, 13457764640058086886, 114396439087701688]), Fq::from_montgomery_limbs([16351586607272228519, 6269966282891300082, 12490381894697744781, 834648274293416263]), Fq::from_montgomery_limbs([1437979443977545600, 14767193465362841311, 11074881595123675812, 1204201379421269428]), Fq::from_montgomery_limbs([5230240271406271908, 16847766581152362930, 1712847198165617791, 311937423231086981]), Fq::from_montgomery_limbs([3645836740283016323, 15685198898945208452, 1980971647688859029, 176967089015698342]), Fq::from_montgomery_limbs([7550143813701248311, 18291556615524985846, 8534400014086995148, 500430429779017952]), Fq::from_montgomery_limbs([596957473479108084, 6324092840533510915, 4811101589352947098, 76518932650696039]), Fq::from_montgomery_limbs([336812235439984799, 13522610888312181094, 10501405696980879642, 449669351326561391]), Fq::from_montgomery_limbs([12592523411743912820, 3924222765120111350, 5699458771760954386, 892267873608702453]), Fq::from_montgomery_limbs([12993017322389395630, 5952902593915102432, 5247111021983199097, 470467609253978097]), Fq::from_montgomery_limbs([7244663031809848522, 3071554415549245091, 2773295222867337766, 1090905641165090834]), Fq::from_montgomery_limbs([9981097535495148290, 12930981823992014491, 9629464214154256600, 308026108875661910]), Fq::from_montgomery_limbs([12850815434424207307, 8847171669624931211, 16288364336002865240, 954936779594025677]), Fq::from_montgomery_limbs([11236881576270168641, 15414742267201110956, 7825767860878753872, 721136380245447153]), Fq::from_montgomery_limbs([2832704701681877466, 7235621408572302496, 11812570847329545593, 792455748001887640]), Fq::from_montgomery_limbs([3432713492718273410, 6465506654245539380, 8827139003294513485, 992550877185604089]), Fq::from_montgomery_limbs([9728786934890323565, 10584002864733096791, 2293345482796697755, 180937419315601034]), Fq::from_montgomery_limbs([13822678097673121251, 4948809415032161320, 15691917123613077102, 683890210553461269]), Fq::from_montgomery_limbs([9002390647260096239, 10448673368926307125, 17815937281103619895, 1097505426950771788]), Fq::from_montgomery_limbs([13908365267431289868, 3370079770970658040, 15308027316557057295, 1308145822882463267]), Fq::from_montgomery_limbs([7831189882886479452, 4689238810753296883, 13159502922430301346, 27611585919074368]), Fq::from_montgomery_limbs([14912709676120752020, 10115204646384083757, 10138309295115926582, 223210301540489796]), Fq::from_montgomery_limbs([12627294687244820632, 2059848305109767326, 1888484742856066068, 1272834063475208138]), Fq::from_montgomery_limbs([6115210324513801758, 10929870666119062300, 11707806468269326656, 949025326858793021]), Fq::from_montgomery_limbs([7061826933729287205, 1126603583829494325, 5469143638052028670, 1033665004945948695]), Fq::from_montgomery_limbs([11008930476894918520, 11381807375074895164, 2844592577512486485, 1128817316316311928]), Fq::from_montgomery_limbs([5300558244079945539, 8283037415518590201, 11038807277807240648, 1178232107582202545]), Fq::from_montgomery_limbs([11862022433031293870, 8913994378642882666, 9450763413034135432, 77958396662445698]), Fq::from_montgomery_limbs([17688402066322086519, 524036851070457942, 14909117109897886121, 557290224371677333]), Fq::from_montgomery_limbs([1875815915909501089, 10678692213853973640, 15989623299920327105, 428879321377057641]), Fq::from_montgomery_limbs([1082841901890716129, 12068516826131602351, 7102481379375591007, 906616535867466859]), Fq::from_montgomery_limbs([17613918888580330287, 6204465427334198417, 9436344365449852604, 655489186886697]), Fq::from_montgomery_limbs([17585284967658841164, 80944379680805043, 2698615756683481750, 351188921018806563]), Fq::from_montgomery_limbs([15687615037958784071, 2186404284346347770, 5652967689160162635, 1056583988063876017]), Fq::from_montgomery_limbs([13107987562409563672, 3871322351409280978, 8803804680465229381, 1030040159656924298]), Fq::from_montgomery_limbs([16684869482081657339, 10281204171444660632, 1624958597982547757, 386745834466917047]), Fq::from_montgomery_limbs([6970896123209894127, 7830160530923913939, 17422861911349199859, 623374110284783712]), Fq::from_montgomery_limbs([4331844870617545742, 520046082233107649, 5594606953430693091, 249698853373994073]), Fq::from_montgomery_limbs([6680837442175120485, 6814766854525276712, 6556825746309967179, 570042050188335199]), Fq::from_montgomery_limbs([15436728868072851979, 10638387680273826288, 16379320772832534606, 822954407147775124]), Fq::from_montgomery_limbs([11837214986206518455, 596921394620411645, 13159256680099246054, 1277661308547494330]), Fq::from_montgomery_limbs([13679203667889812546, 11676386286470050129, 8357354920215222534, 456950010799870038]), Fq::from_montgomery_limbs([2229876009761017392, 13089694557765213339, 16529665410348556997, 1200161010593736391]), Fq::from_montgomery_limbs([16005321486742773520, 8650710416750881700, 12927174790925866955, 1318630719916273524]), Fq::from_montgomery_limbs([11180409359961118236, 7275623093671008389, 11439214005189014436, 975533040864102009]), Fq::from_montgomery_limbs([1493684412606064445, 1600586062110688441, 6392169949497859284, 320645276436957806]), Fq::from_montgomery_limbs([18076284763174743111, 15528272241931714086, 1987806618344857317, 81963683463344143]), Fq::from_montgomery_limbs([2380106604330211947, 13999809284604519871, 17117752833631344354, 928049684624129249]), Fq::from_montgomery_limbs([16709180677553116618, 15078892089982505559, 12839669848886637777, 1151522444646802538]), Fq::from_montgomery_limbs([1024922389916170464, 4633605473275241115, 8890730306179887903, 1145679956560153579]), Fq::from_montgomery_limbs([2689026397641652069, 13435392347048733438, 4613843849026450873, 644769297929746792]), Fq::from_montgomery_limbs([1477469845453362358, 8875949790662885201, 7478581831156986579, 67083263015332207]), Fq::from_montgomery_limbs([1506147123099314810, 6546355754774050650, 13235191534515389566, 573446483563428911]), Fq::from_montgomery_limbs([11592075759296992527, 11495396924055153811, 17020953547937729115, 326913902434578022]), Fq::from_montgomery_limbs([10523148363065643749, 13492540919508068783, 17386067260199896807, 528704601527288393]), Fq::from_montgomery_limbs([9127950768740932108, 15914409702651500773, 11784570023787002367, 340904789729663175]), Fq::from_montgomery_limbs([6245027322171754000, 15663478768566472378, 11402185558701422250, 36675236290199327]), Fq::from_montgomery_limbs([6063749964881818939, 10257461935793181106, 942936442940111744, 540037121922249544]), Fq::from_montgomery_limbs([12968659316148036261, 14899520595018177284, 3836336888070673001, 941781069635905693]), Fq::from_montgomery_limbs([126228530830236165, 5499407626081829044, 14133761497400979158, 1184006332035149871]), Fq::from_montgomery_limbs([5031808939874245057, 12620452215680194384, 1600289362926216464, 1200752349590914751]), Fq::from_montgomery_limbs([13105110393340809165, 7101636223400183860, 1455202496382111435, 1040366751489349639]), Fq::from_montgomery_limbs([2247493102747455874, 3444719793324110884, 17343476723736941016, 460423680466113922]), Fq::from_montgomery_limbs([18230610362649795022, 4850929477447852354, 2999970116929109994, 374491266534684371]), Fq::from_montgomery_limbs([205446930692894616, 10625340386042781881, 2267554848789579110, 805571592523062224]), Fq::from_montgomery_limbs([9554436490539537540, 3781982688039156286, 12732806211783679988, 207650560800307204]), Fq::from_montgomery_limbs([14608069410708161069, 15150367565152858757, 7976963546254869682, 1302080053778539832]), Fq::from_montgomery_limbs([5668581368285301758, 1481024316238442280, 14073619068562930813, 157011518856032932]), Fq::from_montgomery_limbs([10782685697581511660, 656395425526716484, 12429361742269361127, 1218629948585201369]), Fq::from_montgomery_limbs([9945724486634605933, 5559580130460001707, 4958363795583827901, 1086630389709013647]), Fq::from_montgomery_limbs([6214153618072836629, 6297284130475637236, 3341157682715609955, 687805559853576127]), Fq::from_montgomery_limbs([17561648631049166744, 4193461398377217711, 17499970945040917083, 352506169960283993]), Fq::from_montgomery_limbs([1122765646603573063, 1498611916106521677, 10924305234288949443, 728326887801130515]), Fq::from_montgomery_limbs([5800850628186966207, 4398317517906769115, 9597227115480831972, 526197039749009419]), Fq::from_montgomery_limbs([5159263173914965708, 8792786795115987428, 3124972989790777106, 1052873249848825660]), Fq::from_montgomery_limbs([1668691385020369393, 4311283499155522888, 13095876963782085960, 334904475460146335]), Fq::from_montgomery_limbs([14551884987824763154, 5459630410931408158, 838248742615457530, 355270342663742218]), Fq::from_montgomery_limbs([13811707083670026157, 17980420357872171335, 15680078942835361627, 508494405154027190]), Fq::from_montgomery_limbs([259245969673242010, 12143818002017916372, 9104957694955299615, 588078921942677607]), Fq::from_montgomery_limbs([1402823264425646775, 17394328405754534008, 8594536777296298084, 589743092826427286]), Fq::from_montgomery_limbs([17525191514318164285, 3032947818017798651, 8010733640330629183, 18263345896298111]), Fq::from_montgomery_limbs([2324591806430845335, 3802314283763375525, 5802980770825972296, 1172121386066784655]), Fq::from_montgomery_limbs([3481957081013606129, 7174433466077666272, 18298661318322644558, 779600890592950522]), Fq::from_montgomery_limbs([12191117132876429501, 13984916474435046850, 15993612081836470001, 982264150805006675]), Fq::from_montgomery_limbs([5832216401942411966, 14563514500329138886, 4063839581877579762, 988127094162723498]), Fq::from_montgomery_limbs([9980296771901734820, 8406919274419375318, 7382848308758481422, 288106649508594049]), Fq::from_montgomery_limbs([15311094169366877824, 8845543297515843004, 5111676196784685495, 854309633222289538]), Fq::from_montgomery_limbs([11805299538225612753, 2464747910811709980, 7821113581135412494, 698716086285897944]), Fq::from_montgomery_limbs([14453145658534747007, 17272254080461340124, 10230451546974640772, 626243697059407772]), Fq::from_montgomery_limbs([11287978532447653494, 18279346120194159177, 2333031913403775389, 200338723139384832]), Fq::from_montgomery_limbs([12366653650419860061, 16274230817774725784, 4516721510516055669, 75055982532212210]), Fq::from_montgomery_limbs([388555674032981681, 6567318722554709379, 2086741448191262667, 908777123569794972]), Fq::from_montgomery_limbs([9649589442582163437, 13541178269507352071, 14258536536571968121, 575215969686158075]), Fq::from_montgomery_limbs([597836451158842199, 1858657668022201800, 504852646431126025, 351889211223645499]), Fq::from_montgomery_limbs([8710335429210318089, 15939765460477572548, 13493874982974354172, 1195299757590572308]), Fq::from_montgomery_limbs([16720044796621311460, 6297107607479107816, 15666086360782481298, 946070823657072210]), Fq::from_montgomery_limbs([5216764590966106189, 18330556132248987975, 14778046174865524185, 601592383999400705]), Fq::from_montgomery_limbs([12284358746189003172, 15796822047553990474, 10249807758448272935, 1260540691182942177]), Fq::from_montgomery_limbs([14671741496053748797, 15956144823383552989, 8978105115308257315, 1129739098292337641]), Fq::from_montgomery_limbs([16528885559305010985, 14885472285663731653, 8692450371018254777, 875854298006252122]), Fq::from_montgomery_limbs([11216935928075429441, 7088545516130524118, 3510979311098449529, 980345967679074250]), Fq::from_montgomery_limbs([8480849792218315917, 11146529356407982510, 4204845623809735650, 554809226012522197]), Fq::from_montgomery_limbs([9465397404983425896, 1339596460298740670, 2695000812316794677, 164270174202044235]), Fq::from_montgomery_limbs([12807958353199166386, 2607509355362673632, 9510828759520576266, 306232379852697998]), Fq::from_montgomery_limbs([14216260065142834520, 8830790711865643815, 7264415235010871052, 905551093713836953]), Fq::from_montgomery_limbs([1392129315389772974, 3163495863255052347, 5961497987857813198, 47707649459794917])]), +// mds: MdsMatrix::from_elements(vec![Fq::from_montgomery_limbs([15302903146332116305, 8895355854553175376, 548696419140371791, 319366418254432479]), Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), // alpha: Alpha::Exponent(17), // rounds: RoundNumbers {r_P: 31, r_F: 8}, // optimized_mds: OptimizedMdsMatrices { -// M_hat: SquareMatrix::new(2, 2, vec![Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]), -// v: Matrix::new(1, 2, vec![Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap()]), -// w: Matrix::new(2, 1, vec![Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap()]), -// M_prime: SquareMatrix::new(3, 3, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]), -// M_doubleprime: SquareMatrix::new(3, 3, vec![Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159361").map_err(|_| ()).unwrap(), Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("3").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("844446174942837042424882493878154653137589933515406382793523345591740923902").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap()]), -// M_inverse: SquareMatrix::new(3, 3, vec![Fq::from_str("300").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409238141").map_err(|_| ()).unwrap(), Fq::from_str("630").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409238141").map_err(|_| ()).unwrap(), Fq::from_str("2880").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409236941").map_err(|_| ()).unwrap(), Fq::from_str("630").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409236941").map_err(|_| ()).unwrap(), Fq::from_str("1575").map_err(|_| ()).unwrap()]), -// M_hat_inverse: SquareMatrix::new(2, 2, vec![Fq::from_str("180").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409238831").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409238831").map_err(|_| ()).unwrap(), Fq::from_str("252").map_err(|_| ()).unwrap()]), -// M_00: Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159361").map_err(|_| ()).unwrap(), -// M_i: Matrix::new(3, 3, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1949629285152675843545617098663080067734218406516000484720630379218497119024").map_err(|_| ()).unwrap(), Fq::from_str("6804287869450188502728877251894011667833647269738979685488937504164506768586").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6804287869450188502728877251894011667833647269738979685488937504164506768586").map_err(|_| ()).unwrap(), Fq::from_str("4924677972410444052137834859533533887056104638988047570112284264367323462906").map_err(|_| ()).unwrap()]), -// v_collection: vec![Matrix::new(1, 2, vec![Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7851338840837568215878966996652842667862592119946814106687401582227972161537").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("5390046319029973741033426553186554601475450031982266534616596434064743159126").map_err(|_| ()).unwrap(), Fq::from_str("200101191114572496447619547869086533453238430957732351478283876676500967229").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("829877404010811150139661070656107124824766433717606571238525484395118485062").map_err(|_| ()).unwrap(), Fq::from_str("2133278616106368421700301256957373347602451829060634352828506643667063413131").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("1365968091762727342736198250835604969369618525102366755845979549748608523105").map_err(|_| ()).unwrap(), Fq::from_str("4464239250316221358717998424094474299688239588415912587484413985026580825120").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("6646874659690829311166122680037231064739229859859168001040087211399091334835").map_err(|_| ()).unwrap(), Fq::from_str("1066468426039637856564528648552324455121253965270621586756275576531360805988").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("7136760835897019121159862603287197976385321189619646416624219008979984560659").map_err(|_| ()).unwrap(), Fq::from_str("7895099307266901340899077467413466659983495496921952663087642094863245454003").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("3024684110038166395190112929852402256320176798582723521437291932803784795767").map_err(|_| ()).unwrap(), Fq::from_str("6539562343639912400065210160521515784606954936835823363846078290626308539726").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("3946720345795184125515244263065812157065434338563598952377867023243117512852").map_err(|_| ()).unwrap(), Fq::from_str("6866919763492205729081912495695182544024577363339374480652114680551295101496").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("1370866579779179751666779272643589753325456472592344615388576954346012070217").map_err(|_| ()).unwrap(), Fq::from_str("5257830297410242640228024612230943284008849823398918772699808558393403797659").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("4809745123609836907545850763372545328262789310318383043966284648165647050571").map_err(|_| ()).unwrap(), Fq::from_str("376420537967395305483074470608241628171514196263755558574123563405482846675").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("6372844889021167867780605025670862140219213140371876292914592045615069069286").map_err(|_| ()).unwrap(), Fq::from_str("5881863876875773590284286324685617389315859374491971675180704055131610890716").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("3380807857207311895170012051085981530446605768510245714837733545767270194182").map_err(|_| ()).unwrap(), Fq::from_str("5119344892268017700098836955912249614748667561714761555915478665351754682237").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("2373831895095635704808691063414059228351689014169915785080316498970487409780").map_err(|_| ()).unwrap(), Fq::from_str("2501154639300702666958953707756301133092229565732968388261152560666330354451").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("7928676943426219605662251279626817477332292176417864411672283273169660240232").map_err(|_| ()).unwrap(), Fq::from_str("5578353168756060859937770433837936622619923441363922683227969852352600374575").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("6174727674896881248296569468370356429499335387410987654977719460923576114060").map_err(|_| ()).unwrap(), Fq::from_str("2118353752774283390458628132390841478024894901978775880501757191102457712597").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("5810235368489275360193497718463318131258632562055692091713453485327162794432").map_err(|_| ()).unwrap(), Fq::from_str("2940212148484543630352817966266426574420283614404335225984201119533786975865").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("2496528606721449386189051698615222708459363714993934005466914229246137978768").map_err(|_| ()).unwrap(), Fq::from_str("7420161260790078619784193809292575769204978801796137400856104399809884252082").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("5113783964580651150234705950117759115776395610693101899076826961517838666717").map_err(|_| ()).unwrap(), Fq::from_str("4290931721518757222893144616404849166993047845425982286535673675867285731201").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("8211999421064340425786564412490212358375643253327733028988323321151462438475").map_err(|_| ()).unwrap(), Fq::from_str("6491752900402056237981486495685525526114060469672838159788873028184852762625").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("6946589575660729336945306434503069991715421729854718213063426896886472567653").map_err(|_| ()).unwrap(), Fq::from_str("888649550092003034253645125954138427278156434410778889669163505374940213614").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("4915210873252161209464198783405589015439803485767698988731639345973414911416").map_err(|_| ()).unwrap(), Fq::from_str("2692125156575612298425733104017074910126385382417289229166800083378019379251").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("1150247642432088610822167776057912070396494949717952541676286767893772570857").map_err(|_| ()).unwrap(), Fq::from_str("4018611703433714004673508077401981524002369699691298140171798673926803571476").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("336854029096812027993429905526476232654633984215202609834874902172061160148").map_err(|_| ()).unwrap(), Fq::from_str("2173205618181559458893761844483049984676689956958378653055034133577121288051").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("2399946150382908747739038774234831101298084967872051857327701809077994602481").map_err(|_| ()).unwrap(), Fq::from_str("8006827580739169454065998287601961945926827437312169420207457153369731117450").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("5755209309933016189874925774212014925889507922865001727869892166805345084957").map_err(|_| ()).unwrap(), Fq::from_str("6972406089801937605078274630770412993614210510669931020875951402227009485147").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("3157555718563096547912913420515626470584526603200061898513493679323978188420").map_err(|_| ()).unwrap(), Fq::from_str("6177490439198536139733796474250453800042992965769284252547258479887263488701").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("253682592007646928830077940014609838894754259075882450471369573193104679294").map_err(|_| ()).unwrap(), Fq::from_str("5429930182230959551399277894398643779092086445716605127704349422689038405523").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("6866848106706548607973406027549778502924094794042455357599662237562313804108").map_err(|_| ()).unwrap(), Fq::from_str("4034922553054600299956843142071401810686433044054662599202129020075345500306").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("5423641413288424607953685038034474614916250866879227035894380666558650706489").map_err(|_| ()).unwrap(), Fq::from_str("5339947227499621659334136903412968998794129758461864571458205047378610379365").map_err(|_| ()).unwrap()]), Matrix::new(1, 2, vec![Fq::from_str("5071022128698024353704328969062290150953434889342646239331495908377881925507").map_err(|_| ()).unwrap(), Fq::from_str("6693255166517284828997648575148995228132762333280413628056922174955177338039").map_err(|_| ()).unwrap()])], -// w_hat_collection: vec![Matrix::new(2, 1, vec![Fq::from_str("3").map_err(|_| ()).unwrap(), Fq::from_str("844446174942837042424882493878154653137589933515406382793523345591740923902").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("981").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691183481846649").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("420012").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612550359734061625531174093382366963197488").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("180209124").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733713660356").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("77321126448").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549294963268927918825539601092438296761140073458741446431").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("33175663129296").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030812765587046651836612851341").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("14234461852531392").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612550359734061625531174076500066719433722").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("6107486184750648384").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062340943188083341801524").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("2620498609878090547968").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549294963268927918825539601092438293653186658805240776167").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("1124359966874549299758336").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030811432078078100992865425613").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("482421677441358903405161472").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612550359734061053371320964998978676051866").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("206989471096405114153334252544").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719467877758227097148781170357257012").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("88811600200070897095949893644288").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549294963268927918825539495760454883254494243330578685543").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("38105804552849157101617152896126976").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275134672934950547023907326299368361165").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("16349804950578746537557713185135050752").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612530968602948248130271633829462178396570").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("7015102424913428566276894483329221935104").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237216780695387930609262041259663849671373620").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("3009923493324871919994295698184953712017408").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549294963268924349007962160726705701267669151581322733159").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("1291447920060953749444026854566905183953289216").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987754777628312066671762999899135755514685010005197").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("554112997864742681140626788593189997790679007232").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529974855431702633034239189537545989666816121868622234").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("237749590698292036528451298835503778513792186712064").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059669050406374338731720825453191302792534927377380148").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("102009640804352584002053771343310212920741969110499328").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549173978197506885476956307274619337528306265940633216615").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("43768600343200468322861380583777277220833152500478509056").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084797854725189294859791758532958339894199571359997570632909").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("18779503200849118059633528660299212891119786999127486758912").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348147426737736552879750927293625205233725155347898416850639258").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("8057596946334386411674879041713700599665498211472471358439424").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542686782959743554856251573047041373477808810469054992533217817396").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("3457219706783385041088409499908341650812684295737206993529602048").map_err(|_| ()).unwrap(), Fq::from_str("5066677049652921936482832907538091876699899873315061068595524259986360657511").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("1483366341178041010871482556367844330395501088012018107293154410496").map_err(|_| ()).unwrap(), Fq::from_str("1688892348126377793676816084957060695633216720461087565747048204392874167501").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("636458162558366651544709068381024240250832487808562941538795406753792").map_err(|_| ()).unwrap(), Fq::from_str("3377783944921751146727794187090631893528337415435646688970672179571402054042").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("273080884635330061793616249519578987932061303362404047929570241160413184").map_err(|_| ()).unwrap(), Fq::from_str("6755245521230109293524816879780224016460642499554143028868320513216975418164").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("117169004877639044713895886366298032243934434117919759399235461968788717568").map_err(|_| ()).unwrap(), Fq::from_str("4927712729111667381263381597126487754060410647971109009769634940634861561447").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("8050619445357699317298941741938347747705781620934387820402293787067559182331").map_err(|_| ()).unwrap(), Fq::from_str("1175624794150639596623235154409626733867747861771129765434940374432552373460").map_err(|_| ()).unwrap()]), Matrix::new(2, 1, vec![Fq::from_str("3116724973922961579596989815901373019435935204375493364272252301052542449158").map_err(|_| ()).unwrap(), Fq::from_str("7408015005953812141582432941909634124857610405677854042372032755105703503216").map_err(|_| ()).unwrap()])], +// M_hat: SquareMatrix::new(2, 2, vec![Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), +// v: Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846])]), +// w: Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846])]), +// M_prime: SquareMatrix::new(3, 3, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), +// M_doubleprime: SquareMatrix::new(3, 3, vec![Fq::from_montgomery_limbs([15302903146332116305, 8895355854553175376, 548696419140371791, 319366418254432479]), Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([7147916296078753751, 11795755565450264533, 9448453213491875784, 183737022913545514]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10406805428937057924, 14160037477503257835, 7036231764655967476, 1082136417579874198]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), +// M_inverse: SquareMatrix::new(3, 3, vec![Fq::from_montgomery_limbs([4383832024780107759, 7223259317565124429, 5707462847421561422, 885057472408297272]), Fq::from_montgomery_limbs([6746251504312660021, 9699181025413837338, 15260914163925889303, 35388324151454979]), Fq::from_montgomery_limbs([5008847210566114882, 8801394942975925486, 18175922902442652272, 916924432575702892]), Fq::from_montgomery_limbs([6746251504312660021, 9699181025413837338, 15260914163925889303, 35388324151454979]), Fq::from_montgomery_limbs([15450583684112934333, 18216376800760520619, 4209613945072000948, 155813436852978744]), Fq::from_montgomery_limbs([9834172736316928124, 189466111752828136, 13335900722961176546, 530999546582786085]), Fq::from_montgomery_limbs([5008847210566114882, 8801394942975925486, 18175922902442652272, 916924432575702892]), Fq::from_montgomery_limbs([9834172736316928124, 189466111752828136, 13335900722961176546, 530999546582786085]), Fq::from_montgomery_limbs([11796616273943571364, 15542379905239984210, 1578039792447016471, 947030710751083834])]), +// M_hat_inverse: SquareMatrix::new(2, 2, vec![Fq::from_montgomery_limbs([17242594123341362780, 10420431729582929402, 13098868289430565627, 261978409307343683]), Fq::from_montgomery_limbs([4962966789362289472, 13671436036280945585, 17033622650389008176, 591212102933547967]), Fq::from_montgomery_limbs([4962966789362289472, 13671436036280945585, 17033622650389008176, 591212102933547967]), Fq::from_montgomery_limbs([2148639234720789121, 15880825911856067065, 16042722653708983750, 635825847167915836])]), +// M_00: Fq::from_montgomery_limbs([15302903146332116305, 8895355854553175376, 548696419140371791, 319366418254432479]), +// M_i: Matrix::new(3, 3, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16360065460916622652, 6825609680461496913, 5558627326231064465, 128471165991923814]), Fq::from_montgomery_limbs([7428548079683657885, 9054293525864294989, 16239738740266557642, 509891970840567989]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7428548079683657885, 9054293525864294989, 16239738740266557642, 509891970840567989]), Fq::from_montgomery_limbs([1051461353787812132, 3723993058108873740, 15567687070894540562, 722382702096971016])]), +// v_collection: vec![Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([3072474957567996411, 7632850653899625657, 6867324839353272651, 1129105644996777990])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([11749409346063797401, 13847779958722295463, 5230051856842938218, 809528761888529318]), Fq::from_montgomery_limbs([16538317435082867476, 140673227072662684, 4917458456429054520, 951347002169384040])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([8049501819868988169, 4640840621228515661, 5281323386686467274, 1217317166531385469]), Fq::from_montgomery_limbs([15861181624207003323, 10871450011713172103, 4492382029642778046, 495041570025076744])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([491531644685882947, 16236469504155238438, 13405996466460073108, 191442324574972544]), Fq::from_montgomery_limbs([14234832595612208455, 16711171142020806901, 9818085755212544560, 433758843793119660])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([8692243294689566788, 17131754811489911037, 16082421295010554115, 245109642615998458]), Fq::from_montgomery_limbs([12752747264486126419, 12936758402746978248, 7901753820298393242, 1086817638717069074])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([716899015486837574, 12929955716143301332, 6296181173922398814, 95630164573893864]), Fq::from_montgomery_limbs([10771615223994036552, 12477611863199363886, 5019464732542008653, 260172239809303582])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([2083749357590716775, 7802489018239475310, 4719252491703553508, 331544147020630716]), Fq::from_montgomery_limbs([11839081110669849836, 16458332811546812068, 4108523134706353886, 1014020374083768583])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([11143510974855252250, 1906425947937085984, 2407368748249553491, 504368299222388920]), Fq::from_montgomery_limbs([8041950831366606113, 14611771049638947187, 11221299042990583579, 744635656555856530])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([15987773674750471853, 7582780421302456968, 3513070142855093124, 449192997718482772]), Fq::from_montgomery_limbs([1698389311466971615, 4208825745762883192, 17737380562723619127, 1023230515994865951])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([15719775543772287808, 4711976878746234330, 9616083067266331949, 1291758636403773818]), Fq::from_montgomery_limbs([11511319411419341690, 4611804125723845050, 17905923766281011346, 701498562864789906])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([6775959117219461845, 7248217303083744152, 8323273847079805491, 1272121734883668680]), Fq::from_montgomery_limbs([15960231410259949054, 831075562495169556, 666337526106305827, 827994946738712632])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([3075648154561933440, 4787490504369527279, 2103456873768609578, 930535653041788534]), Fq::from_montgomery_limbs([13632064958207562507, 2403612539570381736, 9671114344743639907, 554518676653218341])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([16017511834618514656, 10675130055946071909, 4737919029540133580, 682111021257012783]), Fq::from_montgomery_limbs([4054052073615595653, 15900491953977945207, 9657244812600116702, 746793989576728670])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([11427159084253523216, 8137374149736453962, 493707633722255071, 574786622341431128]), Fq::from_montgomery_limbs([3016813624761290833, 9410383431703917657, 207322790806709582, 604735846059941483])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([13182715603850996122, 1385581621557644096, 15928797776098706943, 1247128249672542744]), Fq::from_montgomery_limbs([12343557143080639521, 10608577464123341465, 8700628699767163855, 822798305869360351])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([15640932130097417474, 2198144264546084253, 15157422365823566225, 162345305798039707]), Fq::from_montgomery_limbs([15379897571473551238, 13605062526804796454, 1262497433072300524, 325397323402951460])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([11985517729662602408, 11378058393967136140, 10784471266494716066, 355758022531067864]), Fq::from_montgomery_limbs([15749607349459966392, 10347221607350790242, 16868641356169832097, 9481912848277140])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([5070404887673962603, 7505346455783472838, 11581801124979799833, 162417281360137989]), Fq::from_montgomery_limbs([14359230556911256253, 4739001612305070282, 615167045189603842, 893440173159515387])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([6892861075705566142, 16405352091222855583, 9442037024015442096, 943715695188578421]), Fq::from_montgomery_limbs([2681738006276381668, 13590338127726729778, 9006319668283998389, 571100162557721724])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([7926076457258912989, 15568541251154450028, 15222738110907421829, 194241141418124411]), Fq::from_montgomery_limbs([3900695082401480226, 13241392216815987825, 6715445016875356020, 559176536870193173])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([4273472679882108688, 7043568940286842511, 9096453621609771899, 490785749945503317]), Fq::from_montgomery_limbs([2078179201499171590, 16327227019578678368, 17980150213785344661, 1297383831585962991])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([14728670056946621521, 17042639142917167694, 2971308019248556661, 314387788586761162]), Fq::from_montgomery_limbs([14126190491907727041, 8208403354023925517, 4660262216078686939, 971808842720812284])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([12606246547610594540, 9049616062023318605, 11742190485797839027, 90317661102003606]), Fq::from_montgomery_limbs([7135240500841828540, 8166637984141883895, 4762161495768731224, 1056050894881259133])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([11752411941768010421, 2371987101660996229, 7910923918069285785, 283757372746488803]), Fq::from_montgomery_limbs([14169661373594066352, 10756814747639910216, 4179402566370914468, 294039297137006515])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([12380990947758453459, 15919689303377847053, 4451172135381562238, 643870172347401539]), Fq::from_montgomery_limbs([16919934541410985772, 12894445305080351094, 3222976969400102992, 1274426454940711344])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([17739117012754232566, 7855016506876230601, 10199750748041585788, 610234517763900211]), Fq::from_montgomery_limbs([14969807057009266193, 9743543989422659962, 265344874800963549, 193281162476465682])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([9334899116745497567, 1443910720530394642, 15242704534506362012, 557844541838643008]), Fq::from_montgomery_limbs([12596150337841453197, 17941854592742713998, 9536226961205720981, 193378317632915294])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([2145847197367443746, 3494461491303192245, 8559536859052153255, 188641306996153597]), Fq::from_montgomery_limbs([6619736277081498517, 16354589870583930111, 5727794428272011445, 472934899434235719])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([15229354881950810050, 13117262548706587, 18434975406822541359, 430449497798843798]), Fq::from_montgomery_limbs([4585061371183060684, 14866599352008180181, 17851236730068556506, 483368166519918339])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([16121753970412208543, 9309799407998260359, 13316268079574695590, 1332560915242838761]), Fq::from_montgomery_limbs([5320180137128926885, 4585099896596608821, 4959026927695406777, 12672238118064834])])], +// w_hat_collection: vec![Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([7147916296078753751, 11795755565450264533, 9448453213491875784, 183737022913545514]), Fq::from_montgomery_limbs([10406805428937057924, 14160037477503257835, 7036231764655967476, 1082136417579874198])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([18050286569012579189, 12701735779500542307, 16028299840828156173, 889670182449753716]), Fq::from_montgomery_limbs([17537805078915517156, 3881567050914191905, 15320666583506005360, 34817918541568626])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([639651884569206475, 3208454571154516477, 5589814573911893755, 812188059462663385]), Fq::from_montgomery_limbs([6035414598134387451, 221157594769622514, 1246867853953039854, 865666459554075403])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([10986953500964328689, 4552354314624673085, 10130711827018722177, 726464205504256466]), Fq::from_montgomery_limbs([14592704253024955499, 4367720503141755092, 3264507028823567377, 503642346381621716])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([6929349916420721052, 7263465717590274222, 16428445137775857828, 783617578238482410]), Fq::from_montgomery_limbs([1105466080997706678, 15638892732603802885, 15163494631828844812, 1265995546038282468])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([12695614650926966465, 7645153902251269333, 15007858904354383754, 303173888887641556]), Fq::from_montgomery_limbs([13532111267254117566, 453207663850979705, 1118439931840184625, 1109223913114108441])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([1127605964966272093, 459071588792078574, 17569200668490318799, 556567547339769587]), Fq::from_montgomery_limbs([743383751775379478, 2152757563916176356, 18215266305796881375, 613050128242856475])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([7479292154348380014, 12505834466797528681, 7061175132070981799, 1037799745298480638]), Fq::from_montgomery_limbs([4733881782580367683, 13385554219210821909, 11595152338390400937, 1286877367267536722])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([10482398298648703137, 13154284141257785070, 12900892582326783232, 1312370380898727254]), Fq::from_montgomery_limbs([7694076120856540521, 15146007605344947747, 3193830018416013595, 78000754372621570])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([5244970134326960239, 15516929113764341255, 17564742414096943825, 565809721348112173]), Fq::from_montgomery_limbs([5301582977685139465, 1069505112975002608, 16894882112854195663, 1006960914609031286])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([933807009911564028, 17655717523721777752, 659854032695183391, 696948171193839726]), Fq::from_montgomery_limbs([14431054331145497962, 17304755953697263142, 1213662370814867240, 406071929554987935])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([12663120994246797343, 2294330459533986298, 12312665243517552316, 1162434858386655769]), Fq::from_montgomery_limbs([14926635415117511105, 17764138882091983380, 9845162467394310721, 365262529860339315])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([14453117806705169688, 15371763008771329739, 859830826361086373, 695666911485789237]), Fq::from_montgomery_limbs([4372294882149658880, 8953368466178039118, 7175551968845157174, 1296799522059563299])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([10743785724983518030, 11011793084410944909, 4710170432674399868, 872985210632843618]), Fq::from_montgomery_limbs([17034928244178709962, 7064630411064620365, 11395663509669588708, 435858474778976283])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([376125808430990068, 3949770427712474479, 1831829189608085506, 1033600417294508604]), Fq::from_montgomery_limbs([10474175416970714387, 7638666470072040137, 15323998975775188709, 499861799254400548])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([1311503503152331198, 10444356300795820152, 14006643509954394380, 360275028297029580]), Fq::from_montgomery_limbs([8848990081142010576, 3767709270230096287, 3203373808160299103, 388150987057922534])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([10527714796170242821, 10614707629823438759, 2166835449751899854, 826442630247846539]), Fq::from_montgomery_limbs([6013609006746740436, 17829255150171580013, 4865370498689675602, 631806865209492278])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([15407698184224138641, 13892993523782417432, 11074522626536989473, 1282147673049091223]), Fq::from_montgomery_limbs([13566156582579433121, 10666124267110644787, 17585510383615080517, 460461758314188289])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([242069913640544639, 8584725967717195423, 8673969491922319906, 906855204727712918]), Fq::from_montgomery_limbs([7507622872789915132, 8838834878197495556, 4143887577251148647, 147314013318059527])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([739343839918695474, 15137511284934501835, 8206744331706291412, 460517726754831566]), Fq::from_montgomery_limbs([5332098194526476884, 17462053065946204764, 17109918215020530224, 45500621783055396])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([7181843829067274762, 93170180385149654, 16601265500332534068, 692920224266685092]), Fq::from_montgomery_limbs([17373541931105532396, 11757401236546761356, 8986928677878657520, 855377794858428568])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([16770152912401058713, 7784323106136704842, 3166414142982631778, 252798645948426673]), Fq::from_montgomery_limbs([9867428128375842792, 6330871821464522409, 2509737650104409073, 87377932535113034])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([9620378538351684400, 16259903847898782084, 14224517332394904862, 248783024579596034]), Fq::from_montgomery_limbs([15289486933546124534, 5057961130890228616, 5618412873763815158, 1218252246195044797])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([18285461524892798097, 1312649631515945874, 2702563113361998981, 156990921411102370]), Fq::from_montgomery_limbs([16897672275046167563, 14631253948673542966, 7825433188494427672, 497140819371349325])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([5586425496410891559, 3860435103896432777, 15075562942840298887, 539774915240951994]), Fq::from_montgomery_limbs([18444236515588467614, 2138469830557977395, 8290712504743660259, 832327778452741186])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([15144610075012749322, 11801332079357554718, 11652842602527962385, 396912768209767018]), Fq::from_montgomery_limbs([10639969620247737667, 7334159324553590340, 15063492084884778567, 878961650630548788])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([18348264072788817511, 8009061068808737218, 6097418426121505352, 1211183153837556564]), Fq::from_montgomery_limbs([17198860156343170394, 2167538157704278478, 10949270097435223366, 928056824653534234])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([10634763804674129031, 9612181115928191305, 7893421171473086290, 251268211819044542]), Fq::from_montgomery_limbs([12969986235926373418, 712178654575523278, 3830673788986900912, 1046343437814522982])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([4298621992800380154, 4055578536241120435, 9617612244989535309, 382604375840733162]), Fq::from_montgomery_limbs([18067399474523304446, 12223555489918789755, 9993950631657703109, 1048484019905387459])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([13058818877006642653, 18414014235319212231, 14027764563566307518, 703825358964196766]), Fq::from_montgomery_limbs([9830948603405623404, 3341559968925646454, 12259602563968066179, 912923676012093495])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([8043127764066461437, 14803670394754936674, 15225608398783219441, 893330814736280447]), Fq::from_montgomery_limbs([4386126239109851849, 12096965878015338652, 13672154659709754401, 191338360587662586])])], // }, -// optimized_arc: OptimizedArcMatrix::new(39, 3, vec![Fq::from_str("308026635595114235070436728341841505234226384644787941764356225291780075012").map_err(|_| ()).unwrap(), Fq::from_str("686850750308311448868354907988153221833589417264043199872750834851275630399").map_err(|_| ()).unwrap(), Fq::from_str("5458865526113744175375673481036999502881423789202235030915223710930508573500").map_err(|_| ()).unwrap(), Fq::from_str("1216889461603982466063117074419064018993731784023337352219629352951004218382").map_err(|_| ()).unwrap(), Fq::from_str("4580374146984258872617301222640071415348151863297599652351895199406510624060").map_err(|_| ()).unwrap(), Fq::from_str("5287771711632967718595430906600106184880872479312192055075552617141548501299").map_err(|_| ()).unwrap(), Fq::from_str("3037526442503690560777271665669625925917538366486234291090702161060916614832").map_err(|_| ()).unwrap(), Fq::from_str("6275277408809697928512465960441767403986852341417079924634963619646806124417").map_err(|_| ()).unwrap(), Fq::from_str("7335650489313165022076032570688161581492191665821494053773844209042883340886").map_err(|_| ()).unwrap(), Fq::from_str("1627952039309156476645184308670263708019542166435650091304574646631569460339").map_err(|_| ()).unwrap(), Fq::from_str("6094265973203525089006037274771888959193635664689776329087130682272196094008").map_err(|_| ()).unwrap(), Fq::from_str("6490696528492405721785907440795129872072544933360586449368276289112880330670").map_err(|_| ()).unwrap(), Fq::from_str("1838969713611020994526552299650788115168140980815959904769759411371437475085").map_err(|_| ()).unwrap(), Fq::from_str("7365521796310231646272250819449174044164385234835107597226640093799385836527").map_err(|_| ()).unwrap(), Fq::from_str("4266909582211852643916125441538650663312164835968891332255520046501981846583").map_err(|_| ()).unwrap(), Fq::from_str("6473115796297849981243440128186045692570441129722141600589697972207019034114").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7535049679285085127254354405132636437113571883339127395673075797846089326269").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1711678548780795616003707362617306495272193644757088959526580968531505618462").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5456562011888877632000781871593158143381683884143302415131680655656746633862").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1100590275025714828384173494392576370133340358806090350940154175156665261451").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5415359566835722991278408989250791364289536917262588979392157746024114936740").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6237615318355732047045724026092897264784149787546511680012880892698097635043").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7287690110851159960161779644886278162787641825862017485041305657999469617051").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4184683370316308163183503102859402453057265574588852109291933738351920553090").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6846229483565935253840094651194242395445970758956587653239277837011265400368").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5247810841038336337815649410419075835732486594789369339851106589783727983017").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1350482418508995195523536351321792673818559940428835801272789219565273566318").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7523100264101708379290907181985497312839644397735317166176618496114665592432").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4448983106201719179525106942047446359242931369996206349886389108444114615153").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4707208831461551505399685025613601458693283200882068784619611629076148674952").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1893915076355037525100039598806518607249813449139768268666694056389174756514").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4935555126031336876623027767955881648701551423712744911952522336886878419229").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5371766517600436247601579461653779625636670466206845343067502388608973070364").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5481881441546333764028962914229780756452153918082739985375577555343757168054").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1954471113564334413243724765183768873213349030771353076726180682874219368325").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1012379812825152708976390969518781267334249550825589446443615461216275102060").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8105256884564391639037022747794417781493071376147456166596716470636290017433").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7594454719104380774454693884796607911348013298003803986262241781266517166736").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1207106880338603787516796756887740147688034490404772260606455454720580612736").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1711528816380925498316570113595822077203881763260257965403143824143404708178").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6803780526999152786445603481545973879655550041369278545895500277499070406237").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1069595050445295607875576111157043567415305784370362199387551310224007588083").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("720965608687100347963027562526364503127212351083665218923713731199031929511").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2795527282488695374909894263098162202501248639881007215809149095324952992834").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5776996029529735561474215342129256570760328465625836455153507982986089417043").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4098945751589637585349322721645137714901277398725764380413825257514636605490").map_err(|_| ()).unwrap(), Fq::from_str("896241425392348667316141178956455644228372721471824108535546494759067376393").map_err(|_| ()).unwrap(), Fq::from_str("3992502368943038378368897680594056578803163431114935312687627167974272071263").map_err(|_| ()).unwrap(), Fq::from_str("2916896099606045408059702536614926909593404178656347225235372099792450298246").map_err(|_| ()).unwrap(), Fq::from_str("120269880148157352408037220674298509372962320809264336091966259007633284713").map_err(|_| ()).unwrap(), Fq::from_str("7722392890376228197239026921734213343834699657441777356614625170525296088221").map_err(|_| ()).unwrap(), Fq::from_str("2433763979138972299522164212362097495457810156842620348670661190742330717004").map_err(|_| ()).unwrap(), Fq::from_str("983738301417603757808483219105286248075595155162538643758190406964355750696").map_err(|_| ()).unwrap(), Fq::from_str("209202405659177692545688490614016438006505568346018036573546364833013030573").map_err(|_| ()).unwrap(), Fq::from_str("4653243085200282579438307546529783706597045845312243944557671219043378566385").map_err(|_| ()).unwrap(), Fq::from_str("5337014110345479543678006017350943272815297410632902615031016645483782346794").map_err(|_| ()).unwrap(), Fq::from_str("6325608705322012724565293795590543306557376953836287094512934948871034460300").map_err(|_| ()).unwrap()]), +// optimized_arc: OptimizedArcMatrix::new(39, 3, vec![Fq::from_montgomery_limbs([13532052565085671856, 13175575834742130482, 14571043277169067394, 1128324334676141805]), Fq::from_montgomery_limbs([10586567975029405298, 5987505274649066590, 9663655893165983133, 381788629769180835]), Fq::from_montgomery_limbs([7404335995308317606, 10342209374602516054, 14679697400509748167, 1259991645283011647]), Fq::from_montgomery_limbs([12711294721892819516, 8412935995118692797, 7069737649526067295, 549549236990677487]), Fq::from_montgomery_limbs([128694122049037398, 15825223235256271389, 74647683628497806, 403759781237802093]), Fq::from_montgomery_limbs([3501552524290051296, 10688664658423588201, 8345653809557910120, 766292783896459938]), Fq::from_montgomery_limbs([13998055823902745235, 15535161481341849823, 9848874496394823215, 579121379437172744]), Fq::from_montgomery_limbs([16363263235454987811, 9117252686821547535, 4794867261658414781, 418411818796950741]), Fq::from_montgomery_limbs([3710344964675021293, 13957371261080223237, 15195218532629186765, 760708816844813378]), Fq::from_montgomery_limbs([16135673103471103205, 13943139040297964408, 12037506718934223099, 1187380734246932890]), Fq::from_montgomery_limbs([11326210002632211732, 2893415499386035614, 2949171194607212014, 568849018592141776]), Fq::from_montgomery_limbs([13925494990768706056, 13969996543019858204, 13457764640058086886, 114396439087701688]), Fq::from_montgomery_limbs([16351586607272228519, 6269966282891300082, 12490381894697744781, 834648274293416263]), Fq::from_montgomery_limbs([8699206025130866823, 13848489523222436720, 17766508449394109403, 431734376631208559]), Fq::from_montgomery_limbs([14700415236695759193, 989025675687828871, 13240672964496825486, 748003865243962980]), Fq::from_montgomery_limbs([9214232780783070449, 14602960282866682732, 11429301634278273897, 1184931746603958427]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16918226576727530642, 1752255981222787988, 8817230776216477202, 44114642545061535]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17686129245176609251, 9674361899119805900, 9621008306276981352, 1255623840056121919]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10364230610752960663, 23910044943574860, 13406278639865106346, 1187183151912921258]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([248381449107176191, 10056558558812610353, 2935304612801451247, 120643143760647643]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3742705574147487793, 4686024809709633429, 16670792739934718940, 963767567248511600]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13818431717487898976, 12602204397986520132, 12877538805399868553, 707732823673573212]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1195524900235019800, 10255957893776983045, 17449323294835632168, 1338958398006622846]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([561235443935255932, 15462505627668153377, 15246107413854263254, 504727735813765489]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5653045592293015958, 3671862246408432263, 7122935779684396291, 7330594669677847]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16480412187204912644, 2983094841853066492, 7734631524643537613, 311160218197782574]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6090779872384130856, 3292296244344624559, 14896131539665449347, 1294066060635586937]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4370576169448893808, 12445091387328652898, 4928931422125126888, 1290627573012356056]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12051840169477196739, 3885157525438683377, 15460563848822265709, 371728860504033938]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12236751112463919400, 10461860001193096708, 18252891305864475627, 422909291039524709]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18089753698150707757, 11984889148538027693, 14464882633247838012, 989393623597663020]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5947035363582041005, 10165882087299872929, 17463545041843069654, 661760845006520055]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12977803574308926045, 11603755933737030579, 13169368374394024728, 264871768182436351]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14419631251839461179, 11301211733526246620, 15903366283781829327, 773728645355215118]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8308101026985166387, 7726119298360373485, 10162441497855384077, 189302244249177174]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12797668472951431300, 13827763415857474023, 14698122219544096234, 1231082431746263546]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9036419769160652203, 14179415714825094519, 1197988233308979514, 1215761277179828327]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4698260184489833131, 10279668321438795791, 12410250074379293741, 1217500461705392747]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12177225652612451477, 6323252679960824348, 2982537087474808916, 1265097794155080401]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10936589967746372713, 1315336780394893005, 11802358065708482185, 926000082171380579]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9602562037821535541, 6086973874915377682, 14393911822211896593, 197271477318300291]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([702050427916060493, 13537318979711565901, 15026546140525067500, 581472194808990332]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16536035763574678680, 10430337823398608412, 14603639842087973366, 184743670576012836]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([703457789642747182, 14826807143913517966, 278957441362419559, 572670923489064055]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11986568387549799012, 17060314952512548206, 5848465513240015059, 844014096680008996]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8710335429210318089, 15939765460477572548, 13493874982974354172, 1195299757590572308]), Fq::from_montgomery_limbs([16720044796621311460, 6297107607479107816, 15666086360782481298, 946070823657072210]), Fq::from_montgomery_limbs([5216764590966106189, 18330556132248987975, 14778046174865524185, 601592383999400705]), Fq::from_montgomery_limbs([12284358746189003172, 15796822047553990474, 10249807758448272935, 1260540691182942177]), Fq::from_montgomery_limbs([14671741496053748797, 15956144823383552989, 8978105115308257315, 1129739098292337641]), Fq::from_montgomery_limbs([16528885559305010985, 14885472285663731653, 8692450371018254777, 875854298006252122]), Fq::from_montgomery_limbs([11216935928075429441, 7088545516130524118, 3510979311098449529, 980345967679074250]), Fq::from_montgomery_limbs([8480849792218315917, 11146529356407982510, 4204845623809735650, 554809226012522197]), Fq::from_montgomery_limbs([9465397404983425896, 1339596460298740670, 2695000812316794677, 164270174202044235]), Fq::from_montgomery_limbs([12807958353199166386, 2607509355362673632, 9510828759520576266, 306232379852697998]), Fq::from_montgomery_limbs([14216260065142834520, 8830790711865643815, 7264415235010871052, 905551093713836953]), Fq::from_montgomery_limbs([1392129315389772974, 3163495863255052347, 5961497987857813198, 47707649459794917])]), // } // } @@ -1122,24 +31,24 @@ pub fn rate_1() -> PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> { // PoseidonParameters { // M: 128, // t: 4, -// arc: ArcMatrix::new(39, 4, vec![Fq::from_str("507014295002340130094051641853152875478157627773318139164018329180924405874").map_err(|_| ()).unwrap(), Fq::from_str("7491635671712014457226444359115925142756691872583683345054285850544197741427").map_err(|_| ()).unwrap(), Fq::from_str("6428238367987262728380227088231207564575448754570094797343562439968130973414").map_err(|_| ()).unwrap(), Fq::from_str("417784945642189241683731513330527942532284498692605186769747085266175822763").map_err(|_| ()).unwrap(), Fq::from_str("2460473050623699025207425440478059302299840127402356580032311810234352192553").map_err(|_| ()).unwrap(), Fq::from_str("6739526644189243304596281380207849534959661650376903866949397817731628238273").map_err(|_| ()).unwrap(), Fq::from_str("597549483098771783017881992848590630624851676141528707360377946657258324767").map_err(|_| ()).unwrap(), Fq::from_str("4344854910230270044421510722988181256819181450723410913296668891739456698878").map_err(|_| ()).unwrap(), Fq::from_str("4470966059082111196154549519927954009195386775161045009249761095179400738385").map_err(|_| ()).unwrap(), Fq::from_str("3473585183550757121590696749322044239715986752544880348555956596981389357863").map_err(|_| ()).unwrap(), Fq::from_str("7430297707987557411189895556541208022085393472000735227995498626328989684346").map_err(|_| ()).unwrap(), Fq::from_str("5069778819917269726812261651516390352533805494152825991716992564077618201433").map_err(|_| ()).unwrap(), Fq::from_str("6174290539348443013815085618635508535362670264359346323016750542543831671611").map_err(|_| ()).unwrap(), Fq::from_str("3653200179921208842362414440137382634990868113411395862128462165430232768762").map_err(|_| ()).unwrap(), Fq::from_str("738082080048556788240923937267344369599673172037328036389652736930755015716").map_err(|_| ()).unwrap(), Fq::from_str("6044628729794520171281155572076229146090871806225211668717932778346109567300").map_err(|_| ()).unwrap(), Fq::from_str("7736716524450328636992649732099229308498454296838040636411888315240829896039").map_err(|_| ()).unwrap(), Fq::from_str("445819555352805914532097292182472149144078763817859669741975662939570903079").map_err(|_| ()).unwrap(), Fq::from_str("8394092794612157949817946063023932613000340794281965315017284578429245458889").map_err(|_| ()).unwrap(), Fq::from_str("7466238759822922447708730702706401935849907824276279332055688787440996717722").map_err(|_| ()).unwrap(), Fq::from_str("8133406852969123956605817319998510162150586162953352059663647357307786450170").map_err(|_| ()).unwrap(), Fq::from_str("424450599417139666683298435198002681589862354265665464641715001351384167919").map_err(|_| ()).unwrap(), Fq::from_str("4342275863437731904622617541643601785172909643082646844261023898203105457997").map_err(|_| ()).unwrap(), Fq::from_str("6313051476010503451749544338183153756551815502439779051641801614566285763459").map_err(|_| ()).unwrap(), Fq::from_str("3169994258510125562695300946459466516753097859237027453101755698752871805159").map_err(|_| ()).unwrap(), Fq::from_str("940104882892277443613394347861702508275167480844292912496756850082344181727").map_err(|_| ()).unwrap(), Fq::from_str("8386913227127502132530495363118110304777579547923274644980222467857412952486").map_err(|_| ()).unwrap(), Fq::from_str("6136114103602406791267451042734253266954304008297597483742365775019490301827").map_err(|_| ()).unwrap(), Fq::from_str("5707913825835366556092824230880552633384012284396562419512114568454781766272").map_err(|_| ()).unwrap(), Fq::from_str("440149260913441211009696064751955962692960388523825331963054262767537488240").map_err(|_| ()).unwrap(), Fq::from_str("6543809035845574998097033320920161403566283178673858276395077027543247305226").map_err(|_| ()).unwrap(), Fq::from_str("4600299844965080059869604598802213965503797803928746919640456727327450953335").map_err(|_| ()).unwrap(), Fq::from_str("5829619330419527894551885400021968400890923326407352286968146522526991995959").map_err(|_| ()).unwrap(), Fq::from_str("1072126727148622232260315955319281060621012109578478738112207748069980924969").map_err(|_| ()).unwrap(), Fq::from_str("3541737964424380109788267613233390154435200667195460548613319704497734217622").map_err(|_| ()).unwrap(), Fq::from_str("7993868742943365022564653431815772923975390402981496881445664963672494637843").map_err(|_| ()).unwrap(), Fq::from_str("1796466469602122660444104004440279863940114358482936061911749791684733710417").map_err(|_| ()).unwrap(), Fq::from_str("7023633298532372935362664409341485229404704070227604977879965907688274511839").map_err(|_| ()).unwrap(), Fq::from_str("7753638232839858655663800027938081730461292782758006490345237997988322545788").map_err(|_| ()).unwrap(), Fq::from_str("758435719045098942234564604489742572402395570729286075893953594831824781575").map_err(|_| ()).unwrap(), Fq::from_str("6431648459299330670260885711956057556031697438773821997572300185978034362991").map_err(|_| ()).unwrap(), Fq::from_str("1793863535383713398998984265535284191852386753019751835416578014488181663643").map_err(|_| ()).unwrap(), Fq::from_str("2570169913181254021375023805159346796230408912121297755395210687814552404613").map_err(|_| ()).unwrap(), Fq::from_str("2797182392859745476123817612074916088434710562567225848500623100435110261495").map_err(|_| ()).unwrap(), Fq::from_str("1165553002412302230779686368446969386757102793871148064084092221298371093471").map_err(|_| ()).unwrap(), Fq::from_str("3274799046118891303394494158966162986774122770904320227955921678384730506800").map_err(|_| ()).unwrap(), Fq::from_str("3425305392261908437651357687206668799558419234911004724372509238407711129269").map_err(|_| ()).unwrap(), Fq::from_str("8346825084462913909605033242830887555310938617925477009138394819302909845329").map_err(|_| ()).unwrap(), Fq::from_str("3201635684356589303957559840868578463993422412405939241547886338480364890847").map_err(|_| ()).unwrap(), Fq::from_str("1666877490991395391549048946911053473487849642250360673170573745319764829033").map_err(|_| ()).unwrap(), Fq::from_str("3299223839115383023937717000826182296440529851590453764583865472885058307271").map_err(|_| ()).unwrap(), Fq::from_str("4996045171356088098584327231799712971775597657789563922144692970174095423805").map_err(|_| ()).unwrap(), Fq::from_str("5071229823755602861503104143449120972698947454618730827722771444554899574441").map_err(|_| ()).unwrap(), Fq::from_str("5858861478624288658440425205329788699584645780558303913274042715926810521114").map_err(|_| ()).unwrap(), Fq::from_str("508444268856364400271862689259837405153055907779532163763868097792229098594").map_err(|_| ()).unwrap(), Fq::from_str("4127321280996111497968160900412774190878522914715965141361433671646956206182").map_err(|_| ()).unwrap(), Fq::from_str("7071549460375534429723718824195498396217592262267586094225421947143692617968").map_err(|_| ()).unwrap(), Fq::from_str("221757864860979622060033742864884615648747499118860122322915691012175980536").map_err(|_| ()).unwrap(), Fq::from_str("7211341158106856382678018041894821017323750814749698727140029811204083468036").map_err(|_| ()).unwrap(), Fq::from_str("6943529232381915752136480093930327392085725525820410661513290697754052993128").map_err(|_| ()).unwrap(), Fq::from_str("4763423807814348282157990050939516748361529693043317899586102822833480841072").map_err(|_| ()).unwrap(), Fq::from_str("2190796128952812697528358809735858832429475305043240058677673214750853313800").map_err(|_| ()).unwrap(), Fq::from_str("4523486207206187598811299893069396745625184885730514405177502246670614392198").map_err(|_| ()).unwrap(), Fq::from_str("7513070905246698816156621160386478407835811285350595304295303126723875640085").map_err(|_| ()).unwrap(), Fq::from_str("5836445124808494589808308534928421375948343800058603896518090167146916599684").map_err(|_| ()).unwrap(), Fq::from_str("9171283736409506717264663313119516065621209011238514108295556449743839518").map_err(|_| ()).unwrap(), Fq::from_str("5859622888361586361788147390136702225977160026409963821685898671611280693070").map_err(|_| ()).unwrap(), Fq::from_str("6837150967281313264151089579941327056671858284386786060051686295738377177661").map_err(|_| ()).unwrap(), Fq::from_str("7221723246834615183030010235724717210151616905800718798232072222980084010419").map_err(|_| ()).unwrap(), Fq::from_str("4329910188707893158470284002559145106125732906317923389051817193092777131264").map_err(|_| ()).unwrap(), Fq::from_str("5792427906543765244466457975121734042332467472077182673783118623181520425094").map_err(|_| ()).unwrap(), Fq::from_str("5346006532457755733171734500999687838915847058928477694547101342292499179303").map_err(|_| ()).unwrap(), Fq::from_str("4597392548498607574017560525094380847055006449556755439725487970445213590020").map_err(|_| ()).unwrap(), Fq::from_str("3303281267589969370080082514639135770191199060552521462772350753997314837047").map_err(|_| ()).unwrap(), Fq::from_str("5558462823705511279040205586307603100081635933586313909352118861980698297302").map_err(|_| ()).unwrap(), Fq::from_str("1263748398138463803734503961078041548483514945249248474635138633752566447795").map_err(|_| ()).unwrap(), Fq::from_str("490647985265779623654821894501654868324039080758503716367653671834799811982").map_err(|_| ()).unwrap(), Fq::from_str("1898094513926360152052411590761718544591903834954818536874699766719875033822").map_err(|_| ()).unwrap(), Fq::from_str("6053343692389373368077507471812372847646104903461406638701093256406259345939").map_err(|_| ()).unwrap(), Fq::from_str("6554421296177225080267952576334789681668030171857233913558626523231627259509").map_err(|_| ()).unwrap(), Fq::from_str("3721920025713798370498076140674600002053797988537455641711174690390895385364").map_err(|_| ()).unwrap(), Fq::from_str("2745387728902807242392789462319546074221167499837764828319375019918018876633").map_err(|_| ()).unwrap(), Fq::from_str("3097028366181661019594241699127474134306432976144442452032323656757003850653").map_err(|_| ()).unwrap(), Fq::from_str("7823557720905459296103980883355311123601028854508692383778861145275594636924").map_err(|_| ()).unwrap(), Fq::from_str("4106060455498591909999696539072262778095731079248778115501584357839174902332").map_err(|_| ()).unwrap(), Fq::from_str("196573194431867132075882873593364223623802278987784511493225925606554999399").map_err(|_| ()).unwrap(), Fq::from_str("3881453561547504705609378527741929789591284764516319602573825600113769419329").map_err(|_| ()).unwrap(), Fq::from_str("493690773871566059847594074532948552053765521932045410259746939671486257862").map_err(|_| ()).unwrap(), Fq::from_str("6849267447668928646234210841379777456966734633732540873989202454970094962426").map_err(|_| ()).unwrap(), Fq::from_str("5555522384395102841761900123416437935052425409768071672675868156560502664172").map_err(|_| ()).unwrap(), Fq::from_str("3164690097391885553665673896220385018942443913813415429561095784307993877675").map_err(|_| ()).unwrap(), Fq::from_str("751997789925724099571719539753731795077203163786497928556573288276983857799").map_err(|_| ()).unwrap(), Fq::from_str("7797064805359378923378263108750471488988996670366203564906966139953797786476").map_err(|_| ()).unwrap(), Fq::from_str("2621058208535806748929478936820062512558754775621817172089881590533438911657").map_err(|_| ()).unwrap(), Fq::from_str("6970001120193851908531728965538133691525883363792484682581417337692500902764").map_err(|_| ()).unwrap(), Fq::from_str("6826842223394285672424196404992312747730620966214863886225498038478833682358").map_err(|_| ()).unwrap(), Fq::from_str("7280753522324306125661480239652564884224736370406844144390901625192570466562").map_err(|_| ()).unwrap(), Fq::from_str("7451304684849463043611764007732773140659720225850924442956893639278925508688").map_err(|_| ()).unwrap(), Fq::from_str("5253838130724544974396741090168351524672297373390836034550060653680140034410").map_err(|_| ()).unwrap(), Fq::from_str("354732178706565624123373355953225841445298387453652117348719218243221471628").map_err(|_| ()).unwrap(), Fq::from_str("5979597818162747734929373098808636593825085498843018786696665538105657844167").map_err(|_| ()).unwrap(), Fq::from_str("351629572524479389143320902578994665388426714276868909352158880699229770814").map_err(|_| ()).unwrap(), Fq::from_str("7109929775074769204456615920975367722001470815061690578400757577370356475759").map_err(|_| ()).unwrap(), Fq::from_str("5806079662751268574438201372400910735431542199334746046612215896815791065563").map_err(|_| ()).unwrap(), Fq::from_str("967046392054835084545986605942012533206399069425868131391043504592936582378").map_err(|_| ()).unwrap(), Fq::from_str("2235626016383653135130173827578754724403655434369809542054094514348720144681").map_err(|_| ()).unwrap(), Fq::from_str("118551840213415715186180270494191799120979955929396152586751740139954770674").map_err(|_| ()).unwrap(), Fq::from_str("7940037426759603018350847912350302513354348154694424346903114718921056800033").map_err(|_| ()).unwrap(), Fq::from_str("2993806947124341224488676547808115780756133808041816969561399929323091199988").map_err(|_| ()).unwrap(), Fq::from_str("3167498406773851843298096921587059973841966635480368418683430217271170320658").map_err(|_| ()).unwrap(), Fq::from_str("7675462210513623403638112459070981475591788141512594573391686976617804748800").map_err(|_| ()).unwrap(), Fq::from_str("113656520646986566305770873856403245064118770850240394572766400596130519231").map_err(|_| ()).unwrap(), Fq::from_str("1006225388831407597002513026923357368201575577664986063363565854366603986973").map_err(|_| ()).unwrap(), Fq::from_str("1526282785909026335633723225294164750933182353012114115386394391821211651299").map_err(|_| ()).unwrap(), Fq::from_str("1264354730649648485153348016668926773357340160928809433923690630326979915982").map_err(|_| ()).unwrap(), Fq::from_str("7910412318739090470833358955102625881685684659552089299133733767719163523061").map_err(|_| ()).unwrap(), Fq::from_str("2090970125570254288079670536393427121579040289101998075443870771478924283370").map_err(|_| ()).unwrap(), Fq::from_str("8311681734940517270883280212822579178795688925328896292462357879779746187187").map_err(|_| ()).unwrap(), Fq::from_str("1174147681464540438326971085327070955639510958622116967715666013405346402206").map_err(|_| ()).unwrap(), Fq::from_str("4175215095126474514465222550636824494555503973937772844090349895213411476196").map_err(|_| ()).unwrap(), Fq::from_str("4241759696766954462463723260157362033085821297582753950078581155537557151758").map_err(|_| ()).unwrap(), Fq::from_str("1546282720224443972828836964335088925724907089163291901383796489940020003342").map_err(|_| ()).unwrap(), Fq::from_str("5700204554208422586827147566009516954101695508731242493166780209623191931157").map_err(|_| ()).unwrap(), Fq::from_str("241928117549199144060953691071944032603403288483151133697470756177198473825").map_err(|_| ()).unwrap(), Fq::from_str("3245948103288826434025898701130893665522312031093434026965851273769736723698").map_err(|_| ()).unwrap(), Fq::from_str("2846744319360715391507045130826276684180415630670742056543891047181223700176").map_err(|_| ()).unwrap(), Fq::from_str("958584337997387979912117947775051127593595525170298235342160144609264176973").map_err(|_| ()).unwrap(), Fq::from_str("4169252310805842903830114064888506388073860203737522330389533365930747683745").map_err(|_| ()).unwrap(), Fq::from_str("3318846374911785204190875758231457337043668093149524076485922702513345093073").map_err(|_| ()).unwrap(), Fq::from_str("7615914970203196798794715474076214531002652446692907123137915773970750728959").map_err(|_| ()).unwrap(), Fq::from_str("632809892316086468848078173763187501355955399168541884899267678517741089919").map_err(|_| ()).unwrap(), Fq::from_str("2084579918265637786725360934802652836635649879932874680862991758229384815880").map_err(|_| ()).unwrap(), Fq::from_str("4075324628198618501449806408411880501101368939321234063136596854430148275736").map_err(|_| ()).unwrap(), Fq::from_str("4002543445225357459503590699152084209735684603803494712821090386774180750357").map_err(|_| ()).unwrap(), Fq::from_str("4606083947254012673682779207557774120141220789108725392708225901954954318275").map_err(|_| ()).unwrap(), Fq::from_str("6458161122821480138812881055057431187332515758131902148536758717159076765198").map_err(|_| ()).unwrap(), Fq::from_str("945660987383748932101735057848419013789434411052835694568224008001945197426").map_err(|_| ()).unwrap(), Fq::from_str("7817623181465516166905237421295720105924125839613693222466377071701802776589").map_err(|_| ()).unwrap(), Fq::from_str("6550683822650732117819888043108879305261914159459025109565974339199133829888").map_err(|_| ()).unwrap(), Fq::from_str("8047502109396113498796473893603681668180133015895331201918878122680564584923").map_err(|_| ()).unwrap(), Fq::from_str("7527592443870070416769159161840175145920858357524990578830014410783569808116").map_err(|_| ()).unwrap(), Fq::from_str("5092456597786987850309117489482478313382405139827972441408647246472962756834").map_err(|_| ()).unwrap(), Fq::from_str("6350597027022709417452502607358026831887635557428071029520622433982691427012").map_err(|_| ()).unwrap(), Fq::from_str("2802963479241809964305385036387099199586209492879271476960143416190639640353").map_err(|_| ()).unwrap(), Fq::from_str("8221597608726879712015358263079163240151837220833337984106403382169293661236").map_err(|_| ()).unwrap(), Fq::from_str("4113355626280577616600236093811592553533103473131581188028563119065229189086").map_err(|_| ()).unwrap(), Fq::from_str("5372776432646713299575551380876512719814813415800817038026997728135205964237").map_err(|_| ()).unwrap(), Fq::from_str("4786357963899522354925243599250308006789219843696074990338183430509312871698").map_err(|_| ()).unwrap(), Fq::from_str("6136402023627867107328780042258341451909381526863697406971910076649425863577").map_err(|_| ()).unwrap(), Fq::from_str("403917435174867072656735572934226709672919820691101390561081554994951410328").map_err(|_| ()).unwrap(), Fq::from_str("2197307939742823984581382962133936215707127960884165372495222916141872574366").map_err(|_| ()).unwrap(), Fq::from_str("280402617002073624427675333736860754609331352944830300201501643212477955908").map_err(|_| ()).unwrap(), Fq::from_str("1341193910735288834156152818207813295161416180387476007289323480480850290318").map_err(|_| ()).unwrap(), Fq::from_str("6430227820490268278323837184448206513428639661392170572655482468189896623489").map_err(|_| ()).unwrap(), Fq::from_str("5381106858655589782618523649345652522506825219090054633547753330769140464666").map_err(|_| ()).unwrap(), Fq::from_str("6815943890781966378087179499267196955390238260135387729266185493827955661877").map_err(|_| ()).unwrap()]), -// mds: MdsMatrix::from_elements(vec![Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap()]), +// arc: ArcMatrix::new(39, 4, vec![Fq::from_montgomery_limbs([15748480026335769443, 10026984616551622801, 2063724428730618452, 1110463257231131824]), Fq::from_montgomery_limbs([9405142820695944635, 11887146523697465657, 7764829263011233272, 10688178588086322]), Fq::from_montgomery_limbs([7160766575090090422, 13093321275956005400, 4459692368517809830, 1324823328343033307]), Fq::from_montgomery_limbs([8967803866417976527, 10882703683899587484, 12604355713142717837, 913362872025451921]), Fq::from_montgomery_limbs([15434913893282099231, 3277411989792281453, 17050922401305883749, 1246396795570595652]), Fq::from_montgomery_limbs([16287493285262395377, 5813955731335134269, 4301474317614585594, 257520225036445364]), Fq::from_montgomery_limbs([6906749939426292513, 6186370802689597769, 13121713652409052978, 974279291569484389]), Fq::from_montgomery_limbs([8879700369639612352, 13618625792929032624, 3907123048620659133, 13234475218016492]), Fq::from_montgomery_limbs([8645743306703223161, 2649437454338131787, 1563690154181407289, 1014186398941703531]), Fq::from_montgomery_limbs([3215833110701720679, 2309636887892103305, 8098930435412331037, 874663616929857835]), Fq::from_montgomery_limbs([12979468067887852608, 5086746922420764336, 15129738790560069297, 751939553752695744]), Fq::from_montgomery_limbs([2977455406847333432, 16814711076234176662, 2052393181081329017, 1025504667378050833]), Fq::from_montgomery_limbs([7769933776177646251, 18381610027802955757, 14883656026535111760, 810712025708758153]), Fq::from_montgomery_limbs([17772168373864941552, 6465821213265847266, 13630379320513469760, 377801609900980707]), Fq::from_montgomery_limbs([15796194027949120118, 344995813018918925, 1773993772309248477, 495371203446902105]), Fq::from_montgomery_limbs([2372367672613269254, 1881994507861568925, 12499063082888296383, 198183890354307133]), Fq::from_montgomery_limbs([8560339202466452135, 4674741842794783289, 2295938056459737653, 1305584587019963566]), Fq::from_montgomery_limbs([15461653997367792205, 5090711996373026875, 11075299042609757676, 357873227640910306]), Fq::from_montgomery_limbs([13214321932666947005, 16528230236252211216, 1734602115269476888, 818804650790090647]), Fq::from_montgomery_limbs([3074208048728389137, 15294693683882801473, 8267213793554472185, 939723642447579953]), Fq::from_montgomery_limbs([7608844071812963093, 3353589238160526207, 1067027003640137200, 792698467630664137]), Fq::from_montgomery_limbs([2391877978401333891, 3445084574946968197, 5867047100623880462, 384653842732542416]), Fq::from_montgomery_limbs([13914996210513565866, 8700856800201437460, 10425054275786134234, 541663540168055488]), Fq::from_montgomery_limbs([14596932606745167054, 16496367856477422743, 3083425729320663120, 1085256212719522319]), Fq::from_montgomery_limbs([2801764879250151374, 12953139825024524798, 4394381772409440172, 830313299202608738]), Fq::from_montgomery_limbs([13075739450270366768, 9659330049829153230, 12704212718639626523, 379597176451908972]), Fq::from_montgomery_limbs([9001536902225952463, 6674549463409581165, 3938882380056074877, 470816176925644781]), Fq::from_montgomery_limbs([5294884807833067443, 14704992853616613201, 11757098272470647345, 665189038743785081]), Fq::from_montgomery_limbs([18065518746286947233, 11431857512891870190, 7287431282350112106, 995640933596957099]), Fq::from_montgomery_limbs([15052981787521128144, 7858896385113452253, 5947479460571918718, 325110107616048024]), Fq::from_montgomery_limbs([8613576755313845653, 13985454223970503802, 5789054661699635475, 985740677230137068]), Fq::from_montgomery_limbs([3926674414459183479, 15125652309946021274, 7647466298927812509, 538639589943257540]), Fq::from_montgomery_limbs([13088032312231323780, 5311715134728782442, 9012071499019100799, 1330544433302886302]), Fq::from_montgomery_limbs([3664690074919872926, 1742673068665566813, 17290766138005523036, 1336141459748487725]), Fq::from_montgomery_limbs([16701892693656888438, 5154406097941234252, 2366974417176707806, 154891066872919950]), Fq::from_montgomery_limbs([8557542807233937796, 15959352071512430351, 4990793324727743483, 1293908698860086179]), Fq::from_montgomery_limbs([15073124381299855142, 16058294570821288175, 6075369664645776758, 87903751159999429]), Fq::from_montgomery_limbs([260728936241443673, 368587472503844932, 2223560135924572606, 805228060621005528]), Fq::from_montgomery_limbs([7269287363866321270, 2522156147731399548, 13054616534728649482, 931053562448615214]), Fq::from_montgomery_limbs([4160721187467010576, 15149513473553012866, 15656814560183579945, 1001129190706658794]), Fq::from_montgomery_limbs([14658651187247608250, 12880504629543941444, 10429384779372580470, 1161303852698833077]), Fq::from_montgomery_limbs([1235937067845588009, 7263495784070768735, 1030907402673138059, 112249256173393847]), Fq::from_montgomery_limbs([9458598589591766548, 11826210343318171415, 5267632108497983083, 878978097354051448]), Fq::from_montgomery_limbs([9349450799754247443, 5592311323302686001, 8710868002211880477, 339828983129180906]), Fq::from_montgomery_limbs([17187343190949067712, 4809921206309548539, 1654263325380555971, 1029486713709570633]), Fq::from_montgomery_limbs([7644765658684612346, 13218702097576502896, 16500195852294632749, 1306030386106155137]), Fq::from_montgomery_limbs([3505773913815738861, 4811121454898644532, 6220593478751174597, 617955371370962677]), Fq::from_montgomery_limbs([15743683183886237853, 5364535566544930778, 13962926219706156342, 279010990417402073]), Fq::from_montgomery_limbs([5534551911701805251, 16755407359921259948, 11104629150013572555, 814043341910345398]), Fq::from_montgomery_limbs([8944448190814835116, 15456464214992510712, 8458597289994495014, 1265792487860718358]), Fq::from_montgomery_limbs([3488692111583557919, 13331987553376721589, 18402338094634938868, 1065887348732752750]), Fq::from_montgomery_limbs([9073355603731228680, 14479691350704356281, 12891384335089494102, 794286481590472402]), Fq::from_montgomery_limbs([837263131188576340, 12622228587018704025, 17555140662019162595, 116065994774231082]), Fq::from_montgomery_limbs([14557259484417606169, 4562566277830260822, 4089084236598109790, 503526388329690921]), Fq::from_montgomery_limbs([4425139792333247996, 17192910803843537440, 6327001334305018300, 1189405791856364044]), Fq::from_montgomery_limbs([600163066110636331, 12319630319416791292, 4537854761219498244, 33425175842117417]), Fq::from_montgomery_limbs([6516037169436621352, 5864705901197391949, 9864817317342287359, 931460564657389579]), Fq::from_montgomery_limbs([11238491471364916474, 18217352394306774045, 8369866412509597036, 1044188737560722381]), Fq::from_montgomery_limbs([15194113841410138763, 9713698855149445572, 840830724179458009, 574399528344548482]), Fq::from_montgomery_limbs([10094044208972451177, 14820311408839650250, 832731916797264605, 1078999540214538853]), Fq::from_montgomery_limbs([16122314034306189535, 9724832477076262589, 15428406989180491409, 739923283713385548]), Fq::from_montgomery_limbs([990447045496888008, 3954312775585670686, 14414097128339264209, 1160784537044385327]), Fq::from_montgomery_limbs([12790567186406766562, 9540692660342267401, 12022170182251744455, 1252399210348847836]), Fq::from_montgomery_limbs([7494400281462281059, 13969110066704963391, 6054746240150948073, 950110029163098453]), Fq::from_montgomery_limbs([10519706033512544620, 1273243870837414124, 6743773117001565585, 464260752488464109]), Fq::from_montgomery_limbs([6644031355037466023, 1291805761807358108, 6551243450297799793, 489432277343575283]), Fq::from_montgomery_limbs([3733838584259262811, 7236713087991210405, 12126920741789203222, 522094252622775454]), Fq::from_montgomery_limbs([18303517822547932992, 2807195054210467784, 13159641576753772587, 855829353333514728]), Fq::from_montgomery_limbs([4449128923636887467, 13611412613163493515, 12025336169373281333, 1332896560863403205]), Fq::from_montgomery_limbs([1957451185913453258, 11039336564323764549, 12727456287856679131, 228326154778309814]), Fq::from_montgomery_limbs([11338427901906828980, 109935761989873387, 12048120310880045899, 1308994518812657297]), Fq::from_montgomery_limbs([4699060152260570516, 11811201865491436236, 16537310942924896508, 1030678137510996087]), Fq::from_montgomery_limbs([12646006819083654452, 12494391672709859571, 16266030119791019994, 719740245520971856]), Fq::from_montgomery_limbs([3201794059715843426, 7659470317574241049, 9031647908161946781, 363148928753677985]), Fq::from_montgomery_limbs([11915502048720601469, 5772846818657644116, 14815308031156385389, 35923403898725028]), Fq::from_montgomery_limbs([170799290955765955, 1257452554540755479, 154144376612152799, 1049253778390741684]), Fq::from_montgomery_limbs([12436956446014067805, 12495488261233549050, 15098105238157791389, 981323126540180488]), Fq::from_montgomery_limbs([17100349351086466568, 15199087629262610106, 2857850399247819097, 933629509856035794]), Fq::from_montgomery_limbs([4893555085527448580, 9471095916978593903, 15023640703244453163, 410519582864510926]), Fq::from_montgomery_limbs([17697020347608707279, 18087907458231569196, 3102461787435620980, 62537999126012536]), Fq::from_montgomery_limbs([362067899505874664, 14616460120599181344, 15083851369654439268, 631595353512390885]), Fq::from_montgomery_limbs([1608981123540692261, 8134210797420893342, 15670126385653615755, 1081728063194062498]), Fq::from_montgomery_limbs([4703704396738392227, 9402972062611023321, 6453958957721258724, 851572793112159638]), Fq::from_montgomery_limbs([14824233911337383260, 4597555368896294115, 13023979643520645931, 1222004100879652500]), Fq::from_montgomery_limbs([2891695900391958118, 5796773624231764530, 15491428749654748662, 1093937749145502896]), Fq::from_montgomery_limbs([10646550323399881070, 1003826136171019194, 8409333161078783785, 585473798721331047]), Fq::from_montgomery_limbs([10406448549383730564, 6135682111734731503, 11700407245549915604, 1085967648121639010]), Fq::from_montgomery_limbs([1292557270730948407, 18351657967081052852, 2678776828196945632, 959596399484615466]), Fq::from_montgomery_limbs([17438835186806351279, 5684764232294129700, 10157135796976222869, 221407997194324483]), Fq::from_montgomery_limbs([7271080368260971730, 12425374983903708199, 12363525356310613233, 1110769717996073345]), Fq::from_montgomery_limbs([8776284918006632977, 15535513105129775867, 4863301670678022317, 606408823553952292]), Fq::from_montgomery_limbs([5066052630199551249, 15751267872424382675, 13216457812319899775, 20357134061436216]), Fq::from_montgomery_limbs([13075702753995571952, 11742969640320942289, 17235366015989204124, 1150175744034062515]), Fq::from_montgomery_limbs([5797072079034365870, 17544469376997963633, 14801627417863273010, 1279229494278656541]), Fq::from_montgomery_limbs([7831938700179984096, 17180774215462038883, 4412793878621746257, 1256681412857074070]), Fq::from_montgomery_limbs([12968148811839764483, 16811480840776650012, 8602422769386693728, 382111204094941728]), Fq::from_montgomery_limbs([13318317749693537082, 3768328516420896241, 142206933916635569, 26627989124778159]), Fq::from_montgomery_limbs([11933334459503099726, 1065153861357867533, 11936439423614846055, 1149053547479723905]), Fq::from_montgomery_limbs([2631481992765688259, 16002912452516972398, 2790213850442440167, 971241800259043027]), Fq::from_montgomery_limbs([13004331011283795828, 14189721912689256843, 6652832565990539996, 452227668495405848]), Fq::from_montgomery_limbs([11639365468700302967, 13626754345549226066, 5122223316448852115, 1295194052532032537]), Fq::from_montgomery_limbs([12503775634034454216, 12484320064934540173, 6283031731499175779, 1142971827879478463]), Fq::from_montgomery_limbs([18442309574762645474, 16043706756922086064, 1203583357081319117, 289542689638807443]), Fq::from_montgomery_limbs([13599874590406072599, 12311290605935601867, 1953047606734609742, 893071755833526513]), Fq::from_montgomery_limbs([5038580414622442104, 7706592482679500096, 14281875320180208754, 1311692136942617770]), Fq::from_montgomery_limbs([9116924453968593592, 4695211437329644351, 122131672006113022, 460639526001551111]), Fq::from_montgomery_limbs([612695102453556953, 17430917114440300568, 3712227006774104749, 434565107124519036]), Fq::from_montgomery_limbs([2711460600386692082, 5084507891975000066, 8709631773769875914, 701012049286425866]), Fq::from_montgomery_limbs([11255000280507413421, 5698447525751632608, 12610021548558458685, 1327688989507972423]), Fq::from_montgomery_limbs([13754440516467115564, 4761751981327990235, 9432675603353781856, 1033668598466658556]), Fq::from_montgomery_limbs([2955363287632570334, 7600733227996025654, 12027057950170385287, 940571561931822742]), Fq::from_montgomery_limbs([9703552155773020694, 5742947530758499792, 15763297443315122579, 930801506499582622]), Fq::from_montgomery_limbs([12461619637026250391, 11019870465191278910, 15873529414143589982, 972447937818380498]), Fq::from_montgomery_limbs([14971502483088783044, 7994961046161658478, 1775531898359432051, 206771972563020622]), Fq::from_montgomery_limbs([4978085183441894637, 6786252161551953403, 1597833793868027214, 752497765450057609]), Fq::from_montgomery_limbs([8931448885295850487, 14900305553280237157, 2562728536608668150, 820070530770563815]), Fq::from_montgomery_limbs([11091196606428717904, 4420547532075463625, 6826607115289893546, 339509882889855264]), Fq::from_montgomery_limbs([17256856864641998223, 7372887677193499350, 3097849850460902989, 1011516479262752115]), Fq::from_montgomery_limbs([9808600647888735916, 8803141348520645434, 18015342816914135198, 7277772948085899]), Fq::from_montgomery_limbs([4255905157964142682, 17462645559877710531, 3560989839800268196, 1096116226462923784]), Fq::from_montgomery_limbs([4532426149332308403, 5237561599212546024, 9574446344492571337, 1288985425094911641]), Fq::from_montgomery_limbs([1967144278589690647, 13201768465226207499, 11675172852243609220, 79359524195858682]), Fq::from_montgomery_limbs([17074450551687194476, 16589227351082498259, 5830030722038791303, 89110035164054224]), Fq::from_montgomery_limbs([3452204926739135764, 5895291203558274423, 3429941105331217419, 412361227440985099]), Fq::from_montgomery_limbs([13210175262635268816, 10104864748580005346, 8240781084290164303, 168682271830987859]), Fq::from_montgomery_limbs([11525437706352653758, 15971301990722544967, 11793391563239286407, 916031980478624773]), Fq::from_montgomery_limbs([4389204516004340807, 12441134604525330513, 4580143368417059639, 517606274666844106]), Fq::from_montgomery_limbs([6072537589623190443, 14275421712964513977, 2053999455871445365, 139159162484497428]), Fq::from_montgomery_limbs([2238091790845791439, 11897799578864713665, 10598112979470640955, 1188516484791317810]), Fq::from_montgomery_limbs([13761995375578127219, 14445881686168874002, 8730842343343508106, 75023619749953264]), Fq::from_montgomery_limbs([1876841868458551114, 9237020881271725184, 16194471067922316805, 1271526124614314943]), Fq::from_montgomery_limbs([14877699808508013807, 12080680751297116426, 594057086705046692, 93241042719742539]), Fq::from_montgomery_limbs([12830970035552954850, 16724821255552997190, 6657724498740869088, 1006163239038875246]), Fq::from_montgomery_limbs([4789503842637643824, 15837144161010273010, 14535004913645399525, 386886467210416122]), Fq::from_montgomery_limbs([4113769938336656446, 12767551034851750890, 6208225444974425038, 384107338921112388]), Fq::from_montgomery_limbs([1457177616745477196, 5817007768895882090, 18403435531988633091, 233268311946882765]), Fq::from_montgomery_limbs([8504687346089992934, 12196813988838752019, 4423978201234255224, 103085384776574023]), Fq::from_montgomery_limbs([12001393905996299420, 7906247193177979514, 2548978637445902098, 508311140484542625]), Fq::from_montgomery_limbs([12545595986735188293, 5025452441931542801, 9681010628496985355, 969281160594328671]), Fq::from_montgomery_limbs([4476642231459795365, 10130322522288542164, 5504810838816131115, 942197574992353703]), Fq::from_montgomery_limbs([12725269033496721580, 6143157215985784613, 2563593607564735516, 641845243083026263]), Fq::from_montgomery_limbs([16567470293191015474, 17979338546951754349, 679740711221916675, 389452091580807800]), Fq::from_montgomery_limbs([11781729507075158888, 16614033708022660131, 8066891565891024775, 1321986181569835272]), Fq::from_montgomery_limbs([15263301520898366582, 5379961920461128458, 5298170819253721050, 871089269493660926]), Fq::from_montgomery_limbs([5741830111596365525, 11415264909554107470, 8692411149271156415, 108534814929374467]), Fq::from_montgomery_limbs([14889457972591320596, 4443631419689297602, 9576604194859673886, 55036543682599971]), Fq::from_montgomery_limbs([15281837068987139929, 16419105318903348956, 3445836523780143538, 1293417868939267170]), Fq::from_montgomery_limbs([17836346323317710151, 12227034928325499140, 2533213127903144227, 888374169811671044]), Fq::from_montgomery_limbs([17190507118724296154, 11902410769486810674, 1884965616619903297, 288715797041361057]), Fq::from_montgomery_limbs([3698781841092321912, 12743575315417669826, 2170730182690456487, 1222843211331174337]), Fq::from_montgomery_limbs([4016814140820935108, 7695810038153355283, 9484931309805354358, 1136167194218052037]), Fq::from_montgomery_limbs([14104529875826633218, 4636945317611530138, 9502367629041549061, 1255556235831136969]), Fq::from_montgomery_limbs([3761991760077630951, 15074729225518792210, 17745896690436879228, 1023440924724847735]), Fq::from_montgomery_limbs([15850125405934611308, 14029919305144561597, 18399969854542387983, 1223450657234113398]), Fq::from_montgomery_limbs([15153111831948502891, 17514853580286890635, 16559251203856754825, 921126073718956725]), Fq::from_montgomery_limbs([14464801899277986702, 11416622266096337177, 5506399331882969115, 210576422101801202])]), +// mds: MdsMatrix::from_elements(vec![Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122])]), // alpha: Alpha::Exponent(17), // rounds: RoundNumbers {r_P: 31, r_F: 8}, // optimized_mds: OptimizedMdsMatrices { -// M_hat: SquareMatrix::new(3, 3, vec![Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap()]), -// v: Matrix::new(1, 3, vec![Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]), -// w: Matrix::new(3, 1, vec![Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]), -// M_prime: SquareMatrix::new(4, 4, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap()]), -// M_doubleprime: SquareMatrix::new(4, 4, vec![Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691183481847813").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691183481847801").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4825406713959068813856471393589455160786228191516607901677276260524233850884").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap()]), -// M_inverse: SquareMatrix::new(4, 4, vec![Fq::from_str("4900").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409215521").map_err(|_| ()).unwrap(), Fq::from_str("35280").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409222241").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409215521").map_err(|_| ()).unwrap(), Fq::from_str("117600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409057601").map_err(|_| ()).unwrap(), Fq::from_str("88200").map_err(|_| ()).unwrap(), Fq::from_str("35280").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409057601").map_err(|_| ()).unwrap(), Fq::from_str("285768").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409097921").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409222241").map_err(|_| ()).unwrap(), Fq::from_str("88200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409097921").map_err(|_| ()).unwrap(), Fq::from_str("70560").map_err(|_| ()).unwrap()]), -// M_hat_inverse: SquareMatrix::new(3, 3, vec![Fq::from_str("4704").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409226945").map_err(|_| ()).unwrap(), Fq::from_str("7560").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409226945").map_err(|_| ()).unwrap(), Fq::from_str("31752").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409218881").map_err(|_| ()).unwrap(), Fq::from_str("7560").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917409218881").map_err(|_| ()).unwrap(), Fq::from_str("12960").map_err(|_| ()).unwrap()]), -// M_00: Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), -// M_i: Matrix::new(4, 4, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1770913679784267919684061240570529409533240049541964433983305216194466042974").map_err(|_| ()).unwrap(), Fq::from_str("1866549029176115214562563228199979689352528726144246309942171765298411233074").map_err(|_| ()).unwrap(), Fq::from_str("4346743796263811048302866586944240315464137261819288172545289769065471383712").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1866549029176115214562563228199979689352528726144246309942171765298411233074").map_err(|_| ()).unwrap(), Fq::from_str("7558841494258648836283360155621755771887149020783008047232513736807775269194").map_err(|_| ()).unwrap(), Fq::from_str("4535120056384022670391711913985727483353733305675961759491847308116962577919").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4346743796263811048302866586944240315464137261819288172545289769065471383712").map_err(|_| ()).unwrap(), Fq::from_str("4535120056384022670391711913985727483353733305675961759491847308116962577919").map_err(|_| ()).unwrap(), Fq::from_str("6276627284159172130419509667948869114690338896084411919577382981726432363660").map_err(|_| ()).unwrap()]), -// v_collection: vec![Matrix::new(1, 3, vec![Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("7811127118221242642430163068372930541522706885017509040840090946723603546113").map_err(|_| ()).unwrap(), Fq::from_str("5078405468753450546805196109017235622341339461280152274299939008905886389590").map_err(|_| ()).unwrap(), Fq::from_str("6079789061129447118939993934098936212999870381116874261303105251396621493135").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("7260868788947148597424134313681494118239763444543928261311440896297503846856").map_err(|_| ()).unwrap(), Fq::from_str("7084065973824866808145857319606641283427841345827946323453078374104009662566").map_err(|_| ()).unwrap(), Fq::from_str("7191857281660704661880284238619626408822191886264792206174412875086997153626").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("3020607076656756078418837235637442188306522617192578641389204937737014650962").map_err(|_| ()).unwrap(), Fq::from_str("5637220359779161156373647100061456652227512307027696275393780604040622884745").map_err(|_| ()).unwrap(), Fq::from_str("7668244523520435283525964877159182945565842688382326226602525369239387851908").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("6087395921021275780628874587899188804568416515344015561012376477127152419750").map_err(|_| ()).unwrap(), Fq::from_str("5355926780034961154065801377154310921441757660111086558798718807318312050322").map_err(|_| ()).unwrap(), Fq::from_str("5101629178073013167316837323585703772385116812301151937785443084424112914710").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2517931337784671469746065209438950124555697011910302568267146216785362777665").map_err(|_| ()).unwrap(), Fq::from_str("1871398140745686429249372615212938376575517207318403151829567332458561958868").map_err(|_| ()).unwrap(), Fq::from_str("3977305820851493523602032776891834601924844986115642713533201821764692325958").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("6311155675687157278118438099403853555750805989305197351124885481009701940564").map_err(|_| ()).unwrap(), Fq::from_str("7804525420484563253140210874229577506103020673697061432389267634450181798069").map_err(|_| ()).unwrap(), Fq::from_str("8121654451264725445562806320020308670749229358947667984745878360010714898527").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("5846024911947218980385047513337298856881854435537746492673035925112641190641").map_err(|_| ()).unwrap(), Fq::from_str("3399496119324756229406913700177768543891693359473529460914461193715484462621").map_err(|_| ()).unwrap(), Fq::from_str("8285525267580751635819188227169197672725284412519278374652722416809297463548").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("8125311612818390195384634554117840331472763470372509544364555906952801559214").map_err(|_| ()).unwrap(), Fq::from_str("1058120093155715639328496535505151563553771572720848047656669554775872868679").map_err(|_| ()).unwrap(), Fq::from_str("3508635590708952723910460369954844233710129661900433523794510313695248221631").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2597398556798267401976238549646636908466233983170491393742918965618011459929").map_err(|_| ()).unwrap(), Fq::from_str("2068234554183111213575590722108642658093927628419051308673851496635944475991").map_err(|_| ()).unwrap(), Fq::from_str("7442133310898290472737295900345544691226300883425401862652287408611005187797").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("3417891366961923935460362758841213240150104820792599187657174842229210836976").map_err(|_| ()).unwrap(), Fq::from_str("2109930449684567405588381218450859449011546053415687711099097241022929718138").map_err(|_| ()).unwrap(), Fq::from_str("7467840434764573222855383263695640871779849975911853941299539330373675309347").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("5473866939914824801054396283089499717847009173955743300757985699921346860815").map_err(|_| ()).unwrap(), Fq::from_str("5234336354114260164427300465913302641345540877335129370065902402214025364959").map_err(|_| ()).unwrap(), Fq::from_str("1126975122664037400697387419759870796596612128286867910666937144343541879604").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("6626352097246581455466134744323875054956097790450108755408293744346547543342").map_err(|_| ()).unwrap(), Fq::from_str("3153206513984021945987159774654328831706100102818705029007782698669073005829").map_err(|_| ()).unwrap(), Fq::from_str("6562485048611979813357322527660102014079135660024413816929004954275379368969").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("6547126942154328147320832443050612487497491870705666391200907681492196529418").map_err(|_| ()).unwrap(), Fq::from_str("679282140679490816916885632985394982219355753042789927075966984538450992678").map_err(|_| ()).unwrap(), Fq::from_str("1975639825505718164338386153081112451212146345707795487585389182032710201113").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("8019852686115271278325540117810432061362453551296617166084865346777213399915").map_err(|_| ()).unwrap(), Fq::from_str("4423157693090536003736289868489603415097102968594072262271284571252976367732").map_err(|_| ()).unwrap(), Fq::from_str("7706259014114251980167953943066693142549450681284425615883026028251594044946").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("4238685146588912991052277150923591342201137010140128645266349261112913828465").map_err(|_| ()).unwrap(), Fq::from_str("6643030753404610703732031460459579946840680195722822216243745344807210311119").map_err(|_| ()).unwrap(), Fq::from_str("2475680996810491813273296295668023475775994019707601554410767671042799240208").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("557501750804917719278599042857355157253445559588197504272305070909202142947").map_err(|_| ()).unwrap(), Fq::from_str("3034616829454605187995721626183737309348405614367904348286546698648524072591").map_err(|_| ()).unwrap(), Fq::from_str("6840220540939175845358210160992790877841509186318513396074503225536561679543").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2235960321603888158431253152193753210092382095378613695660507138332654702850").map_err(|_| ()).unwrap(), Fq::from_str("8038232675840346850478414906021807042143478527454501830157679770453874177003").map_err(|_| ()).unwrap(), Fq::from_str("1958792433797404280604077529184967132537621891289866404211114861458653949012").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2771121126924941019197733171990855353004989462795700586008432116507066843083").map_err(|_| ()).unwrap(), Fq::from_str("7891946787816327042641514602122794384117585976254993077005488594311364949400").map_err(|_| ()).unwrap(), Fq::from_str("3198144626605300800949161456570029506551585754496305162893273212825538587550").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("1486396036463796488918910836112179579921345689769531073796275169260909811548").map_err(|_| ()).unwrap(), Fq::from_str("2944068876626515619975636201343790940955795063905239465828001989234937362357").map_err(|_| ()).unwrap(), Fq::from_str("2129508534771598658360969479807111088250507042824235641703160169652575627896").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2140854186169685348670815058631538454922732099942137485668926898724201674659").map_err(|_| ()).unwrap(), Fq::from_str("7468652076037969076499254865972634827247643668936025514456667835334012427225").map_err(|_| ()).unwrap(), Fq::from_str("1757970002590436992134221206272899348034028285789693801345601389872214347600").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("1040329738684054638944033836258206193595141362098686106182885767432151997470").map_err(|_| ()).unwrap(), Fq::from_str("6410948495872817231121367331641167551943622914451951024109227826536706053475").map_err(|_| ()).unwrap(), Fq::from_str("8427589653022398096841334561198668589334175018792376810561267438739330852416").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("7772327947818743993969536799424541943794222077485149388704018051197958237416").map_err(|_| ()).unwrap(), Fq::from_str("6091861936708362479115449153105710361288418563209566341998459726848412047463").map_err(|_| ()).unwrap(), Fq::from_str("5297480874990195902272064724091045043992902989341028640068973757227255598679").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("3883396810313782286826526743921122893928006622029825695950975537821087389160").map_err(|_| ()).unwrap(), Fq::from_str("3247903860075715841700417346976305520144095625429508014463116597838387896518").map_err(|_| ()).unwrap(), Fq::from_str("7713976443013667920827122604772376124752037463132917973907825978429262179301").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("4840022052693157642279807806490641258088748396347667260846692256128474823366").map_err(|_| ()).unwrap(), Fq::from_str("2320513981783688370977023477088348323530328530115618603961392545350193826810").map_err(|_| ()).unwrap(), Fq::from_str("5464621915894148975838316947465227562970124896240483310384384958637202783418").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2524955224785662198329591589711724674124095555557836743499679504608493658905").map_err(|_| ()).unwrap(), Fq::from_str("4302967459015373152759829425128086104313538230989566310193577282421857243983").map_err(|_| ()).unwrap(), Fq::from_str("7085854677712207318166853710193042340041941540033918378974225578285392933819").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("8204349001314703297214711404623509303225403466275829075672617857385903588067").map_err(|_| ()).unwrap(), Fq::from_str("7700899516069850752036253589356545985942429317687927116121979635283175537543").map_err(|_| ()).unwrap(), Fq::from_str("5044294933436925340418900271847539180520545900803250015351447337961276236452").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("8325580809316750396675932766762467417898539258649549722222651695036898066623").map_err(|_| ()).unwrap(), Fq::from_str("935876647201484443045783718082846974724768327063500795021021311129223445135").map_err(|_| ()).unwrap(), Fq::from_str("5974524863800626848947952172784466077450257164992828220213582810876839558473").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("2619961646306645205581391052995726359765715683944281254302206143737916690178").map_err(|_| ()).unwrap(), Fq::from_str("4232098761091596546204817900511023602320071513319772077757088132146331349971").map_err(|_| ()).unwrap(), Fq::from_str("5893996741813770214517823932256109521211578999954946896591904115585491695052").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("6000226279124146863136727241256982816131788444179224115247746928098400722618").map_err(|_| ()).unwrap(), Fq::from_str("7908282303686056666698544594350069550453591878182541881359237112975862129485").map_err(|_| ()).unwrap(), Fq::from_str("5093308510117892085703642542483202569453525014619454757347106210972466294020").map_err(|_| ()).unwrap()]), Matrix::new(1, 3, vec![Fq::from_str("4173866183335783201472244194628736576783485048837628675393061737465983108384").map_err(|_| ()).unwrap(), Fq::from_str("7722932000723324455226456664260648291221473306287563441845985456906430570292").map_err(|_| ()).unwrap(), Fq::from_str("6594856426287953808893617720912378172793949803669275719479745212507719610277").map_err(|_| ()).unwrap()])], -// w_hat_collection: vec![Matrix::new(3, 1, vec![Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691183481847813").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691183481847801").map_err(|_| ()).unwrap(), Fq::from_str("4825406713959068813856471393589455160786228191516607901677276260524233850884").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("5066677049657022254549294963268927918825539601092438296761140073550445679015").map_err(|_| ()).unwrap(), Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691183481492013").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239395759877096595325655292539475").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("1688892349885674084849764987756309306275179867030812765587046691190130973389").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764716436454964").map_err(|_| ()).unwrap(), Fq::from_str("1206351678489767203464117848397363790196557047879151975419319065142183688119").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("326954555854848").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612550359734061625531174092522282388222362").map_err(|_| ()).unwrap(), Fq::from_str("3619055035469301610392353545192091370589671143637455926257957742460761127205").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("5066677049657022254549294963268927918825539601092438296777217481754298410599").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025237225100719468123251062305893634457381237556").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235696794727580393114095758303950865539207657098402670").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("5066677049657022254549294963268927918825539601092439087339117195636575463015").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154061748245710998393075400705").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274913175328589826044429636170").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("3377784699771348169699529975512618612550359734100500798268412440940394420634").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612550359733959360494708978513021606926746").map_err(|_| ()).unwrap(), Fq::from_str("4825406713959068813856471393589455160786228191581654864230703866938630452956").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("1688892349885674084849764987756309306275181778652987163206062314875400277197").map_err(|_| ()).unwrap(), Fq::from_str("3377784699771348169699529975512618612550354705360191840862884110145290869146").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982788437964548939286223273763996771475").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("3377784699771348169699529975512618612644360357357220088998231724311466056090").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549294963268927918578262144560896192731910442067666822759").map_err(|_| ()).unwrap(), Fq::from_str("1206351678489767203464117848397363790353840983927040626734569653768340336055").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("4622313602710048294285602833020481471250432").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696339399059951025225065671229569651381970019676835240870097716").map_err(|_| ()).unwrap(), Fq::from_str("3619055035469301610392353545192099104747718114858051351660821727823107606821").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("1688892349885674084849764987983603363407242277637089092625547354332839333069").map_err(|_| ()).unwrap(), Fq::from_str("5066677049657022254549294962671009582096962770933563908296669278685488375399").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235697175041058034702272660717672140791842141361331054").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("1688892349885674084849776164537646094768714342946991065214962639370703391949").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248795537209894401759823084395407994935701963602051203073").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784725791623593342662835128913443783224258232472943497802").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("6755569399542696339948658311081797349951106141828324629477181234635848495924").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542696337953289914359298130438897264386806281741085093144506348340").map_err(|_| ()).unwrap(), Fq::from_str("4825406713959068814776071607763904458071309047699968339412917891778783065820").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("3377784699771375195222198351607422413381921984968660810916631631032839936410").map_err(|_| ()).unwrap(), Fq::from_str("6755569399542625246226774733078000065414840635412284482803516432087117935412").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448881237026906155776404016889561912829977465380028085864894112915").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("6755569400871628389748965640026098152391559369353920566332119369412544508724").map_err(|_| ()).unwrap(), Fq::from_str("1688892346389793676903865486300311421055760223094655503467542801678357810381").map_err(|_| ()).unwrap(), Fq::from_str("1206351680713365901974237654437691495950129065612054602850957455273387322807").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("65347871940096062464336677677087215362501571452721124249338201459654656").map_err(|_| ()).unwrap(), Fq::from_str("5066505145950466159873820805003751929801682558731762266794909044949536630375").map_err(|_| ()).unwrap(), Fq::from_str("3619164376983759136165998027265134279132696018847361888020397233621204879653").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("6591150173178976090819472555078788691458408107801555095220191242530347129242").map_err(|_| ()).unwrap(), Fq::from_str("1680294818293804805201741644942769167735966926003269256043494449110552726734").map_err(|_| ()).unwrap(), Fq::from_str("7789378020387063323150139272617540367093982687550904210604066962883002948462").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("2146234887323775547765017169111001441946197048628264449963777969392092532866").map_err(|_| ()).unwrap(), Fq::from_str("6016882273004400191030618355355462941359941008232443084883169315980534923336").map_err(|_| ()).unwrap(), Fq::from_str("8006919309363258877422299919790609569913200875861317349068808159703442135037").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("1328660600287037476318890124773758269717433143569852966469740536814738764583").map_err(|_| ()).unwrap(), Fq::from_str("2799059352114106880989935270105748212377424368024585897469983757644556127822").map_err(|_| ()).unwrap(), Fq::from_str("3754944908267757077838580510477741735186709775179387743182973860443996144075").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("3090566134820885578578884580453760958423513249194804769976859720189425678748").map_err(|_| ()).unwrap(), Fq::from_str("1014956631064737930693609905134287803771633237096924461974788247575178647239").map_err(|_| ()).unwrap(), Fq::from_str("8163400103508684878783805217025428614561071180858715453129335917580465265931").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("1170257694699101461637358453390078380415452452664611144560355979722491291392").map_err(|_| ()).unwrap(), Fq::from_str("2950059549285188013181916931658203370463912526166425394161627113525340552060").map_err(|_| ()).unwrap(), Fq::from_str("3707999811350219380432741376678614486540365864569586987196860790394724526648").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("6788207622832042348642126488920616088822687435613155564625070055136494404543").map_err(|_| ()).unwrap(), Fq::from_str("7345572074363256210583967430006583646430507990591113801668207894210689527725").map_err(|_| ()).unwrap(), Fq::from_str("5186047010312854035204413482828045021134916673161128169450645601608316659505").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("2684994569877741008293622266647277205103897185526103072687389663167680974490").map_err(|_| ()).unwrap(), Fq::from_str("4530823401126709833726476391654984444257531769309813676261832238601758040157").map_err(|_| ()).unwrap(), Fq::from_str("7346447850308101906027715432789199716019579461200364616077795555030472476421").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("5381857409779952665628327584043375540976057604310147612953286182936555841786").map_err(|_| ()).unwrap(), Fq::from_str("5585801386783953702819984194280591127472653787134009001003784777239879575973").map_err(|_| ()).unwrap(), Fq::from_str("7518256439684693117324139182952967700924072572444328723655399151441539099139").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("4836923819677594097895695170713226141965257370018415181146945568645162458969").map_err(|_| ()).unwrap(), Fq::from_str("2338024011441608123521841904929188790818612008008323734889422354188603144855").map_err(|_| ()).unwrap(), Fq::from_str("2970573662451252164418849682611292619683787341167928072175166200243325985059").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("6986747642722807193008824234701113994769851278733429354827786822556898831972").map_err(|_| ()).unwrap(), Fq::from_str("7277802966896614056540208748248219131616055447869084105405369407240413141926").map_err(|_| ()).unwrap(), Fq::from_str("5379666108398667768550501311321582195912476073271010508490754949821202384893").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("2772827049081756680166514702658410840311990125977382881464127786096434083869").map_err(|_| ()).unwrap(), Fq::from_str("731236289407407592668021529780874110544277150581068361116404642724426427086").map_err(|_| ()).unwrap(), Fq::from_str("4715581558270174759234469054378631966663443657525350772513895993669197306864").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("7170328928050700797526727006832484628166126803784878349848814523758718583922").map_err(|_| ()).unwrap(), Fq::from_str("7301555459845197983545694905439043755630987774458330557496046097688240447729").map_err(|_| ()).unwrap(), Fq::from_str("7092363593810921014374819556963677484202399019871535414564199487898138079427").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("7438767407235580483497807493395600990773278262780472362485131520399115235980").map_err(|_| ()).unwrap(), Fq::from_str("5080296968760900376797434832877005601939022285199363417189940949817304923085").map_err(|_| ()).unwrap(), Fq::from_str("6251905300474441622357928415759826694411515968555428464483715738282960204848").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("6384532249021946732997709377988002515308046142422082092943922461917913306657").map_err(|_| ()).unwrap(), Fq::from_str("3515611156196107654971290045026105822551599443335223195522444955784753391799").map_err(|_| ()).unwrap(), Fq::from_str("1138224488543914315238990105003526271580692633890115486567474932377669162114").map_err(|_| ()).unwrap()]), Matrix::new(3, 1, vec![Fq::from_str("5881153929590226273974020024739366539228093085910895296970187642591692093565").map_err(|_| ()).unwrap(), Fq::from_str("3087526099159687808661739667166920879776388348863148098514933760593102720940").map_err(|_| ()).unwrap(), Fq::from_str("5526153939329367714443368714325933485322875317171130645740974552496562203691").map_err(|_| ()).unwrap()])], +// M_hat: SquareMatrix::new(3, 3, vec![Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122])]), +// v: Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), +// w: Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), +// M_prime: SquareMatrix::new(4, 4, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122])]), +// M_doubleprime: SquareMatrix::new(4, 4, vec![Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([3912868093747842187, 13891638599538547029, 10034520463596988736, 24923162524038143]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12940192809323646256, 10063211937356421632, 16102475073289099807, 635255441558029483]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13439545502292733320, 8210365196597573290, 10798232243990715182, 209985169044052016]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), +// M_inverse: SquareMatrix::new(4, 4, vec![Fq::from_montgomery_limbs([9007339992229280139, 10326424826243116856, 5092355938437508509, 1003135009120454797]), Fq::from_montgomery_limbs([3793860473594899407, 15568206114553404763, 16793548156181542160, 297017364836875886]), Fq::from_montgomery_limbs([13118704239553060426, 7548360664834135031, 15187305571267045479, 227114138088772868]), Fq::from_montgomery_limbs([2709900338282071005, 579150611132688193, 11995391540129672972, 212155260597768490]), Fq::from_montgomery_limbs([3793860473594899407, 15568206114553404763, 16793548156181542160, 297017364836875886]), Fq::from_montgomery_limbs([928445210678486263, 8868160626470841658, 3755794146411517614, 1205473917191967362]), Fq::from_montgomery_limbs([10094677827265099397, 10861765592258933950, 11901484874902647424, 945996443767726300]), Fq::from_montgomery_limbs([5126644488318323641, 9647529625230561771, 1074775780748510466, 567785345221932172]), Fq::from_montgomery_limbs([13118704239553060426, 7548360664834135031, 15187305571267045479, 227114138088772868]), Fq::from_montgomery_limbs([10094677827265099397, 10861765592258933950, 11901484874902647424, 945996443767726300]), Fq::from_montgomery_limbs([824862419246658903, 16129767034744593238, 2170701329025733649, 1301512370243790878]), Fq::from_montgomery_limbs([3590917015388128985, 13161152940282392610, 1559289252300983907, 436823818333081923]), Fq::from_montgomery_limbs([2709900338282071005, 579150611132688193, 11995391540129672972, 212155260597768490]), Fq::from_montgomery_limbs([5126644488318323641, 9647529625230561771, 1074775780748510466, 567785345221932172]), Fq::from_montgomery_limbs([3590917015388128985, 13161152940282392610, 1559289252300983907, 436823818333081923]), Fq::from_montgomery_limbs([7790664405396569236, 15096721329668270063, 11927867068824539342, 454228276177545737])]), +// M_hat_inverse: SquareMatrix::new(3, 3, vec![Fq::from_montgomery_limbs([3075677070517273610, 12935975526496926241, 5413643861495614409, 209652601170259502]), Fq::from_montgomery_limbs([5785577408799344615, 13515126137629614434, 17409035401625287381, 421807861768027992]), Fq::from_montgomery_limbs([17408664359600548624, 17034391550693366562, 14790887709711326522, 240850225403047528]), Fq::from_montgomery_limbs([5785577408799344615, 13515126137629614434, 17409035401625287381, 421807861768027992]), Fq::from_montgomery_limbs([6563011294473575235, 14911990801343518815, 5387840296410814352, 742514872555164941]), Fq::from_montgomery_limbs([3251880405938485206, 8073678362843046478, 14394469848155607566, 254586312717322188]), Fq::from_montgomery_limbs([17408664359600548624, 17034391550693366562, 14790887709711326522, 240850225403047528]), Fq::from_montgomery_limbs([3251880405938485206, 8073678362843046478, 14394469848155607566, 254586312717322188]), Fq::from_montgomery_limbs([13824643481143691730, 14179537619338997380, 15459123094703748781, 28520280494317649])]), +// M_00: Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), +// M_i: Matrix::new(4, 4, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15179341900948762797, 11777292160962496113, 5824707706538620273, 936937875498611239]), Fq::from_montgomery_limbs([1606954441813089504, 12826102157655983484, 14966661657048055395, 819162019713750967]), Fq::from_montgomery_limbs([18056108788388345532, 17234016165201706377, 6789576351003995708, 125032483782692849]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1606954441813089504, 12826102157655983484, 14966661657048055395, 819162019713750967]), Fq::from_montgomery_limbs([11752092954103863583, 5034202175795696722, 3707413120985258698, 30603057527914360]), Fq::from_montgomery_limbs([9883657716457256646, 10991555415607003281, 6328965851154270623, 1087433766327205373]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18056108788388345532, 17234016165201706377, 6789576351003995708, 125032483782692849]), Fq::from_montgomery_limbs([9883657716457256646, 10991555415607003281, 6328965851154270623, 1087433766327205373]), Fq::from_montgomery_limbs([9018019125940148120, 4443737769172605648, 9114883657740606330, 325721335091457982])]), +// v_collection: vec![Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([3544248464247567155, 2397127324301944422, 9674390580977628774, 1114449731390581691]), Fq::from_montgomery_limbs([10793968004403082763, 14776098320186757028, 3926381262294758649, 695945431440508002]), Fq::from_montgomery_limbs([2462384498404250202, 12590306298374345930, 11038784733069574134, 419995880141749771])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([13532986407775683895, 9476195915097473266, 1008114724683017572, 545860035442724601]), Fq::from_montgomery_limbs([16204216982352313226, 12925674836598514697, 6751896652466221822, 941483813900869065]), Fq::from_montgomery_limbs([17313019480228630806, 566130559971125633, 11091260944862748358, 830377232140527827])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([13653317352261633777, 10493929866956769626, 8396755137825041221, 1146048882209297127]), Fq::from_montgomery_limbs([4132278932442914408, 14861671218963566328, 7959790402925606057, 1318243553399078199]), Fq::from_montgomery_limbs([13456767915419596367, 17246911423899751971, 5711218416857391278, 35403035103928169])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([12907160498704673184, 12152379198293294711, 9252679699965582400, 1224554265731421992]), Fq::from_montgomery_limbs([13419199242664167498, 13891452473958728318, 13543072901518191311, 1037106053989502131]), Fq::from_montgomery_limbs([16666897222883125359, 12131730689573449836, 13003710399516055414, 648272461984720515])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([13991351580088989461, 17864339801785851041, 11695126599066872867, 921749339582652232]), Fq::from_montgomery_limbs([11906579800297278037, 11470441940361903448, 15097374289742739909, 275174984759910272]), Fq::from_montgomery_limbs([18232546040145726314, 14147307759659284922, 991776681097878315, 1065560959455072221])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([3117800866767190184, 1873664776760606669, 13118797281780700540, 918694694774008673]), Fq::from_montgomery_limbs([16198059297050513347, 8432506190058226772, 9370514214732897655, 212402421053033076]), Fq::from_montgomery_limbs([2518782581476945766, 6771388879653376635, 1394823901821599775, 786725020056686548])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([4999125751846201369, 9316583554979616827, 11717167420397718381, 1066546495878431233]), Fq::from_montgomery_limbs([1873871365393108203, 11936414467331150546, 11113449918732250015, 317274884289334993]), Fq::from_montgomery_limbs([5753682051272078512, 3471409429911499297, 5526758011092646462, 1323229023757477097])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([2662759502586109043, 1695416312126819095, 1012723056571339871, 933004606031207884]), Fq::from_montgomery_limbs([16642301735251917773, 1183412391970839036, 3358256470522122468, 496531810743047820]), Fq::from_montgomery_limbs([14229377213726726413, 17261160081985153069, 9576276288950416830, 700741200569462595])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([6784297665956970408, 11357803791388406129, 11332180445619439434, 1106781037719016960]), Fq::from_montgomery_limbs([73464770077821962, 229820375535861605, 4835258747884954879, 991229687813626051]), Fq::from_montgomery_limbs([10226838402609267711, 357277105338386461, 10898037771405216876, 738876256175427730])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([12081508766912259869, 15930347767913903841, 8853663281043083447, 10038595465753804]), Fq::from_montgomery_limbs([112737203409514332, 16114412090287437958, 6856032020202317595, 113207183629292293]), Fq::from_montgomery_limbs([16338645855580340203, 2107869018362076089, 12567383037519742350, 815641356564041922])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([12125233544299543001, 11893476647476625145, 15457331543628022009, 800448530217165123]), Fq::from_montgomery_limbs([16675745322148137368, 1493849644880660500, 8185984318393084462, 138242285432587533]), Fq::from_montgomery_limbs([17724307965454702231, 4807522038799077672, 8746642154843823745, 883881308868446414])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([5656989936467702279, 3451526239075705633, 12473714456419681817, 720076561380511801]), Fq::from_montgomery_limbs([2752710254647861908, 11030634120397179297, 7520710074325720708, 849095153678924863]), Fq::from_montgomery_limbs([15714192245785854425, 1934486269946887645, 249860026764225808, 1186606499687026685])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([1065442882426850105, 18187640339393109068, 8850384031746892082, 317569289072515041]), Fq::from_montgomery_limbs([1837681773828322091, 10850972211403707738, 336406577412961307, 885368386317519809]), Fq::from_montgomery_limbs([15758214746904074141, 11583431684684102838, 7662385228843486433, 217065657978291661])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([2532634061285367793, 4387885387692314654, 12158131981630891597, 230565483900354414]), Fq::from_montgomery_limbs([13346419382798549501, 18280976687063744023, 5606331118089126185, 273578743992252446]), Fq::from_montgomery_limbs([17577657789855982030, 9630457784692257422, 12902853055721181839, 36459624765202074])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([9935908372408102992, 14641284087709280054, 17684292083487177951, 1155088959507788459]), Fq::from_montgomery_limbs([541701721303367728, 3959174565794182274, 18151179085562458542, 340776254243440974]), Fq::from_montgomery_limbs([17690336527687088662, 10937885152973991052, 3836836874424836886, 1090509013794447238])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([12310573214022515884, 3043141462744167127, 7406092407251694082, 9160197655286166]), Fq::from_montgomery_limbs([5101804845510497503, 7081024525590050191, 11990249650950760548, 264716438448155623]), Fq::from_montgomery_limbs([14013782434072143361, 18031550597362521222, 4176916092795610844, 1008783913934215313])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([5197923006462389769, 10850213912970425984, 6236288807254229677, 381647096775612803]), Fq::from_montgomery_limbs([16904562081938006603, 1107639524721847015, 12857487247803522951, 271937989000148046]), Fq::from_montgomery_limbs([7013951325055848953, 17628406277137302222, 10293198099660764650, 1028289934164465192])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([9440252581760876632, 13906337780931242750, 7219961419517025615, 863594454449643923]), Fq::from_montgomery_limbs([12415229001429896965, 11797271759794076948, 1936084790537971337, 467019200964667988]), Fq::from_montgomery_limbs([13553333187067381210, 1913316352777824197, 2458517210763467943, 416174277494956025])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([7868885723930814728, 3969684852222006688, 847603129181085226, 823204710257787357]), Fq::from_montgomery_limbs([2624306993317474736, 1804999503475194353, 13323117091522537138, 113213718216814537]), Fq::from_montgomery_limbs([13028853788877299982, 16207030875451345887, 2928890708384561735, 948835740600760535])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([10332479856281518610, 5461907926022368118, 7566281008880752185, 864542613737871414]), Fq::from_montgomery_limbs([11550343341750412987, 1921332364560602185, 10690162369512005698, 600190744590186860]), Fq::from_montgomery_limbs([11343163367577472637, 7523233831279170268, 14378595658429552329, 120678106820511750])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([1497803481831246817, 7312638636652871954, 34925480233639111, 44726202564591048]), Fq::from_montgomery_limbs([6152756361006073958, 6090155380815116625, 6481578954979806710, 476190110671401465]), Fq::from_montgomery_limbs([18102241645952999143, 12827175776728527569, 10917946848969687318, 1031360619507992497])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([10479806376196948796, 1250933353292865403, 9714052636425979898, 724896984716198201]), Fq::from_montgomery_limbs([3536451958691514845, 3820878089540374661, 1602865878357815152, 303292371629072230]), Fq::from_montgomery_limbs([2647458017961703424, 14255003531541688237, 9264134941484745925, 1144438898154277748])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([14896674334234435047, 6601140327636410720, 11594733032791631077, 947808208377648736]), Fq::from_montgomery_limbs([93857753711709862, 17114219253807441153, 16571911382240086620, 644986335071170285]), Fq::from_montgomery_limbs([11491045973623638105, 5832623718891215316, 4637897368334583442, 1270136782835782403])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([12059760086965268413, 2104859632417338119, 3074047925029609319, 208685506241841351]), Fq::from_montgomery_limbs([507458650320731749, 9076652763882528689, 10828995108044982790, 52861166057592230]), Fq::from_montgomery_limbs([5221245564257429544, 602546441039285868, 15463515802777952068, 500262458682360187])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([7894603091209534363, 5963299443776147743, 13622917766282071553, 713444535504669723]), Fq::from_montgomery_limbs([4707822806056225947, 13008601324591260598, 6664196336989843628, 361594494120552721]), Fq::from_montgomery_limbs([7234555332968855468, 13223173585719696534, 305242624856210053, 317409461914184558])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([11052531972415731524, 6240249964832493008, 4690512975789608724, 274300931659090955]), Fq::from_montgomery_limbs([12865203614941348009, 13629535421935003532, 14381802801123693296, 1108602536075241162]), Fq::from_montgomery_limbs([5342089493189303187, 11299417329134660514, 10437815285599784456, 224625807758727328])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([9419019633707904193, 17287104400249488354, 2449834218878066498, 880784160362712225]), Fq::from_montgomery_limbs([1290387194510150606, 300217878573287348, 14712510331530271944, 675169241465258261]), Fq::from_montgomery_limbs([4319449301091482228, 6604997191961440301, 3677473832318302588, 1226257433999087430])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([9534885027294214845, 4233504142154122132, 671184154419538440, 588715198189399632]), Fq::from_montgomery_limbs([7834331777517711657, 12046762886677754640, 12085017871628461830, 1280695769450865349]), Fq::from_montgomery_limbs([17051048636914562332, 9931763496822042016, 812132922227142181, 1215806818267015733])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([10248407954863227910, 6765342538198222232, 3376905111922655053, 689295470605671650]), Fq::from_montgomery_limbs([852480703421168492, 12355793660799378618, 6731311636032405498, 552777249330804449]), Fq::from_montgomery_limbs([1991623127336121727, 6505031450361927139, 15924460190557187785, 1320271660125443798])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([17438135180680113454, 12154982230827864980, 10857096699189529725, 334861850663499479]), Fq::from_montgomery_limbs([12624059910780607141, 14938141535714956518, 10243410760322861612, 175466020402160466]), Fq::from_montgomery_limbs([11857086838875231849, 16760011700969259517, 8560727830203057188, 152554536976681898])])], +// w_hat_collection: vec![Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([3912868093747842187, 13891638599538547029, 10034520463596988736, 24923162524038143]), Fq::from_montgomery_limbs([12940192809323646256, 10063211937356421632, 16102475073289099807, 635255441558029483]), Fq::from_montgomery_limbs([13439545502292733320, 8210365196597573290, 10798232243990715182, 209985169044052016])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([5751631526606014397, 8462191803631620224, 10509863267471683158, 447861109114791478]), Fq::from_montgomery_limbs([1437717886047567450, 16559126213892176045, 11375302712551931442, 1010730393746897317]), Fq::from_montgomery_limbs([1032470319927068309, 9033645067614029358, 18086293033601348125, 304884835659797125])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([10030163671426435897, 10038896509362625400, 11411437429949289797, 606845429174704889]), Fq::from_montgomery_limbs([13498048305505589045, 14368156343173972859, 5751396272374329581, 1272023166617958572]), Fq::from_montgomery_limbs([9805803927184323301, 13425206131835998785, 13841345243897428245, 615350201809158017])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([14956193223177978026, 4328965669156513709, 1332264507148878686, 908612595539291972]), Fq::from_montgomery_limbs([15512085810689995447, 1278811290279093247, 9713635222980865549, 89918473543807263]), Fq::from_montgomery_limbs([10908982736163998884, 10522718116611575026, 15481410495350859749, 209345561210183580])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([11298966019883739719, 3737954136375979756, 15666428783954356951, 93322090349950905]), Fq::from_montgomery_limbs([10237667835076512281, 12325953953570405613, 12285254403281429040, 507107093264211690]), Fq::from_montgomery_limbs([14936641530723543297, 12684654093637137182, 6573648560098330931, 479128193670708215])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([4665624059074225901, 569773391663140707, 8039376161136700750, 305908263293765813]), Fq::from_montgomery_limbs([12181552876023559131, 7764448317943448064, 10288520924018884818, 1103852203169073095]), Fq::from_montgomery_limbs([15135999239214672948, 10790616626797062588, 17724896909590777918, 1127104704406195421])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([6486714260719829146, 11040751111500249834, 8958297661837625585, 504881187176923268]), Fq::from_montgomery_limbs([9943503409323924620, 9519655296534470798, 10031214880424175980, 880224541550113700]), Fq::from_montgomery_limbs([2137123775246483621, 14575781645937393202, 6082200831828333306, 319693495256136311])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([18213874187166503017, 7357620257182256357, 12753979462901781784, 653327632081049969]), Fq::from_montgomery_limbs([5648402480861501803, 1298801804080198935, 16361566576947818947, 92096317293783223]), Fq::from_montgomery_limbs([17945395108017238106, 3498558197841053284, 7092504945026653103, 372132312547601421])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([15622147422254947733, 250116726000401472, 8318204049018604061, 866935352572882912]), Fq::from_montgomery_limbs([18241804623807754966, 4053430455599371737, 4911593924672747195, 915087345052626509]), Fq::from_montgomery_limbs([4269143728338544596, 14357201884344458328, 903006646797065399, 462454343275509581])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([16493823488007719206, 14779329128742765495, 18378884619527915493, 360610956997885799]), Fq::from_montgomery_limbs([8231956009608211607, 2237272948977110346, 11234918376541957482, 211807215316292218]), Fq::from_montgomery_limbs([4694295422393950539, 494515799644279017, 16377559543581347883, 1023664249665260398])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([269632147881481827, 17676834172042717446, 13502391546248246285, 158178875674850167]), Fq::from_montgomery_limbs([854535799571654664, 4436276133137563398, 12250035363748361097, 569847052981690503]), Fq::from_montgomery_limbs([8356573900420286918, 3943111982741005596, 6690528014909196681, 100899612597296936])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([12053108327360532468, 2215278670095839574, 18310257358516903189, 507153778977982696]), Fq::from_montgomery_limbs([15548327836627863789, 11669395097045425760, 16626297677851084169, 692658363999722441]), Fq::from_montgomery_limbs([5590241427234064239, 15193192965574703365, 7643293374071077424, 502287078265137211])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([7121109350102790552, 3842989306298966953, 15442678426893498207, 43682019324253859]), Fq::from_montgomery_limbs([8543065120635606147, 17618464589270231617, 4296924638616724859, 409105874035239827]), Fq::from_montgomery_limbs([12676854185827013572, 13888077538347807744, 7139127667431143175, 1225243047885808896])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([4347759847866483265, 5855881520281836030, 5505541235252858831, 976243446170017999]), Fq::from_montgomery_limbs([1880808402247115426, 943890821775946445, 12000264441794154793, 12973763854532988]), Fq::from_montgomery_limbs([8496845738719301602, 11057791601996073401, 18430915991403133806, 442312408397388928])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([4597591998391646042, 17549544536524741100, 7632675978077243758, 789227364575351796]), Fq::from_montgomery_limbs([6247914330752058188, 17379927947827819186, 459262613159719376, 17669136651242999]), Fq::from_montgomery_limbs([4416622626270946808, 9011173931926497864, 2385315687804767815, 1100085754679242026])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([2858027675101851698, 15199707771225336894, 6912007903404713737, 1195736020550467109]), Fq::from_montgomery_limbs([16536374087395040861, 11905207237145903612, 6114638606661711198, 227197704829902271]), Fq::from_montgomery_limbs([3076102373056113184, 9532492163005512122, 6930666801042367372, 359947620632631939])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([9440427530838662463, 13085976282871216533, 11609820600896955445, 51192596107359503]), Fq::from_montgomery_limbs([17890235474475849352, 12861769158994967907, 17199388852287681020, 1318104728008794611]), Fq::from_montgomery_limbs([9609805589266211410, 1670962659820459283, 9562963939311936174, 688275382419503341])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([11167389070307520429, 13977359843749392350, 18441644755473839422, 290366407278115355]), Fq::from_montgomery_limbs([12443632002797775505, 4654520606670285598, 7306556664291017650, 1327633699432541153]), Fq::from_montgomery_limbs([8092706722129444827, 3658752323492067072, 4793508300996597563, 747223853807345138])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([2950573641865927995, 8127787636945490240, 13677031676353641065, 158618420355845681]), Fq::from_montgomery_limbs([11307462183326711698, 4564920402521666764, 14622180354087693631, 1336492508958389172]), Fq::from_montgomery_limbs([4173008676431506498, 17674916393358760276, 12680688896701595449, 968385841042257188])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([15472538886056214069, 16032473331676368569, 16841883688877890652, 857731186179030920]), Fq::from_montgomery_limbs([3288920438915728986, 5565335638237954732, 16168717028973711379, 557711450924669146]), Fq::from_montgomery_limbs([2265592654319698024, 3205443269480017209, 18001932803255029483, 256652906325487142])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([281001495283692254, 13790290956215242906, 864387281468051063, 1176693997057782923]), Fq::from_montgomery_limbs([5123560649935846987, 5199616350359672235, 1101436586367673740, 39975262197625469]), Fq::from_montgomery_limbs([6484555314181403346, 13702935644386089262, 1070288899201945043, 1275458004049976710])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([98165037936801382, 7473654891184825762, 349134079485996919, 938092578927267223]), Fq::from_montgomery_limbs([14188791834503488423, 18250342088521722141, 2040654749291153960, 926512896204558398]), Fq::from_montgomery_limbs([15224380743676270964, 10786962884449555555, 11361613959686699022, 1210280746834414029])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([11759988830619476554, 8373507443143532317, 3120367880452859596, 1169296147393250270]), Fq::from_montgomery_limbs([2846578710538047768, 1316160842247957353, 13088400622784413268, 408653118294756083]), Fq::from_montgomery_limbs([17205667740934035850, 3622944266683523375, 9638129797382886543, 994379064072552476])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([10882825922057764254, 14418568533897154353, 491214512167095700, 433897962559667772]), Fq::from_montgomery_limbs([35128611736586842, 16389786149729784671, 10083558142637806972, 137127276176467702]), Fq::from_montgomery_limbs([6798031404470581862, 17848651283256458296, 16222358536010933656, 803683331342998490])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([6972405454939855920, 4552281101007467397, 7264795943490057443, 864688899960148444]), Fq::from_montgomery_limbs([13927481061475209845, 15489762958527206567, 6189983331269957882, 547789234607264680]), Fq::from_montgomery_limbs([3562534859757502067, 1843985785467419577, 4386226263096503262, 1115671597351053159])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([12278022351526165705, 17770191387101388710, 10802565891039662934, 1075900781773362211]), Fq::from_montgomery_limbs([9958371080654925973, 11831887817395699647, 1304723427562418477, 354927743406208632]), Fq::from_montgomery_limbs([7902693975921282234, 10693029805943046522, 8006364623005626891, 336833334808426575])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([16076162621220796497, 11613654344612125103, 18364396485836487261, 865751367130059847]), Fq::from_montgomery_limbs([177169936881514673, 15617655321830945408, 2675644582344792450, 813774581927626127]), Fq::from_montgomery_limbs([10024256268223083204, 4626025808735980516, 15602381466554927909, 372989881235976309])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([15323355670275250642, 18066772602049731907, 11033816093504217490, 425723417069229499]), Fq::from_montgomery_limbs([13530227036238294143, 4726864651116558793, 11836084010804535503, 345580619383028526]), Fq::from_montgomery_limbs([9033276785296979553, 8015158493901738529, 7685612975844433499, 646369922266692941])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([6106858674192767659, 6489383503992760141, 15104627566688873842, 967007977448094027]), Fq::from_montgomery_limbs([15940025338744316838, 9550216566045214897, 11499601007486969156, 519967031225120334]), Fq::from_montgomery_limbs([4457318900167954816, 12351443184813817360, 14113262131954548168, 753463690543950206])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([1881864483835241252, 13219574080686529684, 10918646441166728772, 345526905812511168]), Fq::from_montgomery_limbs([16713317497695859602, 11594535032725047066, 8614425525972045100, 729458370408931167]), Fq::from_montgomery_limbs([2382365843901650484, 13640386342346411833, 2679421435014953531, 1060573086709931927])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([17434826777667612735, 2365065059007002287, 12113557410986701552, 486906253608904981]), Fq::from_montgomery_limbs([15422260981332801416, 11687068808662228912, 15340447593430286694, 1095477751721025581]), Fq::from_montgomery_limbs([3067136625363818837, 15414947239083578872, 4357451922062335136, 670849424861114413])])], // }, -// optimized_arc: OptimizedArcMatrix::new(39, 4, vec![Fq::from_str("507014295002340130094051641853152875478157627773318139164018329180924405874").map_err(|_| ()).unwrap(), Fq::from_str("7491635671712014457226444359115925142756691872583683345054285850544197741427").map_err(|_| ()).unwrap(), Fq::from_str("6428238367987262728380227088231207564575448754570094797343562439968130973414").map_err(|_| ()).unwrap(), Fq::from_str("417784945642189241683731513330527942532284498692605186769747085266175822763").map_err(|_| ()).unwrap(), Fq::from_str("2460473050623699025207425440478059302299840127402356580032311810234352192553").map_err(|_| ()).unwrap(), Fq::from_str("6739526644189243304596281380207849534959661650376903866949397817731628238273").map_err(|_| ()).unwrap(), Fq::from_str("597549483098771783017881992848590630624851676141528707360377946657258324767").map_err(|_| ()).unwrap(), Fq::from_str("4344854910230270044421510722988181256819181450723410913296668891739456698878").map_err(|_| ()).unwrap(), Fq::from_str("4470966059082111196154549519927954009195386775161045009249761095179400738385").map_err(|_| ()).unwrap(), Fq::from_str("3473585183550757121590696749322044239715986752544880348555956596981389357863").map_err(|_| ()).unwrap(), Fq::from_str("7430297707987557411189895556541208022085393472000735227995498626328989684346").map_err(|_| ()).unwrap(), Fq::from_str("5069778819917269726812261651516390352533805494152825991716992564077618201433").map_err(|_| ()).unwrap(), Fq::from_str("6174290539348443013815085618635508535362670264359346323016750542543831671611").map_err(|_| ()).unwrap(), Fq::from_str("3653200179921208842362414440137382634990868113411395862128462165430232768762").map_err(|_| ()).unwrap(), Fq::from_str("738082080048556788240923937267344369599673172037328036389652736930755015716").map_err(|_| ()).unwrap(), Fq::from_str("6044628729794520171281155572076229146090871806225211668717932778346109567300").map_err(|_| ()).unwrap(), Fq::from_str("7736716524450328636992649732099229308498454296838040636411888315240829896039").map_err(|_| ()).unwrap(), Fq::from_str("7801646052537243021447445675976197401284814870800330493571122440154230993256").map_err(|_| ()).unwrap(), Fq::from_str("2515366837805709066361634907162810631300608653195753024882428438693187674075").map_err(|_| ()).unwrap(), Fq::from_str("6187129458703378977398123257836651311870393108870066049693065814338734745990").map_err(|_| ()).unwrap(), Fq::from_str("3794218183072958950105086749522628660482084910777125180518390733591853952242").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6233891665852964025793087211080773874059573525293970992732521677977875000340").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3649102510126802185101419697056558429290624425277045268313219498999658341074").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3939605594032360277268908739148360994367569248494182823773540793386338597192").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5793918311165867953048304979785472147312583909683865747227678849141640757653").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6736260101005961361914915211974065806180794912798753414052544982409125819043").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("99386619724773353801924326721821206459385882899600247516417467094446766240").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("855909900584723233076257164006665636915929955418582474051940301964800182283").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4825672737213145076208985600293258814550355409397430040527846357405902736613").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2613583445528729236454598029847009952792117905697841625417796499695750020893").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2270157037168350840262996453896931716107157898869695999890879972338543031389").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2275045507759235100651383490228387625693443691412647946383341897216251871765").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7927445715344068644679425610882298644141563967603864536803142600721498066529").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1015774581556338350646595104847685838057300034445346472118215134956921458632").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7113828120114189476904109335340835059793042603907156402258236741699295723140").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5361253968083438698857228199059136416317284553758704726716422432942990049525").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4669842734842482362744949263084814109548439307811166352836742701971034038591").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8231534498321518818466731090921021461348523047592991460718222512976570936103").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1135503381194475580486620329886878775177087746932489420355089838941102677989").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7128553112861516020321124909533387963631215062151513895950207865404619202792").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3748326121951361079351518015876815023283298346355581092893027673947885706879").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7505487510037889890503698600332856432704754925691776140216514366218619637508").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5555310781556720053920075778567203135558942142552165491341682235748268266993").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7192146175350915536788873880560259314661865066222526587984493122394816976702").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4765548992224561125635289821603442792164763449693429019499745617619175713660").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3743934736956678131120534615785984161423931611359776468788528419922144981092").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2561736804193775652910031718497365265916219792268053751622511136515315868830").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("709567079199351122676952175219214288330631674102772101121326864605715037719").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7918265567971805942273669013826913668856812049698663746273433111971590741797").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3279978733711205079610878817627312064260384417973838290414881688081024612948").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7527592443870070416769159161840175145920858357524990578830014410783569808116").map_err(|_| ()).unwrap(), Fq::from_str("5092456597786987850309117489482478313382405139827972441408647246472962756834").map_err(|_| ()).unwrap(), Fq::from_str("6350597027022709417452502607358026831887635557428071029520622433982691427012").map_err(|_| ()).unwrap(), Fq::from_str("2802963479241809964305385036387099199586209492879271476960143416190639640353").map_err(|_| ()).unwrap(), Fq::from_str("8221597608726879712015358263079163240151837220833337984106403382169293661236").map_err(|_| ()).unwrap(), Fq::from_str("4113355626280577616600236093811592553533103473131581188028563119065229189086").map_err(|_| ()).unwrap(), Fq::from_str("5372776432646713299575551380876512719814813415800817038026997728135205964237").map_err(|_| ()).unwrap(), Fq::from_str("4786357963899522354925243599250308006789219843696074990338183430509312871698").map_err(|_| ()).unwrap(), Fq::from_str("6136402023627867107328780042258341451909381526863697406971910076649425863577").map_err(|_| ()).unwrap(), Fq::from_str("403917435174867072656735572934226709672919820691101390561081554994951410328").map_err(|_| ()).unwrap(), Fq::from_str("2197307939742823984581382962133936215707127960884165372495222916141872574366").map_err(|_| ()).unwrap(), Fq::from_str("280402617002073624427675333736860754609331352944830300201501643212477955908").map_err(|_| ()).unwrap(), Fq::from_str("1341193910735288834156152818207813295161416180387476007289323480480850290318").map_err(|_| ()).unwrap(), Fq::from_str("6430227820490268278323837184448206513428639661392170572655482468189896623489").map_err(|_| ()).unwrap(), Fq::from_str("5381106858655589782618523649345652522506825219090054633547753330769140464666").map_err(|_| ()).unwrap(), Fq::from_str("6815943890781966378087179499267196955390238260135387729266185493827955661877").map_err(|_| ()).unwrap()]), +// optimized_arc: OptimizedArcMatrix::new(39, 4, vec![Fq::from_montgomery_limbs([15748480026335769443, 10026984616551622801, 2063724428730618452, 1110463257231131824]), Fq::from_montgomery_limbs([9405142820695944635, 11887146523697465657, 7764829263011233272, 10688178588086322]), Fq::from_montgomery_limbs([7160766575090090422, 13093321275956005400, 4459692368517809830, 1324823328343033307]), Fq::from_montgomery_limbs([8967803866417976527, 10882703683899587484, 12604355713142717837, 913362872025451921]), Fq::from_montgomery_limbs([15434913893282099231, 3277411989792281453, 17050922401305883749, 1246396795570595652]), Fq::from_montgomery_limbs([16287493285262395377, 5813955731335134269, 4301474317614585594, 257520225036445364]), Fq::from_montgomery_limbs([6906749939426292513, 6186370802689597769, 13121713652409052978, 974279291569484389]), Fq::from_montgomery_limbs([8879700369639612352, 13618625792929032624, 3907123048620659133, 13234475218016492]), Fq::from_montgomery_limbs([8645743306703223161, 2649437454338131787, 1563690154181407289, 1014186398941703531]), Fq::from_montgomery_limbs([3215833110701720679, 2309636887892103305, 8098930435412331037, 874663616929857835]), Fq::from_montgomery_limbs([12979468067887852608, 5086746922420764336, 15129738790560069297, 751939553752695744]), Fq::from_montgomery_limbs([2977455406847333432, 16814711076234176662, 2052393181081329017, 1025504667378050833]), Fq::from_montgomery_limbs([7769933776177646251, 18381610027802955757, 14883656026535111760, 810712025708758153]), Fq::from_montgomery_limbs([17772168373864941552, 6465821213265847266, 13630379320513469760, 377801609900980707]), Fq::from_montgomery_limbs([15796194027949120118, 344995813018918925, 1773993772309248477, 495371203446902105]), Fq::from_montgomery_limbs([2372367672613269254, 1881994507861568925, 12499063082888296383, 198183890354307133]), Fq::from_montgomery_limbs([8560339202466452135, 4674741842794783289, 2295938056459737653, 1305584587019963566]), Fq::from_montgomery_limbs([5894698623250752231, 11196686474075291940, 319786488005502847, 976772307367475705]), Fq::from_montgomery_limbs([9900044152758269451, 6382301581301578495, 486281876073250633, 71881436776511649]), Fq::from_montgomery_limbs([8858083304247561548, 5671107377399080192, 14186551763070529190, 1191940751561414494]), Fq::from_montgomery_limbs([11388935853995478114, 12687122290317818660, 14863371661788062147, 1158919028776138907]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10994187684158036079, 6365622770188053181, 9403760573784657161, 1146936259121378165]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10359734611031618397, 6788070320086383195, 6870540987465879902, 1154055204589981421]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6567270162376125909, 13203968161919606288, 7529228388954710988, 1019437133634541415]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17083543156205069093, 11374420946242035033, 18049715002122120090, 906131070047943878]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2206466804129196608, 7840059231658610949, 18148556368765089670, 985832054058842554]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15160443716672326145, 3977221634341810924, 11902494952164999188, 990146605314032630]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15193334268554411388, 16206854972517382356, 12905310888333022888, 513326483567402639]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5576504557462251248, 8125452713587662843, 16486629117159905898, 293174270601514481]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17062406856052799045, 4903125714753109748, 8990920239472029770, 936892459427742133]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6584002420364695129, 10284681536623141870, 7366280281192288180, 305633769889978939]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6566050072214065144, 10806265958907184854, 2902594108468871307, 927316604280713413]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9252557727477672981, 3306161630265918351, 179799263786823209, 104291884324148129]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16542259604895379638, 11861465458652059930, 2193746946143577162, 159871979033281704]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1973639865256742476, 12494642903985355205, 12678561251384262826, 1063132847474762378]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16335431452481000471, 3819468482480263699, 13079543972531520553, 161635515931478039]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6649676330206378374, 170192309920289600, 12660537932851201431, 875374125882958636]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18237532705140415183, 5538703501092204277, 12946255801995328124, 1087375767378395044]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1012766659404803227, 13885920911268862504, 11108883550523828802, 162298092776208930]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2714322473297105009, 249945166940002912, 12698583590562308965, 394261012891088761]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11185042895155911424, 15268539255422683750, 7532909772946377585, 463947154991508934]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2052933093431843614, 1295021459124440371, 8148559147565678653, 89295276853247542]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12899268934677529381, 16307080267150235665, 10898130171280001197, 518068384980908314]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([993244798968596356, 11096685116364920579, 8750430116109558950, 9308397748705116]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5953598583374622076, 16232619257237216458, 17798149940250628730, 654505929641861550]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11857053641605556992, 4354078495412090273, 4158908777158450718, 1170888300956232550]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12321182200541779000, 10436914785964154798, 4712843605747406852, 790686269705752315]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11380659121996065200, 7281347105742142276, 13205980178228421104, 804622887165645998]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5152043905886227057, 17756682668953288347, 10695990401739553448, 1061486419247893614]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13186025127373894323, 16210743521572602678, 17903754729019377882, 874061397244045546]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12725269033496721580, 6143157215985784613, 2563593607564735516, 641845243083026263]), Fq::from_montgomery_limbs([16567470293191015474, 17979338546951754349, 679740711221916675, 389452091580807800]), Fq::from_montgomery_limbs([11781729507075158888, 16614033708022660131, 8066891565891024775, 1321986181569835272]), Fq::from_montgomery_limbs([15263301520898366582, 5379961920461128458, 5298170819253721050, 871089269493660926]), Fq::from_montgomery_limbs([5741830111596365525, 11415264909554107470, 8692411149271156415, 108534814929374467]), Fq::from_montgomery_limbs([14889457972591320596, 4443631419689297602, 9576604194859673886, 55036543682599971]), Fq::from_montgomery_limbs([15281837068987139929, 16419105318903348956, 3445836523780143538, 1293417868939267170]), Fq::from_montgomery_limbs([17836346323317710151, 12227034928325499140, 2533213127903144227, 888374169811671044]), Fq::from_montgomery_limbs([17190507118724296154, 11902410769486810674, 1884965616619903297, 288715797041361057]), Fq::from_montgomery_limbs([3698781841092321912, 12743575315417669826, 2170730182690456487, 1222843211331174337]), Fq::from_montgomery_limbs([4016814140820935108, 7695810038153355283, 9484931309805354358, 1136167194218052037]), Fq::from_montgomery_limbs([14104529875826633218, 4636945317611530138, 9502367629041549061, 1255556235831136969]), Fq::from_montgomery_limbs([3761991760077630951, 15074729225518792210, 17745896690436879228, 1023440924724847735]), Fq::from_montgomery_limbs([15850125405934611308, 14029919305144561597, 18399969854542387983, 1223450657234113398]), Fq::from_montgomery_limbs([15153111831948502891, 17514853580286890635, 16559251203856754825, 921126073718956725]), Fq::from_montgomery_limbs([14464801899277986702, 11416622266096337177, 5506399331882969115, 210576422101801202])]), // } // } @@ -1148,24 +57,24 @@ pub fn rate_1() -> PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> { // PoseidonParameters { // M: 128, // t: 5, -// arc: ArcMatrix::new(39, 5, vec![Fq::from_str("3431064144647154854906922246941506182222173870772679525880648837636528462927").map_err(|_| ()).unwrap(), Fq::from_str("5974593340237813855065980531800418392229182384079544474645411722799919145826").map_err(|_| ()).unwrap(), Fq::from_str("8348426486881635683182335045339260090794248341687902711787330562710527330030").map_err(|_| ()).unwrap(), Fq::from_str("2956151886560243922621332166670498751051583313292219792564998383355563424069").map_err(|_| ()).unwrap(), Fq::from_str("7202553704068066642115231966909806322861037568682203181517551877916261334156").map_err(|_| ()).unwrap(), Fq::from_str("2216708299265206033085353198252811284979409151554807145353180393005345443076").map_err(|_| ()).unwrap(), Fq::from_str("159335743353116328456368467219460934058466648656727531382446971993029171408").map_err(|_| ()).unwrap(), Fq::from_str("6358764046359684972893522865101698862289416136086499847308829648457169884877").map_err(|_| ()).unwrap(), Fq::from_str("4565669615674819431036641511394858343600542708840534960333061188699120679516").map_err(|_| ()).unwrap(), Fq::from_str("8134340319422717456174214595572028038604616932665913260921485003742433978940").map_err(|_| ()).unwrap(), Fq::from_str("1524401355336014828526302364873243668741090019654727936642087684528900198959").map_err(|_| ()).unwrap(), Fq::from_str("4002982571574570934955320971167280988768820199359033883158331219862407490167").map_err(|_| ()).unwrap(), Fq::from_str("268956367875787697972162318645634654752917110456095075021347431474721377550").map_err(|_| ()).unwrap(), Fq::from_str("5539077933627315832517588545053557934921428562542219829976540617497684332768").map_err(|_| ()).unwrap(), Fq::from_str("8163159707574771497074276335511382452957675096097737520190925328662359500075").map_err(|_| ()).unwrap(), Fq::from_str("4977563953454029124270220726210548316848814835999821114089004208776001409529").map_err(|_| ()).unwrap(), Fq::from_str("7008664649215929946792472256484126474139232333206086319663168135693982854505").map_err(|_| ()).unwrap(), Fq::from_str("3318343362844228852737722392858921343864694811396087052570286467757103682210").map_err(|_| ()).unwrap(), Fq::from_str("4587685140645381977725355169261358248758918671032202397129872095189579561454").map_err(|_| ()).unwrap(), Fq::from_str("704287003752591898133347460228078707207754728734442590948457672014774127322").map_err(|_| ()).unwrap(), Fq::from_str("5586295855761311502524744594863435129218163429541929947376690582426001205171").map_err(|_| ()).unwrap(), Fq::from_str("511183681092274132577691562117725290358264643096152647157355941362092811890").map_err(|_| ()).unwrap(), Fq::from_str("3791674481171094988809522263427975797797362874776318037160568007353522634738").map_err(|_| ()).unwrap(), Fq::from_str("4965556154466909844381620649257570389832386474047974618620218104354064063289").map_err(|_| ()).unwrap(), Fq::from_str("963971635740506695524350086639812612091454527172531163980246521861028438569").map_err(|_| ()).unwrap(), Fq::from_str("7451992112096607760070806231419516306470951591954925177908399061124274263922").map_err(|_| ()).unwrap(), Fq::from_str("7295020835214661651956415729023504830971467253215761505201474665911455830460").map_err(|_| ()).unwrap(), Fq::from_str("3280787858384144985438140612639447429324251039365462088829648101852984550543").map_err(|_| ()).unwrap(), Fq::from_str("2723069157469016916952012980902663865513886975368952753054991125338417988749").map_err(|_| ()).unwrap(), Fq::from_str("6733325546431357986554722827687834798300213011526397736613489805927905039872").map_err(|_| ()).unwrap(), Fq::from_str("56441798850784206915280729725313063705563358361043754962920378642471323078").map_err(|_| ()).unwrap(), Fq::from_str("6242175416051197478965577816668352024312546274687357249134970893857683637801").map_err(|_| ()).unwrap(), Fq::from_str("7229059325557971513848440629134335379833660584249795111754961422333313607445").map_err(|_| ()).unwrap(), Fq::from_str("4356997736710300451650893760872593825295996966836948532384189247527540050988").map_err(|_| ()).unwrap(), Fq::from_str("6049177819482487340461587244657185732646063354529443080122436335159416018307").map_err(|_| ()).unwrap(), Fq::from_str("7576032712525336013506180916525388378290421050900955766685149445245599068280").map_err(|_| ()).unwrap(), Fq::from_str("685881833411823963576399873668926648431518211440759077000731288930749252058").map_err(|_| ()).unwrap(), Fq::from_str("5384977628335230749636022233644848516687146330097069641749995476117414428050").map_err(|_| ()).unwrap(), Fq::from_str("5066626083526655559235268649106935359036992877987015973958141686441893981615").map_err(|_| ()).unwrap(), Fq::from_str("3864160983193434022886998306815956641466289665128616501311023249260929552808").map_err(|_| ()).unwrap(), Fq::from_str("4983941881243182382419978602436262452063279277632038979947467554028069255963").map_err(|_| ()).unwrap(), Fq::from_str("2380948917082021193414549859774890757211307109486149249055872709115860184599").map_err(|_| ()).unwrap(), Fq::from_str("1301850928074772735515957946025843493965124551321884817764442241036689460031").map_err(|_| ()).unwrap(), Fq::from_str("5076897091243437097374948423452785437285304227681926632319204340544971351169").map_err(|_| ()).unwrap(), Fq::from_str("838127818681109643111332745898553870614061735572194444363970004242071077373").map_err(|_| ()).unwrap(), Fq::from_str("2648735541215544391998877172183084494605670598556435437159619417296822227871").map_err(|_| ()).unwrap(), Fq::from_str("640905846278351353238009110145641369411677691778563522917583241258624649457").map_err(|_| ()).unwrap(), Fq::from_str("5808802512212087745976031058783426731700713016299428748650928703458711004704").map_err(|_| ()).unwrap(), Fq::from_str("5749520874951533296314184729627523989610545298994103723357863453360184626972").map_err(|_| ()).unwrap(), Fq::from_str("7525445582965390300114302021019560132409820399129242601557247805779238307844").map_err(|_| ()).unwrap(), Fq::from_str("6273694450692809401014139700242486665748135838970313017557107436600726458407").map_err(|_| ()).unwrap(), Fq::from_str("4905871617426663938319313104542034003803518601136283126064218461920650549964").map_err(|_| ()).unwrap(), Fq::from_str("1534940277876083668919293638051191975711259917242845683774534821664526343485").map_err(|_| ()).unwrap(), Fq::from_str("955425033646804536515201484147592192926177121204720097718766516611829526501").map_err(|_| ()).unwrap(), Fq::from_str("3894150193314733660812750390338205165198396325338470786690315652243619523859").map_err(|_| ()).unwrap(), Fq::from_str("6801866375963986689874975385127139228922087767812185493056701864750823046750").map_err(|_| ()).unwrap(), Fq::from_str("7684017331242214245294327500647474342164357536170689226027885852245154849139").map_err(|_| ()).unwrap(), Fq::from_str("6533613910909897757120178781711524384929846151303957276027775562196300302214").map_err(|_| ()).unwrap(), Fq::from_str("1287778348006793753354264516775910784675578173563856312788659291170395524532").map_err(|_| ()).unwrap(), Fq::from_str("5216915770215863705409380567169020200209418379575908663400005214787797370438").map_err(|_| ()).unwrap(), Fq::from_str("6927925275343061862302658799552674983671506001213383012269858960006499515307").map_err(|_| ()).unwrap(), Fq::from_str("3093431225583285580046103032589984161893627925253127114586453327601657530861").map_err(|_| ()).unwrap(), Fq::from_str("4876508992669306157807478179122786499361974800002342258880758732306240297585").map_err(|_| ()).unwrap(), Fq::from_str("2219651447961251376486863950578960860487881410606162814751517519200897892087").map_err(|_| ()).unwrap(), Fq::from_str("5668773160796938127082941580620585286942699223431101979348874059922774012818").map_err(|_| ()).unwrap(), Fq::from_str("1684893093402299091081200444647548834947240031341162586465732315478226990729").map_err(|_| ()).unwrap(), Fq::from_str("7799057167703178248117746588920357705512026304634271300319889557354880371241").map_err(|_| ()).unwrap(), Fq::from_str("7035962059299232373282594000188009708423815232513861608267397492058368514655").map_err(|_| ()).unwrap(), Fq::from_str("3557841071694962744222128553164306971763173861341821760759398010110916817379").map_err(|_| ()).unwrap(), Fq::from_str("4919604360126837358236378759740095094734090251750427077694652342742015916333").map_err(|_| ()).unwrap(), Fq::from_str("3651964097696714101760373286565395286045981519509724735161744858315540816702").map_err(|_| ()).unwrap(), Fq::from_str("7752385399247926357527056380360808208180081668017775007471560982218033946237").map_err(|_| ()).unwrap(), Fq::from_str("1560948170663949249269952400678295486888598242822198620325709945477214797198").map_err(|_| ()).unwrap(), Fq::from_str("316585276003266717671190676495491229976216737090878145310002581328591539440").map_err(|_| ()).unwrap(), Fq::from_str("5974898654158584463139271462320546617841212083549718367214959777352959495333").map_err(|_| ()).unwrap(), Fq::from_str("5607004686501853872982207933339023766399967231475941595727751773525628758232").map_err(|_| ()).unwrap(), Fq::from_str("263583497813614807388366950168851578800754468135269590784469615476535128717").map_err(|_| ()).unwrap(), Fq::from_str("4871595315337310536264086178722040094415050759013585894612923767087751908699").map_err(|_| ()).unwrap(), Fq::from_str("7173031190250859550777460363163861192761573301345074535057323242442324691325").map_err(|_| ()).unwrap(), Fq::from_str("4723171842604091011176330449498704226263418780555412349754368956504668410122").map_err(|_| ()).unwrap(), Fq::from_str("3093548779175445905159322828510949810768292210271136674694133809205853946145").map_err(|_| ()).unwrap(), Fq::from_str("4988936223801567123535323200615892415167642586821298105957911780645181694254").map_err(|_| ()).unwrap(), Fq::from_str("1270686137321942870279052672278309294560572841737399669722561513209237380672").map_err(|_| ()).unwrap(), Fq::from_str("3027941487562378123721922900099852691404951041633521671398104427545925691668").map_err(|_| ()).unwrap(), Fq::from_str("4250367193013370954668903232462054699730068538781572254097226173154986215943").map_err(|_| ()).unwrap(), Fq::from_str("3705604675524974825735991257641779214522844126919760251465625870683806117431").map_err(|_| ()).unwrap(), Fq::from_str("1551260208361803690514780672787033034618654224039606548555845537861754046538").map_err(|_| ()).unwrap(), Fq::from_str("3186113032606723168090432328426823707739232147505302872305888065960935844821").map_err(|_| ()).unwrap(), Fq::from_str("4618271499236252040457076109295953262458005612124073479720280966407947860574").map_err(|_| ()).unwrap(), Fq::from_str("85068080339364143050775823084986400709929505436687224865850800645071087587").map_err(|_| ()).unwrap(), Fq::from_str("3507988017613409133657367864429411179865920486795500996497040824217097292460").map_err(|_| ()).unwrap(), Fq::from_str("7970107102198616736711602714867013223500032535700603296666154312414237678784").map_err(|_| ()).unwrap(), Fq::from_str("7203145370944655952837572275579114842061587777862317485337984480478802632840").map_err(|_| ()).unwrap(), Fq::from_str("2626923365577867419861067699874226380794382981678256410128947046410867593454").map_err(|_| ()).unwrap(), Fq::from_str("4070982642487328836564600268954969237493687432432450985795431483735455900743").map_err(|_| ()).unwrap(), Fq::from_str("4515278409974508993564172627125429774574614756775077151715641820058462905237").map_err(|_| ()).unwrap(), Fq::from_str("3425014569349371453834589829875283358719921330009811776869097687279062879137").map_err(|_| ()).unwrap(), Fq::from_str("2515566255852496064002951003892564743824841708305449827422382645027069070193").map_err(|_| ()).unwrap(), Fq::from_str("720525006140603161540193448814302617294040974256009825178936921367639778439").map_err(|_| ()).unwrap(), Fq::from_str("7367663655251566472421325885202560742025124988743048966983734178477823972279").map_err(|_| ()).unwrap(), Fq::from_str("3320751538307738217634627783201795162745408603787789711772266685694484944916").map_err(|_| ()).unwrap(), Fq::from_str("3386040192515644244212831353306931760973595850302406027148713774545286758291").map_err(|_| ()).unwrap(), Fq::from_str("3761448177836405784953534531695469075610578058956622870681358568372925658970").map_err(|_| ()).unwrap(), Fq::from_str("1075183077135395450365708159427330084848191667324652044966444911821388696629").map_err(|_| ()).unwrap(), Fq::from_str("2882738091025915095886776926625385766734704795692036818933191859919697476809").map_err(|_| ()).unwrap(), Fq::from_str("4617677246175457778854495806811172394981680905637257748781941029853717258322").map_err(|_| ()).unwrap(), Fq::from_str("5771461794324243654526297158425763003330735380725612289050705359730071239278").map_err(|_| ()).unwrap(), Fq::from_str("4558031763124841766669372193496818071724865493971402982085377903444474587687").map_err(|_| ()).unwrap(), Fq::from_str("8141117664279670265207049460468667350204471729029321520983857087648145502125").map_err(|_| ()).unwrap(), Fq::from_str("6195788751946064104383103983543994507568126076571249838849490543170846659025").map_err(|_| ()).unwrap(), Fq::from_str("1059599007031118919301902365295124708521843594472237888863204210743524454267").map_err(|_| ()).unwrap(), Fq::from_str("5335364043712877346408190295692418434066312211048115548198980855698882158076").map_err(|_| ()).unwrap(), Fq::from_str("8316246925389556857059468387404509035053566680272307083454543154571323861085").map_err(|_| ()).unwrap(), Fq::from_str("5490090299085350778121282949237451297326343519143725131342180387720889359589").map_err(|_| ()).unwrap(), Fq::from_str("982952375360847129724490417720756319295038857607393974322522066631510583362").map_err(|_| ()).unwrap(), Fq::from_str("6912541015779228733393242589316461907046987802589662174925807063866005360743").map_err(|_| ()).unwrap(), Fq::from_str("1129593556827455837973325656081058550489681406224509075914475234919198185107").map_err(|_| ()).unwrap(), Fq::from_str("1937618904212510512354506408985123382700952246502520470325321212671150347646").map_err(|_| ()).unwrap(), Fq::from_str("3199581281309144873736171191664914342004216739448977171254740671523117441555").map_err(|_| ()).unwrap(), Fq::from_str("3882731022638913010359310673652139990872120547585706475765515205937556342189").map_err(|_| ()).unwrap(), Fq::from_str("5288481863589845207506139383646039384958247973884137159418420627552127931970").map_err(|_| ()).unwrap(), Fq::from_str("7942130591592945706895315481799734433741602413592840551908769964795782608968").map_err(|_| ()).unwrap(), Fq::from_str("5051892235665720020018826618535299857851085694800649824271468315719378181649").map_err(|_| ()).unwrap(), Fq::from_str("5607212903747583926526697928256720784635337923527282496989348766912942994673").map_err(|_| ()).unwrap(), Fq::from_str("1005884468890121805544667086279275166920615705097956006974287867360116510627").map_err(|_| ()).unwrap(), Fq::from_str("5741330397180945829428504832247215836616957161262082878639916347436553087278").map_err(|_| ()).unwrap(), Fq::from_str("7113157446624997569554789611450589049996386977337105981325987667831539826179").map_err(|_| ()).unwrap(), Fq::from_str("434966185410632135185943986364783375571726296729610745781632287888723457988").map_err(|_| ()).unwrap(), Fq::from_str("5039802488048963835006624051407996449630084485148632435276076903048876374844").map_err(|_| ()).unwrap(), Fq::from_str("6277394771555254841201693053364694411785262956950074230877477457050146145350").map_err(|_| ()).unwrap(), Fq::from_str("7908099502852050062687385226488258695798940263199015330802932154592406094334").map_err(|_| ()).unwrap(), Fq::from_str("7059803414292720524307725442485511732964092444131901934868290305628576267102").map_err(|_| ()).unwrap(), Fq::from_str("2139460395975167664251483842973329242173648967205322907102676387523657330407").map_err(|_| ()).unwrap(), Fq::from_str("7713833445621910172069259123836985620916656881299879820225971306156722385150").map_err(|_| ()).unwrap(), Fq::from_str("4702697580661123243003468809750572064033858150906769608766261234379440378345").map_err(|_| ()).unwrap(), Fq::from_str("2058405693863273982847268534108655874807256557976851621785238654039467515836").map_err(|_| ()).unwrap(), Fq::from_str("6674457497299429663710230591569139514263534876095498106116913267093663780315").map_err(|_| ()).unwrap(), Fq::from_str("4394349719596574551549596214262928047125802364147432112238594736371319101217").map_err(|_| ()).unwrap(), Fq::from_str("6195297631158703521528049804908561074583920087242571608462634484611500167355").map_err(|_| ()).unwrap(), Fq::from_str("3242541329035091341128246584277113195113553777004100613079937311868015069560").map_err(|_| ()).unwrap(), Fq::from_str("4488773899079486051170785239065153620809431438600471596626517435505102118937").map_err(|_| ()).unwrap(), Fq::from_str("6681363412038194140795429174155979405046271053963301138999269362805654504069").map_err(|_| ()).unwrap(), Fq::from_str("7662242546205542398356134731758300460600315553573879682432583813859452836200").map_err(|_| ()).unwrap(), Fq::from_str("6453549740536358454504175636457946145686596519078014824866622902795607732647").map_err(|_| ()).unwrap(), Fq::from_str("3434027548019966853693323689350917152691087689665937771604554535965235520912").map_err(|_| ()).unwrap(), Fq::from_str("299082112673478422764754620971284657027144192562393535511453660105206035107").map_err(|_| ()).unwrap(), Fq::from_str("6395155327227537426486482892833268678161195655526514574121190746939478388987").map_err(|_| ()).unwrap(), Fq::from_str("3039381088162114631674331586494105962238771530597574588375796494928669649065").map_err(|_| ()).unwrap(), Fq::from_str("3334675545472410818743467442080239750505805749315744278475211560979296636737").map_err(|_| ()).unwrap(), Fq::from_str("1196983096101857709598574279556244852300477701251449098484534290024518924230").map_err(|_| ()).unwrap(), Fq::from_str("5507347578032242038087982316955699262813359618027103132775673371110788299895").map_err(|_| ()).unwrap(), Fq::from_str("5560080148677213890507165547953752780519856814277143049217221680351859825399").map_err(|_| ()).unwrap(), Fq::from_str("5633835642182107458165072565312817304740338606963238548211749078832908650630").map_err(|_| ()).unwrap(), Fq::from_str("911614257936736591336424182716942211452433652908193813700912113362046712210").map_err(|_| ()).unwrap(), Fq::from_str("3705543798273043191211792935279311741221524426394035211803972447778519619347").map_err(|_| ()).unwrap(), Fq::from_str("5785036548626352245177226786910695334555198251668119386253275602234189604340").map_err(|_| ()).unwrap(), Fq::from_str("847971323320355442301334363553408559594153445121098722071959354840694732649").map_err(|_| ()).unwrap(), Fq::from_str("4197331512837528156704994381832276430816359714883660325065518557698023560377").map_err(|_| ()).unwrap(), Fq::from_str("6576028574423396238526342400139289607047025524619052131425825974036258801606").map_err(|_| ()).unwrap(), Fq::from_str("4676155251689568093012135115787731342950221114177190158364860256454529471785").map_err(|_| ()).unwrap(), Fq::from_str("2714618045143938619898076578560687636406140388449464388759363386241966607181").map_err(|_| ()).unwrap(), Fq::from_str("1962132004800323563469839832001946314177856513333502258694633410368622937183").map_err(|_| ()).unwrap(), Fq::from_str("4060303721139745185753003702242452853892567577701929945051705636841605394426").map_err(|_| ()).unwrap(), Fq::from_str("858431967366800259429702342421555087572913382935050196019572402458455337876").map_err(|_| ()).unwrap(), Fq::from_str("877911187548075026731669736278785759327577474797844900633096057140615081125").map_err(|_| ()).unwrap(), Fq::from_str("1019450753652996323060985769610208687502135057729861941495498967001564647316").map_err(|_| ()).unwrap(), Fq::from_str("3851788025399437417208275102395317775772759364153518812991305264015991388670").map_err(|_| ()).unwrap(), Fq::from_str("4560279417429841423093566701490605206447881605499847195977491876525780099107").map_err(|_| ()).unwrap(), Fq::from_str("3134667173774338523992012898495588034817629209037681071601829750586253871388").map_err(|_| ()).unwrap(), Fq::from_str("7832266672200870525897695994933278406523270595861155510261323829849771005035").map_err(|_| ()).unwrap(), Fq::from_str("3712183088067883479150433844090205722121157548492007881527072932869040454605").map_err(|_| ()).unwrap(), Fq::from_str("5801903878751677471106069179675135554571578499505816207389793919704782653936").map_err(|_| ()).unwrap(), Fq::from_str("133357046720968940217288532780758703863340792751200985876521675622988577868").map_err(|_| ()).unwrap(), Fq::from_str("3001592744243106968297835231782573528844685953002423881375060097320656955350").map_err(|_| ()).unwrap(), Fq::from_str("2464111491719539813619225696061559882817211545600468865635378210539198159455").map_err(|_| ()).unwrap(), Fq::from_str("1322652077946933817114865278733093858990311234699275468382653833423050745492").map_err(|_| ()).unwrap(), Fq::from_str("5645215415246962740356127494957015951514599603859670006653165433427164693060").map_err(|_| ()).unwrap(), Fq::from_str("720189655435077226693228902608508375844861111998842869300519328297727792886").map_err(|_| ()).unwrap(), Fq::from_str("185200828324752242433717554979366507039533746746071572779724308985924103781").map_err(|_| ()).unwrap(), Fq::from_str("5062274726469822209812100498705646842753986247467163742638203593135146892394").map_err(|_| ()).unwrap(), Fq::from_str("4985147731701280516122195490346401914592823270137114236360234768104112278629").map_err(|_| ()).unwrap(), Fq::from_str("2887769780031221320189923358950180519938336707834750936438152238605771538185").map_err(|_| ()).unwrap(), Fq::from_str("4215828315610408367904010758539873734811771712189857070943669192637602517003").map_err(|_| ()).unwrap(), Fq::from_str("1543632720656628126125982421130157017436958675131518792186811247089700493653").map_err(|_| ()).unwrap(), Fq::from_str("4832500060396630035991245052563913029405538648780355784888612789791420607598").map_err(|_| ()).unwrap(), Fq::from_str("5930257493267574500042037208093725122451773768067833261193177835090030231983").map_err(|_| ()).unwrap(), Fq::from_str("6502901560147376485847653671976628642790817732181058349910853757232107023811").map_err(|_| ()).unwrap(), Fq::from_str("3813185417582493541776744320547162746343924349873110184732754873079797171153").map_err(|_| ()).unwrap(), Fq::from_str("6509768824040100638521305078471095204921310149573479294107390899486522843069").map_err(|_| ()).unwrap(), Fq::from_str("3605647195366343121022521058580251119532209828115204053018233085119170067569").map_err(|_| ()).unwrap(), Fq::from_str("6769819025968586890565365669631295740031055074504963563488334106735520662613").map_err(|_| ()).unwrap(), Fq::from_str("8078839985317492794953557685153658953919163145558294969245187929666873992250").map_err(|_| ()).unwrap(), Fq::from_str("1394681604050412530833331610672526944507542631579572154759809162329384560638").map_err(|_| ()).unwrap(), Fq::from_str("7104554881094887062843081388750064718663992515537917313436084280540113848013").map_err(|_| ()).unwrap(), Fq::from_str("480898963303594644926304962428204837944253172605670175725141207630587527124").map_err(|_| ()).unwrap()]), -// mds: MdsMatrix::from_elements(vec![Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap()]), +// arc: ArcMatrix::new(39, 5, vec![Fq::from_montgomery_limbs([9886223877583555338, 2726526174642559934, 4587790518566470505, 576729411659255749]), Fq::from_montgomery_limbs([8635683872171027649, 6178568763530680712, 4049298017970875225, 1010899895527016760]), Fq::from_montgomery_limbs([4386287284362214114, 15794275297560972982, 13426231751965312445, 1202171528338027358]), Fq::from_montgomery_limbs([748088700594287215, 1472010505444622065, 17517940238534715767, 284646916897302179]), Fq::from_montgomery_limbs([10279507610927218934, 8427605231324569630, 5256766482183491681, 599767801296570400]), Fq::from_montgomery_limbs([5616532683870270019, 16714573776517987780, 2780158541662869274, 82005381951989400]), Fq::from_montgomery_limbs([628047193644056282, 3081927050412275131, 16607349608647881262, 723666033729227034]), Fq::from_montgomery_limbs([4014053105906402474, 8516064025130570203, 16439212471763340654, 1066408903228028504]), Fq::from_montgomery_limbs([3781775891997454435, 16784197273788891439, 15993490775706321548, 1246974369195687342]), Fq::from_montgomery_limbs([13315871439997102610, 1360174578976506509, 1935727712649190133, 888928512483410116]), Fq::from_montgomery_limbs([8976641770861237410, 6687451940339132521, 18044907108310696377, 1207869807557250559]), Fq::from_montgomery_limbs([4528878922761055500, 7463187218610955446, 4533754848507645556, 35071527712858390]), Fq::from_montgomery_limbs([2054133897613963099, 8179564031063470525, 1531556284029346638, 874298192527556148]), Fq::from_montgomery_limbs([18305580017782407596, 2150793914184610589, 17311607174845242499, 959373557899881125]), Fq::from_montgomery_limbs([11483900964553043288, 12487129025031613244, 15391908241276224492, 269335905993702128]), Fq::from_montgomery_limbs([8338971145620331245, 12372781419517678375, 2199283600481834995, 349132078387032325]), Fq::from_montgomery_limbs([16711498854962897180, 964757925282058102, 2534475787702313401, 879174178299686832]), Fq::from_montgomery_limbs([9948612635577575267, 10310004629375851550, 14569008704673249814, 698796675030817938]), Fq::from_montgomery_limbs([11983101385647491113, 6756494718617323834, 3986787822213493305, 810568397631777742]), Fq::from_montgomery_limbs([263703597816264419, 5391923373962277868, 8069762938958691329, 167001460324522424]), Fq::from_montgomery_limbs([12719698031922087137, 3635206538516773241, 14946573674542408006, 904022619675467349]), Fq::from_montgomery_limbs([7591285109719266048, 2608578391556572711, 6779676185899908036, 1086161713062740129]), Fq::from_montgomery_limbs([7176467193518589709, 1343509363976199891, 347002617743548581, 1018914054223433368]), Fq::from_montgomery_limbs([13908207388458176389, 2971345816230697916, 17116412495128514758, 1092556723789729092]), Fq::from_montgomery_limbs([10011741275583553910, 13515359725579218496, 16173962293465169995, 826500423001616558]), Fq::from_montgomery_limbs([11642763221775816104, 5316502523761667274, 6723960157854782715, 713280922101966669]), Fq::from_montgomery_limbs([881130788153084344, 5010739439291725858, 1147743103863894058, 177980102031055407]), Fq::from_montgomery_limbs([13975378739354834601, 8684941252608197282, 5694396386436962583, 439479504891747047]), Fq::from_montgomery_limbs([13363133397626440278, 8130502609775906914, 13414583350549819329, 524823840910770289]), Fq::from_montgomery_limbs([11945840925799863259, 8524159476864402062, 9210577373238759816, 710975425722615141]), Fq::from_montgomery_limbs([12814581100646910424, 15849784230008994303, 12637788340215337664, 597941999161438829]), Fq::from_montgomery_limbs([16525908361603394009, 2846177558600817179, 7575467056141022092, 437642443252490173]), Fq::from_montgomery_limbs([15329913684605210914, 12070525736245629573, 13074341668722432469, 1044151030746490873]), Fq::from_montgomery_limbs([3538323630603591241, 10279517124841541304, 5324030032202346672, 902072318757121155]), Fq::from_montgomery_limbs([13596574972337588658, 16541340016857780345, 8104153165370753035, 245861939922053923]), Fq::from_montgomery_limbs([5030454205469646742, 13132624601605397879, 14758125164075453800, 378384125390441388]), Fq::from_montgomery_limbs([8906593348835760654, 11904421032273004937, 14965461596408947669, 632859340380426495]), Fq::from_montgomery_limbs([7850130346408635539, 13532701351370547975, 3820560789332903656, 1092318130445796576]), Fq::from_montgomery_limbs([12997377171057711408, 4471729792070708333, 7305494049349150657, 1115063797383463496]), Fq::from_montgomery_limbs([15145625851690108440, 17698022295267189243, 9861950554713946731, 1205401165408515638]), Fq::from_montgomery_limbs([11309649707041239663, 667445592132876816, 943153015419280868, 1206714849836553688]), Fq::from_montgomery_limbs([9026152062944983955, 11204530926199479297, 6289885248657301247, 512955645767342309]), Fq::from_montgomery_limbs([11717849647660086747, 3612602895588115533, 9744929507384815356, 982549568060514738]), Fq::from_montgomery_limbs([6744201323279553111, 18111540114747698086, 11979166811283670034, 386105814260185338]), Fq::from_montgomery_limbs([13303196293759203285, 14344592278022456277, 4239798340739261853, 800405056318133701]), Fq::from_montgomery_limbs([6737138017975582894, 8531016178828592243, 13684944430980743706, 22255530611110264]), Fq::from_montgomery_limbs([1997271207334772541, 9079547000593471061, 16047065352656029242, 101416793857725065]), Fq::from_montgomery_limbs([17029188205686654069, 8951964272054585217, 15302569091334378903, 761854968911808356]), Fq::from_montgomery_limbs([2745767110751783932, 14853302747509920417, 1606999108376858338, 891318834157837360]), Fq::from_montgomery_limbs([3640580010003203721, 12123462912736402051, 18295135460895849345, 520752965734877132]), Fq::from_montgomery_limbs([83933521946714737, 17971579355265751841, 7352708691986307901, 183907669014565798]), Fq::from_montgomery_limbs([9276458973572472320, 1300682705964188558, 13756551032393705489, 645082867954998576]), Fq::from_montgomery_limbs([15074599786611123042, 8980910692416969440, 16790312992523154465, 44198431582091186]), Fq::from_montgomery_limbs([1480148269351616164, 5990826399027670160, 7437498150356539259, 427144700677710781]), Fq::from_montgomery_limbs([5507196835477653383, 7336613593633132046, 1280426316557546233, 958933701992800913]), Fq::from_montgomery_limbs([18241053245813744236, 10472459532627362617, 2012134575489914517, 1256037774783607417]), Fq::from_montgomery_limbs([14372359421802781886, 13729700187444703363, 17989800816636154572, 967621319286277758]), Fq::from_montgomery_limbs([90392410009690887, 14047860931061415491, 12494400053046916745, 1187807817979142164]), Fq::from_montgomery_limbs([7469394458896125080, 4994833117952945329, 5178970336138815548, 547357110341709620]), Fq::from_montgomery_limbs([14626262512784894880, 8498143648146630667, 14635776379295784646, 279017425979939457]), Fq::from_montgomery_limbs([2948938230818109264, 13256829255392710280, 3603261726988560613, 293293722534360282]), Fq::from_montgomery_limbs([14726913360355627661, 11044693867323537781, 7626109275678740243, 758908383357559345]), Fq::from_montgomery_limbs([12150373031774230138, 8891964881341264351, 4517018861706300919, 551820964652107008]), Fq::from_montgomery_limbs([16891048323407180721, 7536596905792994544, 3059846088325366943, 865178483316339067]), Fq::from_montgomery_limbs([2690083733968939863, 1769064765331202923, 999446336742885656, 164907716251699548]), Fq::from_montgomery_limbs([8580460058188302985, 3991751878635809753, 4547376216267480360, 560815723873147432]), Fq::from_montgomery_limbs([1883267897877590583, 9283747140977722829, 4336519897183919570, 1098112532343628461]), Fq::from_montgomery_limbs([18229193288997288391, 1416710191385219951, 786091488678520329, 897579186089258101]), Fq::from_montgomery_limbs([9679787806770955465, 13476526545223689774, 9613302347536604785, 1170985601196245246]), Fq::from_montgomery_limbs([11408485967127642435, 15775267434451831783, 5963102841687207642, 610143165002891320]), Fq::from_montgomery_limbs([2742110483607649666, 8238870973637978146, 8505321265665046273, 991146636847773959]), Fq::from_montgomery_limbs([2700417284944988347, 9333179215703947174, 17483497014148443293, 564598335909606701]), Fq::from_montgomery_limbs([10710073701127297870, 6322555675999590600, 11771028831440425797, 728539264888274353]), Fq::from_montgomery_limbs([5185688551847854621, 17136427433029749827, 13939786699270995224, 1198719082185444207]), Fq::from_montgomery_limbs([7749447179538401980, 4793600318555081413, 10327393242917365028, 25438094261901103]), Fq::from_montgomery_limbs([16840187061708384569, 10530669475422628524, 217939404244531614, 1125926086827923821]), Fq::from_montgomery_limbs([15218288013305045082, 5438912048142917445, 235470087288523129, 923231700809438641]), Fq::from_montgomery_limbs([2194576126536460830, 7891341442170590444, 6378643390383758255, 310989935666358535]), Fq::from_montgomery_limbs([2638919532368561416, 18196222360720320566, 6610525316889549022, 1047682654438730344]), Fq::from_montgomery_limbs([16494294820597583678, 4823636307697140628, 9839058803503271101, 362713889140891969]), Fq::from_montgomery_limbs([2973315077205527383, 16505948923072751536, 12726716204894385324, 760067983544631044]), Fq::from_montgomery_limbs([7041027454525309806, 14484049096926673324, 11711536155919984779, 830352844598884205]), Fq::from_montgomery_limbs([8226667178177935298, 16330330634634519739, 16819545565758577360, 929449491579086457]), Fq::from_montgomery_limbs([3366407172182263301, 16494428895759921285, 7731107796203549240, 987879550276572952]), Fq::from_montgomery_limbs([9958698182000492538, 15462783131464999925, 11113071922629363034, 701467612820830963]), Fq::from_montgomery_limbs([6144224708909855422, 10834457042169331467, 11287058958850316926, 1312825012143929910]), Fq::from_montgomery_limbs([17921397628564368555, 10985573093809787040, 14340644029187071972, 59000721534311183]), Fq::from_montgomery_limbs([1630018632512830166, 16311976715006973397, 18074431391508993129, 155692271434089392]), Fq::from_montgomery_limbs([2746677638438958053, 17878267615510669310, 1082275588904648896, 1184432411754581729]), Fq::from_montgomery_limbs([1202686691857012174, 2234596977877372457, 3307488575050929625, 1256758603403004831]), Fq::from_montgomery_limbs([7601867427459401741, 13070585820383544138, 11356438762852655489, 943118894834427377]), Fq::from_montgomery_limbs([8684748127362653242, 4743911555278887170, 11396974372791841950, 826700742908426413]), Fq::from_montgomery_limbs([17452888945877951639, 9839615283788288179, 12867459466655328363, 1007543359739410437]), Fq::from_montgomery_limbs([12264143824974096166, 14381191422662810752, 3641096965851024808, 480946059636473070]), Fq::from_montgomery_limbs([11435949141961302837, 710354890461232526, 7844293650067273203, 123004845212098500]), Fq::from_montgomery_limbs([11045998304335767176, 3942503358896124422, 12585149699076876402, 285027589169677300]), Fq::from_montgomery_limbs([15820797401199028229, 16962821466020830153, 8107747291692774042, 480489353941649738]), Fq::from_montgomery_limbs([9217962315784549500, 14370528537254478239, 11836250330534571325, 1139451976529383887]), Fq::from_montgomery_limbs([11835990522743135120, 10169548464484669696, 17221670999568737002, 533302488612773058]), Fq::from_montgomery_limbs([17879618715206022981, 10660797039341031940, 1930610719106570064, 964350742947937820]), Fq::from_montgomery_limbs([1169235639972562417, 17479840192056268380, 10586924611389711708, 103636186478545263]), Fq::from_montgomery_limbs([9864560133117702439, 12891182307324408638, 9236711602457989544, 490202994419177997]), Fq::from_montgomery_limbs([524004209204114745, 12014044939530800435, 17303597221467190420, 1259834854717402694]), Fq::from_montgomery_limbs([2041228093468029194, 5279491032753715877, 2237512127849739422, 1301989577140851954]), Fq::from_montgomery_limbs([13532558374939940477, 11861615008285507752, 15035422035697406898, 1142796203357719412]), Fq::from_montgomery_limbs([14953432173925601791, 10389362430177185816, 845064825159375048, 1172521244035119080]), Fq::from_montgomery_limbs([11975318177053547084, 3435333234872828662, 13963241498174514126, 286783134590930070]), Fq::from_montgomery_limbs([14455835521486462998, 2048669311632423555, 17279316794410156816, 50616703474729287]), Fq::from_montgomery_limbs([8193872068862108327, 3772516384619180657, 13641128299057093189, 905697595997810178]), Fq::from_montgomery_limbs([16454110340578030875, 2152604389456932301, 8465973362037387798, 833666687765914967]), Fq::from_montgomery_limbs([14250990663149816130, 10003002447016613703, 2580052265102394487, 760659830843235379]), Fq::from_montgomery_limbs([1290457731274356164, 2510039619580464600, 2426168528296515695, 1254551442283207078]), Fq::from_montgomery_limbs([16309488082193928736, 7601298284363534660, 5163919981174564632, 65819575671802258]), Fq::from_montgomery_limbs([12743534580838976593, 6143776853938743851, 13386193122986779929, 423668519394498160]), Fq::from_montgomery_limbs([3811484717633006447, 1349919791689722695, 10297821437600310682, 68521037802427679]), Fq::from_montgomery_limbs([1049969810634121052, 16728941075068531596, 16094121280131115468, 82606214892022031]), Fq::from_montgomery_limbs([5360234823572670745, 17757096254232659981, 5717208405019750556, 809486485814479609]), Fq::from_montgomery_limbs([1927630004992622799, 11649924430204711735, 14978212641988016519, 1108831164145357066]), Fq::from_montgomery_limbs([4587868477439641052, 4737040880169689015, 639327313806380645, 693944328643709356]), Fq::from_montgomery_limbs([11087993010676539653, 10020352685294943192, 10076106363570629377, 297641291282727232]), Fq::from_montgomery_limbs([3081981335203353498, 13021314745733708666, 5449753531105554695, 227963405559900828]), Fq::from_montgomery_limbs([15635794702109421502, 6527818235965294785, 7659508407838394834, 492292453862401661]), Fq::from_montgomery_limbs([3164777360703179827, 5768214351744839625, 7163272775096466422, 261059424264025774]), Fq::from_montgomery_limbs([8844860905568377954, 18132135522818541971, 6960467923389772345, 221535360909084069]), Fq::from_montgomery_limbs([17964326599819457995, 14751755360522114153, 15283771895792774696, 1271886438859126545]), Fq::from_montgomery_limbs([15437118549753387043, 3510619079633075969, 16603794516758219723, 756776079410359543]), Fq::from_montgomery_limbs([17209588410857048072, 16141684401935979017, 5301689933884631523, 38432519687640810]), Fq::from_montgomery_limbs([10547445465275366949, 16846768059763163090, 6977180887290525070, 405538698331204120]), Fq::from_montgomery_limbs([921006661797204039, 11021425780686556666, 5587777062950060423, 248159859513377465]), Fq::from_montgomery_limbs([13398830594908962848, 5602568332953722680, 3299388522313110637, 411509104649500576]), Fq::from_montgomery_limbs([10390204826472811537, 7554738663131013749, 7526120458731579280, 905519991871142014]), Fq::from_montgomery_limbs([10358091385270219586, 7049055062932694342, 17159322295344631236, 1074016100024519392]), Fq::from_montgomery_limbs([7057719272669022427, 6716307074733016448, 8792057977815871320, 862532343552836131]), Fq::from_montgomery_limbs([11368373309109150033, 7045990182385141009, 2025222109349847460, 387848901695703654]), Fq::from_montgomery_limbs([327056937244728359, 9704535108452812502, 5199220103603000900, 619215360838520470]), Fq::from_montgomery_limbs([5395528494255463572, 389959326360615418, 3978563775598752142, 991544641697560783]), Fq::from_montgomery_limbs([8458772479849525654, 10186585336117207122, 12880133936401676976, 1149756384964578292]), Fq::from_montgomery_limbs([17528423621923070034, 15935520090452344119, 11404975526251493884, 412409734887795934]), Fq::from_montgomery_limbs([14596531415737149993, 4946255316940312726, 12454931841173483338, 731911136838063220]), Fq::from_montgomery_limbs([6585417567105755410, 16822761287245263930, 2131635032458361338, 606343045824968234]), Fq::from_montgomery_limbs([10214561078664282874, 5025761289800218565, 12783805018122678662, 1311486665373386005]), Fq::from_montgomery_limbs([15901739284283459461, 11286837212400137496, 1712557444614142874, 121870715794602643]), Fq::from_montgomery_limbs([3911984102306673570, 648245110634922383, 15751439518857509618, 216258856571958927]), Fq::from_montgomery_limbs([4848434841412269574, 7349989464327588429, 9911978981083826344, 1211881330257404603]), Fq::from_montgomery_limbs([9800713739756815796, 10304754660712109617, 6380491042931330586, 362406823863024713]), Fq::from_montgomery_limbs([7720465361240795301, 12020672868813473796, 2701475003865340607, 1252909626545536881]), Fq::from_montgomery_limbs([9120215925903958009, 16370286948728342393, 8726225975134153794, 874972214722679027]), Fq::from_montgomery_limbs([13359293481675756526, 17413992610381724082, 17127717448613492326, 618162979844611485]), Fq::from_montgomery_limbs([4457989176113381477, 5428904048964818159, 12898272303960788094, 1093655686680753194]), Fq::from_montgomery_limbs([18405830374587328631, 6168069285842580322, 1496453003489992656, 1017841256875975398]), Fq::from_montgomery_limbs([12466116854493845937, 2160195132816359286, 1767040459956452231, 109568514856013791]), Fq::from_montgomery_limbs([100951306495757880, 114976701465995050, 15766758379995858204, 1057219425251474865]), Fq::from_montgomery_limbs([5298457659833054856, 7285306064847886866, 12795862070238100636, 261515234811290770]), Fq::from_montgomery_limbs([7319581837975344773, 15042040386610023107, 16457831289989790825, 154915683796793087]), Fq::from_montgomery_limbs([13545480776153695910, 13196378744888296667, 5616833430312197722, 463371887282511984]), Fq::from_montgomery_limbs([4373255717409396971, 7992661231611740992, 2555455907700438592, 419602657573298182]), Fq::from_montgomery_limbs([3838228082130987093, 16958961529135702054, 12819669670360648617, 359497681438954782]), Fq::from_montgomery_limbs([6515161084577348825, 3970441889569271383, 607156398571973799, 547713787201516126]), Fq::from_montgomery_limbs([1627146883145613872, 10573887756656254297, 13653780278064282619, 524933908746351261]), Fq::from_montgomery_limbs([10179158874602797540, 2320694878046972755, 13108212213196896821, 823608765090614102]), Fq::from_montgomery_limbs([10002922236139274212, 17696271073832748193, 8923379405797021551, 708982901731254704]), Fq::from_montgomery_limbs([5839866296962221086, 17583077663905506748, 12216298901080800460, 487361936596221908]), Fq::from_montgomery_limbs([14341245248157744737, 3199487087597809010, 1135767560538489843, 927313269278877142]), Fq::from_montgomery_limbs([16632797622220954476, 9703590888871525194, 1377123634707768418, 1246534655674358846]), Fq::from_montgomery_limbs([4754517168201404309, 2647290700202563552, 1690983820051979673, 7714150076274415]), Fq::from_montgomery_limbs([11569692557961925140, 10228174840463393187, 8150598622710748207, 513567317704368092]), Fq::from_montgomery_limbs([1881301196632560204, 6035626362054951305, 8515508636781928884, 523264698133540944]), Fq::from_montgomery_limbs([10026556150015580882, 12588661207673568544, 8778049799575991497, 1135429816709585919]), Fq::from_montgomery_limbs([15355804768759996831, 17109742989524070851, 18394344475321513045, 694458701321276154]), Fq::from_montgomery_limbs([13235216837990437070, 2617348320939314758, 13129875399290619987, 562279832760519450]), Fq::from_montgomery_limbs([10230390803193447564, 13314863672162400633, 17075894283494146616, 375924473565310089]), Fq::from_montgomery_limbs([12059482537459401199, 10372277014464995984, 13657463670572718949, 68415488536176259]), Fq::from_montgomery_limbs([4866792775300295481, 4662805139390376964, 1084624083313912193, 283924614466318758]), Fq::from_montgomery_limbs([682031803653902614, 2785175410597900576, 10466522391392735273, 982491227853418333]), Fq::from_montgomery_limbs([1657190274082326701, 15794239529824430696, 11562429870540813013, 30597476268276403]), Fq::from_montgomery_limbs([11433643047469980018, 1276670802646402384, 7225445039450827835, 1320607862737647658]), Fq::from_montgomery_limbs([9049650314779674715, 15332775679178116922, 10916059016321665268, 1115159218126791192]), Fq::from_montgomery_limbs([5320499112936763732, 11250539854586634824, 12063947087263213252, 710935487070228339]), Fq::from_montgomery_limbs([18379608258942880321, 15727113804916673274, 10498320535108511002, 845002076776323646]), Fq::from_montgomery_limbs([6828593483180812035, 1682481325156526923, 14049047336459608184, 1126148273021080778]), Fq::from_montgomery_limbs([3872917422679565944, 1271915972458656550, 1092693023912110895, 1298968277402891756]), Fq::from_montgomery_limbs([7814132502258843917, 8078742423972593556, 8536158594561933049, 191277843487617954]), Fq::from_montgomery_limbs([5652311561512870887, 16495461651672765449, 11098657231551158518, 493087321946801171]), Fq::from_montgomery_limbs([6368409936062697439, 792796763844864197, 5610460501625398581, 546867399856191995]), Fq::from_montgomery_limbs([3038217149528838505, 8627484827600343283, 7414393357134479493, 985381996389905690]), Fq::from_montgomery_limbs([14953970136252134871, 295452924685135549, 11287279099077480718, 617093465173114131]), Fq::from_montgomery_limbs([140435627222783551, 17855535656574994648, 5022512547318532764, 473386213985532003]), Fq::from_montgomery_limbs([7030554896034226352, 6441059691989760702, 581099786512472761, 1269259459863271622]), Fq::from_montgomery_limbs([6770052323275442396, 12901743183408121797, 13004549993560303547, 969914125748537569]), Fq::from_montgomery_limbs([11435239377991792553, 14044046789306606033, 11369816462011584822, 1239930404010674345]), Fq::from_montgomery_limbs([2621636762951244377, 7758290588105338214, 14625731574391580682, 7696703746211481]), Fq::from_montgomery_limbs([8270493924131469556, 15946263820341678216, 6122109191607485742, 1119062509985100783]), Fq::from_montgomery_limbs([11252124749266599346, 8413749501404755931, 9936257142296575431, 189818330075783365]), Fq::from_montgomery_limbs([1537275707366966513, 2232381660897701103, 2870196216416932989, 1271177660936312287]), Fq::from_montgomery_limbs([1398814984843324301, 15240858180305901997, 14386262707998656254, 1102388553837536368])]), +// mds: MdsMatrix::from_elements(vec![Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), // alpha: Alpha::Exponent(17), // rounds: RoundNumbers {r_P: 31, r_F: 8}, // optimized_mds: OptimizedMdsMatrices { -// M_hat: SquareMatrix::new(4, 4, vec![Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap()]), -// v: Matrix::new(1, 4, vec![Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap()]), -// w: Matrix::new(4, 1, vec![Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap()]), -// M_prime: SquareMatrix::new(5, 5, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap()]), -// M_doubleprime: SquareMatrix::new(5, 5, vec![Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("2814820583142790141416274979593848843791966445051354609311744485305803079687").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239395759877096595325655292313585").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235696794727580393114095758303950838638130262116925456").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2881840120836666097164281526727035721025108503266863052390595544479750772048").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap()]), -// M_inverse: SquareMatrix::new(5, 5, vec![Fq::from_str("79380").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917408709841").map_err(|_| ()).unwrap(), Fq::from_str("1247400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917407991641").map_err(|_| ()).unwrap(), Fq::from_str("450450").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917408709841").map_err(|_| ()).unwrap(), Fq::from_str("3628800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917400507241").map_err(|_| ()).unwrap(), Fq::from_str("8870400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917405995801").map_err(|_| ()).unwrap(), Fq::from_str("1247400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917400507241").map_err(|_| ()).unwrap(), Fq::from_str("21344400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917387284801").map_err(|_| ()).unwrap(), Fq::from_str("8108100").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917407991641").map_err(|_| ()).unwrap(), Fq::from_str("8870400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917387284801").map_err(|_| ()).unwrap(), Fq::from_str("22809600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917400744841").map_err(|_| ()).unwrap(), Fq::from_str("450450").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917405995801").map_err(|_| ()).unwrap(), Fq::from_str("8108100").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917400744841").map_err(|_| ()).unwrap(), Fq::from_str("3185325").map_err(|_| ()).unwrap()]), -// M_hat_inverse: SquareMatrix::new(4, 4, vec![Fq::from_str("100800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917408823241").map_err(|_| ()).unwrap(), Fq::from_str("554400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917408998801").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917408823241").map_err(|_| ()).unwrap(), Fq::from_str("1742400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917406886801").map_err(|_| ()).unwrap(), Fq::from_str("1029600").map_err(|_| ()).unwrap(), Fq::from_str("554400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917406886801").map_err(|_| ()).unwrap(), Fq::from_str("3207600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917407823341").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917408998801").map_err(|_| ()).unwrap(), Fq::from_str("1029600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917407823341").map_err(|_| ()).unwrap(), Fq::from_str("629200").map_err(|_| ()).unwrap()]), -// M_00: Fq::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), -// M_i: Matrix::new(5, 5, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2138384120729133216210238944536639351029529198063656086340090677519769031785").map_err(|_| ()).unwrap(), Fq::from_str("430925869256598581059979619901622810893480096621472576118402321696822616657").map_err(|_| ()).unwrap(), Fq::from_str("6905791023730966757334096695699090540988660683321146514989458500760491707946").map_err(|_| ()).unwrap(), Fq::from_str("2148194301420875315630783057614992035703912353905886284294982957194336680745").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("430925869256598581059979619901622810893480096621472576118402321696822616657").map_err(|_| ()).unwrap(), Fq::from_str("7096083034150645230759965969905978274946678846515557153417251931105695912391").map_err(|_| ()).unwrap(), Fq::from_str("5932351284612910830979191152746502185334904741261705765154279133226164981698").map_err(|_| ()).unwrap(), Fq::from_str("155498876447134131877729347742232404866785860221427568690704209608337650659").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6905791023730966757334096695699090540988660683321146514989458500760491707946").map_err(|_| ()).unwrap(), Fq::from_str("5932351284612910830979191152746502185334904741261705765154279133226164981698").map_err(|_| ()).unwrap(), Fq::from_str("2350518484718685128114115771956300873208158044689806042328875264126064229958").map_err(|_| ()).unwrap(), Fq::from_str("3801529679297239517487911434821356384842444302894233969474469799744519903456").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2148194301420875315630783057614992035703912353905886284294982957194336680745").map_err(|_| ()).unwrap(), Fq::from_str("155498876447134131877729347742232404866785860221427568690704209608337650659").map_err(|_| ()).unwrap(), Fq::from_str("3801529679297239517487911434821356384842444302894233969474469799744519903456").map_err(|_| ()).unwrap(), Fq::from_str("161064141789703918112375350481687221800645059701191629113807689376043815676").map_err(|_| ()).unwrap()]), -// v_collection: vec![Matrix::new(1, 4, vec![Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("6408286340583520932341207843153268861256256075551980039121413094468925712571").map_err(|_| ()).unwrap(), Fq::from_str("1340086119615274224252185458358586695220872336772825641381208224119072267047").map_err(|_| ()).unwrap(), Fq::from_str("4451415431892692315692398844425511362212228553892495707821439480226537458099").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("1807245950314576945323485069523429782775508782500049071871833290319833575427").map_err(|_| ()).unwrap(), Fq::from_str("7893264646003823461671300545655338425730441117932100366170290567268122019144").map_err(|_| ()).unwrap(), Fq::from_str("8265906368109070139668510059293657506938287419087529560556675186900440924495").map_err(|_| ()).unwrap(), Fq::from_str("1337631178228955711149035970161558697810911925638959749399418478053608064614").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("4012733397339688185029782756606728191968175736528982577351136329934898708220").map_err(|_| ()).unwrap(), Fq::from_str("6262697295631829628859674125336982462934889453875154476673688239862385874931").map_err(|_| ()).unwrap(), Fq::from_str("5085825659450544986082129430646888569533264228643197338100774443583723457903").map_err(|_| ()).unwrap(), Fq::from_str("8214296039282360463957805777056728734288816395766627805951417382166579814908").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("7162544644923667500915112116076133309653944596008969459846495169522896251360").map_err(|_| ()).unwrap(), Fq::from_str("3373997690100573811383036562499702287411397323003071231117089166427441580682").map_err(|_| ()).unwrap(), Fq::from_str("5895327729868574013621755571328634355360492054173600445413603419687774128778").map_err(|_| ()).unwrap(), Fq::from_str("3655153155390178344598925297480751155136587960411459630195285823672776377034").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("7699747998683667190573326257257443176434334489687357180200982933203966818594").map_err(|_| ()).unwrap(), Fq::from_str("3880918486211403227125357133790845825293271765098151772549073002511882350498").map_err(|_| ()).unwrap(), Fq::from_str("5018897129106413988424023024305652893432395045250364584459515179910357702192").map_err(|_| ()).unwrap(), Fq::from_str("7100278641311820396566427396761409707978201825688133224217965713445183697663").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("6518730623141954010306573644275105531897044590355326935372241612175159980570").map_err(|_| ()).unwrap(), Fq::from_str("5394255754549239290175178885040217635130396352182181394460317349783700291032").map_err(|_| ()).unwrap(), Fq::from_str("3404706260422562719684687102499928656336851279333066109544800862070196420903").map_err(|_| ()).unwrap(), Fq::from_str("4043797845053143220691535549606355794819868823953702603614029735841702602387").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("230180567561092428581461883869909628734863902172888610151585847129315749362").map_err(|_| ()).unwrap(), Fq::from_str("4642835576168619384011371876621697179766987465802367981785867935128464838010").map_err(|_| ()).unwrap(), Fq::from_str("4934030569770971622965603811469514476668986112356963598588634127155387519690").map_err(|_| ()).unwrap(), Fq::from_str("3503691230462160252789893382664327522080544849459335962247315516490097579596").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("3448696766506763064921488664122067683388109240378070308156676709448926876778").map_err(|_| ()).unwrap(), Fq::from_str("1974971184441122009556496772115375292962161002530812832212668507144331588493").map_err(|_| ()).unwrap(), Fq::from_str("1315679272484053391238025676263754412872100486765166420556776065530843202901").map_err(|_| ()).unwrap(), Fq::from_str("7458140051479294430085132910723185974351606578642170493043406916481274243555").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("3658883970918202138484393719491752911081750846910156163090097729080963461041").map_err(|_| ()).unwrap(), Fq::from_str("7204901915144243045966726229598350678275522193200994363940595418294368138623").map_err(|_| ()).unwrap(), Fq::from_str("1624610982273463395799733328098985092002310069330254054246646792362848308128").map_err(|_| ()).unwrap(), Fq::from_str("7330482401692680977272729694619185888207758189295195329046170260288363014708").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("3338813109580633906063869989265057378617704595266624954767878392859302848451").map_err(|_| ()).unwrap(), Fq::from_str("8435047133814619295029990748210722482202135477420117111253773682245006266199").map_err(|_| ()).unwrap(), Fq::from_str("2252377947646424354821883714724169224519980725813350347575507063637316485012").map_err(|_| ()).unwrap(), Fq::from_str("7804489943271469550859755590908810630620936052654320832407623115458304643761").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("8134741963073580335638897620653689595895332306563951177264099671206793234068").map_err(|_| ()).unwrap(), Fq::from_str("3916367573176870199453445193421006095443930283793440358480552644010986847555").map_err(|_| ()).unwrap(), Fq::from_str("2807443924479944961063047990577549211699999696870636222333749953986165100628").map_err(|_| ()).unwrap(), Fq::from_str("20730024138333705543940448323310426825384998917533759959583780955280460090").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("5634982846356552909168661951455526441777684276429624078606664959779494619886").map_err(|_| ()).unwrap(), Fq::from_str("5769199807227671801807154686153688462327540110682030921858648823770292295337").map_err(|_| ()).unwrap(), Fq::from_str("3770184081544028155731225962265091006486124963723934965109585385773663487697").map_err(|_| ()).unwrap(), Fq::from_str("6873287763770813246328369787694155655491749572150910186277102817462904104737").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("4646322751854801234731352489207644268662735260647550764462485273822182817382").map_err(|_| ()).unwrap(), Fq::from_str("1106177822527344852088029853064171844795159920222752093412361513449207699117").map_err(|_| ()).unwrap(), Fq::from_str("7615977070072120902680534995679450341413696413443614226507798998614235255072").map_err(|_| ()).unwrap(), Fq::from_str("2616856936311864505955976015708291307959425442749790010438387383118852531080").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("5076611145057315806380004611796532954436863153873426415905889496552529634772").map_err(|_| ()).unwrap(), Fq::from_str("6902081102527110237382583596515019488448884807358018131179640480646540323029").map_err(|_| ()).unwrap(), Fq::from_str("744041210090521747176403212996560220609644796808826324835948815691090019863").map_err(|_| ()).unwrap(), Fq::from_str("538993509700570276425841464689493859828855186671495437568951258148459819011").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("4851022331350489214192529408640061599476172849031205949893936972214456654861").map_err(|_| ()).unwrap(), Fq::from_str("569544777994808532812657599082478580355343656816638141625588562619721655294").map_err(|_| ()).unwrap(), Fq::from_str("3597364319232779316358335570556114783424283640010607206642595629430943742091").map_err(|_| ()).unwrap(), Fq::from_str("7713659050528749580400659918232464057230995444599386683240849056296517494988").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("1714104864686782325311974422227029341005379520900921589669354379983831096791").map_err(|_| ()).unwrap(), Fq::from_str("6355900711983048945424422007473283840527918461797705007601376935405326826270").map_err(|_| ()).unwrap(), Fq::from_str("6205984082382470048440703786425214225955343359113630911991148473187132254618").map_err(|_| ()).unwrap(), Fq::from_str("2076639151294816049459578860566204028445513987881719318661867323279714556333").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("2050510628665020598163759803704813870250308407096768628367266423375767523308").map_err(|_| ()).unwrap(), Fq::from_str("1147702008784885247016214874553404165222986735703612060876612264638305325081").map_err(|_| ()).unwrap(), Fq::from_str("4697966359508119859326117906022250293622459077784506316415324252737792955160").map_err(|_| ()).unwrap(), Fq::from_str("119104870019254797951597780497177343456795739605918964890197392759600664956").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("4632917325047214647439739098126112871783575749914769689313563284458758801221").map_err(|_| ()).unwrap(), Fq::from_str("6451452994982073840370160322982027164291872056663366751434029645452801445199").map_err(|_| ()).unwrap(), Fq::from_str("3432373127502422641782182662002421380407799262996272602743294942636272069608").map_err(|_| ()).unwrap(), Fq::from_str("1316315767500662961923153672954995829778297399341325960570566793292339065457").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("6106335870275206321884466645892920597752410233200754229315388857462278579731").map_err(|_| ()).unwrap(), Fq::from_str("7467386598914502373332758942732190720625316109408212760281705978324855701650").map_err(|_| ()).unwrap(), Fq::from_str("1551786634777214502069901922305416941913822714689477451325915034725719533371").map_err(|_| ()).unwrap(), Fq::from_str("3466500200584207147032242453306266143878825802251700246817023516920556683284").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("5146350314785980429495014005720178366507811095593675568941623046717615145844").map_err(|_| ()).unwrap(), Fq::from_str("611125123113631169302288784250537208558041866202453194644031553350958094723").map_err(|_| ()).unwrap(), Fq::from_str("831595831080353913407905706192098025224051185124067282951606509834528216084").map_err(|_| ()).unwrap(), Fq::from_str("1761239959767681641499399040958499124277816674209861834163241497657123526507").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("8355077891935195965636780598114384991522387608183568473418584424239623706144").map_err(|_| ()).unwrap(), Fq::from_str("2395998216471419690539030043160399146748927054554741632399317733548193774640").map_err(|_| ()).unwrap(), Fq::from_str("4911199399137336421581925578885871898641848466079377965475407249142657415120").map_err(|_| ()).unwrap(), Fq::from_str("8282472002730039166457902080257450875586583951812902439081859677205227038044").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("2035976088044982521002244992226905770103287798560197492178682638945273560223").map_err(|_| ()).unwrap(), Fq::from_str("3748845008706170057393436580531906525256806972970027022383676914779783393770").map_err(|_| ()).unwrap(), Fq::from_str("3925274757659112116531148285004973609768370532274840958695263812832533277558").map_err(|_| ()).unwrap(), Fq::from_str("5965655044763142880522083648980709139609670317051589020361672943251890637758").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("2040138786635396859347000144795080313464950406231185013519129644129525513031").map_err(|_| ()).unwrap(), Fq::from_str("256060681861758214579293438089056341586094518727524321304997399150923955748").map_err(|_| ()).unwrap(), Fq::from_str("7895053450250058546899934592009133475553071409362085222130456691957607672403").map_err(|_| ()).unwrap(), Fq::from_str("7231685666803712841031131387084562867797854326747738610367605509107875369869").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("7928803288514043069953618480447888992266878100476306800693279233200985051029").map_err(|_| ()).unwrap(), Fq::from_str("6479343364072988838873072909314473020091768609709398756458063578053696923295").map_err(|_| ()).unwrap(), Fq::from_str("4434395019193169266376831601994730023199880341194868463551149883442489380082").map_err(|_| ()).unwrap(), Fq::from_str("3131373309041153411100327199836118901809968560018735631870396645754304483564").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("3643162821388047597970457214669523147688264652133075653816761827723491735045").map_err(|_| ()).unwrap(), Fq::from_str("3746322873550875690979057076192948762016325867974055854734499355952086242080").map_err(|_| ()).unwrap(), Fq::from_str("7353491477684055686670265835353779576876941836455471406278117639892940509839").map_err(|_| ()).unwrap(), Fq::from_str("5346483159704445679599865671815286565471808805775495135094281205547095609151").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("7125640106765472955270607211134272276203230836128053469725613782985442865271").map_err(|_| ()).unwrap(), Fq::from_str("2180476554376898623484277820689382499291011715851343072522196265764954291756").map_err(|_| ()).unwrap(), Fq::from_str("38244987879528426542293296038751925940824504066193680982782573408893083808").map_err(|_| ()).unwrap(), Fq::from_str("7855613662501313255649930474266680604147161519202969539768717845815826486841").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("5055986438933843320191883832368873364317518240116572837638530203232324514214").map_err(|_| ()).unwrap(), Fq::from_str("5107187010568846508576947375783223588380097816707453186027011866228251820997").map_err(|_| ()).unwrap(), Fq::from_str("1527155704876225029075283178539002144667957821730837586876720452831412121542").map_err(|_| ()).unwrap(), Fq::from_str("83286232743231027633079807253047312991621921700300791446662313822423740290").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("416117487422025150973045892837849316215884133246552744666713108400496123110").map_err(|_| ()).unwrap(), Fq::from_str("4596794245069030174934413249684378841115789128330901973892076209626356163453").map_err(|_| ()).unwrap(), Fq::from_str("4476635897223083721242202735903588461264722473527033795900430463553313137039").map_err(|_| ()).unwrap(), Fq::from_str("6239129240555152458411618176840083369027087411275697602672800535420241445033").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("2120618029047114205224326650800039459864330639346758462629614062092185287850").map_err(|_| ()).unwrap(), Fq::from_str("12415919677789867157640623442034846236990231817049027160821671860823947950").map_err(|_| ()).unwrap(), Fq::from_str("3996001719876120888023303636217577274940634204670054920681551945527488294550").map_err(|_| ()).unwrap(), Fq::from_str("2370506370778361865418536768401442133330395122579027271727633029189437839137").map_err(|_| ()).unwrap()]), Matrix::new(1, 4, vec![Fq::from_str("2547103479123232769233080593620055920761752853796241065153308233154878575619").map_err(|_| ()).unwrap(), Fq::from_str("7897284610910869169727762396873354222747288275331012265472520461429230716606").map_err(|_| ()).unwrap(), Fq::from_str("7856056754821541433644759192730501490727787655708175550478236340526889561672").map_err(|_| ()).unwrap(), Fq::from_str("1269848960708840219570534036834684287699977498945547712717199954591875972294").map_err(|_| ()).unwrap()])], -// w_hat_collection: vec![Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848843791966445051354609311744485305803079687").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239395759877096595325655292313585").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235696794727580393114095758303950838638130262116925456").map_err(|_| ()).unwrap(), Fq::from_str("2881840120836666097164281526727035721025108503266863052390595544479750772048").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848843791966445051354609311744485305820360947").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235696794727580393114095758303950838638130262043966526").map_err(|_| ()).unwrap(), Fq::from_str("99098450").map_err(|_| ()).unwrap(), Fq::from_str("7104070995550851309288693996117808986713058170843894966358212272438411793371").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848843791966445051354609311744582798284330347").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233043616198291041").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239395759877096595886443067547315").map_err(|_| ()).unwrap(), Fq::from_str("3485015960081549698896340450925717616123387027206439040100254830049465248382").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848843791966445051354609863245588054368706347").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911850183569059838995599178").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239395759880268931400489345819315").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591014122330201646382217245").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848843791966445054474406815670366956428146347").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235696794727580393114095745110060005635308041757839726").map_err(|_| ()).unwrap(), Fq::from_str("1206351678489767203464117848397363790196557047897097627052196445742846119863").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075077686918073382411859961177245").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848843791984093496387107935196475177365746347").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235696794727580393039458972786875844307033233170639726").map_err(|_| ()).unwrap(), Fq::from_str("101517116441390185985989409672000000").map_err(|_| ()).unwrap(), Fq::from_str("1072312603102015291968104754130990035730228218600851278057603946526109617656").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274979593848943627808908896521258858178651368309746347").map_err(|_| ()).unwrap(), Fq::from_str("3619055035469301610392353545192090948375343072665391436948311694520123959589").map_err(|_| ()).unwrap(), Fq::from_str("574274210887796403597026954537444480000000").map_err(|_| ()).unwrap(), Fq::from_str("7104070995550851309288693996117808733776056110805915639609695514440012216971").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141416274980158612222215330072571933647736447366462069746347").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979534406928235694406294884726060234387358460796474534453202639726").map_err(|_| ()).unwrap(), Fq::from_str("3619055035469301610392353548440714665373381744512999724441201185631803959589").map_err(|_| ()).unwrap(), Fq::from_str("1072312603102015291968104752700145638704856665849353616627070425649245617656").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142790141419469800869821755001951411295885864909727891556469746347").map_err(|_| ()).unwrap(), Fq::from_str("4825406713959068813842960220797677047530988404782518361428195639504805279452").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017338966444221089846483330430452020612203572632389006599315").map_err(|_| ()).unwrap(), Fq::from_str("2278664281591782495424128430177828907381312649284878827234443884927046937519").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820583142808214264790588893687216317178907339261907248755000932469746347").map_err(|_| ()).unwrap(), Fq::from_str("2412703356979457975304041111246343871776522299774473366670317543656402639726").map_err(|_| ()).unwrap(), Fq::from_str("3619055035469405568756039962174782129129877605821397084971624110684603959589").map_err(|_| ()).unwrap(), Fq::from_str("5897719317061038317738760385657339553512748086599565397378530693915650897108").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2814820685379449176026616665504052076169026290107351646099685110372469746347").map_err(|_| ()).unwrap(), Fq::from_str("3619054603101714647310043630542996558327680464771616450386844579164603959589").map_err(|_| ()).unwrap(), Fq::from_str("2412703945063685769379408274819105829490074908797477683092836460776402639726").map_err(|_| ()).unwrap(), Fq::from_str("1072312344082474827694833443716539604076193157389159880633969390922845617656").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("3393165188949208429097596504575610918348289351728012475955836047972469746347").map_err(|_| ()).unwrap(), Fq::from_str("7204944558504244124518521960216915771891791873867800909615650431905610558904").map_err(|_| ()).unwrap(), Fq::from_str("2120393345382531553995609688203757288976037123993199052013404464011798680137").map_err(|_| ()).unwrap(), Fq::from_str("5638818165103244107186726336375714461836064184337399349534120933263852216971").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("5748166919628348161967854967505473580632756709490802715424747454193578852676").map_err(|_| ()).unwrap(), Fq::from_str("5497321836632578531192368649598224910089844485535207438939200532607393136721").map_err(|_| ()).unwrap(), Fq::from_str("996385884157428583618520192713934508133927299185234457001925051834889684932").map_err(|_| ()).unwrap(), Fq::from_str("14569418789086142266290603292811115699386293356931371633619352839396573533").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("7354827846427448413270885936751241947792652925979739583947138284174997231750").map_err(|_| ()).unwrap(), Fq::from_str("4412223378052098937642592631972483067460807278121291371816770863671129413630").map_err(|_| ()).unwrap(), Fq::from_str("7209347833439310337756350466853679826890270509691831333559258957581197787950").map_err(|_| ()).unwrap(), Fq::from_str("8182740858060105474478836377982927458541006827523940122489493834618857115703").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("5241861450296384287079851043682233419738359190155547488029737658047894339025").map_err(|_| ()).unwrap(), Fq::from_str("6678776109614958850470018780254289485708352263785775134681041213063694265050").map_err(|_| ()).unwrap(), Fq::from_str("7380315511711642758725205867681909040056135359693482522863196065796203775578").map_err(|_| ()).unwrap(), Fq::from_str("3066544636407850157713893892878041530281074296359999668696930431683417087292").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("1163646925945490717631836311168688527445341565836154314822149762893916298833").map_err(|_| ()).unwrap(), Fq::from_str("7336522063860959626725610939508845711128785023679074944472499085746419775758").map_err(|_| ()).unwrap(), Fq::from_str("7977253681011363511052854584561542088744993941489269835685624486889180048334").map_err(|_| ()).unwrap(), Fq::from_str("6249276581582202557237401296819684143727048153346625122735390813988245734220").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("7217535999468983354199414176005171871235049431432948579663665661570070506938").map_err(|_| ()).unwrap(), Fq::from_str("7685270478326438253876359084879936513768111365316448312917683286564645177454").map_err(|_| ()).unwrap(), Fq::from_str("2538931957166067300969100905073527861005053800205404499237574636954543546291").map_err(|_| ()).unwrap(), Fq::from_str("6658257428934571553690135925316210612017854976550423552075318898208472870610").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("1727253903421378641984239228288289152914830794614345260093368662972240276200").map_err(|_| ()).unwrap(), Fq::from_str("2586825853789045313087665779427379353980634132577895462983251401050414999451").map_err(|_| ()).unwrap(), Fq::from_str("8349835322486994911058186483248558578953177684827573461744671264428362956877").map_err(|_| ()).unwrap(), Fq::from_str("5357114892160892247763327322321331896086030579971316449106295423855225128979").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("8311886661817520064334417681608000213064263766588361772050679871113471342056").map_err(|_| ()).unwrap(), Fq::from_str("118825293318917925643375939562544388214009980745421132404998573642716548402").map_err(|_| ()).unwrap(), Fq::from_str("3930998725612814064837733252370747874483387348478156374582969551567720525408").map_err(|_| ()).unwrap(), Fq::from_str("6176650730992866654519754359559849418479639444055517701269861658681464336474").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("3143958666817035906600867216379496035268863940369184345914787474816424133956").map_err(|_| ()).unwrap(), Fq::from_str("4664382549441513350922842667310727289338604394835914307092247989610061253376").map_err(|_| ()).unwrap(), Fq::from_str("417069836579026464600380714376936561596995853137158089964287163406829351932").map_err(|_| ()).unwrap(), Fq::from_str("6118304736267276038896588255931685257291894300609594861564722035310130651022").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("620442506596716843752021578297386055932452137357085645450245776839258188263").map_err(|_| ()).unwrap(), Fq::from_str("6136531434460682084028745055011686479912049709547450492544065226171421695531").map_err(|_| ()).unwrap(), Fq::from_str("3923609867366353419207719839092795893359166541793499533459599412496375713176").map_err(|_| ()).unwrap(), Fq::from_str("1131439386242437924012306454710255109701985377488919913193338934568005718058").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("1235470829699865478220361655539125402361093071203941821256378197664553417307").map_err(|_| ()).unwrap(), Fq::from_str("6771460440074668793157514492470625799777487658651367913625948476832200287787").map_err(|_| ()).unwrap(), Fq::from_str("818421747180053645304248591258749247830389219300331971408995552616190823177").map_err(|_| ()).unwrap(), Fq::from_str("1667208153711222845805460411010299470073097046240132937297109810939462314051").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("3877417423931764816229013679469055872316720243753441131569840278581889859935").map_err(|_| ()).unwrap(), Fq::from_str("3679245451573871703996029538042277557601685182154304963207911501660224909014").map_err(|_| ()).unwrap(), Fq::from_str("2185515957860175492089955633419281758958993124028687367987264728207460318637").map_err(|_| ()).unwrap(), Fq::from_str("3072090016768203366290930196466710860467160632623628217824036466603335840894").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("5922523402602629959990792280972466743807524055155444640062431175839939640635").map_err(|_| ()).unwrap(), Fq::from_str("43107947230284832968938017863302867185791527167921751354515147495917355136").map_err(|_| ()).unwrap(), Fq::from_str("8258692506632848148111935550005451527894872169055340507310206033969083482338").map_err(|_| ()).unwrap(), Fq::from_str("977355271743417035295939913549754050269040535384454724797032715083259091510").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("614729849208207161925974936985138958352853331431773565831693637299072074148").map_err(|_| ()).unwrap(), Fq::from_str("2378424569492949224963272034350260366315379900153500765825409497949642063535").map_err(|_| ()).unwrap(), Fq::from_str("6324246262442616162271799523532072108081467389465559180974898583558995294996").map_err(|_| ()).unwrap(), Fq::from_str("5622122243842417058201028636429294191394865991095798875922692865649322362370").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2128612164934423112748251853934390066981266464931170771856440022551352116238").map_err(|_| ()).unwrap(), Fq::from_str("6764516936742548565729697260329582792894124209281822837218325640225323213276").map_err(|_| ()).unwrap(), Fq::from_str("3287320424716585772069196053256591902204500504857166726822649648381315166178").map_err(|_| ()).unwrap(), Fq::from_str("2391520958092812925890702861334251028669964184529558461473866883608527569720").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("5957072848649616515873186902770275998866445560298038481080045154011837206449").map_err(|_| ()).unwrap(), Fq::from_str("5215258190858723091412123085613303099314930531987660188079461925474755980594").map_err(|_| ()).unwrap(), Fq::from_str("2224560393596634669427143232487112413813928936566792075526194710568333253273").map_err(|_| ()).unwrap(), Fq::from_str("3986269683690075554453656585259805302527870103632405295494678478718130750908").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("2978149858601239328121254971240317223551560877657845512747451621609502995207").map_err(|_| ()).unwrap(), Fq::from_str("6629506352332550014357138340553567208953894178602260967213101973416533455776").map_err(|_| ()).unwrap(), Fq::from_str("8390418494404824363562791747004489520829339721445366443098648879040960900616").map_err(|_| ()).unwrap(), Fq::from_str("2186303554319090221638668665835362129975142112962341751514027513096340467665").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("6456132847630184396504039964646929845701742244842000973106362357072558976071").map_err(|_| ()).unwrap(), Fq::from_str("6217608205768582304235137982912939040685010935224764469723948238113987126433").map_err(|_| ()).unwrap(), Fq::from_str("443960645005857651345828512221521058537348357008393130806643951434047086752").map_err(|_| ()).unwrap(), Fq::from_str("4753453807492578612925484448362122996553543129312837682265698844924484558075").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("5871441182232839872950823593835505313731115211539846303632242245521748336252").map_err(|_| ()).unwrap(), Fq::from_str("7740965820227823530156434833692069114571977612482372653706082622805514699995").map_err(|_| ()).unwrap(), Fq::from_str("7331871753577981110657588144787662468789463484664168593743832625479487458612").map_err(|_| ()).unwrap(), Fq::from_str("5544760211747097446844773606780952308162542889260931361929139749102706169513").map_err(|_| ()).unwrap()]), Matrix::new(4, 1, vec![Fq::from_str("4417541017220834592601154115220651649100169323531829869051424072294706352304").map_err(|_| ()).unwrap(), Fq::from_str("3930235853886293923058395599435827711942396145670762284199199877051063687896").map_err(|_| ()).unwrap(), Fq::from_str("1113459174453328932240774560447435803788728850389316669790526976479823190967").map_err(|_| ()).unwrap(), Fq::from_str("3897319440193179061342594292137286614859181559440152645716298371919328123888").map_err(|_| ()).unwrap()])], +// M_hat: SquareMatrix::new(4, 4, vec![Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), +// v: Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625])]), +// w: Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625])]), +// M_prime: SquareMatrix::new(5, 5, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), +// M_doubleprime: SquareMatrix::new(5, 5, vec![Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([8008150737402636880, 4488734692587776588, 1547555191554943536, 1006206882335955987]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4174856959927929341, 6956702737728349555, 11313218605335544685, 1279701926361717254]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14997388866253338116, 17951148788181031565, 14101804784614517907, 65578444326456143]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6853363902592985329, 4486369932351851910, 65610707319252285, 873172475563117547]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), +// M_inverse: SquareMatrix::new(5, 5, vec![Fq::from_montgomery_limbs([16044777359948080167, 6379307166694554861, 762089046052004585, 1183646996043825654]), Fq::from_montgomery_limbs([8310126474924308909, 16838376826344772735, 14456183264230470132, 629129040732927162]), Fq::from_montgomery_limbs([10591481161139814707, 3864831283854097767, 6360339012538312403, 727156441545813699]), Fq::from_montgomery_limbs([8580764665041452750, 2596276168345731737, 607940303702198574, 618123929142359699]), Fq::from_montgomery_limbs([18272933275584544879, 10491562475845979009, 9925929908400688531, 449428766487123474]), Fq::from_montgomery_limbs([8310126474924308909, 16838376826344772735, 14456183264230470132, 629129040732927162]), Fq::from_montgomery_limbs([11903154552578817451, 8808508453785624876, 14068444835231129096, 1259276684968074962]), Fq::from_montgomery_limbs([2548615176746366879, 17237354895530185263, 1797488250903408702, 291026391931997698]), Fq::from_montgomery_limbs([13620574122907011204, 15580574422211693049, 7152880373115697056, 985573542184802400]), Fq::from_montgomery_limbs([3137742302926509693, 15046605844466714305, 1991063102869025961, 261841845081961819]), Fq::from_montgomery_limbs([10591481161139814707, 3864831283854097767, 6360339012538312403, 727156441545813699]), Fq::from_montgomery_limbs([2548615176746366879, 17237354895530185263, 1797488250903408702, 291026391931997698]), Fq::from_montgomery_limbs([4501910777217553532, 15462242547553693695, 10499850527346203608, 185455733513899003]), Fq::from_montgomery_limbs([16090235568988980360, 8762996204253883831, 17672444665847082580, 116738187400143515]), Fq::from_montgomery_limbs([10965139192629135304, 2507527262352232221, 7729853937802466392, 18035572639182151]), Fq::from_montgomery_limbs([8580764665041452750, 2596276168345731737, 607940303702198574, 618123929142359699]), Fq::from_montgomery_limbs([13620574122907011204, 15580574422211693049, 7152880373115697056, 985573542184802400]), Fq::from_montgomery_limbs([16090235568988980360, 8762996204253883831, 17672444665847082580, 116738187400143515]), Fq::from_montgomery_limbs([10167016895964480411, 16734919608152084608, 17983964361753590390, 420319954536647974]), Fq::from_montgomery_limbs([15950905455332638974, 10638510376174954245, 6190824109415358469, 365471410765096812]), Fq::from_montgomery_limbs([18272933275584544879, 10491562475845979009, 9925929908400688531, 449428766487123474]), Fq::from_montgomery_limbs([3137742302926509693, 15046605844466714305, 1991063102869025961, 261841845081961819]), Fq::from_montgomery_limbs([10965139192629135304, 2507527262352232221, 7729853937802466392, 18035572639182151]), Fq::from_montgomery_limbs([15950905455332638974, 10638510376174954245, 6190824109415358469, 365471410765096812]), Fq::from_montgomery_limbs([1117314920009271201, 4543364499625431390, 17867254861738919934, 199268313635132044])]), +// M_hat_inverse: SquareMatrix::new(4, 4, vec![Fq::from_montgomery_limbs([2912843796488841427, 2986203785403700346, 8782906370300679609, 72348807101562454]), Fq::from_montgomery_limbs([9009169579583668122, 13163254771921611656, 12500476150373767268, 206041309714119899]), Fq::from_montgomery_limbs([7160019720069709961, 1207930472110715040, 14896636547354890107, 1070558624402680198]), Fq::from_montgomery_limbs([769834061306938378, 434866968268652066, 13507727459817144106, 1015899670515829318]), Fq::from_montgomery_limbs([9009169579583668122, 13163254771921611656, 12500476150373767268, 206041309714119899]), Fq::from_montgomery_limbs([18105737139400699747, 17092832644263385296, 11448292449964576346, 97503347880002371]), Fq::from_montgomery_limbs([2486409206805834145, 7132406107544192230, 16724002743228709842, 204690573034040147]), Fq::from_montgomery_limbs([15517856203532702535, 6456985507109804621, 5236564190669238024, 1219448662068878427]), Fq::from_montgomery_limbs([7160019720069709961, 1207930472110715040, 14896636547354890107, 1070558624402680198]), Fq::from_montgomery_limbs([2486409206805834145, 7132406107544192230, 16724002743228709842, 204690573034040147]), Fq::from_montgomery_limbs([5324099184438075010, 18365509704861776210, 485662210662411512, 332367568902751343]), Fq::from_montgomery_limbs([12123690196900787584, 13150159583617211350, 15652393172789097814, 509338692023573934]), Fq::from_montgomery_limbs([769834061306938378, 434866968268652066, 13507727459817144106, 1015899670515829318]), Fq::from_montgomery_limbs([15517856203532702535, 6456985507109804621, 5236564190669238024, 1219448662068878427]), Fq::from_montgomery_limbs([12123690196900787584, 13150159583617211350, 15652393172789097814, 509338692023573934]), Fq::from_montgomery_limbs([3535747919942277633, 17013697925000670341, 11660128334245281, 1118907618677696094])]), +// M_00: Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), +// M_i: Matrix::new(5, 5, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3550241294482541299, 4181806201361874488, 12479811686471816403, 855474765552047927]), Fq::from_montgomery_limbs([10733696657462375354, 9051038123237754612, 15768789564108221449, 598829465077611102]), Fq::from_montgomery_limbs([4780090151550846061, 8840309929769970773, 7282912445741669386, 1146189173642481065]), Fq::from_montgomery_limbs([4412170182102677248, 3666416784507971023, 16978031500730235082, 244755965167984938]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10733696657462375354, 9051038123237754612, 15768789564108221449, 598829465077611102]), Fq::from_montgomery_limbs([1513630470854066869, 4677614225413309486, 10111857031931978945, 500911903228030067]), Fq::from_montgomery_limbs([3055507272271008448, 8821455708710032658, 11214733806280933596, 435072795685184507]), Fq::from_montgomery_limbs([2339289121714728061, 16657308061121398565, 2111925237313832617, 572507462955239974]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4780090151550846061, 8840309929769970773, 7282912445741669386, 1146189173642481065]), Fq::from_montgomery_limbs([3055507272271008448, 8821455708710032658, 11214733806280933596, 435072795685184507]), Fq::from_montgomery_limbs([13866627529171609781, 9361176355530684294, 17598610984186907476, 148068116833355292]), Fq::from_montgomery_limbs([1636007787860515509, 13796006064476623473, 8087234008724486427, 424300075186376057]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4412170182102677248, 3666416784507971023, 16978031500730235082, 244755965167984938]), Fq::from_montgomery_limbs([2339289121714728061, 16657308061121398565, 2111925237313832617, 572507462955239974]), Fq::from_montgomery_limbs([1636007787860515509, 13796006064476623473, 8087234008724486427, 424300075186376057]), Fq::from_montgomery_limbs([17138718893438209806, 3832598667291101348, 16820316856178316520, 934255170445228361])]), +// v_collection: vec![Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([16333313215653526970, 2040802123570873567, 13606956490394234585, 551256550916377040]), Fq::from_montgomery_limbs([5062406009186596704, 16529967443609096569, 8069040895545372020, 1221611533051627754]), Fq::from_montgomery_limbs([8776932849639973133, 4157275033105063229, 5219893242165609753, 441476373599490172])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([11152363693389150632, 7168263193567282683, 1452700946751769356, 436217109073156792]), Fq::from_montgomery_limbs([13970337958464724119, 17109877554760172091, 12788764852517710407, 839284445089847973]), Fq::from_montgomery_limbs([15163746983822199844, 11654724925143124644, 9602216610999473293, 519210689768164370]), Fq::from_montgomery_limbs([10182434037205209725, 9621286367095233356, 8404025194304421834, 344727351078320731])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([16755358458570043164, 10280398262063275743, 17321778533676321974, 143546509776638006]), Fq::from_montgomery_limbs([9894685689427310276, 13317494114689924797, 8039678456153006986, 320726242987073750]), Fq::from_montgomery_limbs([10892251073208715123, 9975233878611449982, 11944979761650688031, 279665888955724801]), Fq::from_montgomery_limbs([2806869061497062911, 16847498917844641241, 12155099785802870367, 612418149303740633])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([1943262751829125522, 12763321846226199313, 6747770469779104151, 951539986961178929]), Fq::from_montgomery_limbs([16058796408745659861, 17170055100384124922, 1586157489739998203, 1036791847629253806]), Fq::from_montgomery_limbs([2170272984479571023, 39206051687503551, 73036971397233251, 323555571475294666]), Fq::from_montgomery_limbs([13939509715106692697, 9339647999495962035, 11925062741591314295, 1167415533183673898])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([6979434117673847033, 3048055255536618747, 13743910631909977125, 783906807780161297]), Fq::from_montgomery_limbs([17010292649383249624, 7578772047158193525, 1259524131029379452, 241494970118020102]), Fq::from_montgomery_limbs([8104232396866985927, 12510732557073130064, 9629433082008929246, 1035242752646990544]), Fq::from_montgomery_limbs([16796634656430258298, 14112008759289957096, 6452208208519466013, 1048584847398376572])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([15748961458778365618, 8601741670573679852, 9437158324168441506, 977044327661253334]), Fq::from_montgomery_limbs([5158908350016140691, 8596065138269817166, 4752647801985797199, 1176021914613979688]), Fq::from_montgomery_limbs([17831888852747325597, 9652101022265686283, 1555288054471442793, 65814168324416153]), Fq::from_montgomery_limbs([10495561656210166211, 10989451257550783972, 8015055214453272328, 409799830087238982])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([2331967402451752193, 2109682558241205572, 1825337663297053092, 878857572660922318]), Fq::from_montgomery_limbs([12336449333325242432, 5499382277476614407, 11404022977159740856, 478044609105512850]), Fq::from_montgomery_limbs([10790217870923516271, 10590091398034592831, 2798879849340254683, 1097244195350236928]), Fq::from_montgomery_limbs([13063047010146157876, 14542415641892323856, 17083019212457052807, 1089087010292700700])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([1931130401025711378, 11841912731002402383, 12257729010461348591, 475921619378996396]), Fq::from_montgomery_limbs([2043623821806520253, 6264756844797844292, 9140556588049529897, 357097751413650712]), Fq::from_montgomery_limbs([13748314028353391771, 7554401384369793136, 15484455053202687098, 1015396556130205108]), Fq::from_montgomery_limbs([12112322445843745250, 9643021818792026083, 7010640491952178418, 912560635387385014])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([15884856584565086050, 4328763398811725844, 2194324022836935036, 564940183680880064]), Fq::from_montgomery_limbs([10368325909078307315, 16258151264498137456, 12821855576160737507, 168843008052784532]), Fq::from_montgomery_limbs([6775860316590005410, 1587081089529470620, 12761600899048989463, 547743431636452378]), Fq::from_montgomery_limbs([5499459000866536496, 17225191771611977200, 15501710310620154491, 515684463452344496])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([12129682192729323843, 8486777067374758801, 1157895296096676184, 662132892983063060]), Fq::from_montgomery_limbs([174757932292384330, 3152593721116333206, 12164153154782094245, 1099436573600079710]), Fq::from_montgomery_limbs([615845028898507200, 4670618999889700824, 12443454676890805497, 518935605666369522]), Fq::from_montgomery_limbs([16912386391968429424, 5290244798379778177, 11209464492300379874, 586454799338251353])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([12080638299294159093, 1960331238298728784, 2898980097890331004, 921670658451130495]), Fq::from_montgomery_limbs([16215351708207141464, 7345269023494330137, 12994383926037492649, 224185396018231372]), Fq::from_montgomery_limbs([3554838652407488913, 6074835006636416927, 15656375499922407950, 15940578339816345]), Fq::from_montgomery_limbs([7221246958182853009, 6510601905224702473, 12824776152597435860, 725837117656279675])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([13527778764121271275, 1030490900095715048, 12857340760482021894, 936580603253300439]), Fq::from_montgomery_limbs([12930617827781800730, 3249690311936291363, 1303559984190780453, 990745867675858343]), Fq::from_montgomery_limbs([10347830123499261941, 14744724164671532382, 15017413323955480611, 865517056617574158]), Fq::from_montgomery_limbs([13222342262320869452, 930250546901263311, 6148846827329484586, 816792556508332788])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([270522433778958450, 9810558015885994375, 12801721076082256784, 428014500155741958]), Fq::from_montgomery_limbs([17216419355251603785, 16776182263454362660, 17464958086342114244, 1020854289329138282]), Fq::from_montgomery_limbs([14583513917939718723, 16464432348709798589, 5524662795591881534, 504799586387620122]), Fq::from_montgomery_limbs([9494047844709044490, 9514125194357777841, 9204079242382538181, 1326388421861125510])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([7051493540766021999, 14714874558861007051, 12179359128314955274, 431397382988804936]), Fq::from_montgomery_limbs([14285688927589864668, 8964657502437295762, 10607145890133654906, 644415764475289967]), Fq::from_montgomery_limbs([9070138432342296337, 17136148269824501435, 16709615536037568565, 1088774414904578634]), Fq::from_montgomery_limbs([9017804360060337869, 5120895363411029290, 14759539588564342239, 251323438509473927])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([614700763379600159, 12518761935375538118, 4440750989807847128, 10689910160914840]), Fq::from_montgomery_limbs([16233894446868518964, 232968488158620891, 3648936371760108401, 87053101363493664]), Fq::from_montgomery_limbs([4682437298124427841, 10048101470247329816, 5838396498674936533, 76707223622697042]), Fq::from_montgomery_limbs([4844729186655784101, 5073462805990634750, 369364776025047222, 1205067782666401609])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([11811297399794142233, 1367273165695851273, 9482096466685101348, 278101973543607386]), Fq::from_montgomery_limbs([700938287003557444, 10784390521545837670, 652198576027059045, 1257111617232546179]), Fq::from_montgomery_limbs([7023353639663907189, 844196405846330427, 3670187877020232969, 467197560404961638]), Fq::from_montgomery_limbs([3255328098459903221, 1373891119440715166, 9229957119786296543, 511813603491106053])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([7074698954249379124, 597938652890685454, 4893589759540026630, 13821006431840376]), Fq::from_montgomery_limbs([9050360858429500710, 712154751922466901, 2783564310815451475, 361791763218230554]), Fq::from_montgomery_limbs([2543657380738906130, 7730539901174656512, 9349888058233016421, 1105296308578399874]), Fq::from_montgomery_limbs([12462195693380123490, 9135340915133672169, 2529249849635714105, 1028662249374476992])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([3997059354097159592, 14396586541557506890, 15126937915868653526, 1190014880085637787]), Fq::from_montgomery_limbs([71730461663727489, 6481482986298961851, 2863781531983795764, 676732583839455648]), Fq::from_montgomery_limbs([11976979288710790629, 18385617837556037683, 2427331777175576996, 271478597561256238]), Fq::from_montgomery_limbs([14665157190813807512, 4593895870413934871, 17259515554442068841, 822957347764507743])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([7149525206288877270, 17921481572667347774, 2621958866898809461, 1253764315637746764]), Fq::from_montgomery_limbs([3409735133900390936, 136473863329815600, 15309385832522383920, 1169764220492589436]), Fq::from_montgomery_limbs([7033172430223502268, 240255878942338808, 6398794669496471317, 628797443576353581]), Fq::from_montgomery_limbs([7953065623402270259, 8501997013689665019, 5960083925037855492, 295456887863221215])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([15195370696120832657, 17781142206152991864, 2238407181422098285, 841138092128746233]), Fq::from_montgomery_limbs([12824831901012180308, 12167693598895623388, 11028443174628128031, 11577460208414501]), Fq::from_montgomery_limbs([3327689546198888048, 12391493112771759962, 307868198412140618, 1159504727071219081]), Fq::from_montgomery_limbs([3049104073000031564, 17357418971393386361, 996987970433781915, 116813261500484748])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([10884166330331702882, 17425353526410834453, 13326907998045201293, 413735914240279347]), Fq::from_montgomery_limbs([12473777284989231213, 17638157720713586222, 7280940291577634976, 165394770300217809]), Fq::from_montgomery_limbs([6075495009078142294, 15423443319709019929, 10104593150500616837, 356519351756886421]), Fq::from_montgomery_limbs([4453851468262956706, 17578058950978353938, 5693306616848551388, 65029682653071572])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([8478514957045721547, 1837595243779150041, 2731509554274646589, 1330775784497928083]), Fq::from_montgomery_limbs([5199974098799727027, 4404072971729349177, 9646912483549069990, 218329131799988219]), Fq::from_montgomery_limbs([660001227897806842, 8207988798347696530, 13044592656758679072, 480823461712968712]), Fq::from_montgomery_limbs([2124249976672750300, 16810194224873279051, 8413199247867349887, 252618070410064009])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([4556458494955145970, 14725473799943575915, 6762752380673415129, 1316259551723935370]), Fq::from_montgomery_limbs([16979681563871369563, 5158090131973535020, 2347846896725164220, 295285400051150767]), Fq::from_montgomery_limbs([13585313619033311504, 16684285379674594726, 6119191656194738492, 455955275887010759]), Fq::from_montgomery_limbs([3454774308783696473, 10535559679543981910, 15358478203203343679, 240649127531759812])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([16198893952998692648, 7621510146767446726, 5423085782991616007, 484917335576147571]), Fq::from_montgomery_limbs([12418560142694938034, 9630762732922483573, 11756502878189980458, 1064509096436490989]), Fq::from_montgomery_limbs([6432783853572915686, 8373421070941771076, 9999207991110274176, 227092656935087544]), Fq::from_montgomery_limbs([2481263986424351332, 5524660820856664127, 1844129905336978496, 940613905523784942])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([16138212250303786584, 7239588475022848974, 10699859199281641521, 591755207097992795]), Fq::from_montgomery_limbs([12068127359176715698, 9201897464239423846, 16468376872261041490, 4468311430440924]), Fq::from_montgomery_limbs([4076476707186060475, 17992082137333534347, 6815132661837439512, 278384059575851924]), Fq::from_montgomery_limbs([17018342029879137108, 15055574099156300093, 11677650203572471840, 144664137444733523])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([8317396731115292545, 18067636204720558118, 14890417508627474416, 793524012844400414]), Fq::from_montgomery_limbs([13379864138421857399, 362217527193745219, 15798919921502256623, 1097917902435666499]), Fq::from_montgomery_limbs([12810510919435274272, 14423646849331158587, 9841501271852473232, 725922426352114610]), Fq::from_montgomery_limbs([17018030548797472114, 14895024219584398144, 12492061782442092972, 762315198620019019])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([1701906145521012707, 10296626786628438399, 10754570760997467096, 336488969849416237]), Fq::from_montgomery_limbs([254576632745845475, 16526828097705762792, 14770819661184367983, 243834243852718897]), Fq::from_montgomery_limbs([4102931554245931369, 16027764780080619999, 8334572247339515265, 368246411244951631]), Fq::from_montgomery_limbs([4561744176382664009, 2911477542790161454, 3011707291091124269, 556376879137998058])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([3296358868716422366, 9039393853864308074, 17847711501823630457, 1005226492488439642]), Fq::from_montgomery_limbs([4031069363410182489, 7351394901266043534, 16764075333050932509, 1335716800346461455]), Fq::from_montgomery_limbs([7923744999493545562, 5624877492918299446, 1035450251487215992, 66195541204638202]), Fq::from_montgomery_limbs([10021219165650904780, 11526735379442916846, 15137554942549712865, 220711145305168309])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([17539749312900092691, 1394325220480450609, 8427780606119340085, 214541826368037298]), Fq::from_montgomery_limbs([14979072356738539172, 8588389061504370168, 17185566872280556497, 1119865054078041]), Fq::from_montgomery_limbs([13832855658344903569, 17699617991822202836, 12719246950037163765, 809144901785178492]), Fq::from_montgomery_limbs([5258746201047632203, 16795607952264798969, 12589457419107454073, 852487165526431816])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([18017611145361501469, 17582515812396321648, 2919031829448009162, 551871759286894908]), Fq::from_montgomery_limbs([15370904975677001433, 7214748906490449079, 16152167407980539558, 1171554702393986442]), Fq::from_montgomery_limbs([10634655764649983482, 15431077074812693397, 2552280196567255, 712776250826311075]), Fq::from_montgomery_limbs([13708388833019942700, 491334836724789600, 11731367761263890755, 1197388142335296709])])], +// w_hat_collection: vec![Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([8008150737402636880, 4488734692587776588, 1547555191554943536, 1006206882335955987]), Fq::from_montgomery_limbs([4174856959927929341, 6956702737728349555, 11313218605335544685, 1279701926361717254]), Fq::from_montgomery_limbs([14997388866253338116, 17951148788181031565, 14101804784614517907, 65578444326456143]), Fq::from_montgomery_limbs([6853363902592985329, 4486369932351851910, 65610707319252285, 873172475563117547])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([579603889306395083, 2560608140709899462, 18146698412336151881, 60258495702968472]), Fq::from_montgomery_limbs([9924506099485967285, 14841337095946012878, 6550473620052701980, 355439357201872457]), Fq::from_montgomery_limbs([12531688174264614033, 3629799128760975880, 14801960216155767350, 1064176756880888081]), Fq::from_montgomery_limbs([10680016211572180547, 7640186196594536338, 6573062001669273848, 464429714610594606])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([18417588127792957015, 16444529523188187364, 12084138139912705579, 16805794537696529]), Fq::from_montgomery_limbs([13339545413024956285, 12462761674569060732, 10134406054826483261, 583754886928078523]), Fq::from_montgomery_limbs([6246845195152016496, 16016738864936728009, 5667948898993596155, 948927193584489029]), Fq::from_montgomery_limbs([17388237537280169500, 14688406879934192659, 9909558203923179050, 70400508517387223])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([5474861045381340177, 7686087527544521306, 11338593297362199268, 1021856532337771510]), Fq::from_montgomery_limbs([8052444443922943850, 4009271504061137276, 5568866554849053281, 1340081542973701928]), Fq::from_montgomery_limbs([13718366036845239510, 18043008954918195926, 9743799172723723811, 242610881533123775]), Fq::from_montgomery_limbs([12288963833321771774, 11144465775025909714, 3141275767114171625, 895525891428781574])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([12404021506369929265, 14478431220710638983, 16528978820778867199, 1337150421852075847]), Fq::from_montgomery_limbs([14269177948606518010, 14317366494171555302, 17781066350959942798, 197359887673063489]), Fq::from_montgomery_limbs([12899528200685423645, 1817678529746564917, 2099502764987009011, 1116816677457497135]), Fq::from_montgomery_limbs([6364946926969012391, 15881033552478042103, 16127504872579347712, 382615667735657086])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([11058646051271038745, 6859926553724662452, 14087301393004364310, 933306102477549317]), Fq::from_montgomery_limbs([1055047094489815101, 4078033726602170946, 12892578489024905517, 1281158139572661976]), Fq::from_montgomery_limbs([5359943878923586203, 16376042868862104786, 5637680489769528437, 274508389146665774]), Fq::from_montgomery_limbs([9466887184987077213, 12707324624592417252, 5674722778664167831, 495915214907561344])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([5559270171112387908, 18090552370541844697, 4468532076227855438, 987685496358074261]), Fq::from_montgomery_limbs([10757975082173786027, 17106276533668884653, 16008494306379137448, 1236424776827918502]), Fq::from_montgomery_limbs([12651630831207509026, 9201507732813618723, 16271105479151831696, 1088028967768313039]), Fq::from_montgomery_limbs([1230449153550648107, 265047928608104139, 14808043482234569955, 325688046287390058])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([13141399420347535214, 10323718706655672545, 5271972852381490754, 698174654390126163]), Fq::from_montgomery_limbs([372444215127449162, 6596103022703759073, 1647706108480519163, 886941719362299906]), Fq::from_montgomery_limbs([5032445406852833227, 3216505841560606858, 6517925226383774397, 1070169747543143371]), Fq::from_montgomery_limbs([606117931900595268, 11653697130177906902, 16942600493441083920, 207641435432611378])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([10156513900929988871, 10530356278918523762, 14822893961039084664, 161451167716228232]), Fq::from_montgomery_limbs([5121741770267475287, 15513755736291034019, 15586246947451164544, 318686326614228424]), Fq::from_montgomery_limbs([10544893749060569045, 16634377462455718128, 15424965125419130088, 421312194245698247]), Fq::from_montgomery_limbs([11266056403263964991, 12568371609374858109, 3531321490936409191, 508836381468284493])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([14899630606893874181, 6378344959523143322, 5326343488656073582, 678256632460809235]), Fq::from_montgomery_limbs([8604354652434330145, 15276531567938090768, 4221676591098543719, 887292207042946940]), Fq::from_montgomery_limbs([10167720299639556674, 4032113283136195884, 15412529848138749452, 21416729784789829]), Fq::from_montgomery_limbs([1744850832220109759, 13008821337905939469, 11071631382001010551, 788542992044475498])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([2588487693831923600, 819162455518477850, 14502680861403887785, 203676022757604871]), Fq::from_montgomery_limbs([15050651530407319810, 5238818184223155551, 10359161461431902961, 163152244193461490]), Fq::from_montgomery_limbs([11621410489163276959, 8095296962816118406, 17382993292008629559, 830965834513277734]), Fq::from_montgomery_limbs([4679845673800762002, 11732742802677067267, 5456637834111887652, 399639723348579854])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([2687561395762377863, 2742745916341259698, 3044301131411393039, 723385064584425062]), Fq::from_montgomery_limbs([7499903664201677436, 10700255296173911735, 9370120751716629255, 519782401388716596]), Fq::from_montgomery_limbs([12815697858642806748, 3589518328364739416, 5217556848154698002, 1289540407776785865]), Fq::from_montgomery_limbs([5916520816310451970, 9082425633134247720, 12382542148805970812, 992107013138241122])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([6236639905261224386, 843729385509220216, 910784084401746031, 557709047224682096]), Fq::from_montgomery_limbs([15307210632392180298, 15607334968149180484, 9709374798094721055, 911705022776362835]), Fq::from_montgomery_limbs([565211768823822757, 4304458791623152845, 10249442774709061676, 1097659357675265239]), Fq::from_montgomery_limbs([12205146530944986348, 2116986434579909283, 4201175271170209969, 992267258612987371])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([12458858951338998496, 4060946816566081281, 4815111439256220560, 889585388579716031]), Fq::from_montgomery_limbs([13330737697681975741, 14306352519046153100, 6792373522794028640, 181857489562014553]), Fq::from_montgomery_limbs([9910876762206447536, 2419056950848665021, 5515306838952911504, 400668493068602121]), Fq::from_montgomery_limbs([4501996026292399474, 3944405189426212415, 2099089514371618361, 339943583855773594])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([2693369834887763486, 5226235063818719501, 1134958389215915674, 216164169472267996]), Fq::from_montgomery_limbs([11481921067854847814, 3619328605795306677, 1172215419425542958, 698824999301654900]), Fq::from_montgomery_limbs([5583148815732609314, 7533776866599928206, 4700764388317654893, 795419583657348713]), Fq::from_montgomery_limbs([17490171026965334038, 511945728425642245, 7365182481044577047, 220760401169961586])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([3475090391351524558, 14779509624823172685, 3424268588547377302, 807300922038386992]), Fq::from_montgomery_limbs([2661498283128546182, 8564296373141310570, 1331354831148546679, 288633548378759086]), Fq::from_montgomery_limbs([160646850906444279, 16524505359942069161, 907391002106299867, 559294066232203259]), Fq::from_montgomery_limbs([15868970648699916119, 4564623492190132505, 13103059063354872833, 100862674768271570])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([1221307603989354164, 12587043720970902174, 16895819776297027028, 145062209314500623]), Fq::from_montgomery_limbs([16353516398818965607, 14353195469809830563, 6413743319392341778, 328149786789847495]), Fq::from_montgomery_limbs([18408500173092127083, 15531422165208984882, 15085140826729156921, 838526002683321237]), Fq::from_montgomery_limbs([17044208833349483673, 4186851180160463186, 18439292304841373891, 635623871921935831])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([12010244824104902831, 7094652480399574006, 4750126738460582225, 989637526032941486]), Fq::from_montgomery_limbs([4441078329722014290, 13429060628884043553, 17809157578144273686, 434244385592794118]), Fq::from_montgomery_limbs([6991808242812880086, 9244601469821298803, 240701800791269362, 709808634005480046]), Fq::from_montgomery_limbs([13857085282532288295, 308678407453354502, 15922558612862651645, 851414952912951519])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([5101399957442677481, 2142578709995607628, 15743510483605305349, 666733543413083275]), Fq::from_montgomery_limbs([4873022314864281149, 13307090161474032822, 14158291996867903752, 938052837538358985]), Fq::from_montgomery_limbs([1546160817298626130, 10540049778787005713, 3368713709127751691, 363188968017269367]), Fq::from_montgomery_limbs([672262991009706902, 12218048109997218244, 13699765194488826580, 1084475947638507828])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([18346923840081698634, 12943712128874619670, 4019790911633783753, 1100400008744250128]), Fq::from_montgomery_limbs([17812255713702828327, 18006780541970109111, 15638439909761933062, 607605721282836799]), Fq::from_montgomery_limbs([2146046584044097439, 13101190276266477217, 13417007043729135623, 306909505181101092]), Fq::from_montgomery_limbs([5881505764977051707, 9027582737682954755, 13113110745761042063, 498156427767794980])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([18445494826303215741, 1922640032275348520, 18401753303151108255, 413700892364628288]), Fq::from_montgomery_limbs([5713551333083111944, 13466982107671483604, 18052718879288026086, 606241695332365536]), Fq::from_montgomery_limbs([5341312667566345417, 15999363884279236272, 3859963172427206256, 137512694474664211]), Fq::from_montgomery_limbs([17490177364963826654, 14543044352686070271, 16150001646614169348, 704698259553703393])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([9727568846190657427, 14417114472564400058, 9365197390786121627, 794983300027476088]), Fq::from_montgomery_limbs([12997373201110860726, 14246380874068335614, 13296665919577048738, 1098745640843188596]), Fq::from_montgomery_limbs([7228530868527339586, 15583029622716990094, 8861208517089803667, 82901497917931480]), Fq::from_montgomery_limbs([13638279809916295410, 128790733739477632, 8417886451161888027, 991255423238702330])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([11087968183222739640, 2587511469422769048, 14523312587696220059, 192146587408207716]), Fq::from_montgomery_limbs([8412996681904903641, 11887442821301638447, 3370639369565289246, 53949002610311715]), Fq::from_montgomery_limbs([14762391536874926895, 10740959434718252074, 1226825919833891779, 365160723178298573]), Fq::from_montgomery_limbs([1555330760834900970, 1518370310210703133, 1735267998098714592, 1025622291285303779])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([1334503499975428364, 10717052295534688524, 7361984650156075053, 844791857359624202]), Fq::from_montgomery_limbs([16941837112843173147, 2487213732723210497, 6266342779648955295, 833823163972637517]), Fq::from_montgomery_limbs([17244221202450562885, 9683927217285200288, 17625214279845872049, 72929072308819687]), Fq::from_montgomery_limbs([17322021997939023067, 12230087119796208396, 18396814271884812695, 813805950829206789])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([15948063285113474855, 10770603797800150235, 6677092062918475126, 1088103102296276139]), Fq::from_montgomery_limbs([7711244693099635983, 3166785488663936361, 4922456695483615993, 430831973502880121]), Fq::from_montgomery_limbs([3809367189852072520, 9855677685061821074, 945495584216248446, 909359350460583709]), Fq::from_montgomery_limbs([8110395815872458853, 1514592973182402061, 790829722054948037, 353129076761034824])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([4490522698778351596, 14224519981854920216, 17099540428194228219, 339422077308612769]), Fq::from_montgomery_limbs([5639095254854416487, 1620715418926540453, 2533378178940440961, 1219281352481947332]), Fq::from_montgomery_limbs([10638608741850236276, 6613656335866104958, 7688920349526656377, 267050381048915175]), Fq::from_montgomery_limbs([3036522849970263675, 6507669881427436695, 17574949570571358776, 1277705835314573728])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([2222484869463773519, 6808168746395796147, 4421285536548949511, 221502296849107896]), Fq::from_montgomery_limbs([13864906390918380841, 14542080963104347726, 4946615231209518707, 410716390051665697]), Fq::from_montgomery_limbs([17342164341678591250, 2157153117836804364, 17774122463652037556, 1045677158150316262]), Fq::from_montgomery_limbs([1897195111902571201, 7441808212794130262, 14230292566113962566, 158679422354435267])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([12385311968994581122, 13994070371431075240, 8808495601965357849, 1021378877363492133]), Fq::from_montgomery_limbs([6493128916407973417, 7997830985039481850, 7096965712368312908, 1047173662891619916]), Fq::from_montgomery_limbs([4284147259360490869, 16041408471489150031, 7607939514063442430, 829626684549401311]), Fq::from_montgomery_limbs([1856817747001420784, 16357946393175270201, 9210719327832581050, 1018175197760234391])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([5500145050367041469, 3840984581227276122, 3431832361289319237, 260564656886891183]), Fq::from_montgomery_limbs([14712945504944782403, 15039214861617765141, 11103751083365574273, 113689317515455733]), Fq::from_montgomery_limbs([701726807475653267, 14140055316542680948, 3011442975075019770, 584361997905323533]), Fq::from_montgomery_limbs([17748483580890358752, 10604246296825603311, 13033470142003819820, 599441163676514743])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([5299230594859812716, 16638780731660150925, 952927811712562861, 498189305785932392]), Fq::from_montgomery_limbs([4432890524542841769, 1996216122820571178, 12192741690714508643, 764076413945664713]), Fq::from_montgomery_limbs([13089352217465064175, 15801731950730062998, 16367845731547800506, 315925055121715682]), Fq::from_montgomery_limbs([4079387977856382544, 9219169523776319636, 17133435751310074522, 1287156460338158966])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([14473285560728073066, 3618147328828088415, 4933194636388348895, 391722132844625282]), Fq::from_montgomery_limbs([13555572770500462469, 12796156150384677031, 16297295557264104694, 523410635806816263]), Fq::from_montgomery_limbs([6170968086362616849, 306706920248086968, 4382856058195592988, 1226950348108880303]), Fq::from_montgomery_limbs([3093606516563139647, 4131257826299546810, 10588085520003095457, 1310373646887997506])])], // }, -// optimized_arc: OptimizedArcMatrix::new(39, 5, vec![Fq::from_str("3431064144647154854906922246941506182222173870772679525880648837636528462927").map_err(|_| ()).unwrap(), Fq::from_str("5974593340237813855065980531800418392229182384079544474645411722799919145826").map_err(|_| ()).unwrap(), Fq::from_str("8348426486881635683182335045339260090794248341687902711787330562710527330030").map_err(|_| ()).unwrap(), Fq::from_str("2956151886560243922621332166670498751051583313292219792564998383355563424069").map_err(|_| ()).unwrap(), Fq::from_str("7202553704068066642115231966909806322861037568682203181517551877916261334156").map_err(|_| ()).unwrap(), Fq::from_str("2216708299265206033085353198252811284979409151554807145353180393005345443076").map_err(|_| ()).unwrap(), Fq::from_str("159335743353116328456368467219460934058466648656727531382446971993029171408").map_err(|_| ()).unwrap(), Fq::from_str("6358764046359684972893522865101698862289416136086499847308829648457169884877").map_err(|_| ()).unwrap(), Fq::from_str("4565669615674819431036641511394858343600542708840534960333061188699120679516").map_err(|_| ()).unwrap(), Fq::from_str("8134340319422717456174214595572028038604616932665913260921485003742433978940").map_err(|_| ()).unwrap(), Fq::from_str("1524401355336014828526302364873243668741090019654727936642087684528900198959").map_err(|_| ()).unwrap(), Fq::from_str("4002982571574570934955320971167280988768820199359033883158331219862407490167").map_err(|_| ()).unwrap(), Fq::from_str("268956367875787697972162318645634654752917110456095075021347431474721377550").map_err(|_| ()).unwrap(), Fq::from_str("5539077933627315832517588545053557934921428562542219829976540617497684332768").map_err(|_| ()).unwrap(), Fq::from_str("8163159707574771497074276335511382452957675096097737520190925328662359500075").map_err(|_| ()).unwrap(), Fq::from_str("4977563953454029124270220726210548316848814835999821114089004208776001409529").map_err(|_| ()).unwrap(), Fq::from_str("7008664649215929946792472256484126474139232333206086319663168135693982854505").map_err(|_| ()).unwrap(), Fq::from_str("3318343362844228852737722392858921343864694811396087052570286467757103682210").map_err(|_| ()).unwrap(), Fq::from_str("4587685140645381977725355169261358248758918671032202397129872095189579561454").map_err(|_| ()).unwrap(), Fq::from_str("704287003752591898133347460228078707207754728734442590948457672014774127322").map_err(|_| ()).unwrap(), Fq::from_str("5586295855761311502524744594863435129218163429541929947376690582426001205171").map_err(|_| ()).unwrap(), Fq::from_str("8391733011947895525356558103145755651586153996819227600307615142802375273331").map_err(|_| ()).unwrap(), Fq::from_str("6630469393561382000400289179430524663489916295065821873771533616960029360303").map_err(|_| ()).unwrap(), Fq::from_str("1109520911259740216914787569407573328462215971781929174269090087208161694995").map_err(|_| ()).unwrap(), Fq::from_str("6874926153306861648013627560651588058347862924673776521132349794450940419088").map_err(|_| ()).unwrap(), Fq::from_str("3965838222357387993872732798941633989494138401156498885853618223672892943702").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6399330874905612017086413424496465904746021748409190767103673338943760515535").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5558814458953662099006280720401003483793254246900164433098794045435503006412").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2340334005966541365181685234682034352246831723606355760070814227471716001595").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1954675500092055897913532687157276063753498143943701408952567070814727487514").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("340540208950639348832923102016109209530735947243286680089215875518687540898").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2357436854552785309870779235624098535300464298885690469173298757257964119382").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3462018934266014178766235487776804985839154608881430751397652918486234970711").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1044063049294168365170078402721462762809354873509453749957547584790816988020").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6813035649556733442610311764016897223557854040794825908924270300103109851523").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4044018067045516913844071009789290879317950625762117310142177153232888356096").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1868653203487115649738079005755236598598236367392937592062280205904849150705").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6726791394075334343472039691698127736015588617148304153991343544724067108670").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1950291999421357730085374423171662827148014629672012328031862523854380590895").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6219059633728751053000297668351499077163462894220216843725670049954008543854").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4780828557940162017578536262533899313797806039539721181698737035082268156790").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5721121878740456744438587389476758019420174562938687752981204125581570963430").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5867561211947410755601595351042042408403697149309194330843428878257208657895").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4252198417541141547075711778276656368556445552839728879545937030444322399346").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2778344699887055989432043464259025126615551124514948100518415041272882049506").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5578322346251698803632685531658794659194908225359318778607226777513305555016").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8232966839681821547401638407529690561966386822119502892256433852491422050653").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4499121225475114685411416095084202597958810236637732747105373511347971882428").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6713605836687446503601801827913011022165776475791754790834016333592596378929").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("453347044754577053803100990372953718386538762077770596189181235520081931467").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4968956434668454517577486819898355337525380809048484775120963010080897245093").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5661201739272726272711005441152385472057143981405633370143408027990001543096").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6095650415124499639466126564698105792286651190045476625689204160063245637804").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4839067063734778239074829628109549897049105429856488718728300296695349725417").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7452097189792249619488027327168387314448343754189258074674033543077252341559").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1322652077946933817114865278733093858990311234699275468382653833423050745492").map_err(|_| ()).unwrap(), Fq::from_str("5645215415246962740356127494957015951514599603859670006653165433427164693060").map_err(|_| ()).unwrap(), Fq::from_str("720189655435077226693228902608508375844861111998842869300519328297727792886").map_err(|_| ()).unwrap(), Fq::from_str("185200828324752242433717554979366507039533746746071572779724308985924103781").map_err(|_| ()).unwrap(), Fq::from_str("5062274726469822209812100498705646842753986247467163742638203593135146892394").map_err(|_| ()).unwrap(), Fq::from_str("4985147731701280516122195490346401914592823270137114236360234768104112278629").map_err(|_| ()).unwrap(), Fq::from_str("2887769780031221320189923358950180519938336707834750936438152238605771538185").map_err(|_| ()).unwrap(), Fq::from_str("4215828315610408367904010758539873734811771712189857070943669192637602517003").map_err(|_| ()).unwrap(), Fq::from_str("1543632720656628126125982421130157017436958675131518792186811247089700493653").map_err(|_| ()).unwrap(), Fq::from_str("4832500060396630035991245052563913029405538648780355784888612789791420607598").map_err(|_| ()).unwrap(), Fq::from_str("5930257493267574500042037208093725122451773768067833261193177835090030231983").map_err(|_| ()).unwrap(), Fq::from_str("6502901560147376485847653671976628642790817732181058349910853757232107023811").map_err(|_| ()).unwrap(), Fq::from_str("3813185417582493541776744320547162746343924349873110184732754873079797171153").map_err(|_| ()).unwrap(), Fq::from_str("6509768824040100638521305078471095204921310149573479294107390899486522843069").map_err(|_| ()).unwrap(), Fq::from_str("3605647195366343121022521058580251119532209828115204053018233085119170067569").map_err(|_| ()).unwrap(), Fq::from_str("6769819025968586890565365669631295740031055074504963563488334106735520662613").map_err(|_| ()).unwrap(), Fq::from_str("8078839985317492794953557685153658953919163145558294969245187929666873992250").map_err(|_| ()).unwrap(), Fq::from_str("1394681604050412530833331610672526944507542631579572154759809162329384560638").map_err(|_| ()).unwrap(), Fq::from_str("7104554881094887062843081388750064718663992515537917313436084280540113848013").map_err(|_| ()).unwrap(), Fq::from_str("480898963303594644926304962428204837944253172605670175725141207630587527124").map_err(|_| ()).unwrap()]), +// optimized_arc: OptimizedArcMatrix::new(39, 5, vec![Fq::from_montgomery_limbs([9886223877583555338, 2726526174642559934, 4587790518566470505, 576729411659255749]), Fq::from_montgomery_limbs([8635683872171027649, 6178568763530680712, 4049298017970875225, 1010899895527016760]), Fq::from_montgomery_limbs([4386287284362214114, 15794275297560972982, 13426231751965312445, 1202171528338027358]), Fq::from_montgomery_limbs([748088700594287215, 1472010505444622065, 17517940238534715767, 284646916897302179]), Fq::from_montgomery_limbs([10279507610927218934, 8427605231324569630, 5256766482183491681, 599767801296570400]), Fq::from_montgomery_limbs([5616532683870270019, 16714573776517987780, 2780158541662869274, 82005381951989400]), Fq::from_montgomery_limbs([628047193644056282, 3081927050412275131, 16607349608647881262, 723666033729227034]), Fq::from_montgomery_limbs([4014053105906402474, 8516064025130570203, 16439212471763340654, 1066408903228028504]), Fq::from_montgomery_limbs([3781775891997454435, 16784197273788891439, 15993490775706321548, 1246974369195687342]), Fq::from_montgomery_limbs([13315871439997102610, 1360174578976506509, 1935727712649190133, 888928512483410116]), Fq::from_montgomery_limbs([8976641770861237410, 6687451940339132521, 18044907108310696377, 1207869807557250559]), Fq::from_montgomery_limbs([4528878922761055500, 7463187218610955446, 4533754848507645556, 35071527712858390]), Fq::from_montgomery_limbs([2054133897613963099, 8179564031063470525, 1531556284029346638, 874298192527556148]), Fq::from_montgomery_limbs([18305580017782407596, 2150793914184610589, 17311607174845242499, 959373557899881125]), Fq::from_montgomery_limbs([11483900964553043288, 12487129025031613244, 15391908241276224492, 269335905993702128]), Fq::from_montgomery_limbs([8338971145620331245, 12372781419517678375, 2199283600481834995, 349132078387032325]), Fq::from_montgomery_limbs([16711498854962897180, 964757925282058102, 2534475787702313401, 879174178299686832]), Fq::from_montgomery_limbs([9948612635577575267, 10310004629375851550, 14569008704673249814, 698796675030817938]), Fq::from_montgomery_limbs([11983101385647491113, 6756494718617323834, 3986787822213493305, 810568397631777742]), Fq::from_montgomery_limbs([263703597816264419, 5391923373962277868, 8069762938958691329, 167001460324522424]), Fq::from_montgomery_limbs([12719698031922087137, 3635206538516773241, 14946573674542408006, 904022619675467349]), Fq::from_montgomery_limbs([6762216158719169172, 9642199571024567935, 5142823812984968700, 1291046148927292666]), Fq::from_montgomery_limbs([16680204203505507730, 8087548591244649631, 15438619206653090081, 1223574451283768225]), Fq::from_montgomery_limbs([15843265781989514164, 11764842050278291695, 5504272762074655066, 1332848573377839351]), Fq::from_montgomery_limbs([14629863041087566865, 13982939885426451475, 4404573463578858817, 228759527459751766]), Fq::from_montgomery_limbs([5809286761889033537, 11277370821793444978, 3107117479578979614, 305735955848689987]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13948409934814415504, 9820154694698383592, 15339478710638889187, 228350902630534490]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9065604528638698957, 3194171905752976735, 3352166936878863002, 1231275645191263862]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8579200991377095094, 9015821969914095981, 3670786722209097686, 925402881763579823]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11761775895269121220, 12572917397999688032, 10698111778021992718, 739030648247632040]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1406476064536236033, 9641904169359584691, 209897974740814668, 1004730517253795328]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18342895263686664503, 17441455493733274041, 5057199659823690304, 1191886919996393979]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18290582194527069827, 6852353546873280582, 14232314971261025505, 754530050701193486]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6721150425319195661, 13696483494608803551, 14639895569983779179, 190432279900459470]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2285783420521743219, 14591994399938496304, 12535886408060618378, 501101710489306684]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7822724896156552074, 7689777522145170361, 9730977649721376401, 311055255784537528]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1834958024306476590, 16605000872934730848, 8734772715942251355, 1026168817960127241]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5790287081621506475, 18067297368696384877, 1971894623462079455, 497112957651892314]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8621725523835646269, 12965774417410118256, 14706095127353190822, 1142857683996139025]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15741284293667530319, 12915384592541106208, 10337602748724507139, 621400944646732378]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10418600921631639086, 13969232505211882397, 6670084530256782375, 589250133235990401]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13301798549602548743, 5096901969148881844, 14446280392699573069, 437782466408137787]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14260778386751756941, 15721044723566323721, 9992114336939362025, 1127453549788190537]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9374740633145639151, 2749992728162535287, 324605534042342541, 875415928381457928]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([267437928690707389, 15443945850723586497, 12627722626447870588, 76078095185201612]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10923993363806369263, 18267784178840739395, 14630481450219570438, 378947118067140053]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11403976482284459978, 16272983986590444793, 3765503922077751896, 79364539722273290]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11448721382876703681, 14847931759131246244, 7128092965784075415, 180922588002186450]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12703693405537318683, 17809616441104653297, 1356025434738010042, 678042696111256776]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1581134933636608728, 8974334562566747609, 13981094886159927949, 879338632538017255]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13448202253461902078, 6113850066861673560, 8363760165130703945, 430895863395699323]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11364646780735898548, 18310352822657651209, 1715448934469054774, 373623735103410086]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5160483194403952864, 5269789810582188597, 7949343741254368028, 648244985265401351]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2578613260896705768, 16973829270463026541, 1007269524128147481, 588832280601996335]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18113257874564708980, 4260053189158561988, 17013073166096369676, 79169829782754517]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11433643047469980018, 1276670802646402384, 7225445039450827835, 1320607862737647658]), Fq::from_montgomery_limbs([9049650314779674715, 15332775679178116922, 10916059016321665268, 1115159218126791192]), Fq::from_montgomery_limbs([5320499112936763732, 11250539854586634824, 12063947087263213252, 710935487070228339]), Fq::from_montgomery_limbs([18379608258942880321, 15727113804916673274, 10498320535108511002, 845002076776323646]), Fq::from_montgomery_limbs([6828593483180812035, 1682481325156526923, 14049047336459608184, 1126148273021080778]), Fq::from_montgomery_limbs([3872917422679565944, 1271915972458656550, 1092693023912110895, 1298968277402891756]), Fq::from_montgomery_limbs([7814132502258843917, 8078742423972593556, 8536158594561933049, 191277843487617954]), Fq::from_montgomery_limbs([5652311561512870887, 16495461651672765449, 11098657231551158518, 493087321946801171]), Fq::from_montgomery_limbs([6368409936062697439, 792796763844864197, 5610460501625398581, 546867399856191995]), Fq::from_montgomery_limbs([3038217149528838505, 8627484827600343283, 7414393357134479493, 985381996389905690]), Fq::from_montgomery_limbs([14953970136252134871, 295452924685135549, 11287279099077480718, 617093465173114131]), Fq::from_montgomery_limbs([140435627222783551, 17855535656574994648, 5022512547318532764, 473386213985532003]), Fq::from_montgomery_limbs([7030554896034226352, 6441059691989760702, 581099786512472761, 1269259459863271622]), Fq::from_montgomery_limbs([6770052323275442396, 12901743183408121797, 13004549993560303547, 969914125748537569]), Fq::from_montgomery_limbs([11435239377991792553, 14044046789306606033, 11369816462011584822, 1239930404010674345]), Fq::from_montgomery_limbs([2621636762951244377, 7758290588105338214, 14625731574391580682, 7696703746211481]), Fq::from_montgomery_limbs([8270493924131469556, 15946263820341678216, 6122109191607485742, 1119062509985100783]), Fq::from_montgomery_limbs([11252124749266599346, 8413749501404755931, 9936257142296575431, 189818330075783365]), Fq::from_montgomery_limbs([1537275707366966513, 2232381660897701103, 2870196216416932989, 1271177660936312287]), Fq::from_montgomery_limbs([1398814984843324301, 15240858180305901997, 14386262707998656254, 1102388553837536368])]), // } // } @@ -1174,24 +83,24 @@ pub fn rate_1() -> PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> { // PoseidonParameters { // M: 128, // t: 6, -// arc: ArcMatrix::new(39, 6, vec![Fq::from_str("845774603178492790430819572559948899425806472242990359595837698866402459283").map_err(|_| ()).unwrap(), Fq::from_str("5104113060992167207950156191834052800250377917110335646977277694909225606639").map_err(|_| ()).unwrap(), Fq::from_str("606930867215997902681408163383822852644874536120525401359262311657265176286").map_err(|_| ()).unwrap(), Fq::from_str("3246189740533673369325580437595636125853593448497295559526133710916170023325").map_err(|_| ()).unwrap(), Fq::from_str("2228557437175639577799724834018880269762506939154314745471148408315031040782").map_err(|_| ()).unwrap(), Fq::from_str("5248714497354123146476603303736275602516846846345343189695992364680008748274").map_err(|_| ()).unwrap(), Fq::from_str("4468660183396113816417160760392174946434715734046476615756949516900460245783").map_err(|_| ()).unwrap(), Fq::from_str("7393542747111210649333111074982387945081968569023142501741239756021903723895").map_err(|_| ()).unwrap(), Fq::from_str("7199392773674619989102817361994783385540000190771324931792999149811086723727").map_err(|_| ()).unwrap(), Fq::from_str("4179131455162240247318123589436646198639084830612188212185789176671108496032").map_err(|_| ()).unwrap(), Fq::from_str("24442689501566866103376042248929386407192919728660696030608041405438957133").map_err(|_| ()).unwrap(), Fq::from_str("3097787510685557034777264781234655318746563426795026202239222093602417399558").map_err(|_| ()).unwrap(), Fq::from_str("6574238658366226506536641479793831030684930753068170934418220861949357860591").map_err(|_| ()).unwrap(), Fq::from_str("3230736603041831131224401646930510293150560782678475479524520009468240625703").map_err(|_| ()).unwrap(), Fq::from_str("4449397682136210685399058399525408353602443323667935079724525731105410330857").map_err(|_| ()).unwrap(), Fq::from_str("1462805245535093331717840709705014862484623276551060803969576565098857503359").map_err(|_| ()).unwrap(), Fq::from_str("5430193997486659445858726501908887547497708817666434922669358130281149310067").map_err(|_| ()).unwrap(), Fq::from_str("8182992080105598491896178755005741632616297373995328206793063427977612612424").map_err(|_| ()).unwrap(), Fq::from_str("2470198070508873630088316330360042099497336224174355851511490652176698623455").map_err(|_| ()).unwrap(), Fq::from_str("616202094790463990913669657355701717237705251976201488136276464144059917047").map_err(|_| ()).unwrap(), Fq::from_str("4300832028822930023146879288491662568841103305714742296374296369784204253894").map_err(|_| ()).unwrap(), Fq::from_str("3476274661803244432899568134341751009082965077671317942410157824155554772073").map_err(|_| ()).unwrap(), Fq::from_str("5064187415312733563044421812957719834749578846215859205757776767013163169207").map_err(|_| ()).unwrap(), Fq::from_str("2785720285300546669174088113375060468705507039789824059878564962780494844393").map_err(|_| ()).unwrap(), Fq::from_str("3955439879096535600770596087986987521484177541728792312152110382971886552324").map_err(|_| ()).unwrap(), Fq::from_str("903856851374014040347659555593632700335680221489370005350941124277345446123").map_err(|_| ()).unwrap(), Fq::from_str("4895401528580538578197095433262526637580426196822434256427161231133334295675").map_err(|_| ()).unwrap(), Fq::from_str("5648346646350183867284790510877028718205611511413394919080061462693730281546").map_err(|_| ()).unwrap(), Fq::from_str("1355370740565781139942863802725256415305660265636533288615995983856809414029").map_err(|_| ()).unwrap(), Fq::from_str("4492648249860957650851177365194984343910427247177102136729895011065514916187").map_err(|_| ()).unwrap(), Fq::from_str("4329492389108771825144079889394256488249153510854480955288949134855093604169").map_err(|_| ()).unwrap(), Fq::from_str("5810883949128212012849651527927095153625927912982491102336953941756119383024").map_err(|_| ()).unwrap(), Fq::from_str("745230929536301694839058434825580209210952065402030795105052872210695113978").map_err(|_| ()).unwrap(), Fq::from_str("6824796306474603258822493495675887167444932740597690201928301954595067792786").map_err(|_| ()).unwrap(), Fq::from_str("5862361504652656026849345150631994357849056901114555854828370594245684576589").map_err(|_| ()).unwrap(), Fq::from_str("5689114263606895263929252423354025539068244060577412456834090100133202449501").map_err(|_| ()).unwrap(), Fq::from_str("808996924441865833437445466881261877339104224701775307380191367855500551709").map_err(|_| ()).unwrap(), Fq::from_str("8369018150288133225788400978082154796228251164581602665345878758411724734440").map_err(|_| ()).unwrap(), Fq::from_str("5422892039043420257946460796978469383542115840049823331066028321773489553840").map_err(|_| ()).unwrap(), Fq::from_str("4759532913919471748077109277312912270920142620933001277672083762634782304860").map_err(|_| ()).unwrap(), Fq::from_str("6635834972740869401402846471957760389835104503078639687189505646883078267050").map_err(|_| ()).unwrap(), Fq::from_str("2180357492069277982978421447716964286298172906113645264525526539513647929451").map_err(|_| ()).unwrap(), Fq::from_str("1543790854439663004266297482741275425236694694794837346043593830373950964684").map_err(|_| ()).unwrap(), Fq::from_str("934463790260438488912680781683319399046678080815540371325926063726693258316").map_err(|_| ()).unwrap(), Fq::from_str("2186851943069145638222582980805398139896784251442482314015542120928261450486").map_err(|_| ()).unwrap(), Fq::from_str("2412160749224996310088578134225153622616811224475337205311590933677253673878").map_err(|_| ()).unwrap(), Fq::from_str("7695670784620822879010065180124901695635154588003320830927767666974648056338").map_err(|_| ()).unwrap(), Fq::from_str("5922342388326275454416533801936916843303810548091342035450746483214299239433").map_err(|_| ()).unwrap(), Fq::from_str("1626796117599038929107160841446540268065680312095803823646386071293624738956").map_err(|_| ()).unwrap(), Fq::from_str("3723894365042872951008952527495970802881113713273866444298801207152897112399").map_err(|_| ()).unwrap(), Fq::from_str("3124762799615037750505825747310314071538244722211644570130000309355042335236").map_err(|_| ()).unwrap(), Fq::from_str("4398142109789539554397950800974126093455781299196527221772449847244505962068").map_err(|_| ()).unwrap(), Fq::from_str("5191924005039724187421181054530943291389774141755095477416337174609761394244").map_err(|_| ()).unwrap(), Fq::from_str("2785691573715023678345146226582781727453009049889859397213505583302164176974").map_err(|_| ()).unwrap(), Fq::from_str("1692865380955225891313695435924848311770152603367254817109708783517944701458").map_err(|_| ()).unwrap(), Fq::from_str("5740996178635184840130794938793759737845291624356154466822199165827559215996").map_err(|_| ()).unwrap(), Fq::from_str("629048164528450855828641693378949447919081668499695702800776487092117499681").map_err(|_| ()).unwrap(), Fq::from_str("7838040784187025691292915248729484438528565912103486033688447138210990601628").map_err(|_| ()).unwrap(), Fq::from_str("277825800544950901375905897976554734011179501252710007984572644325060195668").map_err(|_| ()).unwrap(), Fq::from_str("3573950673351768341596829285012110326873174826710921664927116238368645987265").map_err(|_| ()).unwrap(), Fq::from_str("1954385223571002660618067888551643335278824908978569230924580545853863253296").map_err(|_| ()).unwrap(), Fq::from_str("3280591263674701729230889786293421229344217394582188890523979353297481519915").map_err(|_| ()).unwrap(), Fq::from_str("2641145634481240269631127178194359324994015540110388568200378466009164847634").map_err(|_| ()).unwrap(), Fq::from_str("510014107782217049609305419554240375108180404505381192548757091140846836195").map_err(|_| ()).unwrap(), Fq::from_str("5791727637040073168347254632756741113350426678148566497620918219062449626066").map_err(|_| ()).unwrap(), Fq::from_str("1515530830048633560956896860547539068191730708819568650745448852244645668565").map_err(|_| ()).unwrap(), Fq::from_str("4062117359039639099790825319573396597524575522991965004241027520315175746769").map_err(|_| ()).unwrap(), Fq::from_str("8077604972923302071609856302702548716244843142972321053845777990299628343924").map_err(|_| ()).unwrap(), Fq::from_str("6883469805232035047303165681612355811006463914153298651225845064283571480407").map_err(|_| ()).unwrap(), Fq::from_str("7069733541849801646056409828059140471389948859025556787594300665570570640093").map_err(|_| ()).unwrap(), Fq::from_str("5111488081820384284582456604902295506474499510148161974044782999536795472678").map_err(|_| ()).unwrap(), Fq::from_str("951739538321083558162954190716831881445104353478325886809807144890602444880").map_err(|_| ()).unwrap(), Fq::from_str("5576968375586952492715372518216353184444829783871889310474622851012373412727").map_err(|_| ()).unwrap(), Fq::from_str("3738378363114658873850673065632442970572354982406771981154818174118783760351").map_err(|_| ()).unwrap(), Fq::from_str("7085217053698299540943905339943013879591867088664807037548604127718635170607").map_err(|_| ()).unwrap(), Fq::from_str("1243770513927337778182422448361198850137863107625225399527564470585686277778").map_err(|_| ()).unwrap(), Fq::from_str("2455706756578844172374999537652164934241896709505121508439861969323756753548").map_err(|_| ()).unwrap(), Fq::from_str("1192232316586916994784972201990731490438791718559527129470126178591533976493").map_err(|_| ()).unwrap(), Fq::from_str("4517504977719076695469211964474074773739696135499467806638247340490078446601").map_err(|_| ()).unwrap(), Fq::from_str("7553708361104427886890847840974837551257803206243713474691780065106433271079").map_err(|_| ()).unwrap(), Fq::from_str("2587075644848123870074792242454603061838992298077876642730434622712692686270").map_err(|_| ()).unwrap(), Fq::from_str("173588832775839102721672024190884329602241291800352973909370376510736082221").map_err(|_| ()).unwrap(), Fq::from_str("688472569950966756053552347244458704900509840525673302053163309999091579121").map_err(|_| ()).unwrap(), Fq::from_str("2352046706728596036488802195059640933035395261457352632670222145121490161643").map_err(|_| ()).unwrap(), Fq::from_str("7073575640855838071763652945175738332390047626204526711901743359026021113742").map_err(|_| ()).unwrap(), Fq::from_str("2046389921981736047805298636213531692386373936005050836730626898158653505324").map_err(|_| ()).unwrap(), Fq::from_str("563321919927185801891684586810044445483326043795854450295190605906301369521").map_err(|_| ()).unwrap(), Fq::from_str("2889560537114800351260900365764145025271368172807980502228650924152700482686").map_err(|_| ()).unwrap(), Fq::from_str("3666589997079555397305833747977806903409036424008849706574979198788716406192").map_err(|_| ()).unwrap(), Fq::from_str("1918355409774704608237986221225759376350370097933394351471037522396452825048").map_err(|_| ()).unwrap(), Fq::from_str("4369269652222651377930121722266159133596441533744245682724913998469020685239").map_err(|_| ()).unwrap(), Fq::from_str("7837833457952524445039685470136995896897287733616574115849057519215223782346").map_err(|_| ()).unwrap(), Fq::from_str("628213450553258613851440709956500749794581186558724188918468103441806105330").map_err(|_| ()).unwrap(), Fq::from_str("2644954814082884292817254547594534999080939064892852771810159803469141128660").map_err(|_| ()).unwrap(), Fq::from_str("7859812225594642554440576251126430923621572949680294169949667671791095952475").map_err(|_| ()).unwrap(), Fq::from_str("2464974871554679933883652897027654206618138056032028622174969722545768552379").map_err(|_| ()).unwrap(), Fq::from_str("5132270167540347614041702481962392404041377447418996321667139515916634164383").map_err(|_| ()).unwrap(), Fq::from_str("4598105830574976900645044571546715789904336050221613120678525927302780728037").map_err(|_| ()).unwrap(), Fq::from_str("3808501141538620978353097012892379364836506340699026351199757900236242566613").map_err(|_| ()).unwrap(), Fq::from_str("1891544728221108359734223022373179882263705759938125476452464221325816178498").map_err(|_| ()).unwrap(), Fq::from_str("6005030543218026726459052340654081530413236195762174005947985599626093524736").map_err(|_| ()).unwrap(), Fq::from_str("1240332940925172223780697145452602160665050403038368531584945872125564048652").map_err(|_| ()).unwrap(), Fq::from_str("6705885002056761550002268384728119172344212225730006658468643832688992534447").map_err(|_| ()).unwrap(), Fq::from_str("870837793952435415833012579028217019216352769807065186182707161903249365374").map_err(|_| ()).unwrap(), Fq::from_str("596272418044934975814628040788830716009647699332221675956979368500086249769").map_err(|_| ()).unwrap(), Fq::from_str("590861359490467631502512021552521037752701710394631946974031331319157115545").map_err(|_| ()).unwrap(), Fq::from_str("2770526343670399800546133608119769774079504653574715594043898973680079888138").map_err(|_| ()).unwrap(), Fq::from_str("8268687277875236079426782059572937996067109214725376871100880774536852862519").map_err(|_| ()).unwrap(), Fq::from_str("1453016007424520027464263999937432978604227655266267727016149187553644944843").map_err(|_| ()).unwrap(), Fq::from_str("7235861308242939841519205133571690399636877042720031807266145091504550721031").map_err(|_| ()).unwrap(), Fq::from_str("5126147988300793477390589565054838817540212084762587014887829332327848369169").map_err(|_| ()).unwrap(), Fq::from_str("438854660004065569962723300303346605327281161374837025576031680377685082432").map_err(|_| ()).unwrap(), Fq::from_str("91951995490099536724921221454897283566677877944037951784180382949300930772").map_err(|_| ()).unwrap(), Fq::from_str("1107661872194632786253588128163989817213101209276790729233683013026264806076").map_err(|_| ()).unwrap(), Fq::from_str("1654806774558560978350082606883489436628379535257346078063478260232950936001").map_err(|_| ()).unwrap(), Fq::from_str("5299015818929677169233319120340539340265058652234073886970067026596732756240").map_err(|_| ()).unwrap(), Fq::from_str("7772032344557055789473144533013363290423925670310807731772582414686518246983").map_err(|_| ()).unwrap(), Fq::from_str("3781965444202188790948716527662927985928671682325757229996041227860932259893").map_err(|_| ()).unwrap(), Fq::from_str("3345484155609065046923654366504419685132775997107976310100855047314629537945").map_err(|_| ()).unwrap(), Fq::from_str("886945731469951937230186365026270061024133910511162189208804592908807421134").map_err(|_| ()).unwrap(), Fq::from_str("6735354038022791413411799972681524306841369414753589465401652145649893222116").map_err(|_| ()).unwrap(), Fq::from_str("1935117914710639506839948974155446287660212703897621867518465397455687997317").map_err(|_| ()).unwrap(), Fq::from_str("855836548574080114601916891505984130878216928022975612750979799120091434536").map_err(|_| ()).unwrap(), Fq::from_str("6541068365002563151205073625711854613364910696189682088601091986677675751677").map_err(|_| ()).unwrap(), Fq::from_str("3498203401466608248029771452067242050946831044174273574437971472156132555545").map_err(|_| ()).unwrap(), Fq::from_str("5113365157282840449327935310535501855639019267017306230851155734274025341646").map_err(|_| ()).unwrap(), Fq::from_str("291100427574399729560780717351972080591539393086517336307028577912593013831").map_err(|_| ()).unwrap(), Fq::from_str("4951010832572423033521238427671762783591568531387570598358269339024866827335").map_err(|_| ()).unwrap(), Fq::from_str("6935368986020846114707416514328424867573175695145493395077868865185617799391").map_err(|_| ()).unwrap(), Fq::from_str("4421971408527793575481957827895041934289426777376804824177340219920981801657").map_err(|_| ()).unwrap(), Fq::from_str("4784361067181816247789889520295070061832726789026477505365383939286519144408").map_err(|_| ()).unwrap(), Fq::from_str("6902379648170088933617436373897616173595882356130186403791413056270227800502").map_err(|_| ()).unwrap(), Fq::from_str("6890311521046371152310648533652283251426783710484642145760005912415621394712").map_err(|_| ()).unwrap(), Fq::from_str("3300582426830885345413237962331861645988116189322590437878618036229655228428").map_err(|_| ()).unwrap(), Fq::from_str("5090277775105731415197015754947566338715568795794847919279947457422265443449").map_err(|_| ()).unwrap(), Fq::from_str("396921746521892469461557335185976382781853380654969258411823431243806455688").map_err(|_| ()).unwrap(), Fq::from_str("8384501355732847401218401102526488908702450320580023201077894184976420556785").map_err(|_| ()).unwrap(), Fq::from_str("4764574141621557660053903705971467036411372552800329876657296245830060443992").map_err(|_| ()).unwrap(), Fq::from_str("7786943704826706588463473337942405786044210321706142706927435732999415767183").map_err(|_| ()).unwrap(), Fq::from_str("1817473587524440089144895391903436778798535173783973332406851648812698487555").map_err(|_| ()).unwrap(), Fq::from_str("199768027164126325197499205773349092784092142502602563137991122024578099815").map_err(|_| ()).unwrap(), Fq::from_str("5592784808658901953566444970229204675934909742023516487415562778712500171029").map_err(|_| ()).unwrap(), Fq::from_str("7620340343787977874067631290920104590169271224142858442645657016104413457398").map_err(|_| ()).unwrap(), Fq::from_str("4531502143772496384774062845794045410365749164589015318655428240554926597995").map_err(|_| ()).unwrap(), Fq::from_str("4993305698422614856289671053519926031361089612904479987286491040391712482429").map_err(|_| ()).unwrap(), Fq::from_str("1890101427505160393147728749480064034516466297677175077112633380526566236058").map_err(|_| ()).unwrap(), Fq::from_str("5777281016333369264986610261188346396030534666250672641152082126185804749740").map_err(|_| ()).unwrap(), Fq::from_str("7839221969235308534078159764872000639821536123875603912702299684145204380160").map_err(|_| ()).unwrap(), Fq::from_str("3205057772845384833329206892928677349487498971289086382710347717915882818387").map_err(|_| ()).unwrap(), Fq::from_str("8119267339349926842126372240333651422996583825113253720424775804781521986078").map_err(|_| ()).unwrap(), Fq::from_str("3541274357438770457278740081604948896951607173096751567588339188240343587595").map_err(|_| ()).unwrap(), Fq::from_str("290757239501256464281974319850268179358662536223305681014142855521000605129").map_err(|_| ()).unwrap(), Fq::from_str("3071795883807429601760312489207584712202767955806390155178335149304952398825").map_err(|_| ()).unwrap(), Fq::from_str("2376618124397754632570020367749950740904737073526939363500757591197899617122").map_err(|_| ()).unwrap(), Fq::from_str("206798018418970104427289899440162500428696692501901429830471906604011912270").map_err(|_| ()).unwrap(), Fq::from_str("4755391599331725804664984944827163791721202205735446451644543027687031821412").map_err(|_| ()).unwrap(), Fq::from_str("825885866173484121307436671573108094221492254598722927119615006712194124911").map_err(|_| ()).unwrap(), Fq::from_str("2554638268213382787236481747062958843950147861737617670383068148152942457822").map_err(|_| ()).unwrap(), Fq::from_str("2846332734288761728092533071935216073869730549808584348860720441846764249060").map_err(|_| ()).unwrap(), Fq::from_str("8140056372785622325821510019216173231544546860946218530108241178917141036125").map_err(|_| ()).unwrap(), Fq::from_str("3708661993392803182560096909194707704900572251782516388035351978778086482595").map_err(|_| ()).unwrap(), Fq::from_str("5462469894352895012387443184076510991117644168796409935593089390964595954058").map_err(|_| ()).unwrap(), Fq::from_str("756893933329149216114995933232110216914946913119357650801068709290047034518").map_err(|_| ()).unwrap(), Fq::from_str("2447945711614149209913513234270533470460209666560096392318685246536968254472").map_err(|_| ()).unwrap(), Fq::from_str("1134198837651298699993639361275019476115730882147922184917166090565013467508").map_err(|_| ()).unwrap(), Fq::from_str("1755288660598099185052035115110542043284452173265064594131632137624805738180").map_err(|_| ()).unwrap(), Fq::from_str("510538634282373743904146284199874486762693661809757989711020777647075293075").map_err(|_| ()).unwrap(), Fq::from_str("826966302105312470674240268858124246133696705864093299788439721923379016305").map_err(|_| ()).unwrap(), Fq::from_str("1750809347796748589511123598922662511635446465703935272886403540563467330233").map_err(|_| ()).unwrap(), Fq::from_str("3626991385382608566768761890341220044016693242780076470174738941265485425314").map_err(|_| ()).unwrap(), Fq::from_str("360348584317309909985270834673815135682631720292975971545336619603481745762").map_err(|_| ()).unwrap(), Fq::from_str("4564839267288916786501013466229926140412093800603133844524552065387906801716").map_err(|_| ()).unwrap(), Fq::from_str("6731962821686325580491822590807595591516010492426925869422925491550114043563").map_err(|_| ()).unwrap(), Fq::from_str("5884996843015305279328027270671228828244349412683455539628045212132549103434").map_err(|_| ()).unwrap(), Fq::from_str("5189699219035443729248026969423575778754558635620920805212526651474704902578").map_err(|_| ()).unwrap(), Fq::from_str("5325976490193957822927622455671647646603185177010209181965411453981815963049").map_err(|_| ()).unwrap(), Fq::from_str("8189755814353767680068199430929447851704481078623723570153513525669822406097").map_err(|_| ()).unwrap(), Fq::from_str("6157055685635155061816282753616307622315156952439123462858148972106996453338").map_err(|_| ()).unwrap(), Fq::from_str("4201443354832317957691366223622197686387205675733895050729606292298190689853").map_err(|_| ()).unwrap(), Fq::from_str("849597153897117936797701767259263904590444676970302608546075483402824391328").map_err(|_| ()).unwrap(), Fq::from_str("2945366299097873820253575618779513867059321098836127479959682115946982771917").map_err(|_| ()).unwrap(), Fq::from_str("7946653222569265397764318698413928169499651050649268009911222688601500390672").map_err(|_| ()).unwrap(), Fq::from_str("3955061461222581068601244439388826478669033795790473128916746329755786289284").map_err(|_| ()).unwrap(), Fq::from_str("194902351476461639988128064826878155874357885737577568105691315784520420076").map_err(|_| ()).unwrap(), Fq::from_str("2054875403271951293619717373098091903658609846623347825919751394462777938388").map_err(|_| ()).unwrap(), Fq::from_str("6441120904147472372550187739425848354244468105458500059042779636280801202457").map_err(|_| ()).unwrap(), Fq::from_str("4856788126042824068308010187982525046239888485345219768329006082892068367665").map_err(|_| ()).unwrap(), Fq::from_str("291355279724374270206817442744099818390821254539005941893927823600431090853").map_err(|_| ()).unwrap(), Fq::from_str("1987858570061722835269997391515207714420109886745501944587207694341545573745").map_err(|_| ()).unwrap(), Fq::from_str("3213696719405985950289957594066603035440198598621404524099958706191996916055").map_err(|_| ()).unwrap(), Fq::from_str("3005981521615064443184046401148647754512179755748924576301732266415319201297").map_err(|_| ()).unwrap(), Fq::from_str("2621411314517739021870228316134584284694091320967256272368122750867976114943").map_err(|_| ()).unwrap(), Fq::from_str("7044578135885591725348038581874780601165738393226558075855473709253694858765").map_err(|_| ()).unwrap(), Fq::from_str("3003220922495241282655735413996630729519553770972180584442298080972720748264").map_err(|_| ()).unwrap(), Fq::from_str("7723261051877303220236858567809477006874896024734639539531973748526330317016").map_err(|_| ()).unwrap(), Fq::from_str("6404320974745578378302587290517107323819782685010985251583355344679861736033").map_err(|_| ()).unwrap(), Fq::from_str("5473811960341434292420779879705750079331871157096848113243437846687173829015").map_err(|_| ()).unwrap(), Fq::from_str("3489362154903554568885782086499864957754221063165434871466496609450654757851").map_err(|_| ()).unwrap(), Fq::from_str("5738878929953126406493977001869762275333317480749038212477224999749019607973").map_err(|_| ()).unwrap(), Fq::from_str("248384180902759531389147295685029971514643266708326177840910974710306996426").map_err(|_| ()).unwrap(), Fq::from_str("5448949389711611701165263801434301259910541121459696467135117978579062982902").map_err(|_| ()).unwrap(), Fq::from_str("2568952643386068771964897899771681909344031860769927373561450745675519140028").map_err(|_| ()).unwrap(), Fq::from_str("3670604557663154805581972806834034192285098072136928082384930398916206366631").map_err(|_| ()).unwrap(), Fq::from_str("3879288298425577583449478309021200331439459668761362199264042221912999932605").map_err(|_| ()).unwrap(), Fq::from_str("2516761260434817086752098107305443628592766938470739054153150146506703792471").map_err(|_| ()).unwrap(), Fq::from_str("481359630814196002065503484532281005658851213692155491829138154224186751948").map_err(|_| ()).unwrap(), Fq::from_str("2019987491733925540129962876580261242273467964980586095277968008478003510520").map_err(|_| ()).unwrap(), Fq::from_str("5502277878902047247504174581984405311788850074338907672427435023620684656285").map_err(|_| ()).unwrap(), Fq::from_str("3133867741450637227416157482193433460720476157087105946893409719860592365407").map_err(|_| ()).unwrap(), Fq::from_str("8400900706408490632518330034988512166255356777660834664898578191621637827580").map_err(|_| ()).unwrap(), Fq::from_str("4424355663759696797083117401116579382210148092564273386055340689619958180062").map_err(|_| ()).unwrap(), Fq::from_str("38181968798540411178433004489330464377413440568580946670698824537964234740").map_err(|_| ()).unwrap(), Fq::from_str("3985137582625427870914337711862008955159518565586436026102511255896022545247").map_err(|_| ()).unwrap(), Fq::from_str("2686597946680903067963389814411594898511296256126226466543512771762628518380").map_err(|_| ()).unwrap(), Fq::from_str("3912072963699923538135335881783459711445809699833034464235046836295051637157").map_err(|_| ()).unwrap(), Fq::from_str("3768948985107031263554991350035396579658231033668291305113893407107999590132").map_err(|_| ()).unwrap(), Fq::from_str("7209840459207478084934132990507426086496015722161589774417691869050002492357").map_err(|_| ()).unwrap(), Fq::from_str("6470232135949884401983050741535994050038392389090501339898509456281439988861").map_err(|_| ()).unwrap(), Fq::from_str("1403782228835667896108593023720179504199984149882443104282945790037828677887").map_err(|_| ()).unwrap(), Fq::from_str("2616692368426935727956976017730416940577328529933157623691062413188068132680").map_err(|_| ()).unwrap(), Fq::from_str("6013155465106742700343824998420749144547684411124338994627587197137858317900").map_err(|_| ()).unwrap(), Fq::from_str("5046057668721457926386883951512447209843468155520782995797315336934626297875").map_err(|_| ()).unwrap(), Fq::from_str("4699213848989418709226497398340240243077331984560588410432125105042384834910").map_err(|_| ()).unwrap(), Fq::from_str("5229593958715996992063094437959528963051688396408152717883918637659886098311").map_err(|_| ()).unwrap(), Fq::from_str("1951976044069223056158754588030180422847727493829048238776399717813979759789").map_err(|_| ()).unwrap(), Fq::from_str("4158688722225908788153206659322854682351209416161193960155253054969298046740").map_err(|_| ()).unwrap(), Fq::from_str("6729156920345996334287429817597914498081658415518610887789376041974889047771").map_err(|_| ()).unwrap(), Fq::from_str("8001080793346807220307430636768987640386922596264252165255164305011067417921").map_err(|_| ()).unwrap(), Fq::from_str("805049615247355128632817272390362068051853601888800837662896676244202957816").map_err(|_| ()).unwrap(), Fq::from_str("6954697886862123377467715908414695350592349300176823211514354407092860264474").map_err(|_| ()).unwrap(), Fq::from_str("1037357063158990576124983865369468459708807060409999263024817001922664598244").map_err(|_| ()).unwrap(), Fq::from_str("6274173843835872888849453577522195998097492776857839215359837309285307683859").map_err(|_| ()).unwrap(), Fq::from_str("3829234834194025101976400998836257325560624583979963442125678498831465993617").map_err(|_| ()).unwrap(), Fq::from_str("2634048471413514276664575681345205309356785859870536213890046907527525143930").map_err(|_| ()).unwrap()]), -// mds: MdsMatrix::from_elements(vec![Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap()]), +// arc: ArcMatrix::new(39, 6, vec![Fq::from_montgomery_limbs([11114527869315019992, 204777424233041404, 11091912519069240090, 121969426625488706]), Fq::from_montgomery_limbs([11602548353808217299, 6197238791893869094, 15622579320964543388, 1298930792120594487]), Fq::from_montgomery_limbs([838896996119702820, 9307552859605174720, 8035142733069793771, 274230695041989171]), Fq::from_montgomery_limbs([3026923182969617970, 17802669379857452552, 12317599963821296502, 1025681681724348483]), Fq::from_montgomery_limbs([5608950751956253759, 13524340746668180438, 15318090696011006995, 777019565914500344]), Fq::from_montgomery_limbs([1158035626778037273, 17664260243497899213, 16296355254226759288, 950557495952381678]), Fq::from_montgomery_limbs([11235491782021601934, 3148198093287396523, 17540068057551648414, 246938399961631601]), Fq::from_montgomery_limbs([17389082769676787279, 4715116371725704005, 680633748837086801, 1023507596971258305]), Fq::from_montgomery_limbs([7398967334233665984, 13695483063991186800, 18171031240540141567, 1071188377250033509]), Fq::from_montgomery_limbs([8901013324099486427, 14221538804433703579, 421845258270117661, 1118364576196477055]), Fq::from_montgomery_limbs([3792995620986947754, 8295286409031689804, 7023787899825757992, 899023674461718667]), Fq::from_montgomery_limbs([8793784762096018942, 15222981485936247095, 17829285903963587033, 104381350073974926]), Fq::from_montgomery_limbs([11268502072074030331, 4494658873172678747, 10565307326465463378, 784696444351308107]), Fq::from_montgomery_limbs([13330824150800116849, 4890131204868069348, 16795432331983276560, 678123243378284364]), Fq::from_montgomery_limbs([16154775053781645033, 5239747136963640569, 16611876759537507645, 759623577554638126]), Fq::from_montgomery_limbs([8392188723943358220, 16791142993973140668, 13297749232586734563, 426701908934618073]), Fq::from_montgomery_limbs([17606532937509352288, 2853753027669231277, 1878611917293492305, 643977045852461225]), Fq::from_montgomery_limbs([5784332265294899224, 10677876800438676900, 18301919197560353192, 1242300655560067148]), Fq::from_montgomery_limbs([11412543805884713089, 4404535555399600518, 4605611364617586616, 706261397170793623]), Fq::from_montgomery_limbs([2724614443579353257, 12190950292326203757, 12944786940879400957, 90707148364678769]), Fq::from_montgomery_limbs([16664686769040599810, 7492639236725157146, 1787480043672337070, 1043615315016757716]), Fq::from_montgomery_limbs([4392261116480034202, 16508253691140740970, 1257682754845069496, 1301148167322522764]), Fq::from_montgomery_limbs([139213556258184346, 16303671450556136664, 10342805884525342231, 508792166529776861]), Fq::from_montgomery_limbs([14643711485787161846, 5395142180975966192, 12467589421402803020, 144762579288366866]), Fq::from_montgomery_limbs([15255437222491521014, 14721462158275437977, 2057221655333534074, 1325734657361576891]), Fq::from_montgomery_limbs([10286355773254745653, 8339495471482876116, 7453999146298511805, 300469360378533737]), Fq::from_montgomery_limbs([2229249064542236808, 3252881241602061127, 17948673955112458282, 251981777265729122]), Fq::from_montgomery_limbs([1422075247142054873, 8352700063552546507, 3488191142699771311, 539185901306414217]), Fq::from_montgomery_limbs([12740149804027925426, 5586599109404648568, 8527372678942371978, 115816006301850856]), Fq::from_montgomery_limbs([6406078249694103685, 13837513268450501788, 17900428335249812847, 459347554819743617]), Fq::from_montgomery_limbs([456851906250247004, 7370389193990924655, 1807458787636143704, 398667578735753852]), Fq::from_montgomery_limbs([9788417460696232352, 5540502179845655224, 11753539559261255021, 1240756247017913507]), Fq::from_montgomery_limbs([14537927489871028819, 8847897852622601733, 7522585085117894620, 375913426199509068]), Fq::from_montgomery_limbs([14308316144026398062, 8381587303995226137, 14032256210407832529, 689401812725544360]), Fq::from_montgomery_limbs([13627669936560791680, 15960253582647842471, 10281350312743054371, 150904336199250478]), Fq::from_montgomery_limbs([5265938544355635125, 14011142295917522514, 3457190839889849022, 965417711506858707]), Fq::from_montgomery_limbs([16926111367909514992, 15173362371822436547, 14933443732208301060, 434526341180358604]), Fq::from_montgomery_limbs([14967648454927618569, 3291387031545538855, 8588581828915048287, 792649357850563702]), Fq::from_montgomery_limbs([15353334048989602273, 17774561716206146119, 15636104655753091025, 1121698680267776671]), Fq::from_montgomery_limbs([7352303644457020849, 11873784571663633568, 14627146015402136109, 1299084319993956489]), Fq::from_montgomery_limbs([16915421385818843283, 6574617383150910264, 11422646729677132251, 929867690867770500]), Fq::from_montgomery_limbs([2727877432502627942, 15580341544991113874, 3099990664581009583, 1240423234600344359]), Fq::from_montgomery_limbs([14109846450233510521, 14674455181378475527, 1052605710857317529, 1170659366228378647]), Fq::from_montgomery_limbs([1487646680354896463, 4928492219250082356, 5905478662916155907, 544460360269702126]), Fq::from_montgomery_limbs([6341346323512196011, 5734973448691058326, 7525099077854354763, 538464447227753960]), Fq::from_montgomery_limbs([2970148736135554232, 8050550381279637505, 12092286293721047612, 120114654914049590]), Fq::from_montgomery_limbs([17316363606963256567, 5533183240747888359, 585663312963257979, 139248346646491863]), Fq::from_montgomery_limbs([10174847279006068180, 2997987744513078474, 10464913671214968471, 524965683820736700]), Fq::from_montgomery_limbs([54341264868687362, 5421004392946502713, 747264896093234142, 211411280351915374]), Fq::from_montgomery_limbs([5185489921536036071, 4704724361069451071, 4676129525140851232, 1120503850587310053]), Fq::from_montgomery_limbs([5188148333232019565, 9844624880738531087, 11083931443628660795, 48712959222331590]), Fq::from_montgomery_limbs([18132794403501755308, 4996277675320572821, 8426233139227882210, 1136120772510480448]), Fq::from_montgomery_limbs([6688066783162319874, 16812397130378746446, 1563788939072390863, 94078802559039860]), Fq::from_montgomery_limbs([7277685347797685095, 16873547601164190596, 14751852483076367538, 14675244398420571]), Fq::from_montgomery_limbs([10079144247912409743, 8202707283781100239, 14357029383013329671, 1339785338742424059]), Fq::from_montgomery_limbs([9634622379571234742, 10124148039561860757, 12959569757638734172, 595623221777036788]), Fq::from_montgomery_limbs([12438115909232101952, 6692144523221973376, 98330004458373230, 1289698894538748039]), Fq::from_montgomery_limbs([12584838405775095951, 2233721579825914515, 4679507125597853910, 1005456515702813230]), Fq::from_montgomery_limbs([3938302556839502700, 9759499277811028830, 3296175630346274937, 981342338929693494]), Fq::from_montgomery_limbs([13584588304331907697, 14901744669564308257, 10189694356059299380, 146229118527659864]), Fq::from_montgomery_limbs([7977203115766932089, 5348595991272040666, 7916441407055787565, 414015970121354410]), Fq::from_montgomery_limbs([6344869167182666748, 87274177081813667, 3736796951764034882, 288116208326542090]), Fq::from_montgomery_limbs([6782489206655080598, 619325409304332178, 17888946015733998246, 1225153807687734600]), Fq::from_montgomery_limbs([2843050123299780857, 1857078695470833828, 13790121543731752592, 415443237864035468]), Fq::from_montgomery_limbs([8596983925472337433, 7326755327579826593, 12756860599564365858, 584181157037447809]), Fq::from_montgomery_limbs([6624979411473108702, 17481608711835432073, 9326170883700217913, 284274034447147537]), Fq::from_montgomery_limbs([13805074074198365820, 16654885628813400888, 11514371967468509966, 343666476001683468]), Fq::from_montgomery_limbs([13412135478858616067, 17972587362145489837, 3471900644097496495, 1303815283631151979]), Fq::from_montgomery_limbs([5393982013204945472, 2134584020773499203, 673466067189783026, 383197328076308992]), Fq::from_montgomery_limbs([12690627402887821729, 10714862615705492405, 1068799421694466319, 1005549471897715563]), Fq::from_montgomery_limbs([2794121834599689269, 9403898257934234871, 15645249730625359588, 717133247159915483]), Fq::from_montgomery_limbs([3750258937835721096, 2056713754904073328, 13343956241265388204, 978687562686928642]), Fq::from_montgomery_limbs([6693505246665395198, 321305738310940343, 8242276846147342531, 437988437080106004]), Fq::from_montgomery_limbs([13067453044702788796, 16549020754244348848, 14781963588087090141, 661082564029228628]), Fq::from_montgomery_limbs([17540644026388671794, 8922891784689421140, 9379310092907018870, 765574007581740165]), Fq::from_montgomery_limbs([17168415590631158212, 4967864494403905256, 8557026071391060461, 1317676192546642661]), Fq::from_montgomery_limbs([15849602569050873376, 937817756067670930, 9256527416398591608, 860235003543784933]), Fq::from_montgomery_limbs([7543632918105704930, 12541439592576801019, 13144951089707956772, 41901740621632050]), Fq::from_montgomery_limbs([6730944509314595369, 6308132304102632805, 9824188815073657306, 947447793188743941]), Fq::from_montgomery_limbs([8027042707746962490, 11823228291757902961, 13058185285098764358, 336308269362966457]), Fq::from_montgomery_limbs([17668761980666590381, 916900473222809342, 9032902696647999656, 1206798077709834757]), Fq::from_montgomery_limbs([2575943430919555647, 6982422138755698722, 17906452816315642240, 1040285465480518609]), Fq::from_montgomery_limbs([4676245288580428747, 1286234536026906032, 15834455733024512963, 173462824491942276]), Fq::from_montgomery_limbs([14308731880491479014, 10228826088867441356, 15499426016798380851, 1315964678542897961]), Fq::from_montgomery_limbs([6124462188383628200, 13994025204959010105, 2282493343669790508, 1065454428927664041]), Fq::from_montgomery_limbs([988926009518969200, 15417015929087482085, 5998393954402084482, 540400810650613669]), Fq::from_montgomery_limbs([5764104729040907699, 2863356645440240472, 9968438238837920675, 633210980814249702]), Fq::from_montgomery_limbs([10763147411954484876, 4870204607771977448, 6480512614473978867, 683494642222622007]), Fq::from_montgomery_limbs([4440852407455748277, 8762659822349541955, 18263541095190090147, 585043470445066748]), Fq::from_montgomery_limbs([16911785709988001751, 3581411532501811046, 1478440133608885243, 1164133149174128766]), Fq::from_montgomery_limbs([1426558755494224529, 12516949196047728033, 17132752269246428290, 356208126695477134]), Fq::from_montgomery_limbs([14896569372479444141, 1449669928198367982, 12457553693255423792, 902793672204828469]), Fq::from_montgomery_limbs([3369226999454999348, 11158810537103910265, 2808006375302756684, 719861372102939033]), Fq::from_montgomery_limbs([3246518112410208054, 13944200025301723446, 764003656536121000, 81035000333546312]), Fq::from_montgomery_limbs([480604143483617458, 15146610571181935768, 10342031106972296681, 321939937748541484]), Fq::from_montgomery_limbs([3823315055653922623, 1544133407778019995, 8339678284115967093, 340405582859069416]), Fq::from_montgomery_limbs([14521487749042353090, 2741200029829353725, 15404416537140680175, 224317571319525964]), Fq::from_montgomery_limbs([9111107875572394601, 14812080039988879021, 11740909323457275498, 1142849951174245079]), Fq::from_montgomery_limbs([6315394863492521922, 15290263181571711160, 8361458214310627912, 1120819345406699978]), Fq::from_montgomery_limbs([7541199882669497715, 686266139368081655, 3486408502495110410, 305571836806477895]), Fq::from_montgomery_limbs([11194602393992127889, 4823164490358819269, 2963098888089596977, 127467430759375185]), Fq::from_montgomery_limbs([13401323458715176749, 7526519102807969052, 11500838828688844175, 593796521014294359]), Fq::from_montgomery_limbs([11177320531756391055, 4080502600305034702, 2571892269998531885, 231632967099830080]), Fq::from_montgomery_limbs([6149939798770351609, 18287517033582086432, 5338242308958263460, 328048786757923732]), Fq::from_montgomery_limbs([15458540156643766751, 1400997897599319292, 7413209173172832967, 100478538984542434]), Fq::from_montgomery_limbs([15303231637131188474, 12210183127521607378, 16044977891049973821, 772905068623323043]), Fq::from_montgomery_limbs([10785654084122827601, 2211259386857104245, 16649012282872525368, 102071913196144291]), Fq::from_montgomery_limbs([2881174213450719659, 12014311740982782554, 12475890147035428875, 1060652822280359969]), Fq::from_montgomery_limbs([5168530618588372608, 12645871097945809310, 12679814118712019422, 757227039744328626]), Fq::from_montgomery_limbs([16723583453861051889, 13217434832318564597, 17167491729232777306, 750899259017645156]), Fq::from_montgomery_limbs([11975166328753770827, 5021170043599009847, 8130600622535160737, 1210833522054518385]), Fq::from_montgomery_limbs([11828331664533985829, 5744074093878888180, 13572294236110601484, 741336438516605705]), Fq::from_montgomery_limbs([9092803352234031294, 16991861971006998540, 12590210254184326397, 163020812219371078]), Fq::from_montgomery_limbs([15150825267514654715, 7582420113892720781, 11021538006069969553, 514128026898157287]), Fq::from_montgomery_limbs([257730274965307694, 15941247979209339081, 12550718099618824836, 926747662553501853]), Fq::from_montgomery_limbs([16021060490791077863, 18399937961097236925, 12479381244109581994, 958161696800711416]), Fq::from_montgomery_limbs([5656070927198127166, 13673864766172609613, 7854541344260335717, 433926247460842256]), Fq::from_montgomery_limbs([3081498096075015625, 5114063565662711844, 6016747140135578647, 200080044486646757]), Fq::from_montgomery_limbs([8668474263754820542, 5150418979667712870, 671591932121595684, 387641243292135089]), Fq::from_montgomery_limbs([9867452618101888436, 9573741750129271560, 11870983264768155164, 672361345937806490]), Fq::from_montgomery_limbs([2794280237383234509, 8511976920647235700, 12240900835121281355, 5009064961478580]), Fq::from_montgomery_limbs([12481235113884027566, 5693342786405429686, 2966752082111199656, 878902670166036876]), Fq::from_montgomery_limbs([14240267055971916647, 10396848562787560462, 5518035894864045572, 1179757559875500073]), Fq::from_montgomery_limbs([14962737666094847614, 10739908350874416157, 4895620174233055664, 321666060863471221]), Fq::from_montgomery_limbs([13445218619283341504, 5092610038400904148, 2968853296034188758, 835336201072079364]), Fq::from_montgomery_limbs([10233520240960919680, 5959452117994239475, 16491909337703133675, 891169556062643417]), Fq::from_montgomery_limbs([2834888386861055650, 7604409413887743592, 13030269578665703653, 401509353262871810]), Fq::from_montgomery_limbs([2704145273060684739, 1774123728738332116, 4451847378072935255, 539946861082459083]), Fq::from_montgomery_limbs([10338036189104724495, 5463305924257293228, 7871975511799681863, 487399285329040504]), Fq::from_montgomery_limbs([10282365810457753854, 4875136836869467005, 8167065600132017137, 612538811597081600]), Fq::from_montgomery_limbs([11956552275263932784, 2910596066147194639, 1653383919024312564, 917094813414419045]), Fq::from_montgomery_limbs([7847733681848392968, 17061053188234229069, 4327647852405514270, 201342973946798656]), Fq::from_montgomery_limbs([12402208752860149978, 5942639276189211897, 8650838259976493487, 93208955821879002]), Fq::from_montgomery_limbs([4359686047010863164, 1740657266406964854, 14400992892832573055, 600962517221943370]), Fq::from_montgomery_limbs([7871068409103488505, 12092947390480615881, 15236005069504836910, 1219304791403246439]), Fq::from_montgomery_limbs([2331767746054493290, 15439688574017229593, 2624671321035938496, 196664992671490503]), Fq::from_montgomery_limbs([6984766032236094336, 4199333161186836907, 6966733218962904660, 828131141266688191]), Fq::from_montgomery_limbs([18198492961367884206, 4075548382228621731, 7120869279096377960, 1112174665656009203]), Fq::from_montgomery_limbs([15188354035011941657, 1528404887014191153, 7644022124588184416, 656794906545005738]), Fq::from_montgomery_limbs([3703805022276205448, 11543145569483730813, 2304402099650902209, 823592775762696951]), Fq::from_montgomery_limbs([5142351354334489771, 10763765166551123043, 17450746794319983955, 960731944967042935]), Fq::from_montgomery_limbs([9913254528380233461, 6379270468481813387, 4130926869587487310, 610795545512520772]), Fq::from_montgomery_limbs([17898556710819263490, 7911122569140186326, 5516730092468208963, 664379227085230598]), Fq::from_montgomery_limbs([10616973143833638020, 17471880607893344822, 1128145204777244976, 337394536883295972]), Fq::from_montgomery_limbs([6661544590953239315, 15146532782491929291, 4755596764817736061, 545820584329603194]), Fq::from_montgomery_limbs([60806500798869004, 15736128091162195183, 5715198746929749021, 446174552562569645]), Fq::from_montgomery_limbs([5425873532207787318, 7464087132630945791, 5476589627464471901, 457480423296188143]), Fq::from_montgomery_limbs([9013993650827414321, 2350031823838640206, 11034300868488958302, 388596567345343643]), Fq::from_montgomery_limbs([6468567377966650967, 13590648265578243490, 15927509019046836214, 1009388599057851509]), Fq::from_montgomery_limbs([172016905197246847, 4035387207966104057, 211325131413472824, 1280387199047629664]), Fq::from_montgomery_limbs([7689408096630419675, 14584961804097092641, 1127508416484176885, 171502318968879609]), Fq::from_montgomery_limbs([9294855872887423209, 2005827460175726472, 16783720225277999740, 1082009637379471203]), Fq::from_montgomery_limbs([17016200436476421122, 12639043105124250806, 6582000444620236323, 508699111294885791]), Fq::from_montgomery_limbs([14725203266650011970, 13877962155717739891, 9513649462380557047, 642461852581041542]), Fq::from_montgomery_limbs([9787931489031096184, 7902836596315130785, 78997879637635390, 694120778750553576]), Fq::from_montgomery_limbs([17889392554162858882, 342322215215622448, 4493824746279576258, 312168636607671093]), Fq::from_montgomery_limbs([8140513347694048696, 12902641943590609873, 14714848264461122064, 1334963605704347157]), Fq::from_montgomery_limbs([13240131887967600078, 4407633827305492594, 15540185952445554130, 68037993503280515]), Fq::from_montgomery_limbs([10497793217508245191, 888682325286928065, 15370448865727419266, 733754751125624627]), Fq::from_montgomery_limbs([7740533852108866287, 17937493023745474932, 7773801956856873664, 504241230363210440]), Fq::from_montgomery_limbs([11961891551527755983, 17934542229987203026, 1103543868067501932, 687591834971622190]), Fq::from_montgomery_limbs([4127100989690868033, 8900195718942322911, 8226770865992890280, 985029699319544839]), Fq::from_montgomery_limbs([8227296419732771358, 16053490579720323354, 3654951897271203554, 1041079676339451632]), Fq::from_montgomery_limbs([8010548121403948512, 1275465025143581354, 2160211023041782235, 1189169285314754196]), Fq::from_montgomery_limbs([7530207327455925553, 5703304996823784226, 6548643313601850639, 827356749854490373]), Fq::from_montgomery_limbs([8316601172635772109, 12370440707468203196, 2939769182126754327, 753180078630191546]), Fq::from_montgomery_limbs([1143377137813871993, 17312593164165222318, 13705553886161524318, 941885898262021576]), Fq::from_montgomery_limbs([2112728878057216642, 3892761102962286658, 11417348492657537819, 735668726979811860]), Fq::from_montgomery_limbs([16782576336846005593, 3624413749987727914, 17968976872659530354, 487897895994872800]), Fq::from_montgomery_limbs([2484948819702640096, 5387963240223549977, 12687920099134049563, 883350989149367893]), Fq::from_montgomery_limbs([2858482485641078244, 2714093515401288033, 10455809282530923083, 751664744246651868]), Fq::from_montgomery_limbs([13617000549064485510, 4455000600207656914, 12777124443685982279, 512862262303044909]), Fq::from_montgomery_limbs([10570187078077272513, 15758514759732880612, 10690894638211880846, 465609433405901497]), Fq::from_montgomery_limbs([13236383050663721729, 12125155130370039041, 17253356752093433548, 232625893933277711]), Fq::from_montgomery_limbs([757191121931270989, 9786533229648281558, 7506322761488798421, 219466670969587686]), Fq::from_montgomery_limbs([11502539180279016827, 10976808592365411679, 14518853469755275814, 189651093510465237]), Fq::from_montgomery_limbs([7406145050063996705, 5433107506103268286, 4579059832807850831, 292839512595959393]), Fq::from_montgomery_limbs([242050570766254477, 16090627413832777930, 8503088905690880687, 844834299854905528]), Fq::from_montgomery_limbs([15972066311454464627, 12186767479971029668, 2392334865506711034, 617078040284954179]), Fq::from_montgomery_limbs([6210271142236644282, 6562036542656589429, 8025274330376993547, 762526438011303745]), Fq::from_montgomery_limbs([14753366313850022795, 5437791126426953356, 14245062222537079752, 150913805242227000]), Fq::from_montgomery_limbs([4807021976023523388, 16710746776370779475, 7473038774703206777, 172363022129389231]), Fq::from_montgomery_limbs([7874676450184753436, 2949898094916075783, 630009569754295782, 934898795281709342]), Fq::from_montgomery_limbs([2596733933911644291, 18211864913609597189, 669972403590796856, 1007790356294249019]), Fq::from_montgomery_limbs([8847285884406092349, 15810443671218046899, 781303087795509610, 175334333513747495]), Fq::from_montgomery_limbs([5611124786858759575, 7741270494085822523, 1204252626273700461, 831434023402198326]), Fq::from_montgomery_limbs([17024841864111709876, 10953422139928438, 7108870425049447348, 867000474059877218]), Fq::from_montgomery_limbs([17254710881283625253, 13619503273421245826, 16524833801283537459, 867017638279036320]), Fq::from_montgomery_limbs([3047689304468185211, 4544400348474807371, 3340017855267764578, 1089932391947236624]), Fq::from_montgomery_limbs([944987404414691783, 7324130194857674958, 14960179948619727115, 970290030783854962]), Fq::from_montgomery_limbs([8156639230679108247, 17055081218862987306, 3045209940380371184, 1025132464373554760]), Fq::from_montgomery_limbs([18254963138764984051, 12469634773213013819, 6758329371646179128, 349904494647494862]), Fq::from_montgomery_limbs([6795371985529952899, 17895939878048277876, 16632557265478858928, 387059669716455908]), Fq::from_montgomery_limbs([1318357771340990990, 12994552359569230566, 16705716531436318589, 763697275022015004]), Fq::from_montgomery_limbs([16465052430714272962, 13602787326604775722, 15751371050932720313, 138014004592597966]), Fq::from_montgomery_limbs([15825638165970940054, 9332212474670848079, 7882594046477316711, 290829412130665018]), Fq::from_montgomery_limbs([6362195239856311490, 4780237228875137807, 14782630189115640960, 704272740049173340]), Fq::from_montgomery_limbs([6559278659646672166, 6801036849757997540, 8000231443027455180, 656562251428831486]), Fq::from_montgomery_limbs([913435484006780831, 4148347286870754245, 15429895160407091360, 481581552746677021]), Fq::from_montgomery_limbs([3201617625256301842, 17959683725889804366, 12477328746136434592, 804751930331318023]), Fq::from_montgomery_limbs([8260268643263772682, 564990144864143113, 3819503561945572420, 589166794945624703]), Fq::from_montgomery_limbs([1468345889510338758, 12133722777278260983, 2225753638037198615, 983608944845547502]), Fq::from_montgomery_limbs([16667974706419349718, 12656033986103589392, 16476477987437165475, 328446031568129583]), Fq::from_montgomery_limbs([10832018960089362233, 15872202042944916671, 1542413852742137668, 856769655034004351]), Fq::from_montgomery_limbs([1248584674224513873, 10955885710253485131, 690903013823109733, 586986955236732406]), Fq::from_montgomery_limbs([7801056996972321718, 10731441130229109668, 1309104763613854723, 168690751356355485]), Fq::from_montgomery_limbs([863448993500386948, 12860067037622976516, 4075953973254780281, 1092718826088125370]), Fq::from_montgomery_limbs([4083664853681447299, 16294486273605038844, 13502684468641213280, 1231917587532627983]), Fq::from_montgomery_limbs([17640823880561253607, 17906844028095875120, 16598825086926066591, 1259468978780670799]), Fq::from_montgomery_limbs([3915912471832963150, 2878160052333009121, 5137491367309860490, 525959498882725072]), Fq::from_montgomery_limbs([624108744920628033, 7222337173749652537, 6177234009439253836, 1305879330650409183]), Fq::from_montgomery_limbs([4047186108818890838, 8293278676301284463, 45421248765572143, 11849077013826147]), Fq::from_montgomery_limbs([13734838437817111564, 14067107962177066014, 6283538344938866018, 943068615468766850]), Fq::from_montgomery_limbs([9459753653362225504, 13412221550119657532, 11719554885145159458, 1038210702444171410]), Fq::from_montgomery_limbs([17258590752825572441, 4422385439615665045, 10963985232294213328, 673097344483052623]), Fq::from_montgomery_limbs([4350910935437581306, 17071656780821887075, 17526744607642225290, 489524084357985818]), Fq::from_montgomery_limbs([8703107470067448452, 734592437454660319, 6370216058631913860, 984849913832896286]), Fq::from_montgomery_limbs([15847437253128917127, 13204151715277535095, 13151742340803361913, 492775982398767260]), Fq::from_montgomery_limbs([13378140148769271177, 11023068523390522139, 1729259508144916727, 998491139322015796]), Fq::from_montgomery_limbs([15868115462640964898, 5808184910810487816, 17891106563868657547, 1273423536878729280]), Fq::from_montgomery_limbs([17498572932499506726, 4915375148198704347, 16526318329827242193, 172885368041045335]), Fq::from_montgomery_limbs([12175858961476635194, 8395097384299796850, 16561947957716644135, 118811035529307344]), Fq::from_montgomery_limbs([1364632949773972783, 5616500288305274826, 2744828291285230257, 1337220218752536168]), Fq::from_montgomery_limbs([7125704632582034340, 2413935880315792634, 16253134495760827214, 1013353907442898755]), Fq::from_montgomery_limbs([9926413936648370716, 9286244748248440505, 5620697470790885637, 1050126432920929832]), Fq::from_montgomery_limbs([2286190222160729638, 1205027650655862007, 284571302335235840, 754838472987631454]), Fq::from_montgomery_limbs([18032942241472576701, 12877723516371231014, 5304401947346162660, 638292803799023432]), Fq::from_montgomery_limbs([1301734909908791963, 3999021096443686109, 8224194566860360743, 975889756225576945]), Fq::from_montgomery_limbs([13137758236377688944, 15164889622744579310, 9510882901247182860, 507443416341514201]), Fq::from_montgomery_limbs([7442629497476523514, 15402336932582436695, 12267702252685663951, 406181490859224216]), Fq::from_montgomery_limbs([3020913173034234370, 7615906519537783167, 14373843007930618441, 268952515824125262]), Fq::from_montgomery_limbs([8510711668693637739, 16478737597936355688, 4962621450185609628, 274948738817040348]), Fq::from_montgomery_limbs([175794307933344111, 2355200265651483892, 17868773626579092521, 52492857067069690]), Fq::from_montgomery_limbs([13918504549178190575, 13563258972352289042, 5310731325887509548, 465559440844068311])]), +// mds: MdsMatrix::from_elements(vec![Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976])]), // alpha: Alpha::Exponent(17), // rounds: RoundNumbers {r_P: 31, r_F: 8}, // optimized_mds: OptimizedMdsMatrices { -// M_hat: SquareMatrix::new(5, 5, vec![Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap()]), -// v: Matrix::new(1, 5, vec![Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap()]), -// w: Matrix::new(5, 1, vec![Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap()]), -// M_prime: SquareMatrix::new(6, 6, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap()]), -// M_doubleprime: SquareMatrix::new(6, 6, vec![Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("3619055035469301610392353545192091370589671143637455926257957195393175388169").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776293").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159404").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4222230874714185212124412469390773265687949667577031913967616727958704619488").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3070713363428498336090481795920562375045781576419659573794630347606330632388").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap()]), -// M_inverse: SquareMatrix::new(6, 6, vec![Fq::from_str("1280664").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917398261921").map_err(|_| ()).unwrap(), Fq::from_str("35675640").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917353743601").map_err(|_| ()).unwrap(), Fq::from_str("41621580").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917397130945").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917398261921").map_err(|_| ()).unwrap(), Fq::from_str("96049800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917092122241").map_err(|_| ()).unwrap(), Fq::from_str("499458960").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917030861041").map_err(|_| ()).unwrap(), Fq::from_str("110990880").map_err(|_| ()).unwrap(), Fq::from_str("35675640").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917092122241").map_err(|_| ()).unwrap(), Fq::from_str("1060076160").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455915722754241").map_err(|_| ()).unwrap(), Fq::from_str("1288287000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917028698881").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917353743601").map_err(|_| ()).unwrap(), Fq::from_str("499458960").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455915722754241").map_err(|_| ()).unwrap(), Fq::from_str("2705402700").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455915328160041").map_err(|_| ()).unwrap(), Fq::from_str("618377760").map_err(|_| ()).unwrap(), Fq::from_str("41621580").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917030861041").map_err(|_| ()).unwrap(), Fq::from_str("1288287000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455915328160041").map_err(|_| ()).unwrap(), Fq::from_str("1610358750").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455916928278561").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917397130945").map_err(|_| ()).unwrap(), Fq::from_str("110990880").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917028698881").map_err(|_| ()).unwrap(), Fq::from_str("618377760").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455916928278561").map_err(|_| ()).unwrap(), Fq::from_str("144288144").map_err(|_| ()).unwrap()]), -// M_hat_inverse: SquareMatrix::new(5, 5, vec![Fq::from_str("1960200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917397913441").map_err(|_| ()).unwrap(), Fq::from_str("23783760").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917387617441").map_err(|_| ()).unwrap(), Fq::from_str("7207200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917397913441").map_err(|_| ()).unwrap(), Fq::from_str("66254760").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917268698641").map_err(|_| ()).unwrap(), Fq::from_str("128828700").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917365995841").map_err(|_| ()).unwrap(), Fq::from_str("23783760").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917268698641").map_err(|_| ()).unwrap(), Fq::from_str("300600300").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917131761841").map_err(|_| ()).unwrap(), Fq::from_str("93693600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917387617441").map_err(|_| ()).unwrap(), Fq::from_str("128828700").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917131761841").map_err(|_| ()).unwrap(), Fq::from_str("257657400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917321791681").map_err(|_| ()).unwrap(), Fq::from_str("7207200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917365995841").map_err(|_| ()).unwrap(), Fq::from_str("93693600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917321791681").map_err(|_| ()).unwrap(), Fq::from_str("29811600").map_err(|_| ()).unwrap()]), -// M_00: Fq::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), -// M_i: Matrix::new(6, 6, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3466885886383614736932071158256868571025325905266057014725599828463273557140").map_err(|_| ()).unwrap(), Fq::from_str("7631238485140139170519957292292796390470671952054900803134611909388031911017").map_err(|_| ()).unwrap(), Fq::from_str("7871633013161771723971720588337110516688943421216367362350930829393725374005").map_err(|_| ()).unwrap(), Fq::from_str("1073861992954466378139155040243430947959159969896043282552939666018391012017").map_err(|_| ()).unwrap(), Fq::from_str("7183433298824164175395505075717883311708425536530432110390555349177505525596").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7631238485140139170519957292292796390470671952054900803134611909388031911017").map_err(|_| ()).unwrap(), Fq::from_str("41500372083843706934182411142065801633822663035944991289021626121183355283").map_err(|_| ()).unwrap(), Fq::from_str("5125031358671829763143662154931208209925017208372180524423682982510617172395").map_err(|_| ()).unwrap(), Fq::from_str("981480440519254016924108191447655466657783346930331844108329856514040945996").map_err(|_| ()).unwrap(), Fq::from_str("2331757192524643452388648023333684073825792737387882230674275113643541352821").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7871633013161771723971720588337110516688943421216367362350930829393725374005").map_err(|_| ()).unwrap(), Fq::from_str("5125031358671829763143662154931208209925017208372180524423682982510617172395").map_err(|_| ()).unwrap(), Fq::from_str("5712778409618812547852143178260582577133932863530824058318138545806090962486").map_err(|_| ()).unwrap(), Fq::from_str("7550005823807598061571947111819109954946648930422615185305732016051037379606").map_err(|_| ()).unwrap(), Fq::from_str("4799007357221912049451609521186356374716557970509367518632657620190429554132").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1073861992954466378139155040243430947959159969896043282552939666018391012017").map_err(|_| ()).unwrap(), Fq::from_str("981480440519254016924108191447655466657783346930331844108329856514040945996").map_err(|_| ()).unwrap(), Fq::from_str("7550005823807598061571947111819109954946648930422615185305732016051037379606").map_err(|_| ()).unwrap(), Fq::from_str("6158108558546920229448272459059447924688962268670692359811577868253380475777").map_err(|_| ()).unwrap(), Fq::from_str("1969215327660361195767023373489611175139477730908610516274418325350559201003").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7183433298824164175395505075717883311708425536530432110390555349177505525596").map_err(|_| ()).unwrap(), Fq::from_str("2331757192524643452388648023333684073825792737387882230674275113643541352821").map_err(|_| ()).unwrap(), Fq::from_str("4799007357221912049451609521186356374716557970509367518632657620190429554132").map_err(|_| ()).unwrap(), Fq::from_str("1969215327660361195767023373489611175139477730908610516274418325350559201003").map_err(|_| ()).unwrap(), Fq::from_str("6846721788455410245195334523636560162771380747503714722615054473011010713906").map_err(|_| ()).unwrap()]), -// v_collection: vec![Matrix::new(1, 5, vec![Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("7941815216724300756138775835282644952127333898537750504843850512112801546241").map_err(|_| ()).unwrap(), Fq::from_str("7990146614099692070380126710619077796285849805904703708987252718247859978241").map_err(|_| ()).unwrap(), Fq::from_str("7091612235338528214950923548253306297996640736944858140401246370412529217992").map_err(|_| ()).unwrap(), Fq::from_str("5248338661925326407677785786700133502402681391582359740068141165676751836502").map_err(|_| ()).unwrap(), Fq::from_str("1387049006151042337159381234970341877270851357356636994798804520514354983930").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6110231202011253694165846173723468950408820697542497299473283487019249347773").map_err(|_| ()).unwrap(), Fq::from_str("3157575504651297787039118187608403480542790084101511446959773804450529464927").map_err(|_| ()).unwrap(), Fq::from_str("3170253555681361289524464227542709736785270405371895935037102909830638075272").map_err(|_| ()).unwrap(), Fq::from_str("7329436681995464374339159819496735533883658754043030465016961864474689381111").map_err(|_| ()).unwrap(), Fq::from_str("30349159942757727446849373494433009012335581144047744258728329526937878811").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("4026080672506377877140717282989760586025956049417327866114462369437851588279").map_err(|_| ()).unwrap(), Fq::from_str("6930852424050627186126232807770899853776794918209634874800721153623171499129").map_err(|_| ()).unwrap(), Fq::from_str("5498012549009454424469147474518034650798956467007298624071684872238445737362").map_err(|_| ()).unwrap(), Fq::from_str("1747046067795269910228387161032836383761725017018529359296681232808565032961").map_err(|_| ()).unwrap(), Fq::from_str("3831101026643899311630245440904261642914504445778502537885800288638580114296").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("4141532419655592065610332370213881627362230648707131410133482121563357457244").map_err(|_| ()).unwrap(), Fq::from_str("2805235589752126003131414548954915344462868809211489671397294395767543886469").map_err(|_| ()).unwrap(), Fq::from_str("332040327407072334084989323171791720012842838222695661384360475795390351693").map_err(|_| ()).unwrap(), Fq::from_str("7334299789481162862229727080563099218490223927327602697962460500113680347478").map_err(|_| ()).unwrap(), Fq::from_str("1897213404555237456414103142001857906694603886125516762011014457060482151674").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("4954341900180395110889178860820384290951169163842084917289390943955280510103").map_err(|_| ()).unwrap(), Fq::from_str("6470021790101590966415371963124335260423343038658155655583738979541628807188").map_err(|_| ()).unwrap(), Fq::from_str("7024912598992383092238946119397715724276097417266378240259886700124887181196").map_err(|_| ()).unwrap(), Fq::from_str("8389166652326586786953909098741873237682335743682374833051600609786490990114").map_err(|_| ()).unwrap(), Fq::from_str("1479056552842953534617606512037080286390006037416864574856058371553085514122").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("1431741209182181199992000253938318158333401938504830255524365058344239129028").map_err(|_| ()).unwrap(), Fq::from_str("279679141156856528872157540682727305343441098379922980298786323868535111888").map_err(|_| ()).unwrap(), Fq::from_str("1343276697514446520140249002263887965747501206963843072689492127831811083086").map_err(|_| ()).unwrap(), Fq::from_str("5395779912686855072366358214378270978263275956455850818134350137622249887820").map_err(|_| ()).unwrap(), Fq::from_str("2290631682495891783628966223526885873135859535180846401576213059798995666190").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("7218387484091115458420041283246976806713985651774223714134722192996410597635").map_err(|_| ()).unwrap(), Fq::from_str("4231441015621368596701073091630925900586070904488463026235216795349201114365").map_err(|_| ()).unwrap(), Fq::from_str("5715835773349980671804855661644390972640814704300898420795922471947844692230").map_err(|_| ()).unwrap(), Fq::from_str("3384775390488715640672241644007991181322465102287685771223084113219078253957").map_err(|_| ()).unwrap(), Fq::from_str("1578690082496160366966500006705645782141820241374842010133997910991194251930").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("965233995498712348514292638207588694637619135632861752546203918580581657796").map_err(|_| ()).unwrap(), Fq::from_str("2235248835582290539598865944236350480756882553474622611902054399378093841466").map_err(|_| ()).unwrap(), Fq::from_str("6148670551886129962186712133076360841910072233440731871161757883158900286392").map_err(|_| ()).unwrap(), Fq::from_str("4054278367287334965144453624843616328618302644423097642232152664094471575724").map_err(|_| ()).unwrap(), Fq::from_str("4001954402147966855706286198881966747171612451247708565778725254440310720763").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("2534660301813065402436899987950706043720168534445708767463663688295231036999").map_err(|_| ()).unwrap(), Fq::from_str("1862197728742954238317031608983645132235346659299783635170547034502707852312").map_err(|_| ()).unwrap(), Fq::from_str("8354656080998698755534880892987167690526972663880127867686954943923735687140").map_err(|_| ()).unwrap(), Fq::from_str("1775518450943553915654815218875459501770597002098074473909421276677429275087").map_err(|_| ()).unwrap(), Fq::from_str("2124859946365887562306513696664991963838266491638672763451233757378814957834").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("1857624422719040917493211390079431947937109202694869920357330729144903868304").map_err(|_| ()).unwrap(), Fq::from_str("2029890818045040302870868737913497052385936280913070890864441987012718466511").map_err(|_| ()).unwrap(), Fq::from_str("4104891951295802196336284351106287169259076743314463275235162647640034843094").map_err(|_| ()).unwrap(), Fq::from_str("3317743299043490973800206704349700508551217135364996277285466640418805531480").map_err(|_| ()).unwrap(), Fq::from_str("4503628229300759611603500675648810337410843314819359324931140629462919270882").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6483881711338357066194191585999345605402998669728999576287475423195967294516").map_err(|_| ()).unwrap(), Fq::from_str("5501728230554894840326119230491311997268184984598574434463777368920844355440").map_err(|_| ()).unwrap(), Fq::from_str("8367940238888010226586240215378562834384437861789668269806504885290056620482").map_err(|_| ()).unwrap(), Fq::from_str("4005415763048160253365089879982518591344227056640495742855020253298231389435").map_err(|_| ()).unwrap(), Fq::from_str("4969458979893683785296838293021359389961523766136361848003712765926059083145").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6231227535823799182606539690293251573601273968506136784794381447547797875406").map_err(|_| ()).unwrap(), Fq::from_str("5655696554758517712037618944610404293554195829135747039469944770632773447716").map_err(|_| ()).unwrap(), Fq::from_str("4444168197817530534143157441257649256244288310556485093995388501501954152333").map_err(|_| ()).unwrap(), Fq::from_str("1562418969880179086156917387423691633688817703447121391732362425285294358707").map_err(|_| ()).unwrap(), Fq::from_str("7905764595508721324139048664234901114040748376212995627171084399283682311031").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("972220203986731589364086387871705609244047376641536480969523415104231505317").map_err(|_| ()).unwrap(), Fq::from_str("2453099774609779786435139396136811622507167591786353931912160643835718094689").map_err(|_| ()).unwrap(), Fq::from_str("2309065636781068029672836043701027208170922286862910676725834963109305476313").map_err(|_| ()).unwrap(), Fq::from_str("4040972464611400951352495819486215055185950553934569254115621318574769593313").map_err(|_| ()).unwrap(), Fq::from_str("266592240564307010502052371487343932718275775959852829865912283245934928094").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("7320202478200266460346837952319492973701300494180563641577412999106426824526").map_err(|_| ()).unwrap(), Fq::from_str("8108138820297213490738634228023986404893629041887825345738101636090573669345").map_err(|_| ()).unwrap(), Fq::from_str("5301400962117056506538035780727177833845300364548746807848903621566273804316").map_err(|_| ()).unwrap(), Fq::from_str("7971226113694983652944802446401717326942984192515500878860213259125412300090").map_err(|_| ()).unwrap(), Fq::from_str("1409724173090869167154726972562766469176093846298227350952800639400394379601").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6693934743118354072745455302248449275870616983077929839884690599594261990264").map_err(|_| ()).unwrap(), Fq::from_str("7058406496766309320843636175087488388778952908263354883183538702347753768680").map_err(|_| ()).unwrap(), Fq::from_str("112805754093120896429706632826847444269816278879470103868773877928631291767").map_err(|_| ()).unwrap(), Fq::from_str("4460995013973858057325952086481429303515013534733418559957765962760079329642").map_err(|_| ()).unwrap(), Fq::from_str("1193755776095245869744378485032820330351025440846483775843412710878165867680").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("1258749243792719359855766640067438625733311786514044851257454315362969702894").map_err(|_| ()).unwrap(), Fq::from_str("4990875883891633704713814491196413878780021470031873828007434832149285923877").map_err(|_| ()).unwrap(), Fq::from_str("6200439178012128180944679794966330198826507650304501101432289910763147930376").map_err(|_| ()).unwrap(), Fq::from_str("4719349149224404163490786150494926125120106933700574110618021496050485511864").map_err(|_| ()).unwrap(), Fq::from_str("1669534973986495667607393278917637166321086332372652600720280617188164633279").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("757101241546777826925891083535493867234396654755470441451967986563409129039").map_err(|_| ()).unwrap(), Fq::from_str("4277352352236356233977705224157738527338644281742783698948438751984703091316").map_err(|_| ()).unwrap(), Fq::from_str("1073255593582939467087448489641130248372081764818232419926531966764867684115").map_err(|_| ()).unwrap(), Fq::from_str("2391951887243757039001297845116658050641414539618206517877391386559220050374").map_err(|_| ()).unwrap(), Fq::from_str("446289917362131613879994461507020996276068930852357270607964327842602903038").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("7872957250286640781261597615947123682145439021290179984851671184197371144237").map_err(|_| ()).unwrap(), Fq::from_str("4270080453127734296040974725474939563669611937415279941318423355292187409247").map_err(|_| ()).unwrap(), Fq::from_str("7837996606991115158840354692708299889539902758634946340775643090935180150003").map_err(|_| ()).unwrap(), Fq::from_str("5040055913185555759799644626682679990624017535965186108689014808086875148076").map_err(|_| ()).unwrap(), Fq::from_str("4076452896420841774788519858212832470236168087782495438602828618333959655679").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6850933996320895880612129783291391300582256806630505952529312913434970849928").map_err(|_| ()).unwrap(), Fq::from_str("5740537437043965385118623008585070483275524217044780698253346664671370932569").map_err(|_| ()).unwrap(), Fq::from_str("5613808328537682180580806697618787482041835953570245642832539431400477912465").map_err(|_| ()).unwrap(), Fq::from_str("355985213407966689514720253068594068335704430948235959092978366409374991936").map_err(|_| ()).unwrap(), Fq::from_str("2896502603549427612693976511346976872923625464294097211108220572952870663980").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("3139649722060623801892440109936841783814774383361763259558015594361298197330").map_err(|_| ()).unwrap(), Fq::from_str("3408390433030768147591222599748716339661171573476398480372499194642353127409").map_err(|_| ()).unwrap(), Fq::from_str("5883406640005961510518943922315984407601675653894586250360310629546321124535").map_err(|_| ()).unwrap(), Fq::from_str("5915431096730178243561739029584601014253247255317937438021020844157491638060").map_err(|_| ()).unwrap(), Fq::from_str("676358766621617874963827581679634070309235155222486738747234537410357380738").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("7519304592477765757260636321810574180069142992153012371811342069529892471792").map_err(|_| ()).unwrap(), Fq::from_str("5487843288490548458944483494589225326153301298806910777379580982291350610665").map_err(|_| ()).unwrap(), Fq::from_str("510218660126967783517348372881817729621700503771717889621802047344472012169").map_err(|_| ()).unwrap(), Fq::from_str("2209942353071004113141626194945694063131134098571705757070963473639581531249").map_err(|_| ()).unwrap(), Fq::from_str("3758603934629736803795276443958343494675773193363251693220409288341551712330").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("4451970210234717986114292035901002878265169407249728090179081149172309065999").map_err(|_| ()).unwrap(), Fq::from_str("7410547164950177415607578777491789201470470457823190836808741925311048263477").map_err(|_| ()).unwrap(), Fq::from_str("3377257617979106867239904053601661934125307448850679529255044890270861718040").map_err(|_| ()).unwrap(), Fq::from_str("1853599437066515805677543489139997598844238785564000340227677707818357936054").map_err(|_| ()).unwrap(), Fq::from_str("5429064913656400225471445707275667326030314352474713949407963978763116919579").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("1197691971280396306287192581398202969239826051158575768752709995306828020580").map_err(|_| ()).unwrap(), Fq::from_str("4238082431770470956206384878390594711282141802779080073594702685840562565961").map_err(|_| ()).unwrap(), Fq::from_str("878442576213693814831503247472547748946049635003052458359266421326366453086").map_err(|_| ()).unwrap(), Fq::from_str("5684948148104820523289805822153448759615921390176571118906786942761743595141").map_err(|_| ()).unwrap(), Fq::from_str("2148195330920651774204475372303962369753530865773311898903827493341686860486").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("3076116378792126017550285525536207744292826744681071611608701902507121645518").map_err(|_| ()).unwrap(), Fq::from_str("3854674949135327103510638330547969828128748205997669771635963688882753213182").map_err(|_| ()).unwrap(), Fq::from_str("4755716130415217542977073597524817507349271798304793468020622084876605836304").map_err(|_| ()).unwrap(), Fq::from_str("6050679637333033844711176454247417794628303962982782280824008090010299899476").map_err(|_| ()).unwrap(), Fq::from_str("2685297888248924359701694693388428875167185712157540130758768365617060661216").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("3183883339779654676061479301855480480072473192768088585440218959931936308398").map_err(|_| ()).unwrap(), Fq::from_str("2261437371939482004662625493332148611545726111042452410673223413030818086262").map_err(|_| ()).unwrap(), Fq::from_str("2635616215590115067316425848446650757374978178964137414842654459527122987826").map_err(|_| ()).unwrap(), Fq::from_str("757642534360438237303334526849518635508736153455398806606655610105389859073").map_err(|_| ()).unwrap(), Fq::from_str("81095642896409553327019920179113463585893256018230512374427961174685023581").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6797218534895565825010153596978623441886597135565230008465745210509398562623").map_err(|_| ()).unwrap(), Fq::from_str("7911829579284151706198741755052533651888640483435783163537136789567445554084").map_err(|_| ()).unwrap(), Fq::from_str("3064599057061767021844128373975151381942998394487972392912798081667420575732").map_err(|_| ()).unwrap(), Fq::from_str("7063805345764805955148215922898806123389066020619470253506509562832165904667").map_err(|_| ()).unwrap(), Fq::from_str("1892174850394816493301732615726146718742746721222344255693709457408463448246").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("4717994132854965213639492210908837769349591933687169638749603740427164621707").map_err(|_| ()).unwrap(), Fq::from_str("6761450480158449952491585599633818106281185872627021288991452291542156073366").map_err(|_| ()).unwrap(), Fq::from_str("3795412990796694239548309065871618040804921074488092419190725493924790976540").map_err(|_| ()).unwrap(), Fq::from_str("3097803502404347599412562836305050929038994714467265300677530778260720657408").map_err(|_| ()).unwrap(), Fq::from_str("930653861172258191907352192272622238258733136653075005566927516613580047086").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("4585352636873525824828104759068690973281974820135878331879221370389775023943").map_err(|_| ()).unwrap(), Fq::from_str("7641260529140977102042703341856833650015340430014086738397810636181186112074").map_err(|_| ()).unwrap(), Fq::from_str("5863396470823682301618006713561278918846761693001096499090825381381333197518").map_err(|_| ()).unwrap(), Fq::from_str("904842458120294943179706514589550895267467664882990315233867819312320067754").map_err(|_| ()).unwrap(), Fq::from_str("3220700483058000523961146743388642537412666861309394450638829258069123210298").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("6681643333571807222735775986415899108178298316047766720766399594583207798916").map_err(|_| ()).unwrap(), Fq::from_str("3518833953434233472116763773858372400042685039847566378694731000195553633371").map_err(|_| ()).unwrap(), Fq::from_str("3461636820284695086795383614644125098606653460698400639162920772987717675608").map_err(|_| ()).unwrap(), Fq::from_str("5644603989946552583182916764974069538070855789735574326734898596489104442299").map_err(|_| ()).unwrap(), Fq::from_str("206577133176895050891689030107036704932235778591774625169530408225098356324").map_err(|_| ()).unwrap()]), Matrix::new(1, 5, vec![Fq::from_str("848836604072499758747059453660370009974593670854202838287413465373432091653").map_err(|_| ()).unwrap(), Fq::from_str("3047102260061767217116728517244424881290907872992189004054234941930203431649").map_err(|_| ()).unwrap(), Fq::from_str("7237583088447883361002345155915843962913513542268782540683850400729094940465").map_err(|_| ()).unwrap(), Fq::from_str("6929383547412319526976648734922923273554492951001563754725699632161202962266").map_err(|_| ()).unwrap(), Fq::from_str("3132747410952189320997046000269383806861934184935808608495743622151361789016").map_err(|_| ()).unwrap()])], -// w_hat_collection: vec![Matrix::new(5, 1, vec![Fq::from_str("3619055035469301610392353545192091370589671143637455926257957195393175388169").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776293").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159404").map_err(|_| ()).unwrap(), Fq::from_str("4222230874714185212124412469390773265687949667577031913967616727958704619488").map_err(|_| ()).unwrap(), Fq::from_str("3070713363428498336090481795920562375045781576419659573794630347606330632388").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("4825406713959068813856471393589455160786228191516607901677276260526367623852").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239395759877096595325642663707165").map_err(|_| ()).unwrap(), Fq::from_str("27048767200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455892410459001").map_err(|_| ()).unwrap(), Fq::from_str("6909105067714121256203584040821265343853008546944234041037918282122694281179").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("1391947599256776000").map_err(|_| ()).unwrap(), Fq::from_str("1206351678489767203464117848397363790196557047879151975411070768152208597863").map_err(|_| ()).unwrap(), Fq::from_str("17684782061002212000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827918874895000645342041").map_err(|_| ()).unwrap(), Fq::from_str("767678340857124584022620448980140593761445394104914893454191359178521156131").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("1206351678489767203464117848397363790196557047880062312703730225680899719863").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950982785239390365447015253077049789499315").map_err(|_| ()).unwrap(), Fq::from_str("11565982222751178173858400000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335143365172565110624394626855041").map_err(|_| ()).unwrap(), Fq::from_str("3838391704285622920113102244900702968807226970528193616511633177534156868655").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("2412703356979534406928235696794727580393709463883685749577350432537993039726").map_err(|_| ()).unwrap(), Fq::from_str("6031758392448836017320589241986818950979257237382735248977797259580557799315").map_err(|_| ()).unwrap(), Fq::from_str("7564248390604308733188034854724800000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531368902325653271604704980364296524039041").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781286703136026495212913928537688819305193").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("7238110070938603220784707090384572116877256549111016795125497716206263919178").map_err(|_| ()).unwrap(), Fq::from_str("7238110070938603220784707090381875398566311432055124803695538959134751919178").map_err(|_| ()).unwrap(), Fq::from_str("4947081261147683023640511606228713587968000000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938776970429058890637021317756397426912059482839041").map_err(|_| ()).unwrap(), Fq::from_str("3070713363428498336090481795922110382428606798585639031528163517498252086924").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("2412703356979534406928490351734551341209374418729386016521648159578322639726").map_err(|_| ()).unwrap(), Fq::from_str("1206351678489767203462608827168196954300006685900101255806851772385961319863").map_err(|_| ()).unwrap(), Fq::from_str("3235432225507357939279305089273845337395081895040000000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424245832129866126400404346532737832819755829311748289239041").map_err(|_| ()).unwrap(), Fq::from_str("6909105067714121256204596450504334760095366669142909759344956622810075195579").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("2412703356979700953373542989927327947754075091368714761694419645595602639726").map_err(|_| ()).unwrap(), Fq::from_str("8444461749427383511833990529988684649885752662216620453248673723850209239041").map_err(|_| ()).unwrap(), Fq::from_str("2115999542611808425206383230017385219277994830598924825600000000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749426413102365761701541701660970228412654561772902021865775969239041").map_err(|_| ()).unwrap(), Fq::from_str("767678340857786708362429396252524122341246514661864491788758030330819021731").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("1206460601248005043560178447148823906439049019815536644364771507828201319863").map_err(|_| ()).unwrap(), Fq::from_str("2412057908064881264713928350962053121645408720902539578822087125096402639726").map_err(|_| ()).unwrap(), Fq::from_str("1383881272194246002194984091333820129980506623974261470473742080000000000").map_err(|_| ()).unwrap(), Fq::from_str("8443181644663185172104662718372042665962816448631956622706690166765409239041").map_err(|_| ()).unwrap(), Fq::from_str("3838824739102159117098530433496929204672681334070385103267973589324495108655").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("6147177418394293675839647631388895239651803847437754497428815597144867369302").map_err(|_| ()).unwrap(), Fq::from_str("6073787838288528059052971888600522063589241003419452547557519489243255700001").map_err(|_| ()).unwrap(), Fq::from_str("877966251044781814196731303328684002773704756980205596320523227035168824661").map_err(|_| ()).unwrap(), Fq::from_str("1680300822361370381905072597776767704714840902739122054261259298762777002822").map_err(|_| ()).unwrap(), Fq::from_str("310831973912850730876861807340180486365780626755730976508052803884598108135").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("856148838795908209208746356812074335364003203828323724294220179408363440196").map_err(|_| ()).unwrap(), Fq::from_str("6094827374407119647935038893236271706226260060670897287172467813332325927706").map_err(|_| ()).unwrap(), Fq::from_str("6444530954538389171784125059927336017341906140733147801238681004212027093186").map_err(|_| ()).unwrap(), Fq::from_str("7370302277137835780088705682513570202438218267363479646564652327825898626795").map_err(|_| ()).unwrap(), Fq::from_str("7024714842605452078293087244353778483566040287854284549442343302803492826054").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("2961644632303047695577715823695273928888883923467165255278574501055364322955").map_err(|_| ()).unwrap(), Fq::from_str("5138971517972955595710238252356052231557540441856292250007069976332716412249").map_err(|_| ()).unwrap(), Fq::from_str("228563284313582033963104009850978903512039411189781655361817997812028638365").map_err(|_| ()).unwrap(), Fq::from_str("141163402551404501198169773199150554984142577581536757121540753023086357807").map_err(|_| ()).unwrap(), Fq::from_str("1749744466380453436950103697893946249069896462911811415890837353382182991518").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("845416597345020971354694442864794117508425815141020654672299616210760885837").map_err(|_| ()).unwrap(), Fq::from_str("4176515287473442008552714353707417819037235555517648035298731053730648583051").map_err(|_| ()).unwrap(), Fq::from_str("3918635121671318921816701716451302298167000555185499555391707221199118926327").map_err(|_| ()).unwrap(), Fq::from_str("782573690607453281177421994322253656961228445101520254957281771744505405363").map_err(|_| ()).unwrap(), Fq::from_str("2854547265602259967307220069271073951198979639818867636474386128933491322892").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5250957375647202870293019768469320139075875130408369348720297278352439213590").map_err(|_| ()).unwrap(), Fq::from_str("743892906917993225011642975476894243958832578253512245493833962831841201600").map_err(|_| ()).unwrap(), Fq::from_str("7812539464246114489632904460977630195580767185254706736989481538679956000149").map_err(|_| ()).unwrap(), Fq::from_str("5380749615084730699455707375619285634367165018364177465667568705466212964583").map_err(|_| ()).unwrap(), Fq::from_str("464102675462536776794165887409532203099290051605084304047832210958985260587").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("4182417038997255631155135764925288979044181144794636308760205432713537092510").map_err(|_| ()).unwrap(), Fq::from_str("6465650277195218565293260238870881254677567232561972896323016914393179713760").map_err(|_| ()).unwrap(), Fq::from_str("5356330305962920654745530394638790017357523191707754138680465355067825357197").map_err(|_| ()).unwrap(), Fq::from_str("6280948051937432729715564206090984917124623926267316571104752056331004207464").map_err(|_| ()).unwrap(), Fq::from_str("2902037236812081844758075455540049896545151817490161551320005202662158377301").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("6253922075102013311537122047339873473008076266090999962470325524288578564404").map_err(|_| ()).unwrap(), Fq::from_str("3917027989955906926608335366537258273851803130690798654064947604891287977926").map_err(|_| ()).unwrap(), Fq::from_str("5135721837966704529574095277086392826673198100443352124274047571231198270765").map_err(|_| ()).unwrap(), Fq::from_str("968169212551652489407762820946477614372262491202162378605535508220047598348").map_err(|_| ()).unwrap(), Fq::from_str("4056552440492954150064468537227577703143820882312293513424357662370555633197").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("4790500917295764763697366145065957194569104981361890676387931830094895735303").map_err(|_| ()).unwrap(), Fq::from_str("6765067133012392530950335784033789799961417752880480708579206665868262011118").map_err(|_| ()).unwrap(), Fq::from_str("1200044006575803372465626276342547112295776217287206934415479826698503787596").map_err(|_| ()).unwrap(), Fq::from_str("3061266063492948149668119338254318029578480809441037969703296499786245154497").map_err(|_| ()).unwrap(), Fq::from_str("6747033153522969873411124368706363473290402704649820672186813563687324250543").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5846260064036629690367418064068595902324192966197820080729498322482658368349").map_err(|_| ()).unwrap(), Fq::from_str("5525337998808912224512210056940988315896660163067041507808871836208172793887").map_err(|_| ()).unwrap(), Fq::from_str("3993000539076748210251258268562224898098456206203800372027860777967319168941").map_err(|_| ()).unwrap(), Fq::from_str("8228293027820808967145977053154764722872668588400984499433663529444584663411").map_err(|_| ()).unwrap(), Fq::from_str("8415214022743764913726986894119593781718035711103680911686555068054626667838").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("1846896143367372426155378749779540479526329997314556667571432516374526465646").map_err(|_| ()).unwrap(), Fq::from_str("746893234597842719093706399801104979178261083366162352975875167525143570759").map_err(|_| ()).unwrap(), Fq::from_str("82837965708636083214036604879642670669028538693223234779418174141620775612").map_err(|_| ()).unwrap(), Fq::from_str("1789602760401806638838943859429912859411922512697594176773609218897047889276").map_err(|_| ()).unwrap(), Fq::from_str("3741809056313642372578292414231732520389329967433566923544810449513421883947").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("525822604805773990383324445504722316877180206856566089198088980494871388389").map_err(|_| ()).unwrap(), Fq::from_str("4400023399581476229076084375173729875486722009053051898063343151796447571049").map_err(|_| ()).unwrap(), Fq::from_str("7404129173409617670487111130870756803276972080377412391071495785791511418119").map_err(|_| ()).unwrap(), Fq::from_str("69815072931190129644566979469585540892704861327813106937056253546227026551").map_err(|_| ()).unwrap(), Fq::from_str("2938116839228029901630462687041312294281358796436697967216446160525126004866").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("2440894045539607139384970159844795091335685730998085963541278259675380457090").map_err(|_| ()).unwrap(), Fq::from_str("4079089191679715612584661905555705615698244728704610383068061456446135276606").map_err(|_| ()).unwrap(), Fq::from_str("2781199127908094188307884311354145437982527616396457441154125172373917962006").map_err(|_| ()).unwrap(), Fq::from_str("5079881838253990449699203933325777004491929049218215622684047878792847313931").map_err(|_| ()).unwrap(), Fq::from_str("511112710468324423836237588477306568460588458786970315016463344773539702631").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("6193171054036940913333090255101417408801785780334369900764866135970384484659").map_err(|_| ()).unwrap(), Fq::from_str("4551641954930566466407494509161169442349275022700016313694979642453078526780").map_err(|_| ()).unwrap(), Fq::from_str("443593926855234226583797362846611849084221578246195442848672130661595987924").map_err(|_| ()).unwrap(), Fq::from_str("38716373318262392097548680967212111560327234780348654812026422373921578918").map_err(|_| ()).unwrap(), Fq::from_str("4119837901352182838209628754374786180221155496975346011315270227112191586257").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("4397005538359600086742317385712862552381867760010853785937015065983947987534").map_err(|_| ()).unwrap(), Fq::from_str("1842635903428029129148218958247779846335820193004725584446572122966531312411").map_err(|_| ()).unwrap(), Fq::from_str("7897688425336130150414495496523924792334653319043440325252576845731810994644").map_err(|_| ()).unwrap(), Fq::from_str("6276856837371748712682861942595613909310648957795334798085219267828186601317").map_err(|_| ()).unwrap(), Fq::from_str("4773896295726202208039186673787510014445841431433987462747404225557581366732").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5837684128262005804825647876106396142407661842460638784306129186463739176717").map_err(|_| ()).unwrap(), Fq::from_str("6662796944338374019172519603175357145037980757399391331384076471398266264932").map_err(|_| ()).unwrap(), Fq::from_str("3538622469659248332042772828245338174429673448257783665386043998638702523130").map_err(|_| ()).unwrap(), Fq::from_str("5022816291214140110504443097806662114485674873177043216896278108209654880261").map_err(|_| ()).unwrap(), Fq::from_str("4542766497876255232247401948638181126555577534438947572506979568462289380963").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("7507575352920546011580751800347232214132430382655133054000793229332124078786").map_err(|_| ()).unwrap(), Fq::from_str("985299904800384704459231555271751907841186606295166114240258547866514615481").map_err(|_| ()).unwrap(), Fq::from_str("8426484653605928215551193990367284664594933417769200099513815528703726430677").map_err(|_| ()).unwrap(), Fq::from_str("1537129124339191366864722641799696087535996150518462743211985240222388634054").map_err(|_| ()).unwrap(), Fq::from_str("446620028879660805798594245123540461586434781164639270008747826990982365323").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5123330347351134046280450017950519157624694185693895938445735905210917017618").map_err(|_| ()).unwrap(), Fq::from_str("1742773833719122668792629780460804613251445465373427448336062615346517195357").map_err(|_| ()).unwrap(), Fq::from_str("3567694412527938085828038330048457319751538543542197128290136125581680445636").map_err(|_| ()).unwrap(), Fq::from_str("4498472419615226424399411610766984588697145044608248877855663258413876453219").map_err(|_| ()).unwrap(), Fq::from_str("1444251946724225916664227347449568843644825496126458906659024503648940024020").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5809782815784787926268402925214888584149764009650054747468569878029923452150").map_err(|_| ()).unwrap(), Fq::from_str("8280145905563717743202628630954608550347586608397486300236452105547458619922").map_err(|_| ()).unwrap(), Fq::from_str("4223481685313476349848461423341780130503294307218542899824569635830447137960").map_err(|_| ()).unwrap(), Fq::from_str("993204521332903287234535150860521113221764454436300109653837338888330650195").map_err(|_| ()).unwrap(), Fq::from_str("2563252883098197962221692353034335439311114519005465085762942401961889300370").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5013553443579759107013408664332143099854950676275087991348495168273138527360").map_err(|_| ()).unwrap(), Fq::from_str("4655198839392469201950502817201006711216158113323375254703834658422385565315").map_err(|_| ()).unwrap(), Fq::from_str("7121488522621409406003001219490250954875030644708686497090529774334720941538").map_err(|_| ()).unwrap(), Fq::from_str("4879965827659283508327468762292484871346676700103121983457352310625424222221").map_err(|_| ()).unwrap(), Fq::from_str("103152003412995626670815965501126271318826872518262302503619399755622628419").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5281505736209476228625368194815871062689395969317896176277314459239189376784").map_err(|_| ()).unwrap(), Fq::from_str("2457546237656968036899963756388246340437168002506103539551030167985965354345").map_err(|_| ()).unwrap(), Fq::from_str("3892176615420455765037280466810963591888231682316139412412178539615826314931").map_err(|_| ()).unwrap(), Fq::from_str("1788123120679946155909513795234528577990134600872358510097311428549188756787").map_err(|_| ()).unwrap(), Fq::from_str("273589616277476720667578093976265883502524371605403263650116114032148814504").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("120375634993663345423467049551652322601878955778258240407899079731972206487").map_err(|_| ()).unwrap(), Fq::from_str("2360725044803241846323041998265959465716259409244471169154334893947280038816").map_err(|_| ()).unwrap(), Fq::from_str("4580002630231263979965442647658625061156714435344181528728315343332013976678").map_err(|_| ()).unwrap(), Fq::from_str("7848313915613164359774658974259709378409518978722869099202180662775696685850").map_err(|_| ()).unwrap(), Fq::from_str("3078852579910724817997671033826651242678954186458090648762919517123747991613").map_err(|_| ()).unwrap()]), Matrix::new(5, 1, vec![Fq::from_str("5842007535022474771393881356706605267295630721532511994030387263110400264338").map_err(|_| ()).unwrap(), Fq::from_str("1227209451965928705493525855023338836137996912556625280462063141166021348947").map_err(|_| ()).unwrap(), Fq::from_str("8134015645683550675422951584794364531158826391292824005367333970284589558011").map_err(|_| ()).unwrap(), Fq::from_str("5901328219507809588409254764336375535304428247431378374896704332678701815314").map_err(|_| ()).unwrap(), Fq::from_str("4939576631781937288610922587005877806487736407007026097365113971356835030095").map_err(|_| ()).unwrap()])], +// M_hat: SquareMatrix::new(5, 5, vec![Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976])]), +// v: Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565])]), +// w: Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565])]), +// M_prime: SquareMatrix::new(6, 6, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976])]), +// M_doubleprime: SquareMatrix::new(6, 6, vec![Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([15152119682022281684, 2079168917784381610, 8548836536267236340, 524962922610130041]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16770218796354446865, 6164915921600418774, 18434642018604219177, 984431242893424161]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12257484635811173124, 3332345693021229804, 9856107590709416500, 1159223252431020322]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9979132349322887614, 3961848182433907151, 8799570660063224410, 475862931364908156]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3872788615927669352, 15152509537124089722, 5205890896288656861, 1231307161030894178]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), +// M_inverse: SquareMatrix::new(6, 6, vec![Fq::from_montgomery_limbs([9423078532813425529, 2444734831186772378, 13312700987643289865, 1248785285043953466]), Fq::from_montgomery_limbs([17268489821349265988, 4381498102126941915, 18059594369778317098, 58369093700071757]), Fq::from_montgomery_limbs([4554828072642644132, 1444610657142044086, 17449887890871798968, 1155580816162940184]), Fq::from_montgomery_limbs([14700875084405105752, 9239241115023183874, 7789802599827561984, 594039389414401309]), Fq::from_montgomery_limbs([17369961549732213951, 17978420689641993214, 5737613384797227392, 899750828627372416]), Fq::from_montgomery_limbs([11810971497921864966, 13993073307646756902, 8362406159543098387, 1156913604397747244]), Fq::from_montgomery_limbs([17268489821349265988, 4381498102126941915, 18059594369778317098, 58369093700071757]), Fq::from_montgomery_limbs([11035226460624215086, 14239859242862966780, 1132467188784037199, 834550800812545516]), Fq::from_montgomery_limbs([16880054357686407084, 4825991163227954043, 6215044494445833070, 1088315875473995942]), Fq::from_montgomery_limbs([18168083839917324524, 16478236068428869610, 13105126087642640896, 34766978023081808]), Fq::from_montgomery_limbs([17825669542785881313, 12421462367159336603, 2878814310510077253, 503620314193006332]), Fq::from_montgomery_limbs([8217239731080607569, 6429369295863013371, 9835418190294938624, 157201591859370779]), Fq::from_montgomery_limbs([4554828072642644132, 1444610657142044086, 17449887890871798968, 1155580816162940184]), Fq::from_montgomery_limbs([16880054357686407084, 4825991163227954043, 6215044494445833070, 1088315875473995942]), Fq::from_montgomery_limbs([11485023460188927874, 2485551665474920570, 6640923664201453737, 128700539913813365]), Fq::from_montgomery_limbs([8823818330539404675, 14326485851202631671, 17961953298539513959, 284442003114632699]), Fq::from_montgomery_limbs([9085308543112959065, 2317720835922103388, 3188272186429413269, 623518145967541728]), Fq::from_montgomery_limbs([1228919753536764212, 8001001063597501895, 1883429940342590902, 229754754018256412]), Fq::from_montgomery_limbs([14700875084405105752, 9239241115023183874, 7789802599827561984, 594039389414401309]), Fq::from_montgomery_limbs([18168083839917324524, 16478236068428869610, 13105126087642640896, 34766978023081808]), Fq::from_montgomery_limbs([8823818330539404675, 14326485851202631671, 17961953298539513959, 284442003114632699]), Fq::from_montgomery_limbs([9493025027446580308, 5326008844078412686, 17968627192349153669, 636747921187750929]), Fq::from_montgomery_limbs([4719209488067015380, 3286149619947952216, 5381059733444658429, 751991172029274729]), Fq::from_montgomery_limbs([671599285952310028, 4063985053036137885, 9646938041918321080, 299288710064420029]), Fq::from_montgomery_limbs([17369961549732213951, 17978420689641993214, 5737613384797227392, 899750828627372416]), Fq::from_montgomery_limbs([17825669542785881313, 12421462367159336603, 2878814310510077253, 503620314193006332]), Fq::from_montgomery_limbs([9085308543112959065, 2317720835922103388, 3188272186429413269, 623518145967541728]), Fq::from_montgomery_limbs([4719209488067015380, 3286149619947952216, 5381059733444658429, 751991172029274729]), Fq::from_montgomery_limbs([6563574222345881967, 1281874181852671859, 11466642440831414650, 443077589787383810]), Fq::from_montgomery_limbs([2252784982698758221, 17647697801612484629, 3564381744461717162, 1112500262860291153]), Fq::from_montgomery_limbs([11810971497921864966, 13993073307646756902, 8362406159543098387, 1156913604397747244]), Fq::from_montgomery_limbs([8217239731080607569, 6429369295863013371, 9835418190294938624, 157201591859370779]), Fq::from_montgomery_limbs([1228919753536764212, 8001001063597501895, 1883429940342590902, 229754754018256412]), Fq::from_montgomery_limbs([671599285952310028, 4063985053036137885, 9646938041918321080, 299288710064420029]), Fq::from_montgomery_limbs([2252784982698758221, 17647697801612484629, 3564381744461717162, 1112500262860291153]), Fq::from_montgomery_limbs([14444310640393871747, 7159616422470945171, 4259499542152695501, 338890106485999353])]), +// M_hat_inverse: SquareMatrix::new(5, 5, vec![Fq::from_montgomery_limbs([13904863849479527760, 2515041799497956331, 1093602514364610087, 950491498045111042]), Fq::from_montgomery_limbs([2579295949243395069, 12030978017499995826, 12080587065043491505, 38868424124071283]), Fq::from_montgomery_limbs([15092547513410891885, 17256115361070971171, 15459413513070879524, 321960420545902323]), Fq::from_montgomery_limbs([2229704028309941057, 12072197468400244658, 10950994247046669419, 1297185510317020994]), Fq::from_montgomery_limbs([12038262541350864619, 6432253836569655322, 13293017510951151922, 464458410353108600]), Fq::from_montgomery_limbs([2579295949243395069, 12030978017499995826, 12080587065043491505, 38868424124071283]), Fq::from_montgomery_limbs([10576000036529335161, 13879266532014962184, 16888595672184660747, 1185164108096765058]), Fq::from_montgomery_limbs([1279444508565403937, 6039704410083424768, 14409182292770989236, 1032663778275682773]), Fq::from_montgomery_limbs([10494653767401929635, 7151674624434035414, 113618062021286492, 734991999940840872]), Fq::from_montgomery_limbs([3733906304148166273, 17683287484600659811, 14933709177852827861, 1249090649945868590]), Fq::from_montgomery_limbs([15092547513410891885, 17256115361070971171, 15459413513070879524, 321960420545902323]), Fq::from_montgomery_limbs([1279444508565403937, 6039704410083424768, 14409182292770989236, 1032663778275682773]), Fq::from_montgomery_limbs([17854942931053508049, 12379835822212862963, 7917418649695695574, 818127752736513102]), Fq::from_montgomery_limbs([16713139695953442230, 14827246597006708747, 6565710292947236351, 279636205695659750]), Fq::from_montgomery_limbs([6021453437997963755, 2434637845477546326, 15808901861436069769, 656837851837718215]), Fq::from_montgomery_limbs([2229704028309941057, 12072197468400244658, 10950994247046669419, 1297185510317020994]), Fq::from_montgomery_limbs([10494653767401929635, 7151674624434035414, 113618062021286492, 734991999940840872]), Fq::from_montgomery_limbs([16713139695953442230, 14827246597006708747, 6565710292947236351, 279636205695659750]), Fq::from_montgomery_limbs([1817061708622591813, 7842241796668241324, 11705700881511613623, 124703629193508345]), Fq::from_montgomery_limbs([7645141843637222694, 11261613033476609866, 684978708883533390, 1180658499202360863]), Fq::from_montgomery_limbs([12038262541350864619, 6432253836569655322, 13293017510951151922, 464458410353108600]), Fq::from_montgomery_limbs([3733906304148166273, 17683287484600659811, 14933709177852827861, 1249090649945868590]), Fq::from_montgomery_limbs([6021453437997963755, 2434637845477546326, 15808901861436069769, 656837851837718215]), Fq::from_montgomery_limbs([7645141843637222694, 11261613033476609866, 684978708883533390, 1180658499202360863]), Fq::from_montgomery_limbs([6471109714169199028, 651257754441033744, 967849492968733845, 881634047292451586])]), +// M_00: Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), +// M_i: Matrix::new(6, 6, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([525395534966640354, 4649108525155679700, 5611566907608735139, 1157162242601075454]), Fq::from_montgomery_limbs([4270514995051619857, 9080682450539254193, 11764444330152623833, 1296452142209921646]), Fq::from_montgomery_limbs([13085423902825236141, 4106908764311471538, 2111632228314415714, 345239388869093745]), Fq::from_montgomery_limbs([4739016182142013260, 12433567496673952941, 16956579312525014509, 596646251662680532]), Fq::from_montgomery_limbs([15744576121486695479, 10597769634158624533, 14136093497735719287, 512698864094506675]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4270514995051619857, 9080682450539254193, 11764444330152623833, 1296452142209921646]), Fq::from_montgomery_limbs([14428417055342911695, 8272271618979314579, 5027159236098050530, 724167566789085063]), Fq::from_montgomery_limbs([3709734358196874918, 11929487831132379323, 16830563350788980501, 398518023243913541]), Fq::from_montgomery_limbs([899835313390383283, 10922138075185035991, 10399061813978257330, 1225969452739805970]), Fq::from_montgomery_limbs([6368857132124103246, 3738999983005063047, 6786228693787372954, 743414762217018339]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13085423902825236141, 4106908764311471538, 2111632228314415714, 345239388869093745]), Fq::from_montgomery_limbs([3709734358196874918, 11929487831132379323, 16830563350788980501, 398518023243913541]), Fq::from_montgomery_limbs([9860604545813959634, 6023137071889763432, 18357541439838773826, 267782511194587624]), Fq::from_montgomery_limbs([5425553862160636710, 10155674884481011840, 8882505056945541629, 629430891711291823]), Fq::from_montgomery_limbs([5693655221984583188, 5078045342146247458, 8593703977821442979, 40108457599127726]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4739016182142013260, 12433567496673952941, 16956579312525014509, 596646251662680532]), Fq::from_montgomery_limbs([899835313390383283, 10922138075185035991, 10399061813978257330, 1225969452739805970]), Fq::from_montgomery_limbs([5425553862160636710, 10155674884481011840, 8882505056945541629, 629430891711291823]), Fq::from_montgomery_limbs([1974709593969888668, 3838580677334353595, 4105349786837999128, 16966368926604082]), Fq::from_montgomery_limbs([16299857180872679507, 9990704222165585528, 17839066130443287287, 1300929190020977365]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15744576121486695479, 10597769634158624533, 14136093497735719287, 512698864094506675]), Fq::from_montgomery_limbs([6368857132124103246, 3738999983005063047, 6786228693787372954, 743414762217018339]), Fq::from_montgomery_limbs([5693655221984583188, 5078045342146247458, 8593703977821442979, 40108457599127726]), Fq::from_montgomery_limbs([16299857180872679507, 9990704222165585528, 17839066130443287287, 1300929190020977365]), Fq::from_montgomery_limbs([14268832143359565128, 14009303067203234749, 1311318265344615584, 224271541899878138])]), +// v_collection: vec![Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([15846042622821125949, 5578170090212244723, 14386484975980635087, 1162081450610719662]), Fq::from_montgomery_limbs([9425713365442649542, 17724400577059603932, 10835235343511845981, 1179696731387397906]), Fq::from_montgomery_limbs([15470398571621834328, 8748455436620348445, 11923882037413103894, 147851229490754041]), Fq::from_montgomery_limbs([3205030528550848740, 11233883805951482885, 4631904539047675327, 85240573307222008]), Fq::from_montgomery_limbs([4306955861584430579, 2866573513612242948, 5009794262667624955, 295301720036234004])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([7251188616661835801, 8810908530742177026, 5438752491170217053, 624809552915168399]), Fq::from_montgomery_limbs([8041373032028091555, 15486500451885216694, 2640515848525906572, 1101280997644118799]), Fq::from_montgomery_limbs([1028894706146998760, 13234395603487812099, 310927904286248029, 1284009513603315703]), Fq::from_montgomery_limbs([15907405187752122338, 7460014754810790101, 3112115084952575259, 1176166567473148345]), Fq::from_montgomery_limbs([6667915961879815626, 11892868641826580977, 17153671363694122316, 1080025318281387536])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([5168631598983031118, 1709031240629846937, 12176717122174422876, 1133547231698905845]), Fq::from_montgomery_limbs([6505284181050366169, 6621303409684149204, 14721846886395529985, 756463071795143691]), Fq::from_montgomery_limbs([10252599865552606113, 8719458131520431579, 4094128546015477610, 154229004185959046]), Fq::from_montgomery_limbs([5962216050578461567, 1852471921743211935, 14625008624739847061, 402573870144144998]), Fq::from_montgomery_limbs([2504232889257023710, 6382931252528192024, 946087668070181732, 39444081019304469])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([8935875040282017923, 9359087371918622751, 4377160640113921337, 438001764693096006]), Fq::from_montgomery_limbs([5964768355342862060, 12844248228508214834, 217390320027003427, 519739213235621144]), Fq::from_montgomery_limbs([13476869152223212245, 14360104411032897136, 16239873007321200914, 3853403215029221]), Fq::from_montgomery_limbs([14270258435530476850, 16224741710497622821, 15034723833298150364, 1105854585395665472]), Fq::from_montgomery_limbs([3034628514738856022, 14677362698363483188, 10612467457981582049, 621317746892157952])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([12356435149313176789, 14997081370594107955, 2318538420922195008, 27051273329381197]), Fq::from_montgomery_limbs([14179669150985422172, 1587784931571575237, 15544226047094276906, 265503486564006544]), Fq::from_montgomery_limbs([15848703335457516734, 12988350955449684774, 10747751923255963574, 192884410298894891]), Fq::from_montgomery_limbs([13283753749608228542, 15731192032524989112, 10134977648663526427, 1011453356572734072]), Fq::from_montgomery_limbs([8372393423324448788, 2642634076467295974, 2238857053734841195, 713995311234362151])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([6650896784315049976, 8618299026172959087, 4613782712309215097, 1194575414958458214]), Fq::from_montgomery_limbs([8401059625843059611, 9360504521211886317, 9752588986385800578, 35467022242567223]), Fq::from_montgomery_limbs([14549311442558804272, 14851474988790195550, 17243272363514665510, 556891460284998050]), Fq::from_montgomery_limbs([8839260009215695166, 5332337195891362342, 10215113273837828390, 53276328504747705]), Fq::from_montgomery_limbs([4743214023748331668, 16150812970442549102, 3607008032772749996, 71636842460588166])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([7745993606763106157, 400962028791523193, 14448679365436054364, 127361796442057001]), Fq::from_montgomery_limbs([4881557665307853374, 16503843953516371036, 2631138906021440407, 1145135568670602972]), Fq::from_montgomery_limbs([3748730199472583624, 1701168955512052480, 1204298795241125154, 919171892692993894]), Fq::from_montgomery_limbs([16293341788272558865, 17325870627390234246, 16387125646971798797, 1009137174300676172]), Fq::from_montgomery_limbs([2499133372428019558, 15739123510404573354, 10677356306660504584, 958976143899963938])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([14252792066102246657, 15864171804698265189, 11911247415967054910, 961487415285183784]), Fq::from_montgomery_limbs([9957038734178160162, 250039500043978770, 375263104710602935, 35544998893003180]), Fq::from_montgomery_limbs([831877114936420076, 2002790044227393828, 11129740988708533905, 746550053534881799]), Fq::from_montgomery_limbs([4734226494958051881, 18003010652169239318, 16569731595317548852, 109984045623665701]), Fq::from_montgomery_limbs([10630025490758573206, 12380598183142825838, 1493124485160554052, 492990263362994025])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([9005167414234319760, 16535434979210366835, 5819620234707341946, 602158252276980823]), Fq::from_montgomery_limbs([9119416898454972043, 8049431789793640151, 13607373929564011639, 761938773322253558]), Fq::from_montgomery_limbs([11646529739221266743, 15631506041020749904, 7526925524884509569, 797718489067789891]), Fq::from_montgomery_limbs([14242496370333104920, 8841581893310155090, 1684451748824201839, 293704403017488420]), Fq::from_montgomery_limbs([12068414265588270249, 7748413288237551533, 18041956849707733339, 1127727052880210045])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([16896144613183838177, 12574347096617734902, 8321293894060275613, 1181815496381441993]), Fq::from_montgomery_limbs([11490675786236053006, 9698599818026366787, 5948732065795477184, 425414085344036431]), Fq::from_montgomery_limbs([13535638352040032845, 11010719926202516879, 10750188616385991719, 450767332534563092]), Fq::from_montgomery_limbs([3178227411283526947, 463456667345831080, 14382176159228633426, 829036438269219798]), Fq::from_montgomery_limbs([15205960183032177355, 12047942859395994973, 5508647109209154207, 409271998288939244])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([5842441710461865655, 14354544144458273887, 16159087842820577493, 1102018593492537867]), Fq::from_montgomery_limbs([10259604216221740521, 2737735964532783652, 1934594841398453131, 915029026536998488]), Fq::from_montgomery_limbs([5389086520584317977, 2729523047482171967, 12492070423980987131, 339278797072716184]), Fq::from_montgomery_limbs([11961359983369405646, 8872285219479794351, 11590963834161858363, 847871031745582321]), Fq::from_montgomery_limbs([15708428924964800383, 9689329403735339585, 876235638671718277, 1293191834696859659])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([10926323662882715805, 6357617649943251603, 3882295273855196975, 302265041875854273]), Fq::from_montgomery_limbs([11884492353389440282, 10865891220420186719, 1506391581950765997, 1273730401079532625]), Fq::from_montgomery_limbs([6062018478948078733, 2238300480159412589, 4475922925472998435, 427700151782713553]), Fq::from_montgomery_limbs([14998626184060509521, 8084520935552429366, 16157620168154649636, 936139145933018848]), Fq::from_montgomery_limbs([5424440642649697210, 11030005216981850100, 3736937858414725236, 353926131228082038])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([6991010538111487096, 3208699080691172022, 15674148293257243198, 528616403431683993]), Fq::from_montgomery_limbs([5895680427204256637, 15308092775755115835, 5725537177674079322, 624044939296156178]), Fq::from_montgomery_limbs([15682781481863573356, 12524037328552645708, 13137829315048512550, 453866324724543378]), Fq::from_montgomery_limbs([5999454803832491786, 11757829240759186672, 16786792833686808980, 1008783050525293123]), Fq::from_montgomery_limbs([4965854579231858650, 4470286827276633884, 18255756957602409470, 1257925856629374202])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([6756792567489648436, 9174065877200954316, 14588982300344994878, 495558322589948188]), Fq::from_montgomery_limbs([16407708660026263913, 17259087838077364390, 13625416430514248811, 207969270690764399]), Fq::from_montgomery_limbs([11870501170821012713, 18047340589874750756, 93512878936056238, 478288405689674144]), Fq::from_montgomery_limbs([873793291822892867, 17836937206243952238, 5128543094009831337, 132104142075103351]), Fq::from_montgomery_limbs([930043501771119768, 15613823438280495150, 6464828430156696004, 359908580296612711])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([18438521383060368690, 14476395006954860191, 3425945854098388541, 944003065485357481]), Fq::from_montgomery_limbs([3311768994809575814, 10503690422660653146, 10526674813249312919, 864802385440313737]), Fq::from_montgomery_limbs([8810438360452481727, 12680118392135545157, 13641246557527810849, 1252645481585559515]), Fq::from_montgomery_limbs([14299022666252422420, 14841944407301251201, 15136912555606442873, 856379827147710042]), Fq::from_montgomery_limbs([2062956481566651544, 12093197892291904316, 11631702561466346010, 144441024184915083])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([7993143086113878189, 3624434478267440806, 13278019726447600986, 654136378501676754]), Fq::from_montgomery_limbs([7992479798903963387, 7895372341947686019, 4334209577850630153, 1180883581857163505]), Fq::from_montgomery_limbs([3027910113375733204, 4485846847893599917, 15294205594975595333, 100423190749786506]), Fq::from_montgomery_limbs([4120333963287836783, 11671291525241561103, 9901986613770683621, 651573815597675240]), Fq::from_montgomery_limbs([11428233072419105889, 2944089198827741952, 5214300364587140869, 1189260788971714219])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([4551784723657471230, 11207660824801473415, 13918603200560666189, 909618049825337324]), Fq::from_montgomery_limbs([2675501742361862254, 5250455330270200426, 12586684907650118989, 1330284139416672144]), Fq::from_montgomery_limbs([12040165191610290428, 16503275216221829144, 5260280485839874467, 1227840433161545716]), Fq::from_montgomery_limbs([7679795588389348013, 15191087003013740641, 15555116922073130768, 344262909715092301]), Fq::from_montgomery_limbs([6169211658344078831, 531166906056818046, 1322277761354587680, 210108348638141620])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([2248963634255452368, 15563761402233708045, 3393738612726595863, 270037018221350140]), Fq::from_montgomery_limbs([11601309892240246141, 3638465656527027416, 1395756619190043331, 138813074475309167]), Fq::from_montgomery_limbs([5291125713635089368, 14819398438069773983, 13114950161797142217, 25590678184791818]), Fq::from_montgomery_limbs([5534877013314393609, 1759072288627502628, 16181954987325767733, 134682133959402637]), Fq::from_montgomery_limbs([4161482061465148858, 16683675972158421075, 3099920947049254669, 957124783703318342])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([4510595409768553239, 4974517727576987266, 15978837518179150731, 335342136683204977]), Fq::from_montgomery_limbs([6636059739397131000, 9640261418262971507, 18005427333200225259, 755356145676404050]), Fq::from_montgomery_limbs([15131021729179035121, 3322699383837917438, 16694361960801514505, 921109580640113983]), Fq::from_montgomery_limbs([7634123202466598220, 810298720516221902, 840599007384281843, 656905365051140366]), Fq::from_montgomery_limbs([11303104649441347181, 12152859936809161042, 8157805368560172079, 226879006121087093])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([4222768071479979923, 6221868890067618237, 6706788302094795072, 470857396285528184]), Fq::from_montgomery_limbs([837480829798517493, 2139750872442256742, 5213024737969853757, 586284678362031355]), Fq::from_montgomery_limbs([18413923626929455705, 12351565965899756217, 17706788027426014962, 396824563157594134]), Fq::from_montgomery_limbs([11865172518676463006, 15009302994533156097, 16026973397263722566, 1243693536982901909]), Fq::from_montgomery_limbs([7252462303444002809, 9549080656602382200, 6400682688095758738, 206059245034621582])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([8375555895564253468, 7925422648691473256, 16821885625729885556, 985921094928817309]), Fq::from_montgomery_limbs([2046299323863281369, 13882781361146929705, 15448488877161513887, 490830679341871217]), Fq::from_montgomery_limbs([7429671875567937801, 10229990955659579326, 17998819479213658262, 468703275856634003]), Fq::from_montgomery_limbs([935091299463462187, 8817490257427535584, 4201099561438792936, 308509415209580254]), Fq::from_montgomery_limbs([15175273292104113428, 15547411926550064745, 18326735472470278187, 46288025765161350])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([2376775726955536549, 7198072882321834778, 5820986721223000167, 1305597767879405697]), Fq::from_montgomery_limbs([11562318758115257029, 422264710018175990, 4674708296176782956, 321605471576378125]), Fq::from_montgomery_limbs([14422446717346283559, 4522943560525804925, 12524200552641302343, 992174839589322314]), Fq::from_montgomery_limbs([2660063348396745477, 3046452749899310106, 12556614243413712855, 292167348848223777]), Fq::from_montgomery_limbs([6669133378666467376, 16135058416591179983, 5627772722389914612, 379140231019033687])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([5810827329069058342, 9466338503926448033, 13219994636736965707, 1133919653888422832]), Fq::from_montgomery_limbs([11390689618371396272, 9685029449622007826, 13242820419679967997, 1063349475949275121]), Fq::from_montgomery_limbs([17763514783930037833, 4809121417820211582, 2875494172038972593, 296043141357624455]), Fq::from_montgomery_limbs([11611692421411999894, 15220040608516358932, 282037844166434278, 281687965959955676]), Fq::from_montgomery_limbs([4438433961554370400, 12877811549841781756, 15741991214229698793, 280844842261162310])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([17169851287016280826, 10822471821114911500, 1491721488328495957, 216887165418048275]), Fq::from_montgomery_limbs([10994016828848236257, 13445735015422423625, 5018165562796963731, 602535974428869013]), Fq::from_montgomery_limbs([15126102334199024880, 12867057351876414370, 11159159194149946143, 115881007342718723]), Fq::from_montgomery_limbs([2794226167942571109, 1548538606305510804, 18291849409425428450, 1340198361306759329]), Fq::from_montgomery_limbs([4267162633414624824, 10477712998553375282, 6267269603855607198, 982787929756500753])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([17381305832731585223, 9268492096935184370, 5234949576450927455, 21981840360160805]), Fq::from_montgomery_limbs([4087927870940191769, 13753414599816622073, 13058329164603291227, 834131236566284313]), Fq::from_montgomery_limbs([2546006251271733188, 17600491598884247746, 14062949050289708021, 821447001112770449]), Fq::from_montgomery_limbs([11557892681183640983, 3553808879521780009, 5828391499760976335, 706816644254127358]), Fq::from_montgomery_limbs([87239843232890664, 15700472350663595467, 174519885711847558, 1123281110015984026])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([2827103361153395332, 9771223936028754360, 17019668270000185744, 250846897334218988]), Fq::from_montgomery_limbs([5119814427033781946, 2081312228775851068, 14150656259150135415, 412824983197785589]), Fq::from_montgomery_limbs([8649749569221526485, 520969763542437761, 18397072919079815484, 473314797287595707]), Fq::from_montgomery_limbs([8194315404853463748, 15060811055660635178, 11318868018104656047, 759678196288305769]), Fq::from_montgomery_limbs([10987085614436524099, 8214999842286961244, 5709575456336614864, 1056310210546073817])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([6532789592575228069, 3265438887018026818, 17111525378271668948, 1320499686924692082]), Fq::from_montgomery_limbs([2197318288869911886, 307033351054159068, 14033422988641489555, 689909787061505964]), Fq::from_montgomery_limbs([3507717375223769090, 10033023697975699121, 15321810854570355253, 890016110699860569]), Fq::from_montgomery_limbs([6897743854949081968, 10158161465287387801, 9179072886178700686, 620001185095628667]), Fq::from_montgomery_limbs([17448998618237282714, 2553852017375909, 1793419264718581373, 725044591608116521])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([16012268534560097932, 13416075297285506301, 16493211465851903420, 1091948493998105984]), Fq::from_montgomery_limbs([14392369108156989804, 10617956576365144165, 11809714324716728769, 1188444181516740870]), Fq::from_montgomery_limbs([15466384892561009653, 10941962222512674624, 1913904384440848129, 606922266921522145]), Fq::from_montgomery_limbs([14584618083984398210, 14186299915288736440, 17757535025721844034, 1063945284694781692]), Fq::from_montgomery_limbs([6792570643359499560, 4535097730077924957, 12073011546773881134, 1137378726981169881])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([15102847980540220978, 5520326730982346297, 2698729817022762322, 1194738055539544118]), Fq::from_montgomery_limbs([6147044654176302920, 2364057582092333147, 11540841437940787480, 556063025467036658]), Fq::from_montgomery_limbs([1647311829762859720, 13415217341886740242, 16485335404491864284, 491439704095662519]), Fq::from_montgomery_limbs([12141727361360860468, 9821467392353266448, 11166495178510190210, 245664677516946430]), Fq::from_montgomery_limbs([5360382176507266601, 768193387830048410, 3996566068451735831, 795512106745688059])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([2189128173409064762, 11499748369225599949, 13499847782281945694, 1340871250773004273]), Fq::from_montgomery_limbs([1159278411248794850, 6701355601329876701, 10476550252580870928, 490304301636428667]), Fq::from_montgomery_limbs([4466317563581149355, 15128213745330326318, 5257941398512314848, 1111650855813054172]), Fq::from_montgomery_limbs([8839577424282800883, 7949855030699078116, 2996553645008704135, 85398623640375889]), Fq::from_montgomery_limbs([9514362250339879637, 13706294199150347872, 11853022932563321890, 818790762833572114])])], +// w_hat_collection: vec![Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([15152119682022281684, 2079168917784381610, 8548836536267236340, 524962922610130041]), Fq::from_montgomery_limbs([16770218796354446865, 6164915921600418774, 18434642018604219177, 984431242893424161]), Fq::from_montgomery_limbs([12257484635811173124, 3332345693021229804, 9856107590709416500, 1159223252431020322]), Fq::from_montgomery_limbs([9979132349322887614, 3961848182433907151, 8799570660063224410, 475862931364908156]), Fq::from_montgomery_limbs([3872788615927669352, 15152509537124089722, 5205890896288656861, 1231307161030894178])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([311271084272320082, 5284197557048869863, 14669222562574339674, 571307699885408030]), Fq::from_montgomery_limbs([11625781241601592791, 14885568706820662540, 17941376171308792723, 783918507477975660]), Fq::from_montgomery_limbs([226868460330872644, 12734244079593541616, 10451890082278586850, 32508669310149618]), Fq::from_montgomery_limbs([6020187144675607048, 11405887127978088053, 4712122969940341979, 1080334010198437810]), Fq::from_montgomery_limbs([5933505187504807441, 3473057270652036730, 6105009132686901569, 114203646444743763])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([1120856672192884245, 16247214934320106390, 15323677081999960076, 62404200512763570]), Fq::from_montgomery_limbs([8831161875549232238, 6077491870312206017, 14081883006003626391, 1154651324772984368]), Fq::from_montgomery_limbs([5661890842653089732, 13320534556163866242, 9035321631852285107, 903630770886300483]), Fq::from_montgomery_limbs([15889657237181390432, 15162271575679238159, 1491114731026258819, 287846816690944321]), Fq::from_montgomery_limbs([7238626723934307483, 13278275328632196610, 8627741857269318907, 925711656222055996])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([16274331391150039806, 1623594389399151027, 11932333738554132870, 706372249166702105]), Fq::from_montgomery_limbs([732452989467352943, 1044771601653765712, 7295501005775861284, 241383337916425122]), Fq::from_montgomery_limbs([1055111559926828336, 436063422223614235, 8237830476387497674, 486023893828905207]), Fq::from_montgomery_limbs([11846198484218265818, 8058524634853844099, 813566309310159764, 1342803580678902586]), Fq::from_montgomery_limbs([13415802809644488728, 14511002260322793565, 4157389022600774011, 262652662563663469])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([6280812441180517055, 6148355053508262675, 10298538567830482124, 549753875811636329]), Fq::from_montgomery_limbs([824304312279887084, 5198474444698315745, 4090895165493551175, 1217302205153655151]), Fq::from_montgomery_limbs([4735542953263469139, 612014805877448122, 12832372076520494984, 750953222849642269]), Fq::from_montgomery_limbs([147828622890240493, 128044761765714597, 12093927754417303852, 132385902652165260]), Fq::from_montgomery_limbs([18171144465445367562, 4015656370081309510, 15930285771575041073, 1269412572744267545])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([14398639038380864956, 6619595958723804843, 12719064233121758133, 406442443563323199]), Fq::from_montgomery_limbs([10762946454330918789, 5528361687335835568, 3991418360765486778, 286492429663333048]), Fq::from_montgomery_limbs([11742168906901241463, 15503883602330266637, 15831515237753512854, 1044066191448484616]), Fq::from_montgomery_limbs([10525155675978585492, 4670730111394235591, 5961373269656674720, 95271963105126236]), Fq::from_montgomery_limbs([584627878861922239, 7921433855087631798, 7615313333543717641, 1109592926172816575])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([15091688909514107804, 654570390524891199, 16494576826680457410, 30762953858016498]), Fq::from_montgomery_limbs([2761325807027693284, 11935489432137753301, 3489012309486987802, 239715377721177782]), Fq::from_montgomery_limbs([10454593178969047515, 1040128098662881642, 5632035830401774632, 554859180328868399]), Fq::from_montgomery_limbs([5107303737176549426, 15727856129637397988, 6051568784602114728, 873492972237083876]), Fq::from_montgomery_limbs([12130743148391729861, 11271998017451462639, 10929122930592304172, 194097991947183661])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([14867630937298531794, 9612402140924249048, 15791934086459495277, 701876161263964392]), Fq::from_montgomery_limbs([4800492369986485195, 837798357520426667, 11678651630838500929, 1197393486814847593]), Fq::from_montgomery_limbs([7361531118817265902, 10654842008121782114, 11329661993953094409, 53031172666072441]), Fq::from_montgomery_limbs([13678736880795169285, 11579896750305940195, 16427828830934341434, 373548996986898141]), Fq::from_montgomery_limbs([3113965972245214273, 3618222426215928202, 14280489027814430075, 1227439762891391632])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([1519481477607620457, 10318567135550122014, 263846661207466096, 640929643224454153]), Fq::from_montgomery_limbs([14263939264430200097, 8800960240049783032, 10525864428412568060, 1229598433830944803]), Fq::from_montgomery_limbs([4737100860592755646, 3405741585209394827, 3774719897330733186, 1001424607855656625]), Fq::from_montgomery_limbs([4527327887926361650, 5195716198788998780, 2452454045651672598, 1114842100489228591]), Fq::from_montgomery_limbs([12639481132070877116, 6184431555458882642, 13833172896014011365, 138391625804209902])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([3025469591916962139, 1116358649574420645, 10697299179333984962, 1100828152488463516]), Fq::from_montgomery_limbs([17596104129549385707, 117028884523868090, 6843789980420923220, 394144012237385792]), Fq::from_montgomery_limbs([76569421022187354, 7618174529699040891, 14258607882742494097, 325795777168928125]), Fq::from_montgomery_limbs([9488688453300333348, 6023458951346117124, 8882873536266522192, 1011335963622574163]), Fq::from_montgomery_limbs([10273078691683312131, 14951774310795138631, 5056574235010407582, 216683108447003755])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([16270690847183812253, 8396384187123364284, 15973135291934403644, 337754294626036574]), Fq::from_montgomery_limbs([11537970389959600601, 15344885270945805038, 16062179622496264928, 634770789960495300]), Fq::from_montgomery_limbs([16629897675960611498, 9857864935176241914, 16649516829790580187, 879077994781187974]), Fq::from_montgomery_limbs([15757760830891963153, 1980968732617718233, 363417887657441819, 1245373320221094018]), Fq::from_montgomery_limbs([1369140419065411691, 114665172743829173, 16025067317418460214, 772519184136728441])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([5166287970903668709, 13178607088194812953, 13394943015525495010, 1136891698590635716]), Fq::from_montgomery_limbs([6786739958142009449, 3712291089779086337, 11114170296176591543, 412243655343207746]), Fq::from_montgomery_limbs([2483986099773441215, 6355297372287593359, 12546131765129037338, 850333435641268865]), Fq::from_montgomery_limbs([4129060137994461513, 15810046888600142778, 14959377549727103485, 983509352989716443]), Fq::from_montgomery_limbs([5375190994774345144, 6642323264045992752, 697489999924152538, 711658337986264203])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([10789013922038705474, 15907427163103262467, 6211828439721814286, 821662973636748389]), Fq::from_montgomery_limbs([1245892911222176515, 1760690499003421411, 7411938278280460519, 996198333836410116]), Fq::from_montgomery_limbs([14902739397227121611, 9677074799597948924, 16338232095647494428, 107475751267019502]), Fq::from_montgomery_limbs([14751552868296217802, 10957219946410361892, 2609386566023075942, 795435587890350748]), Fq::from_montgomery_limbs([14228026094996696402, 2826584103258174948, 1310186622837843420, 912856498151667865])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([632309018718566470, 8852208976226519541, 5569100181556353071, 984010564169166433]), Fq::from_montgomery_limbs([6992820576439012611, 9698447268226822027, 17633082455161111009, 90244636707781414]), Fq::from_montgomery_limbs([6543679712083684758, 10736979596575357883, 4698076992795071575, 1270787674212113]), Fq::from_montgomery_limbs([16044338327666607926, 3960206126744122590, 4858706793602461066, 561666947698425720]), Fq::from_montgomery_limbs([3368306314740365965, 9177942911310203166, 18367144956945019416, 653903203015259414])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([12874723854177830125, 5100681384941725656, 9285950066462290781, 858148062800653733]), Fq::from_montgomery_limbs([4768366185853611631, 14842169834008972704, 16645218449281418514, 817503519482950628]), Fq::from_montgomery_limbs([3007496102230569523, 11399958112043651698, 15787521760129406401, 826416774444573023]), Fq::from_montgomery_limbs([10890936042157055266, 8565215756042961896, 1054057862367192487, 202049359204983814]), Fq::from_montgomery_limbs([2425581217694278079, 12792279644970276082, 4689036727185422224, 1064336763331781201])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([2764179143636297935, 18061233587720561716, 12411254568157467507, 427402914001475058]), Fq::from_montgomery_limbs([2924816478430507635, 9786303437156946185, 13021435082088378496, 78702703698317598]), Fq::from_montgomery_limbs([8200525868229314140, 16881303073057711951, 4187547714670888467, 455617381392152389]), Fq::from_montgomery_limbs([8310666736636434815, 16453325372394262716, 13511049246920939341, 416209098687774975]), Fq::from_montgomery_limbs([7508636928089493550, 1778929466519171040, 9865075252470321631, 222439820478088778])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([26427962923262805, 13400472629512916744, 3808805306352074297, 128699596583089680]), Fq::from_montgomery_limbs([18283636998376248321, 5779768391741799708, 8993926161412908836, 272788598277303242]), Fq::from_montgomery_limbs([385260822800957491, 7888556288710245505, 12785711973091118063, 1290081227789032623]), Fq::from_montgomery_limbs([7370461305656006315, 8097104282146432375, 3693139275053762963, 1200841519361465892]), Fq::from_montgomery_limbs([12067130442173286908, 2170379854767453652, 13201336336736961495, 927175852053928205])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([11214687023235424600, 5560314158648804455, 17670625093449035024, 1242366510949799159]), Fq::from_montgomery_limbs([8409895882379798325, 14471144258274119497, 5245528502428581668, 869805265859067382]), Fq::from_montgomery_limbs([2802161834127193832, 181192611793840022, 1581405763136818654, 674326086636803499]), Fq::from_montgomery_limbs([5748156006252401196, 9530968273316544473, 1373075747037319701, 478917773953068122]), Fq::from_montgomery_limbs([10550634859635316442, 11115297058518078301, 15167740297739703393, 499663014055796942])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([8737679817842057617, 14335003891544767889, 5806471893265243804, 1199697546794663346]), Fq::from_montgomery_limbs([18312746592170672376, 2468171777169034619, 11588707770047473860, 1167607620745843361]), Fq::from_montgomery_limbs([8991056605371192176, 9683166706953599777, 3207279773035228554, 1036594322405142084]), Fq::from_montgomery_limbs([10715958137830220707, 13790797151438523296, 3814352367403212083, 338399526865285980]), Fq::from_montgomery_limbs([7602766395993095249, 15421116878917379598, 9842919232591540089, 811441858348229638])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([11240616276279859335, 18168970638218441074, 12681307963217316671, 529653072592394540]), Fq::from_montgomery_limbs([15804354330800222400, 2664362506755913571, 15220567525462081033, 415854075276634564]), Fq::from_montgomery_limbs([6499893156022247982, 5370094427775939872, 12693314181999023046, 334522766633278821]), Fq::from_montgomery_limbs([2043116979793859192, 5901796972056645976, 14393765505679755827, 861233648011975692]), Fq::from_montgomery_limbs([15324644517910983402, 7402962800234459251, 15501703598689014650, 866765414305968533])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([12865534582606617484, 5710240921655628764, 10047828149580190691, 1035217630777023330]), Fq::from_montgomery_limbs([7623115266181592594, 15654093656542240609, 17584343833694408578, 965948623120670646]), Fq::from_montgomery_limbs([12322860754126106334, 5704375241169042821, 5005598195199710337, 599456016816833315]), Fq::from_montgomery_limbs([3114048235662948861, 3186724356925890101, 12603030351469960653, 784880135590304822]), Fq::from_montgomery_limbs([10542157016978853051, 375232718281833036, 8419637174785911645, 480073460241875582])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([4619753066505217513, 16240034683968173295, 101722798642334078, 1093802332804170111]), Fq::from_montgomery_limbs([11772483107625265757, 10206667679119141509, 18114554164862022458, 1023031741792146569]), Fq::from_montgomery_limbs([13246284581489263787, 14406389897239052674, 3455768173607702603, 1053480392953200960]), Fq::from_montgomery_limbs([6494604848840235336, 6851286908738110852, 6952092093989720037, 528933354597117664]), Fq::from_montgomery_limbs([625815039158913101, 3482039923172880345, 11185655673758240856, 30871173764135737])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([11116836871987577766, 8109541581819717708, 14249648100460872066, 228964235140475035]), Fq::from_montgomery_limbs([10850735048215572309, 4250918544830268539, 1159262399998108531, 597017478561992605]), Fq::from_montgomery_limbs([2429928267440692097, 1037103561750764536, 14249565405637869240, 238948313464233222]), Fq::from_montgomery_limbs([15908449453336200948, 14778706528145004443, 1518131124404071948, 342204757203960757]), Fq::from_montgomery_limbs([10343358798246302148, 4716916005406799178, 1280891908040278925, 33904180033936995])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([13657049778223062917, 16159025960783232211, 4256662595768243763, 769690080070442279]), Fq::from_montgomery_limbs([8630441296206546010, 15101393911422801574, 15765903519913875666, 1059019903719527397]), Fq::from_montgomery_limbs([17353580961907941474, 11690315434040365887, 1919970450761622105, 1284644920565762622]), Fq::from_montgomery_limbs([9142190750578974954, 7982580406830591641, 139105874244767315, 1037725609814647069]), Fq::from_montgomery_limbs([8274397077677504305, 7550323696121525646, 13342176390347462405, 495524022793746412])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([1300654639607007076, 5418426225271078814, 17799220415649590999, 578082611305900028]), Fq::from_montgomery_limbs([15087651230680029653, 14061399273111500513, 13990992483413246139, 217274859442961675]), Fq::from_montgomery_limbs([17409038465662970942, 16739652419107899003, 1728243859263530675, 1005030425295937500]), Fq::from_montgomery_limbs([9881137796190779983, 3738513419678193257, 6908712468714119492, 128170763609761066]), Fq::from_montgomery_limbs([5980808904168005021, 6535637039411031048, 4353709569732736105, 985581940426054692])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([9266459364560412147, 1675941305082716910, 2644496138354097667, 593111726451400001]), Fq::from_montgomery_limbs([11923296558184512186, 14335481794247232343, 1756296816003311831, 1337227067587852298]), Fq::from_montgomery_limbs([15213177739061556154, 5962926969279075759, 9583168463456919751, 1345102811307691605]), Fq::from_montgomery_limbs([7236531265332214668, 11730813784468030291, 3260041626130793112, 413423911331686730]), Fq::from_montgomery_limbs([9992377390528540244, 10251294356867851146, 15408569698061863503, 686801780474850525])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([12551312954021730815, 8771782951882110027, 8266520452918776358, 585025591233977219]), Fq::from_montgomery_limbs([5063400267728024015, 14290329839247601111, 12614604995283750144, 230714106990743170]), Fq::from_montgomery_limbs([14919127087277880180, 1233913841901824423, 2945855199399696462, 1124234888120832064]), Fq::from_montgomery_limbs([6630767633426865082, 4134529385803270273, 547558622173751939, 1276870556955963960]), Fq::from_montgomery_limbs([6194800795402001302, 7453146289235044346, 1846631670011345424, 373216392925072559])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([8530038482194296425, 1186609470593087346, 1550686771111894200, 918591303091561115]), Fq::from_montgomery_limbs([5499603817197150545, 6278523764748797546, 9492893478468221078, 76690422627606484]), Fq::from_montgomery_limbs([7172281043633854180, 9586248386574401986, 4695159959373826247, 291013948190359675]), Fq::from_montgomery_limbs([1958470378825944596, 13429774428855320394, 14915732503423284573, 675396101420063305]), Fq::from_montgomery_limbs([11013259379518244436, 12321083210650373617, 18169826561711333453, 1123565689252234229])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([8538081673660833158, 9406736474943528419, 1248182586638760682, 566915522520784434]), Fq::from_montgomery_limbs([871762597826126451, 16952899443646083570, 9760070688515351533, 1153171851787119216]), Fq::from_montgomery_limbs([17099176922694092192, 828730151529195508, 4040300595746784683, 896316263468400176]), Fq::from_montgomery_limbs([17895859754552623107, 12372008340476127191, 15869904838348331177, 775743200601290861]), Fq::from_montgomery_limbs([7009270681870686791, 2613922803678169165, 14616132396476908383, 1266967860663970985])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([2842431186863606520, 5016515943888671695, 1025755096788745830, 118497541762157376]), Fq::from_montgomery_limbs([15651700296535015112, 8569612184315077364, 15451942282818992185, 541946385718467129]), Fq::from_montgomery_limbs([17425453868458867672, 13259317954798539165, 14653762240483553886, 1289545541558928924]), Fq::from_montgomery_limbs([10182995923953810379, 1555053058248744878, 14233166151877877681, 1314025239224831524]), Fq::from_montgomery_limbs([5382307905322995124, 14222432758856306145, 3195810595195159237, 932323741878209391])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([4093215837977364819, 1786552664558589683, 15811959916460894504, 1122605521342489905]), Fq::from_montgomery_limbs([6757580137997166235, 13857613907011413182, 729793288849614944, 140426125151203814]), Fq::from_montgomery_limbs([18248567113979980306, 15307246736403175565, 7970334653691291978, 817641900996362744]), Fq::from_montgomery_limbs([13209637935471398448, 10485350831767594057, 18120173774880047238, 981942705210324429]), Fq::from_montgomery_limbs([13041861333642835240, 17156211741149643971, 4775992643478887474, 160471371624793379])])], // }, -// optimized_arc: OptimizedArcMatrix::new(39, 6, vec![Fq::from_str("845774603178492790430819572559948899425806472242990359595837698866402459283").map_err(|_| ()).unwrap(), Fq::from_str("5104113060992167207950156191834052800250377917110335646977277694909225606639").map_err(|_| ()).unwrap(), Fq::from_str("606930867215997902681408163383822852644874536120525401359262311657265176286").map_err(|_| ()).unwrap(), Fq::from_str("3246189740533673369325580437595636125853593448497295559526133710916170023325").map_err(|_| ()).unwrap(), Fq::from_str("2228557437175639577799724834018880269762506939154314745471148408315031040782").map_err(|_| ()).unwrap(), Fq::from_str("5248714497354123146476603303736275602516846846345343189695992364680008748274").map_err(|_| ()).unwrap(), Fq::from_str("4468660183396113816417160760392174946434715734046476615756949516900460245783").map_err(|_| ()).unwrap(), Fq::from_str("7393542747111210649333111074982387945081968569023142501741239756021903723895").map_err(|_| ()).unwrap(), Fq::from_str("7199392773674619989102817361994783385540000190771324931792999149811086723727").map_err(|_| ()).unwrap(), Fq::from_str("4179131455162240247318123589436646198639084830612188212185789176671108496032").map_err(|_| ()).unwrap(), Fq::from_str("24442689501566866103376042248929386407192919728660696030608041405438957133").map_err(|_| ()).unwrap(), Fq::from_str("3097787510685557034777264781234655318746563426795026202239222093602417399558").map_err(|_| ()).unwrap(), Fq::from_str("6574238658366226506536641479793831030684930753068170934418220861949357860591").map_err(|_| ()).unwrap(), Fq::from_str("3230736603041831131224401646930510293150560782678475479524520009468240625703").map_err(|_| ()).unwrap(), Fq::from_str("4449397682136210685399058399525408353602443323667935079724525731105410330857").map_err(|_| ()).unwrap(), Fq::from_str("1462805245535093331717840709705014862484623276551060803969576565098857503359").map_err(|_| ()).unwrap(), Fq::from_str("5430193997486659445858726501908887547497708817666434922669358130281149310067").map_err(|_| ()).unwrap(), Fq::from_str("8182992080105598491896178755005741632616297373995328206793063427977612612424").map_err(|_| ()).unwrap(), Fq::from_str("2470198070508873630088316330360042099497336224174355851511490652176698623455").map_err(|_| ()).unwrap(), Fq::from_str("616202094790463990913669657355701717237705251976201488136276464144059917047").map_err(|_| ()).unwrap(), Fq::from_str("4300832028822930023146879288491662568841103305714742296374296369784204253894").map_err(|_| ()).unwrap(), Fq::from_str("3476274661803244432899568134341751009082965077671317942410157824155554772073").map_err(|_| ()).unwrap(), Fq::from_str("5064187415312733563044421812957719834749578846215859205757776767013163169207").map_err(|_| ()).unwrap(), Fq::from_str("2785720285300546669174088113375060468705507039789824059878564962780494844393").map_err(|_| ()).unwrap(), Fq::from_str("3955439879096535600770596087986987521484177541728792312152110382971886552324").map_err(|_| ()).unwrap(), Fq::from_str("503680037339076032856815489377858587415355113560755157086717098432815716841").map_err(|_| ()).unwrap(), Fq::from_str("5964553105116402172916680761616166920975463210054977222482002500286412179060").map_err(|_| ()).unwrap(), Fq::from_str("7281158201578211076266982138746435442933971728104518923259322554020752212264").map_err(|_| ()).unwrap(), Fq::from_str("2241343432184659572884353882416005796993328095513207173919122103820341809513").map_err(|_| ()).unwrap(), Fq::from_str("4853474723618434181335137108301073507880281739605909113444950270026187208176").map_err(|_| ()).unwrap(), Fq::from_str("2266484297898603139651464188099311881951612550072221529849601819688663614860").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2834480596359285257722679812165553631677121028793347973736474916876436840226").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3955655794240894760428011546576522693511264260766201184351196104203109672892").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6440795831658995228689638941764634235317879901726596500646803387380683298066").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7509995303856628178658864238317388391703173442817405478557680610554161559518").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3550320773765760050621750445990832702705780121450024814732192552193040091427").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2547339927154500734961334241185816462984985122408755638845157529517440404888").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5429472492516938288020588447033050680511243088021902555626331208609494322809").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6038155690422100700638510175974194653385020121201170068183639395022497652683").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8196883901367901100230454896732431566152928973255009907169942832718545558987").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7148661732519455303042665061428727258149029429431163054145732237026532889489").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1103346966514279047338269965467284691516791424600841454288175566663047065119").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("506501463999583535576083051388238107272349203512591077156367833191176693496").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1149231095916448689731204689337414874810990008730168558258467468151736044861").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1211317984484755908746711394692099576861991632666741109848017891399630249230").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6017874075566883986651275686693033257769937156099759525630010678262207639985").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3073074021524417887287970232094691430723143577639770883918040346601896146795").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("134322564106387068808518725818157537971916470010873683390299125718406273957").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7040363473961332593733143478583439087530465096639620629229243458327373964466").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("563451981459495065711526283364283662742307512754720432350812655985079858111").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5570498493573838619078336592446358732592459054714103239182255473689891360031").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5955050266740665240632543482309019624723976125958790422257400594518597029180").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3494771094276850877479627249158913515667815533875151231775096745822620973237").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3411818460864172740195641615200664114728178401494159321877510855488036874139").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4246924861274374789571583206802025439809822100434979812077101166440594671411").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6493720911104932428533466302395488089924060304439516917191316090657092895655").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2379218033893055222653926256633317026405237872826721673269282768490590945976").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6646242587253766573347400624243988750258308477645970782579754603927338804578").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6424174353837718401266897399154131367683818742063987521971015251587962775678").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7002656101292719313815856091772832441016655729701219648910142117630011665679").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4424355663759696797083117401116579382210148092564273386055340689619958180062").map_err(|_| ()).unwrap(), Fq::from_str("38181968798540411178433004489330464377413440568580946670698824537964234740").map_err(|_| ()).unwrap(), Fq::from_str("3985137582625427870914337711862008955159518565586436026102511255896022545247").map_err(|_| ()).unwrap(), Fq::from_str("2686597946680903067963389814411594898511296256126226466543512771762628518380").map_err(|_| ()).unwrap(), Fq::from_str("3912072963699923538135335881783459711445809699833034464235046836295051637157").map_err(|_| ()).unwrap(), Fq::from_str("3768948985107031263554991350035396579658231033668291305113893407107999590132").map_err(|_| ()).unwrap(), Fq::from_str("7209840459207478084934132990507426086496015722161589774417691869050002492357").map_err(|_| ()).unwrap(), Fq::from_str("6470232135949884401983050741535994050038392389090501339898509456281439988861").map_err(|_| ()).unwrap(), Fq::from_str("1403782228835667896108593023720179504199984149882443104282945790037828677887").map_err(|_| ()).unwrap(), Fq::from_str("2616692368426935727956976017730416940577328529933157623691062413188068132680").map_err(|_| ()).unwrap(), Fq::from_str("6013155465106742700343824998420749144547684411124338994627587197137858317900").map_err(|_| ()).unwrap(), Fq::from_str("5046057668721457926386883951512447209843468155520782995797315336934626297875").map_err(|_| ()).unwrap(), Fq::from_str("4699213848989418709226497398340240243077331984560588410432125105042384834910").map_err(|_| ()).unwrap(), Fq::from_str("5229593958715996992063094437959528963051688396408152717883918637659886098311").map_err(|_| ()).unwrap(), Fq::from_str("1951976044069223056158754588030180422847727493829048238776399717813979759789").map_err(|_| ()).unwrap(), Fq::from_str("4158688722225908788153206659322854682351209416161193960155253054969298046740").map_err(|_| ()).unwrap(), Fq::from_str("6729156920345996334287429817597914498081658415518610887789376041974889047771").map_err(|_| ()).unwrap(), Fq::from_str("8001080793346807220307430636768987640386922596264252165255164305011067417921").map_err(|_| ()).unwrap(), Fq::from_str("805049615247355128632817272390362068051853601888800837662896676244202957816").map_err(|_| ()).unwrap(), Fq::from_str("6954697886862123377467715908414695350592349300176823211514354407092860264474").map_err(|_| ()).unwrap(), Fq::from_str("1037357063158990576124983865369468459708807060409999263024817001922664598244").map_err(|_| ()).unwrap(), Fq::from_str("6274173843835872888849453577522195998097492776857839215359837309285307683859").map_err(|_| ()).unwrap(), Fq::from_str("3829234834194025101976400998836257325560624583979963442125678498831465993617").map_err(|_| ()).unwrap(), Fq::from_str("2634048471413514276664575681345205309356785859870536213890046907527525143930").map_err(|_| ()).unwrap()]), +// optimized_arc: OptimizedArcMatrix::new(39, 6, vec![Fq::from_montgomery_limbs([11114527869315019992, 204777424233041404, 11091912519069240090, 121969426625488706]), Fq::from_montgomery_limbs([11602548353808217299, 6197238791893869094, 15622579320964543388, 1298930792120594487]), Fq::from_montgomery_limbs([838896996119702820, 9307552859605174720, 8035142733069793771, 274230695041989171]), Fq::from_montgomery_limbs([3026923182969617970, 17802669379857452552, 12317599963821296502, 1025681681724348483]), Fq::from_montgomery_limbs([5608950751956253759, 13524340746668180438, 15318090696011006995, 777019565914500344]), Fq::from_montgomery_limbs([1158035626778037273, 17664260243497899213, 16296355254226759288, 950557495952381678]), Fq::from_montgomery_limbs([11235491782021601934, 3148198093287396523, 17540068057551648414, 246938399961631601]), Fq::from_montgomery_limbs([17389082769676787279, 4715116371725704005, 680633748837086801, 1023507596971258305]), Fq::from_montgomery_limbs([7398967334233665984, 13695483063991186800, 18171031240540141567, 1071188377250033509]), Fq::from_montgomery_limbs([8901013324099486427, 14221538804433703579, 421845258270117661, 1118364576196477055]), Fq::from_montgomery_limbs([3792995620986947754, 8295286409031689804, 7023787899825757992, 899023674461718667]), Fq::from_montgomery_limbs([8793784762096018942, 15222981485936247095, 17829285903963587033, 104381350073974926]), Fq::from_montgomery_limbs([11268502072074030331, 4494658873172678747, 10565307326465463378, 784696444351308107]), Fq::from_montgomery_limbs([13330824150800116849, 4890131204868069348, 16795432331983276560, 678123243378284364]), Fq::from_montgomery_limbs([16154775053781645033, 5239747136963640569, 16611876759537507645, 759623577554638126]), Fq::from_montgomery_limbs([8392188723943358220, 16791142993973140668, 13297749232586734563, 426701908934618073]), Fq::from_montgomery_limbs([17606532937509352288, 2853753027669231277, 1878611917293492305, 643977045852461225]), Fq::from_montgomery_limbs([5784332265294899224, 10677876800438676900, 18301919197560353192, 1242300655560067148]), Fq::from_montgomery_limbs([11412543805884713089, 4404535555399600518, 4605611364617586616, 706261397170793623]), Fq::from_montgomery_limbs([2724614443579353257, 12190950292326203757, 12944786940879400957, 90707148364678769]), Fq::from_montgomery_limbs([16664686769040599810, 7492639236725157146, 1787480043672337070, 1043615315016757716]), Fq::from_montgomery_limbs([4392261116480034202, 16508253691140740970, 1257682754845069496, 1301148167322522764]), Fq::from_montgomery_limbs([139213556258184346, 16303671450556136664, 10342805884525342231, 508792166529776861]), Fq::from_montgomery_limbs([14643711485787161846, 5395142180975966192, 12467589421402803020, 144762579288366866]), Fq::from_montgomery_limbs([15255437222491521014, 14721462158275437977, 2057221655333534074, 1325734657361576891]), Fq::from_montgomery_limbs([15414140179948612967, 18192784700743189854, 9643806020156298087, 376775047158942797]), Fq::from_montgomery_limbs([18092841461306760003, 2807423972236024481, 7922348787325395480, 1212285078601209657]), Fq::from_montgomery_limbs([16708900869096362927, 2122564142804905834, 13890195487457233383, 126050338062319781]), Fq::from_montgomery_limbs([13016765056631510317, 775825654612492872, 1519488323304929971, 511775234197862995]), Fq::from_montgomery_limbs([10798249763854349440, 8782377489797979147, 12405352952342825868, 1275110544094341666]), Fq::from_montgomery_limbs([9330052657446344303, 4964707063063280466, 2747936433058978798, 1286324345607159919]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13438421980365571751, 13764047089799136418, 6549510980996449235, 89638406717638204]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3120082900215749818, 2506463968951363665, 5751682941173719701, 1183280915899386044]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3889637240168755614, 14778096222179630956, 16885419836575361353, 250222614360102585]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8994135098656528858, 6054905993385110489, 15955209030417792186, 417192650490068388]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10542836021159102202, 3922552091508743640, 15499449205954987041, 257248375734524697]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18307747395340188800, 7047747805490525925, 11242708609504355532, 793276497114397997]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16022663073357324949, 3551519053939817423, 3374093457075448733, 95641413276534082]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16611512242802281767, 13417278867724672960, 12339427782843337847, 1029453794287724677]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9587606159882976610, 13065183120609796571, 5134588985846741978, 1052742636206989263]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5120379400595969817, 4824276514479560160, 15209383162223813538, 98360897446496767]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7633930096380799602, 2831233200869503763, 6933925156133583675, 45431990866667491]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4063032547170944262, 2228607997293084806, 376103209766462421, 748529159788109811]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8393715434195231445, 15247401046663606451, 1655959932549342287, 101776028083387641]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15008767674909606325, 531227893384812653, 7210523396658562084, 437386864972028358]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16809071159722694272, 6830450328296125348, 6475300827542698627, 399257887526004612]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([82825596177761974, 11317217432462243029, 6642795994570466536, 54497338514902862]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6850975607505382161, 14495312419830721473, 12467132244094124841, 869971081325966252]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6776972065809629900, 14404993916899429083, 14745271791343793348, 1281731922471929435]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12167414230777830458, 3579196606687723355, 14118801611883897825, 1188804452360844569]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7553145712183260477, 18113523762458916439, 13422344310762339471, 121199852036910351]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6210598847695513673, 10694250862598493782, 1063552736172580723, 859901328112942851]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10747937872207229763, 13786226828072394952, 274364464850991752, 1218823234058712778]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2520693279910212484, 15286253593138229505, 9531050394238581262, 329181833527084527]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3226526077625644436, 2588404341480318661, 9070433711166827508, 1188235207132643549]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16703563760445846403, 8620998770380437284, 8858436416497897390, 1102236124390324251]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5630089007465765576, 6410026402258852609, 17160884434802874754, 420357023452589124]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12644008863026136496, 11315917635237722843, 12364361333201119848, 946242401908845264]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9089855529735912751, 11711947227707110137, 12189800517249432550, 1037376283079163315]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2642673912191614581, 8420261709120249882, 7567649328018501241, 1090882039889692225]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([624108744920628033, 7222337173749652537, 6177234009439253836, 1305879330650409183]), Fq::from_montgomery_limbs([4047186108818890838, 8293278676301284463, 45421248765572143, 11849077013826147]), Fq::from_montgomery_limbs([13734838437817111564, 14067107962177066014, 6283538344938866018, 943068615468766850]), Fq::from_montgomery_limbs([9459753653362225504, 13412221550119657532, 11719554885145159458, 1038210702444171410]), Fq::from_montgomery_limbs([17258590752825572441, 4422385439615665045, 10963985232294213328, 673097344483052623]), Fq::from_montgomery_limbs([4350910935437581306, 17071656780821887075, 17526744607642225290, 489524084357985818]), Fq::from_montgomery_limbs([8703107470067448452, 734592437454660319, 6370216058631913860, 984849913832896286]), Fq::from_montgomery_limbs([15847437253128917127, 13204151715277535095, 13151742340803361913, 492775982398767260]), Fq::from_montgomery_limbs([13378140148769271177, 11023068523390522139, 1729259508144916727, 998491139322015796]), Fq::from_montgomery_limbs([15868115462640964898, 5808184910810487816, 17891106563868657547, 1273423536878729280]), Fq::from_montgomery_limbs([17498572932499506726, 4915375148198704347, 16526318329827242193, 172885368041045335]), Fq::from_montgomery_limbs([12175858961476635194, 8395097384299796850, 16561947957716644135, 118811035529307344]), Fq::from_montgomery_limbs([1364632949773972783, 5616500288305274826, 2744828291285230257, 1337220218752536168]), Fq::from_montgomery_limbs([7125704632582034340, 2413935880315792634, 16253134495760827214, 1013353907442898755]), Fq::from_montgomery_limbs([9926413936648370716, 9286244748248440505, 5620697470790885637, 1050126432920929832]), Fq::from_montgomery_limbs([2286190222160729638, 1205027650655862007, 284571302335235840, 754838472987631454]), Fq::from_montgomery_limbs([18032942241472576701, 12877723516371231014, 5304401947346162660, 638292803799023432]), Fq::from_montgomery_limbs([1301734909908791963, 3999021096443686109, 8224194566860360743, 975889756225576945]), Fq::from_montgomery_limbs([13137758236377688944, 15164889622744579310, 9510882901247182860, 507443416341514201]), Fq::from_montgomery_limbs([7442629497476523514, 15402336932582436695, 12267702252685663951, 406181490859224216]), Fq::from_montgomery_limbs([3020913173034234370, 7615906519537783167, 14373843007930618441, 268952515824125262]), Fq::from_montgomery_limbs([8510711668693637739, 16478737597936355688, 4962621450185609628, 274948738817040348]), Fq::from_montgomery_limbs([175794307933344111, 2355200265651483892, 17868773626579092521, 52492857067069690]), Fq::from_montgomery_limbs([13918504549178190575, 13563258972352289042, 5310731325887509548, 465559440844068311])]), // } // } @@ -1200,24 +109,24 @@ pub fn rate_1() -> PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> { // PoseidonParameters { // M: 128, // t: 7, -// arc: ArcMatrix::new(39, 7, vec![Fq::from_str("3267179889377925711574658284856732208025355841040084473551461173520230225381").map_err(|_| ()).unwrap(), Fq::from_str("4218970795463228197327790213244921451375713052676530804173314273248521302251").map_err(|_| ()).unwrap(), Fq::from_str("6558452507257297773903880599933734956650828395452896303007568859251089292382").map_err(|_| ()).unwrap(), Fq::from_str("4042547271226656281806908526176747617793733742101121262910694724314042815131").map_err(|_| ()).unwrap(), Fq::from_str("4484826253675472206510819347554710738378387223810894155307581506069733612810").map_err(|_| ()).unwrap(), Fq::from_str("3340623787106332728769891522629193546852430705194948956506410107893436206270").map_err(|_| ()).unwrap(), Fq::from_str("1146818540713897566188401511637220499025428484560997690844890982000538808551").map_err(|_| ()).unwrap(), Fq::from_str("6089924376626192718256476404089056274813344438059373355846067526383524489588").map_err(|_| ()).unwrap(), Fq::from_str("3252380459144218718661502728554356451451872089835332429937606714939592080537").map_err(|_| ()).unwrap(), Fq::from_str("7116956469008263816717247030121065061393433609954531462053914466227296297033").map_err(|_| ()).unwrap(), Fq::from_str("2749312272215231848139078131254509267239590195342230643928479893117354148584").map_err(|_| ()).unwrap(), Fq::from_str("764882704567509245651596837424209709274533314828826071535700095515278197679").map_err(|_| ()).unwrap(), Fq::from_str("4932281286580045638368979604177064776138370306619513783360199241458597325911").map_err(|_| ()).unwrap(), Fq::from_str("6484320961953933323289746320919349728579597325051701151281300835155595148740").map_err(|_| ()).unwrap(), Fq::from_str("6682606457331543519450813892692923338913286820264911373641321435621952784002").map_err(|_| ()).unwrap(), Fq::from_str("6625780871179973490233386959951589849631496582163936124259260687776843181994").map_err(|_| ()).unwrap(), Fq::from_str("7949225290500346406153571792115001941134688057907882657603244062341345143557").map_err(|_| ()).unwrap(), Fq::from_str("6392844449548821017972820206673777102358896581926384483680180004397700038029").map_err(|_| ()).unwrap(), Fq::from_str("3392678655944756762416562388041708502386246415055289087688321666480356102352").map_err(|_| ()).unwrap(), Fq::from_str("1482525589417638728292358287918496174732548433885907700008322735579133317611").map_err(|_| ()).unwrap(), Fq::from_str("3098572574557576897289665910879403912332252678168883273111538708481992361738").map_err(|_| ()).unwrap(), Fq::from_str("5529056592387037922896478601046572040782992911318540751019232411511652047969").map_err(|_| ()).unwrap(), Fq::from_str("3748164104379232094417838431717964236407138591232998705172215282549268275626").map_err(|_| ()).unwrap(), Fq::from_str("7993215220832663678736550799426833055975676440107252656509024603970443366873").map_err(|_| ()).unwrap(), Fq::from_str("5554706095086365018531517384733334573065210312805294463584717615914523071948").map_err(|_| ()).unwrap(), Fq::from_str("2443631285780523173220046820359095033333463124538739189832478296145755085550").map_err(|_| ()).unwrap(), Fq::from_str("1220796011041198056582991284907417463980599290206522252014247996281492269358").map_err(|_| ()).unwrap(), Fq::from_str("1682760707303747404170762352671876629726555466723959746802386893894433719465").map_err(|_| ()).unwrap(), Fq::from_str("3051923729738325569700743140016346599799580971673827402271729235767984866691").map_err(|_| ()).unwrap(), Fq::from_str("2306114475196942948885846961345874495553950366022761412913304148926205742794").map_err(|_| ()).unwrap(), Fq::from_str("7746531378288971852126267511442677698173623354735027172401259811680773677501").map_err(|_| ()).unwrap(), Fq::from_str("4834348935899900190962719656110102273565189568342358560766997905456677506493").map_err(|_| ()).unwrap(), Fq::from_str("4121477957201856855020021268777282556154316264943378279859646884279956546625").map_err(|_| ()).unwrap(), Fq::from_str("5575807550520296672911438114601856894098726849257140030239298020170971947928").map_err(|_| ()).unwrap(), Fq::from_str("3682128341703072221204143569718024537702786243388400094766498270296969014264").map_err(|_| ()).unwrap(), Fq::from_str("7679831197978575465040991913842964145832157435230444452299494544524271515522").map_err(|_| ()).unwrap(), Fq::from_str("6224324156159351316973219159779237306960681933357110721696536378511625557820").map_err(|_| ()).unwrap(), Fq::from_str("6716972566783841934337221569574810873921873374075667326370709901646642238214").map_err(|_| ()).unwrap(), Fq::from_str("331863125818962027849727084710128595901952559887141675460236475296575670268").map_err(|_| ()).unwrap(), Fq::from_str("4663158656903340398961997518330483675433576645796066939978101537393126236287").map_err(|_| ()).unwrap(), Fq::from_str("1780987428986694219663159184569680255824138046786566932338476969603773193909").map_err(|_| ()).unwrap(), Fq::from_str("6555911628267551041055141725443469778285906923105440033741455960911326872840").map_err(|_| ()).unwrap(), Fq::from_str("809372144904751477263627950613192967177236230076728989515509424384305487889").map_err(|_| ()).unwrap(), Fq::from_str("7305902313317020177507153076171625792448911923503154116802216557394756122090").map_err(|_| ()).unwrap(), Fq::from_str("5268822999707269827407339715973554572570612616129733347318036728572184654948").map_err(|_| ()).unwrap(), Fq::from_str("3018506590499702332012032512257843792606071542944543063407346349775575179477").map_err(|_| ()).unwrap(), Fq::from_str("3292293347930095499689375056317626925489770555588338556704334208279999009786").map_err(|_| ()).unwrap(), Fq::from_str("7278948590638525441055673811145598489392128201468045545432013785450263812202").map_err(|_| ()).unwrap(), Fq::from_str("2651219506834522135247663906152585680699730347040704708795695819433536460159").map_err(|_| ()).unwrap(), Fq::from_str("4049871798415892850292053159369322239639717064217267206769239087430652128521").map_err(|_| ()).unwrap(), Fq::from_str("1070872611186538390812558975137728519255174942814423256791469831355363156942").map_err(|_| ()).unwrap(), Fq::from_str("7517075790327820458034096818201755116436064837902052505878372331077772865173").map_err(|_| ()).unwrap(), Fq::from_str("7744854507826397265628488800096049691937910230067727866432530786480132897330").map_err(|_| ()).unwrap(), Fq::from_str("5054997164098946349027235669636048371962424483708460159918560587069489460743").map_err(|_| ()).unwrap(), Fq::from_str("4123593762906798031355294874781146632153575444108905647909680676460963021500").map_err(|_| ()).unwrap(), Fq::from_str("642555179756975070792262146698437285785700252794598311698444854576082921449").map_err(|_| ()).unwrap(), Fq::from_str("1474201646769061795637139543552299140787447911392614122151581681723780827175").map_err(|_| ()).unwrap(), Fq::from_str("4212568704852508283980453597704490038956121060474692240185258403772331644477").map_err(|_| ()).unwrap(), Fq::from_str("6397288324036196424314380852844673578090610085948353686890058637783411223794").map_err(|_| ()).unwrap(), Fq::from_str("3926625536493244336520729985316719395802482408018379865607766101821321257466").map_err(|_| ()).unwrap(), Fq::from_str("6494276335913220607535921507434608972757919719702229797506445903210927716283").map_err(|_| ()).unwrap(), Fq::from_str("5320470266033494993746366608444378391394670338412382615589469413046126557288").map_err(|_| ()).unwrap(), Fq::from_str("6117686116131219682710944574172802707239969160152183376211631059358916379367").map_err(|_| ()).unwrap(), Fq::from_str("1472192601751717226475542483856590637092751471639236684263555043424557298110").map_err(|_| ()).unwrap(), Fq::from_str("3407374614860915726110082446680235615472399192552972898066705560664452864268").map_err(|_| ()).unwrap(), Fq::from_str("7097632494384239686225722363540947688115013970248135296850172001025685517676").map_err(|_| ()).unwrap(), Fq::from_str("405555215387397080358792030691448762321362110444583662742586152878306772781").map_err(|_| ()).unwrap(), Fq::from_str("2797246277136220424988367220099402498943986192066681298035435469455971365355").map_err(|_| ()).unwrap(), Fq::from_str("1301969262102706030379171132712694989707633665827297255503262456004474105482").map_err(|_| ()).unwrap(), Fq::from_str("1397623280922117755063539725076974056510922107015670278700003585831367272689").map_err(|_| ()).unwrap(), Fq::from_str("1621864990000588473764758637554032692163114006449898027981531408954257926569").map_err(|_| ()).unwrap(), Fq::from_str("5523069392877897519069194937670134918409922376855507214149728762101988295862").map_err(|_| ()).unwrap(), Fq::from_str("3128262740207889923593854580055755244674436906871019049380300833517963919899").map_err(|_| ()).unwrap(), Fq::from_str("5880577997328292695218951482160938378283909233099231240404059253367011774188").map_err(|_| ()).unwrap(), Fq::from_str("938018438906400457609104987429229825715503710544925730807846597879752026051").map_err(|_| ()).unwrap(), Fq::from_str("8180648363546978340378424820545183381887654241356952735017082989972282004843").map_err(|_| ()).unwrap(), Fq::from_str("973565803135161559341796479689996390462685801950645731002550676231356949773").map_err(|_| ()).unwrap(), Fq::from_str("1266322597086896596428679773021416432928623248766812760920353696031870525214").map_err(|_| ()).unwrap(), Fq::from_str("4481040487734984444390892104405593343014990582427406918878370674372783757640").map_err(|_| ()).unwrap(), Fq::from_str("2287309951912776067683878730494659441403705886007744344532565229041269989541").map_err(|_| ()).unwrap(), Fq::from_str("2510919603508448594054884582441093851279046517977406102988740412366783170982").map_err(|_| ()).unwrap(), Fq::from_str("4153419277329403751434099480264221438776930418380474238290776206005522222645").map_err(|_| ()).unwrap(), Fq::from_str("362519893513163783662695449327103940664483218608553039161240083947454524050").map_err(|_| ()).unwrap(), Fq::from_str("6787390779957107456205989918649340550821341848611172474005536139005002048707").map_err(|_| ()).unwrap(), Fq::from_str("3650144587367896813545891920584818718516339938095004817230865581614784032053").map_err(|_| ()).unwrap(), Fq::from_str("2935036940547088635724369295933694282647643967108863416789005387769458625751").map_err(|_| ()).unwrap(), Fq::from_str("6492293215708535938147712003242471403132870788285177400412319174948027025505").map_err(|_| ()).unwrap(), Fq::from_str("6295287253346450493341974493956279052104329349296295200760155236847312860073").map_err(|_| ()).unwrap(), Fq::from_str("2084101461936596601273317584125565752189208365795350140462022289030055037096").map_err(|_| ()).unwrap(), Fq::from_str("4977410808115603748307945445485222689287172153224405441544470603301428334134").map_err(|_| ()).unwrap(), Fq::from_str("2344874562161422983209423908460315191420241481992907912428584304998035118004").map_err(|_| ()).unwrap(), Fq::from_str("1239264108942923639382961610696195205010295393263578757939750849042317505694").map_err(|_| ()).unwrap(), Fq::from_str("2846462673800452908561358693893424081687331873586928116695468457020866844148").map_err(|_| ()).unwrap(), Fq::from_str("4998710939870529508437520796881236042643404905471423422130413918470467627114").map_err(|_| ()).unwrap(), Fq::from_str("1934815681475082223595638619789141370487567616982162160120672729382453188351").map_err(|_| ()).unwrap(), Fq::from_str("7228165027186431524071955942612119086518194519147361973264148553454917900033").map_err(|_| ()).unwrap(), Fq::from_str("4016166966365973011618037409323422154344251456962319920844284414914034315238").map_err(|_| ()).unwrap(), Fq::from_str("7546006907780092520254550596647283724078529297292645883247661304496683447550").map_err(|_| ()).unwrap(), Fq::from_str("1399477873854976905939132841850266306150030196502298772795760414705392805491").map_err(|_| ()).unwrap(), Fq::from_str("1636394793218559052913610540712274482920561638105294188116175896049821206934").map_err(|_| ()).unwrap(), Fq::from_str("1324058075072012235434487435432475167138038307020697692107109639449221355210").map_err(|_| ()).unwrap(), Fq::from_str("2280741586349055747506042609895124770561131703291773597606167229292714672283").map_err(|_| ()).unwrap(), Fq::from_str("8342642686801067599151745804543073218431430128510511854097519427228830935902").map_err(|_| ()).unwrap(), Fq::from_str("5804872450137030484881222816375011671611891409172767315903836302547355567211").map_err(|_| ()).unwrap(), Fq::from_str("1722975888377867150377754546007358852321683900371859149617847398983042108699").map_err(|_| ()).unwrap(), Fq::from_str("3844785829542385783596485235685426296560729005822502996342136441867443806644").map_err(|_| ()).unwrap(), Fq::from_str("7865524733672471629545807438655769994905653621084293741534228698704915032305").map_err(|_| ()).unwrap(), Fq::from_str("4604870400118197846627410365227003116095051732843106288070444355142171193697").map_err(|_| ()).unwrap(), Fq::from_str("7396663240102246685326983722783599910069406483521352376003066677682593551529").map_err(|_| ()).unwrap(), Fq::from_str("2562251907048161610505002011941872579272307640845060634968151143665985063641").map_err(|_| ()).unwrap(), Fq::from_str("1549967745873012439728796357319537856510341052605362255447810692239409569126").map_err(|_| ()).unwrap(), Fq::from_str("2675361235318267782852831143842463470129323681745345795892150710073625490024").map_err(|_| ()).unwrap(), Fq::from_str("5952515328531662133506278749908523813168406237456441333231348726158737827993").map_err(|_| ()).unwrap(), Fq::from_str("765149058941865036128057932286357225650850527698629692287260337544263580183").map_err(|_| ()).unwrap(), Fq::from_str("5107861549007149521309417064185782159016437664360561322217461449735749521355").map_err(|_| ()).unwrap(), Fq::from_str("6054811289965100918685675875806076772391117764616285251043014274951360940458").map_err(|_| ()).unwrap(), Fq::from_str("3021150257892221823371145623069280544210802519558821573046255803434215307106").map_err(|_| ()).unwrap(), Fq::from_str("2349951148273884555754223610972718476313734727994753347922140275202789759113").map_err(|_| ()).unwrap(), Fq::from_str("7464741757222950146597728692311078353722285050789484130848122040799839804081").map_err(|_| ()).unwrap(), Fq::from_str("6143440374630397589785524239524890437846196407245378580042786079554917100025").map_err(|_| ()).unwrap(), Fq::from_str("8108869199046970195135784965120398051817520859906072836232954830507497472406").map_err(|_| ()).unwrap(), Fq::from_str("4543330615312325891995206146091963393605906906268134526982123268349972979568").map_err(|_| ()).unwrap(), Fq::from_str("2416699185013214620616032235584891462719848166930738211630142953290398760570").map_err(|_| ()).unwrap(), Fq::from_str("6422588454652037573796395198458204568192948027316281885057781958698635703784").map_err(|_| ()).unwrap(), Fq::from_str("2753176512591911295642849883163821239600979873944474999642751847294836125734").map_err(|_| ()).unwrap(), Fq::from_str("2084242927899601214521889885294931755978686991565116968491943007020511139147").map_err(|_| ()).unwrap(), Fq::from_str("2073403215075963274916333121594353434738627172574846372799465748874465646086").map_err(|_| ()).unwrap(), Fq::from_str("805727462485829947460569158211183759487011967387029548079796392777127663278").map_err(|_| ()).unwrap(), Fq::from_str("7644302733498043178859808207462153600958948633629480017304790743683189989149").map_err(|_| ()).unwrap(), Fq::from_str("1055919130198517540677260002949855933313800140168942055706866400774505675317").map_err(|_| ()).unwrap(), Fq::from_str("1270807549011244426622360195030010445777199224103252981978753484750810535001").map_err(|_| ()).unwrap(), Fq::from_str("3062638832815882182814299737629784444387312083771780182189407511192704930223").map_err(|_| ()).unwrap(), Fq::from_str("3250605218683250291625962462113654738367568191068479927550634735093675105684").map_err(|_| ()).unwrap(), Fq::from_str("7195689585449903644060107748428768993814054351515763868878127631552001026484").map_err(|_| ()).unwrap(), Fq::from_str("5463684701783637297023776329763188568955181914914150040480647661825126078805").map_err(|_| ()).unwrap(), Fq::from_str("3461741402412621094453736054184632951503469520278303384994481336947474824068").map_err(|_| ()).unwrap(), Fq::from_str("1825640719952814107102672700227871159174928756902824776781836379445075820336").map_err(|_| ()).unwrap(), Fq::from_str("2601613051444961803779204735149397391414858191088745010671304265692474042879").map_err(|_| ()).unwrap(), Fq::from_str("4635969281058658188207006058860837118753838882447160244887269391138702554407").map_err(|_| ()).unwrap(), Fq::from_str("128997914215362395420238092910764569274900897937939764490088963171545037935").map_err(|_| ()).unwrap(), Fq::from_str("1712146771380151054166812188936377224268107361353746408400546416401991093887").map_err(|_| ()).unwrap(), Fq::from_str("4228629634182564023134680984877751386044679584931632240991276197848924809923").map_err(|_| ()).unwrap(), Fq::from_str("5035047909538639326991442481480201165188624039344297682104370694535201375906").map_err(|_| ()).unwrap(), Fq::from_str("5103741083485721500723163060345084352286937901681930969012118407941812832628").map_err(|_| ()).unwrap(), Fq::from_str("5412640154510948062250753766003593471086045830019769477921622649572758290662").map_err(|_| ()).unwrap(), Fq::from_str("2405236901114815911147993145659583854598923748830673527384107282217535511842").map_err(|_| ()).unwrap(), Fq::from_str("5566370615867273353620724182178190374785514908721339249649586264478907881961").map_err(|_| ()).unwrap(), Fq::from_str("4027744204203615381480770314335107290237478652684941731297832925030615680486").map_err(|_| ()).unwrap(), Fq::from_str("6523936250787347355860458330629003743651200477397862558009991269206545113984").map_err(|_| ()).unwrap(), Fq::from_str("6161686116234237281161352475441616341443248794869437839681572835745959074548").map_err(|_| ()).unwrap(), Fq::from_str("7525575876743208897110620505884260332655833460843082825897622700976946482511").map_err(|_| ()).unwrap(), Fq::from_str("2237115972267978312675963521166233128471504215495146335397047992085352245814").map_err(|_| ()).unwrap(), Fq::from_str("5554537721437364039978862510773636297073784845524305938815624627527759212546").map_err(|_| ()).unwrap(), Fq::from_str("1131366061396525831286555020799942358342052981232713177886534891207722108832").map_err(|_| ()).unwrap(), Fq::from_str("4158553907476826357661996188932265121778048152400351572575015534666147504197").map_err(|_| ()).unwrap(), Fq::from_str("17291503353027079924384639322443786353644223754131148087952592790142765953").map_err(|_| ()).unwrap(), Fq::from_str("4397212047494248946146852690590744203216326878971468465379745990495475437080").map_err(|_| ()).unwrap(), Fq::from_str("7949173868582810488858730663334200738606901324929895429004423503793821632462").map_err(|_| ()).unwrap(), Fq::from_str("6215459342559560592187451304936304076944923986964941923799070745053426079642").map_err(|_| ()).unwrap(), Fq::from_str("4977440247830475722238149494554019042533943518099077511620681665001222436026").map_err(|_| ()).unwrap(), Fq::from_str("1779517902117469124113708415314398895793325142433203050379855378860591465901").map_err(|_| ()).unwrap(), Fq::from_str("1229476860669761756739374745317572569061568435911189046597965584762230263405").map_err(|_| ()).unwrap(), Fq::from_str("1206217883105746168409894675089263079747174441121864564981192169579319775140").map_err(|_| ()).unwrap(), Fq::from_str("668483225958754803422145467337449657507124472229215338363158498570144089070").map_err(|_| ()).unwrap(), Fq::from_str("8018593627904594737743996851069758892988858792719921037072184291504879074839").map_err(|_| ()).unwrap(), Fq::from_str("3097974004402447269527481357369894882867485227134964809919158640069796229244").map_err(|_| ()).unwrap(), Fq::from_str("6276251394932785315058947331559117228863052088611714658027864001977607355634").map_err(|_| ()).unwrap(), Fq::from_str("555157249776195994243133409895546885838817035421047469555273421939070131758").map_err(|_| ()).unwrap(), Fq::from_str("2253983755027777744446994494595394425023580055676366069172288601186472131593").map_err(|_| ()).unwrap(), Fq::from_str("5480270040441175242185972267659433587152906298166249721977047210293679189253").map_err(|_| ()).unwrap(), Fq::from_str("1501266407699423757633551540657886078948465047196058532929756167119070835283").map_err(|_| ()).unwrap(), Fq::from_str("6797535251191422788515387886057930780181051375445398590377107465128629258406").map_err(|_| ()).unwrap(), Fq::from_str("2410941480083866070559027300608645459741000163583004540996868884902668865858").map_err(|_| ()).unwrap(), Fq::from_str("1018566537460601455328115662216312963813925705698652520831854517210712109109").map_err(|_| ()).unwrap(), Fq::from_str("488786294241410388472809950053197107818795454083949867713246321756215692899").map_err(|_| ()).unwrap(), Fq::from_str("7722288006991271497149153298287616418813651114986036699272102593544332009488").map_err(|_| ()).unwrap(), Fq::from_str("2702345857074801038143192167202209111713156214492914703918944916809593697353").map_err(|_| ()).unwrap(), Fq::from_str("8275767366974083682922883722457100803977644313140884358110266464189724809815").map_err(|_| ()).unwrap(), Fq::from_str("7488421391296753451684892427964653636746495938417703324788663703515172705174").map_err(|_| ()).unwrap(), Fq::from_str("5011282101735262556600567688696705956364600100832095301130729311304936508599").map_err(|_| ()).unwrap(), Fq::from_str("2039161627862584880582888476628667644939736950155958101998515338704689103824").map_err(|_| ()).unwrap(), Fq::from_str("5965312308601731980104502870666258098491921582177160592030785741105323126137").map_err(|_| ()).unwrap(), Fq::from_str("6786147106206644543457961626731860588522029844679633868356093418275596964557").map_err(|_| ()).unwrap(), Fq::from_str("1605969801093612748158968935200204013845304331084157759240264951960851130521").map_err(|_| ()).unwrap(), Fq::from_str("3308495084830203288654798084517860939546944110847646553718688840783831023357").map_err(|_| ()).unwrap(), Fq::from_str("2304743572883697875845502324127187583081549252425459886030329897652180384036").map_err(|_| ()).unwrap(), Fq::from_str("5053417863143098266797397829076327321004836486860601550827330324811543775148").map_err(|_| ()).unwrap(), Fq::from_str("1675473735979033097123386334847156269681794557828238529484799470552225496137").map_err(|_| ()).unwrap(), Fq::from_str("2538157987899153070608977361610885936892455639778313040440089948575929591565").map_err(|_| ()).unwrap(), Fq::from_str("4948398789369353954337623145831916828353787132851990877645952029711902020296").map_err(|_| ()).unwrap(), Fq::from_str("6509805435878007802995395018106302549412314131803604852450780880595405984596").map_err(|_| ()).unwrap(), Fq::from_str("7040418453499481250448760178064445230449991478933641106912031883139318665246").map_err(|_| ()).unwrap(), Fq::from_str("7524831420484976071546904290033422473044384203280286266421365652166844983530").map_err(|_| ()).unwrap(), Fq::from_str("1389065656052332336786507198030494076633531096787803558400643683126275991587").map_err(|_| ()).unwrap(), Fq::from_str("7334277487252239082136841592734559841523488242116900563357252923726780819366").map_err(|_| ()).unwrap(), Fq::from_str("3220452037809119927291396378526660895790658398338636419237195342728474722926").map_err(|_| ()).unwrap(), Fq::from_str("2120958141785025555786988853446248372777455545071936982907568222534167917603").map_err(|_| ()).unwrap(), Fq::from_str("2046365321313950536784835305340390884196460437114581964521058265228142267748").map_err(|_| ()).unwrap(), Fq::from_str("4166070780259213324434433673427335156400462888169220287495172888761445278512").map_err(|_| ()).unwrap(), Fq::from_str("37448246733393365744439618142361611474131350746404852396478650806384235476").map_err(|_| ()).unwrap(), Fq::from_str("5066722662302357886694573395748819304180873031511933349751045589118051645384").map_err(|_| ()).unwrap(), Fq::from_str("8327008435126539448188216676070465661064681825560792258838135930928453596426").map_err(|_| ()).unwrap(), Fq::from_str("4126570936530606761552005116597648851221954548140776575366907901442481766240").map_err(|_| ()).unwrap(), Fq::from_str("2028599072563441598805340146983867902499209957772160137276005300150334111247").map_err(|_| ()).unwrap(), Fq::from_str("5492957911255821366974039414762376663316392680836056511321374570785040180490").map_err(|_| ()).unwrap(), Fq::from_str("5020498257377109227360618249542544949930229710187954095428553305398665775901").map_err(|_| ()).unwrap(), Fq::from_str("2252630548150556956680527121375469588106147747615475242476933730099408444682").map_err(|_| ()).unwrap(), Fq::from_str("7396677961238332186675955003292154481064857263001980517838630741126598313090").map_err(|_| ()).unwrap(), Fq::from_str("6725677987493295852696979506928516045154122184920259849807312201468108103021").map_err(|_| ()).unwrap(), Fq::from_str("1206359698294544036763360509088334857107693279934542380940889091295128090396").map_err(|_| ()).unwrap(), Fq::from_str("1090722283218218775472717466212814567315311824192500303613486537818957988813").map_err(|_| ()).unwrap(), Fq::from_str("4424974608315390535058154170976181286352444334315751158893690742064082684329").map_err(|_| ()).unwrap(), Fq::from_str("2503229292079826210103565525568283454571358589977885542137643537897451000469").map_err(|_| ()).unwrap(), Fq::from_str("151572031617036280958609617848937531067149659852080773360494521974119403314").map_err(|_| ()).unwrap(), Fq::from_str("7516224108274259455231609500125023273547005538038056166730717572682409757715").map_err(|_| ()).unwrap(), Fq::from_str("4344383705122555518091078149951116336723976647809750724518701471416796902283").map_err(|_| ()).unwrap(), Fq::from_str("2824023219149555903961443341842900177548959113459941561410262147693965931528").map_err(|_| ()).unwrap(), Fq::from_str("4634028328191934175614802722381059035705370841891448293086970276006956193156").map_err(|_| ()).unwrap(), Fq::from_str("2611240062937291166447085564269954738286850618471577865235963570865155739996").map_err(|_| ()).unwrap(), Fq::from_str("7363270328574318967120591373131512017815542399499973348227212494088321794708").map_err(|_| ()).unwrap(), Fq::from_str("8013799771208258129893075767577404816947984333135154678609227276232471999020").map_err(|_| ()).unwrap(), Fq::from_str("5044716502087801967806354858998409546955627036251833922200547389536706344268").map_err(|_| ()).unwrap(), Fq::from_str("4196070695349536502063197465323363626105684126022957408228735638757755528197").map_err(|_| ()).unwrap(), Fq::from_str("4622854284014393527351955824917406410362905247807106315987602360603655240879").map_err(|_| ()).unwrap(), Fq::from_str("788090736677799874230790145926853966465102354464240070942045526762063669154").map_err(|_| ()).unwrap(), Fq::from_str("4402627153697217910832669133492815480105350792694609175719573022112801001051").map_err(|_| ()).unwrap(), Fq::from_str("2012019704378814790366429813720542390744363343380156080331524639822604627555").map_err(|_| ()).unwrap(), Fq::from_str("5857191983966235070006491166849102594312083180294916349019608402906838822636").map_err(|_| ()).unwrap(), Fq::from_str("3767250396658320261180385235930425394211692167694341092584034642903525266399").map_err(|_| ()).unwrap(), Fq::from_str("1246677100122056393160190289384915942913903553035636523507102727672559151072").map_err(|_| ()).unwrap(), Fq::from_str("1532261696895114662547020765504208022098763838254524526221882062432517308451").map_err(|_| ()).unwrap(), Fq::from_str("3808732515606142777355391895027880381618676506069900187942407587064290794242").map_err(|_| ()).unwrap(), Fq::from_str("1353623476693847455479948941601601547113046326418692919598595779268402998581").map_err(|_| ()).unwrap(), Fq::from_str("4568034412324271719121325064468070213724889167849650919135763419284902226766").map_err(|_| ()).unwrap(), Fq::from_str("7526510426616559056662572333389144971303046771067900617866542671167191231461").map_err(|_| ()).unwrap(), Fq::from_str("1984090496354770469005916597848116103497584047469610223736896795951346117351").map_err(|_| ()).unwrap(), Fq::from_str("5541331787863042853282779497076079033660627728184507336806134271359483726681").map_err(|_| ()).unwrap(), Fq::from_str("1123848900066418393565590218457318554330813861593937062840629257573991618437").map_err(|_| ()).unwrap(), Fq::from_str("7119595159662415994152114190752555708079664776543939176828711488509346925273").map_err(|_| ()).unwrap(), Fq::from_str("4402771748854939356784761249919895162348707751181116782165024772616961372683").map_err(|_| ()).unwrap(), Fq::from_str("1238265437447562740111980649669713181292200355777789670554101826300760772353").map_err(|_| ()).unwrap(), Fq::from_str("2348497862084264554632767212774488376307766499049237756254491391649565468261").map_err(|_| ()).unwrap(), Fq::from_str("5261453224553581615160311404160249386402808097114542597496885462964979654036").map_err(|_| ()).unwrap(), Fq::from_str("5263827589381544755339163957749628136213310351975965597342349209572693870177").map_err(|_| ()).unwrap(), Fq::from_str("3560060697657925012926708814205229707654047798512692267374898529520880562411").map_err(|_| ()).unwrap(), Fq::from_str("2373941392307013801383592832488158577752891975962531227890579346355584846451").map_err(|_| ()).unwrap(), Fq::from_str("1961718924193031296798751690610974386828264605504889890771349325463025336195").map_err(|_| ()).unwrap(), Fq::from_str("2868124060985675920436079106596156284905943204632191942776718861373436542214").map_err(|_| ()).unwrap(), Fq::from_str("7845669997742840217688401931462742306009286446506113818599869436449377367754").map_err(|_| ()).unwrap(), Fq::from_str("6173407037353888350243445875635080301447444707547969387574700153706191518628").map_err(|_| ()).unwrap(), Fq::from_str("7098672234934132886939827569385283896802454444867206042797084120044836023173").map_err(|_| ()).unwrap(), Fq::from_str("5351899839977801032921348451916620591965842541634687391321577183284412726675").map_err(|_| ()).unwrap(), Fq::from_str("5620070496211129683300134579883602187317512502813714244130767313773035697719").map_err(|_| ()).unwrap(), Fq::from_str("6979709989426911001555340276783571500889381472387839399740190281565272894942").map_err(|_| ()).unwrap(), Fq::from_str("5135679336879799934417470005708054630248446694753779453216003661110099588738").map_err(|_| ()).unwrap(), Fq::from_str("138682133719722492420465554190750590837692301151943132427693112118115423576").map_err(|_| ()).unwrap(), Fq::from_str("3151429238189687747957628376177893410569754087843736384164577812731670460702").map_err(|_| ()).unwrap(), Fq::from_str("121814244732221808057679271483647003115742086673430961846079912667911157285").map_err(|_| ()).unwrap(), Fq::from_str("8371534681354007650628559426369748872592875254339532946571231278729041076560").map_err(|_| ()).unwrap(), Fq::from_str("3224012810937385216119822993567522300423926201642509833393672779197095195785").map_err(|_| ()).unwrap(), Fq::from_str("6906061554583095104670274977270927222784149562340469632678517151372610188027").map_err(|_| ()).unwrap(), Fq::from_str("7241632034261962184770214288273863345887509924743840645741009488606102609959").map_err(|_| ()).unwrap(), Fq::from_str("1777064018030106946519734883392052222472885181372642200849135017704677431530").map_err(|_| ()).unwrap(), Fq::from_str("8324217430862472098854213825386877833955599293369985729017003228770288665572").map_err(|_| ()).unwrap(), Fq::from_str("5729830751513293833514450194921789300271973437013945551402502294027950049854").map_err(|_| ()).unwrap(), Fq::from_str("2187758249046601765496974874050556156501868988788103300613705176170900124540").map_err(|_| ()).unwrap(), Fq::from_str("3661666483638282285384645460120103900291506320035168165941968172560553131692").map_err(|_| ()).unwrap(), Fq::from_str("71172694711798875087336054947012411069704167761224496888177661616309271064").map_err(|_| ()).unwrap(), Fq::from_str("5479753513109529765878513587350339376225541758759421668496911367601412633643").map_err(|_| ()).unwrap(), Fq::from_str("6657339706920780308636317262842926498794391181237998790979567359048507409879").map_err(|_| ()).unwrap(), Fq::from_str("2844473401317966605062077825184314014360268580545792284786608033783639709289").map_err(|_| ()).unwrap(), Fq::from_str("5533028151199355284748909539327941418386476750051202689820514906007980206539").map_err(|_| ()).unwrap(), Fq::from_str("2147788020290210661458158885081344432970895350439383460330782349760173328255").map_err(|_| ()).unwrap()]), -// mds: MdsMatrix::from_elements(vec![Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap()]), +// arc: ArcMatrix::new(39, 7, vec![Fq::from_montgomery_limbs([15142982440796561447, 11586951767160912790, 2554152473571518408, 1060132733599829191]), Fq::from_montgomery_limbs([5004052621280210368, 17001459709892607063, 7681637351760180567, 370325849830378477]), Fq::from_montgomery_limbs([12700316700887579682, 10527071459591008162, 4649940422809756001, 1164398790994859766]), Fq::from_montgomery_limbs([14166576988026094609, 7313392791454005322, 12003933110859736764, 497349496445067730]), Fq::from_montgomery_limbs([660800666505769101, 8654643871558439567, 14263148622483513593, 820049075817239934]), Fq::from_montgomery_limbs([3633256971691786185, 10090676851691033833, 14588357423182388197, 831634409758195705]), Fq::from_montgomery_limbs([6492287632409988134, 12046607076154115291, 17147959445519551317, 461021671425820687]), Fq::from_montgomery_limbs([14444046072241906262, 11260694318344083229, 15743364178797140854, 866446994798567454]), Fq::from_montgomery_limbs([3641312158605685211, 14157364044999263645, 16784472236570305027, 425843099497195003]), Fq::from_montgomery_limbs([17723864121788076174, 13911937024562874191, 12749454259525933628, 451378649043069085]), Fq::from_montgomery_limbs([12784133990119646353, 17654455838119254543, 14047536069777387226, 645204516252515303]), Fq::from_montgomery_limbs([1959581704190940037, 13929985394687694163, 11022302142929130035, 283707020686355664]), Fq::from_montgomery_limbs([8629032034013359758, 8320916390268264398, 11188435069201519314, 1277918481865788038]), Fq::from_montgomery_limbs([1783621120979741815, 10125702604889014266, 7859706914940359291, 1258189548796714111]), Fq::from_montgomery_limbs([4197085784563434882, 243889206587889894, 328885806087941395, 929695947751686179]), Fq::from_montgomery_limbs([6420634290533400711, 3371757063543007366, 8900632765923820105, 371199850895065588]), Fq::from_montgomery_limbs([9679924820095672851, 5191301328839079795, 1468702730043861612, 1130258788388916276]), Fq::from_montgomery_limbs([14270884667693338729, 18421783881067727877, 702505960635108322, 876601962183112334]), Fq::from_montgomery_limbs([12801928710162774032, 15709283060501093378, 2508615709628312314, 924328772397935430]), Fq::from_montgomery_limbs([9019134492733417932, 4614098400696239641, 291908476903718505, 879711180612784839]), Fq::from_montgomery_limbs([12296479578360854848, 3423354675244851904, 17098596077633953792, 378482623029323224]), Fq::from_montgomery_limbs([13200816203042245771, 15381254577926224952, 14688424257545082743, 884773501591309967]), Fq::from_montgomery_limbs([16263843110415550162, 14001011937262187824, 2325893788175944450, 427344840846697831]), Fq::from_montgomery_limbs([10712788406702291397, 14628016237392831746, 12076323935029775432, 746032296870665924]), Fq::from_montgomery_limbs([7577844083779539683, 8593563853045273470, 6762705862919489296, 1011466592883577533]), Fq::from_montgomery_limbs([10970204418416076913, 4397529361571105931, 15590416832284287611, 432035610777585218]), Fq::from_montgomery_limbs([13604542201065871088, 8000646895858538916, 7463535664974476191, 112496092381655883]), Fq::from_montgomery_limbs([5448941064349247150, 18035446383961421934, 9688851655819494355, 314108334517577725]), Fq::from_montgomery_limbs([13216339084640418338, 18208749029142079159, 2801888902925820506, 1144112407212441278]), Fq::from_montgomery_limbs([10386335329700935468, 13018324118118161010, 2406041197881630048, 1324098854417409495]), Fq::from_montgomery_limbs([2690622444332381359, 2738375881209676440, 17836986493178387691, 868260556757543816]), Fq::from_montgomery_limbs([9714850335178297908, 2509018678236953449, 1040431953277617242, 408671886406597132]), Fq::from_montgomery_limbs([707163896186597409, 13903930520829310823, 14380446875360964889, 798432165792010570]), Fq::from_montgomery_limbs([12820993772370131859, 3069542795148551755, 4040592593739183911, 977377017483241698]), Fq::from_montgomery_limbs([4384064590197914518, 11440426390601473487, 3890530701580791196, 991346454205769097]), Fq::from_montgomery_limbs([2745693351823380117, 3687897447624002689, 13955517171460419947, 904061096631428006]), Fq::from_montgomery_limbs([1760514697396940568, 6095881437414931654, 3928451548254372674, 247578034773164640]), Fq::from_montgomery_limbs([16683268981822865275, 15797990746305502978, 12125148959239662231, 449202381506144581]), Fq::from_montgomery_limbs([1544285291520736591, 5232522639692590592, 14175161601321791260, 1003097983515138607]), Fq::from_montgomery_limbs([13865967627227239358, 4354525642109054184, 5021238725820305528, 906854086996571433]), Fq::from_montgomery_limbs([15375530278413617622, 7761235083504109835, 15924872860758961429, 537333030355735422]), Fq::from_montgomery_limbs([13872782625772992287, 2068079588750918007, 17083661114150680976, 191043765855622193]), Fq::from_montgomery_limbs([489795382124266981, 9316407371494156111, 16300320024181640604, 1307068723907147815]), Fq::from_montgomery_limbs([77890204043514297, 14999308260055033106, 16273406145240730287, 1230840137172288304]), Fq::from_montgomery_limbs([9003111034130458080, 14053560383370232566, 14148009681833335599, 84069116658731520]), Fq::from_montgomery_limbs([1986315671557859076, 944997752628096648, 6737867794955410335, 792066859500791592]), Fq::from_montgomery_limbs([11554157552429322652, 6015547764843714345, 3599229111267661129, 1102309536290663120]), Fq::from_montgomery_limbs([16401157455500798150, 2599298290463801395, 4428490753223095655, 516522849079366838]), Fq::from_montgomery_limbs([7623242261478057757, 3618111358832343565, 1696272282252986964, 280076732551033967]), Fq::from_montgomery_limbs([13071470547050819875, 20719442839602638, 9223499824514905062, 1041977639884177823]), Fq::from_montgomery_limbs([1150980008515938579, 12791886596105604965, 11797006328775889799, 132341159056314927]), Fq::from_montgomery_limbs([16356304185985037124, 18355100705716380177, 1487696971024578548, 1163163264873917501]), Fq::from_montgomery_limbs([8790136689831869026, 9859012327886066746, 1622774421779032220, 680128396913817531]), Fq::from_montgomery_limbs([2440240671160835195, 5639103082516719016, 16233642885930425961, 459387979334747122]), Fq::from_montgomery_limbs([3071531689091094489, 11779374527227589848, 5879834474282319317, 392743474596485606]), Fq::from_montgomery_limbs([3786139316484579004, 7465575270640816353, 3301786867662477611, 919080835077506714]), Fq::from_montgomery_limbs([4241677901554464615, 14852259420419314449, 9789117952977925786, 1276159211529108963]), Fq::from_montgomery_limbs([15762815448669571633, 7231481802108863616, 8209538117580382786, 894055725982675524]), Fq::from_montgomery_limbs([3283548778124636488, 17961129609378056584, 12441299600811628613, 709973667467565902]), Fq::from_montgomery_limbs([1675404449995783699, 17666259544497784614, 13412804093386962519, 434991501447979808]), Fq::from_montgomery_limbs([17976226742991442453, 14546337615752094946, 6516407789910488272, 1036976265682484688]), Fq::from_montgomery_limbs([13972137480979054280, 1231617287998224018, 8770959412540690803, 274349352586037174]), Fq::from_montgomery_limbs([14183071713815614452, 12618349549865293619, 4916959733988057866, 228836586859139895]), Fq::from_montgomery_limbs([2619860170191204767, 6934658348682381942, 445022332707100685, 525184674849718520]), Fq::from_montgomery_limbs([10672109165350813992, 13411227948301334538, 7449776000632083055, 11625548609868921]), Fq::from_montgomery_limbs([6408656838496226261, 10947889213454603074, 15967755490758556438, 18592735561502547]), Fq::from_montgomery_limbs([5719054350460464154, 7527902657216442354, 5295945207916573176, 1277891579319310511]), Fq::from_montgomery_limbs([7105816865111098866, 4412124756024705272, 4327040274749466413, 598090016113808041]), Fq::from_montgomery_limbs([14284938317479677602, 545805528309510796, 102974980360120576, 899208167330224593]), Fq::from_montgomery_limbs([5366620062124263126, 13693679210134795513, 8256935418799663781, 300801001668016020]), Fq::from_montgomery_limbs([16666288670655775443, 14215432659130173847, 10678349345487712045, 253025966523940173]), Fq::from_montgomery_limbs([6560188020165350685, 12696821494974958005, 2143653898969513475, 494844631437184679]), Fq::from_montgomery_limbs([13593887229322257028, 4816959067341413725, 11133022091159268235, 612414996504397371]), Fq::from_montgomery_limbs([4493136462766479434, 9962442648546643845, 10853590841986868899, 915809217863755522]), Fq::from_montgomery_limbs([5214032566506119292, 11323013569723200047, 18236741420002046410, 941445927442235049]), Fq::from_montgomery_limbs([6205769808699672756, 10246354759179081834, 15794825809172864679, 391230400284939041]), Fq::from_montgomery_limbs([10116008430714875822, 9911045248650761841, 9928250721052258527, 1185128099055962746]), Fq::from_montgomery_limbs([2754748402734001689, 17481760215560470485, 11108275517987128040, 348615537989168903]), Fq::from_montgomery_limbs([13782224526187933341, 17030959399708586099, 15775077522611833532, 290351976048235673]), Fq::from_montgomery_limbs([4412648891557328130, 11831420266571130198, 9622609839094253285, 639422212319659804]), Fq::from_montgomery_limbs([8394758426176289938, 11674917207711491310, 7857067218925827640, 1264271461076358629]), Fq::from_montgomery_limbs([10524729381187531101, 6565819519130692503, 16455243200834114571, 1113660583135941246]), Fq::from_montgomery_limbs([4910640324547367503, 7067950532806399572, 15713931663221284957, 678204411073496593]), Fq::from_montgomery_limbs([17524781941219231334, 14436265047853993106, 10996160202266791558, 586004270078950889]), Fq::from_montgomery_limbs([14088867458599093720, 2106970093596697979, 12220921713367378788, 618714343685517328]), Fq::from_montgomery_limbs([13932309166033056776, 14069500197080883428, 17852601968294832436, 305995160171313882]), Fq::from_montgomery_limbs([13426729481828305095, 7452289540294927985, 6441597690310943218, 1276798385624416753]), Fq::from_montgomery_limbs([15655620409673762414, 3933061560128724680, 5010270981571820124, 220150600325447216]), Fq::from_montgomery_limbs([1057266741773269348, 17485469765347279593, 9555353042208049027, 1246738101059957518]), Fq::from_montgomery_limbs([10770884181623310580, 8877029614675920762, 13991352514348114517, 1230612668702201686]), Fq::from_montgomery_limbs([15095255137495972889, 10892244248329151219, 11620083234647182892, 868324939988635652]), Fq::from_montgomery_limbs([16875353652867044098, 11044339467067704334, 4725495506316385244, 751264243578502741]), Fq::from_montgomery_limbs([641704525978654163, 17754251290783679148, 14269956822024939667, 156185085842124354]), Fq::from_montgomery_limbs([6461798206210941852, 6476027702683698308, 1734931238850329993, 290399632377126477]), Fq::from_montgomery_limbs([8091575218940757791, 5709045878190771843, 1459237052414398801, 276967051734326786]), Fq::from_montgomery_limbs([11612189501971032754, 8427470897363557012, 8611179978421665778, 759746899153341383]), Fq::from_montgomery_limbs([6954134997737035694, 10268732943041819889, 14604130092481798797, 846640249172985022]), Fq::from_montgomery_limbs([7190233069227170594, 5561401768913144101, 1445785661167706223, 651525665098162949]), Fq::from_montgomery_limbs([9217546346311075388, 11071132921926268863, 15917748726189064849, 1251775227051161244]), Fq::from_montgomery_limbs([10390884162889041261, 16176571899127336650, 10615791626897231355, 642115614053282820]), Fq::from_montgomery_limbs([17238403316934198029, 13759340588486548936, 6092125402785041680, 230724379449110850]), Fq::from_montgomery_limbs([1508952168622687260, 8480288040262420498, 1917577574060388838, 1254153906405997789]), Fq::from_montgomery_limbs([13254932503780193579, 12662991171495849740, 2932469488008999350, 1254958848016626489]), Fq::from_montgomery_limbs([863236748932298852, 7531642076948568445, 10425812845553160509, 563371573575694666]), Fq::from_montgomery_limbs([3280480068018390373, 10989862717157633913, 16572854018482057186, 113384026788145572]), Fq::from_montgomery_limbs([11491036808249350882, 3627925597439189593, 785824861964165853, 215791427072358220]), Fq::from_montgomery_limbs([7066074229281293800, 13321822906632769865, 3996439965503887948, 1564366489909582]), Fq::from_montgomery_limbs([7382263529174205793, 14901486809768854424, 3687940160755015064, 91446740043994899]), Fq::from_montgomery_limbs([11979694890244940318, 2563830158714032427, 9819921513414604825, 870663742752411934]), Fq::from_montgomery_limbs([1600021421033761986, 8201138969411280812, 17030652845294033608, 12175051723204743]), Fq::from_montgomery_limbs([1850310843394039419, 1954532768801601911, 9226966238277907828, 1236975459555124690]), Fq::from_montgomery_limbs([16345060141053822550, 2663786082800954949, 9784580111187431074, 818513014765649539]), Fq::from_montgomery_limbs([16446391408112544104, 9380932902331254953, 7071379728384813096, 646895171875290856]), Fq::from_montgomery_limbs([2378405837694151935, 13313303748778516106, 5453795007116110093, 1101728113109054876]), Fq::from_montgomery_limbs([11103307651772077753, 12554518811578576783, 12962391676951625000, 52064702946163453]), Fq::from_montgomery_limbs([7926549255154919159, 12556509793741807839, 8290515496020439025, 258653521926883600]), Fq::from_montgomery_limbs([307299355354566495, 17945732282126444629, 5433370265316074894, 460536024110656568]), Fq::from_montgomery_limbs([5763861568912805530, 17141796164103068870, 2848893594009159478, 1261756298628549918]), Fq::from_montgomery_limbs([3229487655955554305, 14944270980978379931, 9844844119202542915, 234743086760476866]), Fq::from_montgomery_limbs([2342004844464551443, 1279967885187315863, 373313457964011347, 1079422596885440278]), Fq::from_montgomery_limbs([1952007392466585094, 11762818037481718593, 16662923564394512208, 893001431908838762]), Fq::from_montgomery_limbs([106763804585413546, 14271628963442624240, 590027926779466412, 57257575012574740]), Fq::from_montgomery_limbs([16630768758834449311, 422003402188528512, 12098463822102798962, 159137531863727176]), Fq::from_montgomery_limbs([15534331691675530779, 7061806693665915536, 16952361759388884403, 1053244934847428200]), Fq::from_montgomery_limbs([9263591902583432602, 7558693853599155266, 14896692490740080749, 1313322134212571400]), Fq::from_montgomery_limbs([15314480314637379126, 1151647617314553881, 17769711940094483975, 1199725079245274287]), Fq::from_montgomery_limbs([7963766923607262431, 12935141255115233618, 12948228604583141176, 360484743040385122]), Fq::from_montgomery_limbs([3259283452211432293, 17170672158941172313, 3570208516876138657, 1045429527322967456]), Fq::from_montgomery_limbs([1765653178452548393, 6627965412101454655, 12661490346413822347, 978755993134545199]), Fq::from_montgomery_limbs([142797348951966355, 5680553790994685398, 810985092665822303, 289501802913912482]), Fq::from_montgomery_limbs([8095554876468743411, 9181238692547872814, 13704917242845320718, 866066458565737675]), Fq::from_montgomery_limbs([5618373333754035477, 16633102630691350807, 10343904648768900571, 949315695648845008]), Fq::from_montgomery_limbs([10496943145011706036, 10929716347158307141, 11553769369075211708, 1156430459068926506]), Fq::from_montgomery_limbs([3889976630621922060, 9491334042353419195, 9943086516865463752, 462137530016129102]), Fq::from_montgomery_limbs([14851654499263418555, 8665479737435134577, 9236486044957348017, 1285301549410464570]), Fq::from_montgomery_limbs([7032376007033081754, 8938792808860946217, 3397334075607636452, 1167008250605621029]), Fq::from_montgomery_limbs([10427481727006183439, 3824318376195666571, 1544453519691883408, 1045681207836001052]), Fq::from_montgomery_limbs([8928604482578123459, 13973435534214403451, 15227973464547816988, 1229619095421485591]), Fq::from_montgomery_limbs([4131997010006110231, 8734538168607192092, 5033945745534142948, 1277988214099374488]), Fq::from_montgomery_limbs([7299169039441587737, 2287517025912039400, 5920702563974091346, 687869072690227692]), Fq::from_montgomery_limbs([6148873693348937540, 8423800650513424718, 13147300378355369290, 1251696519717235960]), Fq::from_montgomery_limbs([8030856695051151637, 10312034347138903675, 10835031793863243014, 356820600815810125]), Fq::from_montgomery_limbs([888403096248430880, 456025372404859213, 15679766799242003387, 331916255940957050]), Fq::from_montgomery_limbs([11302383770835780508, 16138456171506112495, 4451261995311188362, 326167792976852851]), Fq::from_montgomery_limbs([12620205064271173241, 5865309702805720081, 5860769966892734734, 960482480478038522]), Fq::from_montgomery_limbs([12917044525272992137, 17120989425489435715, 17218371420168852178, 100206712207827792]), Fq::from_montgomery_limbs([5324266172011654367, 5689211424378054902, 13406842486269119334, 232294740918000310]), Fq::from_montgomery_limbs([8539429359150556585, 10134859336768345709, 15233097762752119955, 731468941704353059]), Fq::from_montgomery_limbs([10594565907991339987, 3638446029011375614, 1076241376615234382, 91321489252748304]), Fq::from_montgomery_limbs([7150892232338862131, 15181691199330314635, 5084197575257990721, 970732723520969453]), Fq::from_montgomery_limbs([14117187289068639852, 3124767309289558236, 13224466604519094715, 428140550724790451]), Fq::from_montgomery_limbs([14415259957437088686, 1795634329615314624, 2942903263296282359, 1012688804870889787]), Fq::from_montgomery_limbs([16612890529511826604, 7596386633939850032, 5924746967850324505, 65893974101627502]), Fq::from_montgomery_limbs([4944775760295616420, 17454746499425782002, 7483609147553356481, 669769743129713618]), Fq::from_montgomery_limbs([8550535250927460379, 14244832580975560343, 10645153178392827451, 166145496718571589]), Fq::from_montgomery_limbs([9472382061922092532, 12599919710080842820, 17660755505335019341, 951845755731906033]), Fq::from_montgomery_limbs([7377011861447992951, 14177185276539188245, 16485545164384506751, 69008004491455439]), Fq::from_montgomery_limbs([7269422847571440384, 10971182983165050190, 10477114392953393609, 529340264286832500]), Fq::from_montgomery_limbs([13548253733030119113, 18088771080273253716, 5912265224571254564, 960653798531692016]), Fq::from_montgomery_limbs([14593305211432266861, 13978513480108154064, 12072035272437813296, 238383478016939515]), Fq::from_montgomery_limbs([14430090856465614687, 2808920183931810539, 2024298398014953733, 368635335239145011]), Fq::from_montgomery_limbs([6675901818525858406, 9691159442966147586, 5200040876915433586, 1110689247130868755]), Fq::from_montgomery_limbs([13172765826410278322, 13976386792584577667, 8689999043086184378, 259436890611363824]), Fq::from_montgomery_limbs([84751421588979831, 14888392918538911455, 5486551275818624189, 951800733297191582]), Fq::from_montgomery_limbs([15334319937719221770, 11563835865217739090, 18090033619866166811, 678279699900803053]), Fq::from_montgomery_limbs([15589602438316257145, 1666336392544054075, 8107996193749583854, 23283085724274977]), Fq::from_montgomery_limbs([6797724227011875266, 11367852742974149411, 6678291715699080418, 92125477783429941]), Fq::from_montgomery_limbs([15080983138964048420, 537488507591658978, 16294679657097133087, 1191852563555895615]), Fq::from_montgomery_limbs([4338903643143774627, 11044337452245898206, 15830174313418706999, 31920243523174840]), Fq::from_montgomery_limbs([8492021065892592922, 7492942567998031746, 10227910279589795050, 947691312997138730]), Fq::from_montgomery_limbs([9561116086048874539, 18073885101683330337, 14636134925092176090, 722339593463585968]), Fq::from_montgomery_limbs([41785100841227711, 17666935019222315365, 4927473313984438107, 67884280271688399]), Fq::from_montgomery_limbs([1446967628258656962, 11243844490161767343, 16958413638051813042, 1004693359077776727]), Fq::from_montgomery_limbs([9629608502131673092, 2882928936333963073, 15987483283589685207, 660673428262656412]), Fq::from_montgomery_limbs([2443606364563185491, 10139467314740663228, 15189229884372483835, 1290830618469438802]), Fq::from_montgomery_limbs([3046319622343455954, 3931730478916712920, 8623867774890709346, 1201913658507810759]), Fq::from_montgomery_limbs([14392864240168621772, 17867735212625517017, 2772429327165542818, 836534298808933]), Fq::from_montgomery_limbs([1151940341306701400, 3833643241309263777, 13096509072792897905, 752108833686380875]), Fq::from_montgomery_limbs([5229009174997575511, 6605658491463927698, 15536337046468055686, 157609910170207177]), Fq::from_montgomery_limbs([8741468218382317460, 7144323380514935844, 8672006512648752584, 1334645244751689770]), Fq::from_montgomery_limbs([10735754706394522516, 4616532568937564832, 15473812904469788516, 326598703312455138]), Fq::from_montgomery_limbs([13470305024595632219, 3964162559887319987, 4104496442465768155, 575184728889423472]), Fq::from_montgomery_limbs([7024155969680638810, 1248446637476984159, 3946566487106719690, 78713827286502076]), Fq::from_montgomery_limbs([1167875954574760034, 7519910968010082415, 15211147069856354453, 750498091773211075]), Fq::from_montgomery_limbs([2863941003802949509, 14521430537116398940, 17833674840165779294, 1117243092487510999]), Fq::from_montgomery_limbs([3988048134544140696, 4164314985762153852, 5192160405207219362, 537616833580442108]), Fq::from_montgomery_limbs([11691596547822673173, 2072119953696732776, 6048298284479353132, 1041936268987727800]), Fq::from_montgomery_limbs([5195217310941133128, 983742991580727110, 15582341176749546934, 192949243806351219]), Fq::from_montgomery_limbs([989864604993544245, 10337084476006024351, 6399045939932107087, 349553169959482485]), Fq::from_montgomery_limbs([1083252708106498385, 14683159496360594363, 6249116681658609726, 965679621626703084]), Fq::from_montgomery_limbs([15520366118357711305, 15455325080109246278, 15912772926708879347, 1181106395388318589]), Fq::from_montgomery_limbs([10606086519021812869, 8982436141916758768, 8984252788653949566, 94441446490162493]), Fq::from_montgomery_limbs([3989193979672410706, 14522119372119676520, 6031184060057719655, 876537182738173910]), Fq::from_montgomery_limbs([6542858007243344725, 10468817694619667802, 1374963053947997860, 281508730046968385]), Fq::from_montgomery_limbs([2121254413916702881, 11174399821186314401, 642752851055260652, 172419384352924756]), Fq::from_montgomery_limbs([14933138168325040251, 18073996174008481460, 7709184193316921275, 77928985789134259]), Fq::from_montgomery_limbs([14183089598463409576, 9599657595270154138, 10401242555342360511, 1031862193117340540]), Fq::from_montgomery_limbs([17077860441038791206, 6907855957939974514, 7600347021193310054, 225485956370582495]), Fq::from_montgomery_limbs([14475416504140964933, 6622123083135972798, 9257366424078234840, 1254195725521864761]), Fq::from_montgomery_limbs([18280884764210583702, 16338431925875586014, 14128385164093913939, 598858774608218822]), Fq::from_montgomery_limbs([4251295228276607623, 14698477834719362145, 1576184780996848894, 571585722355337029]), Fq::from_montgomery_limbs([13272236615232894643, 14010494529183759900, 800023943280278947, 298394511556555918]), Fq::from_montgomery_limbs([10782700402615775164, 14412830325727077172, 4994923730339550224, 1079837299050839065]), Fq::from_montgomery_limbs([3621380562787996822, 9464307808788620312, 13909924710435794908, 954766105382202190]), Fq::from_montgomery_limbs([17420485363085974001, 9021049394344178089, 8712760747075739797, 568515634248632496]), Fq::from_montgomery_limbs([5631572804871766736, 5280080317359998903, 10662020310256217520, 409512057651566449]), Fq::from_montgomery_limbs([492276079446892838, 2465000468485598245, 8673960199484145367, 1223371911459041820]), Fq::from_montgomery_limbs([16206685073675005008, 13515283938452316993, 8657484044144188143, 555324291337764049]), Fq::from_montgomery_limbs([12258020657657344839, 14080584073572047035, 1786385914292976334, 890045806750446876]), Fq::from_montgomery_limbs([5437561110469019457, 4195656535041473973, 16642453980220687614, 66446192393822025]), Fq::from_montgomery_limbs([11378296852796405140, 13948486972729474860, 13814823936920393870, 543448461574407786]), Fq::from_montgomery_limbs([15861083328916660546, 10580336230427962464, 8314263211374088393, 462499203598507289]), Fq::from_montgomery_limbs([3596880637235637430, 7244702719747713366, 7698652078859897602, 339166837713921764]), Fq::from_montgomery_limbs([16434053565692243270, 856826524108649327, 582888221769745389, 231849743296221718]), Fq::from_montgomery_limbs([13466829214638063330, 11871004193533817602, 8715083865527535935, 772758187739256383]), Fq::from_montgomery_limbs([2215715304482300708, 6939601967594674311, 9762471006918361079, 751422865267861919]), Fq::from_montgomery_limbs([8660358354344868439, 10887567579928131536, 4636772766460938216, 875861572717087557]), Fq::from_montgomery_limbs([3718962475606244056, 3574286178071706662, 13969021013516480159, 674248673994385489]), Fq::from_montgomery_limbs([13879628242113969355, 15611868744516972804, 689523972787487196, 272170949885373985]), Fq::from_montgomery_limbs([731217591867043834, 12057204063676562058, 9968800370062020379, 54367310812503073]), Fq::from_montgomery_limbs([10847577089461485884, 14781720798335935361, 2050883758009058177, 1227443941313558442]), Fq::from_montgomery_limbs([15484525416052326375, 10433705807314230036, 15903522838889990919, 544585322945419235]), Fq::from_montgomery_limbs([5074309280962037193, 5217880605983656639, 14510200362648483018, 557494968888174908]), Fq::from_montgomery_limbs([5195138641573043477, 9406776113353168661, 14027024671301857164, 845631148216790994]), Fq::from_montgomery_limbs([17960866561088745173, 7239612137411824399, 608332955631666951, 1339588249269723610]), Fq::from_montgomery_limbs([6645023811265252448, 359090506368957415, 13186732800236585001, 636175819244839498]), Fq::from_montgomery_limbs([9658258475735190727, 14527591238813797995, 16927575748315332307, 1301180113169078950]), Fq::from_montgomery_limbs([2426687195330334614, 1677243348703957868, 280959539850383222, 1302367371047198015]), Fq::from_montgomery_limbs([2824388857182280398, 387310680804206136, 5259604914427521138, 1184806076664523237]), Fq::from_montgomery_limbs([7574972296183053595, 15822886777846030642, 12388539958981301194, 559152516777131559]), Fq::from_montgomery_limbs([12201036799149233249, 17892988483166995904, 18084947728796372356, 675956869171241463]), Fq::from_montgomery_limbs([16104554650380896914, 4746900513825001701, 6829416706759018904, 220904217190207835]), Fq::from_montgomery_limbs([17292549212841163737, 2352946917715655598, 10473544622578247206, 331414403574303893]), Fq::from_montgomery_limbs([11411751507285114977, 6456131281833042189, 9429033659401855692, 1204457583147690703]), Fq::from_montgomery_limbs([13351228652344837450, 3406524763947142470, 9081889404473741581, 940424223754317289]), Fq::from_montgomery_limbs([14630628062553504316, 6262447828497056896, 18085717084217406803, 799246626583428302]), Fq::from_montgomery_limbs([864375154255180873, 14000240309598220542, 1750007932942661463, 761312485749733723]), Fq::from_montgomery_limbs([14345179008259546406, 6736994392830783692, 5908556958000542218, 1253865209554350406]), Fq::from_montgomery_limbs([9764377369274365673, 9072647876947127557, 2341472943201056441, 929216282518283791]), Fq::from_montgomery_limbs([12859964114531846483, 13694745246472282132, 2013500954373579911, 751364861274622110]), Fq::from_montgomery_limbs([175177818989840916, 4770111355878906194, 12267383210154126463, 131920286091241797]), Fq::from_montgomery_limbs([6349104885803077585, 18001260594929500797, 14793230544956264458, 669871090964351917]), Fq::from_montgomery_limbs([1792126764165083108, 6081987124440657035, 5531241762790015809, 85100796395211080]), Fq::from_montgomery_limbs([11335525023979482372, 13822295879245716952, 777769361600630976, 852248906668581924]), Fq::from_montgomery_limbs([2057611721707481944, 12549766028751733826, 3184617081367493745, 17035887437619700]), Fq::from_montgomery_limbs([5033510300536938046, 14319156262351107248, 14453339555250931608, 1300088399042594667]), Fq::from_montgomery_limbs([586365878943401533, 10219333061949038245, 7972787616665459187, 1180682599170166362]), Fq::from_montgomery_limbs([8677310049713074877, 6209659062870853276, 6361763165884296788, 1086786531947345096]), Fq::from_montgomery_limbs([4779669491370037827, 13794675476884129106, 2856260482144566523, 815058410432730978]), Fq::from_montgomery_limbs([8349785262387520653, 14703604045323517453, 10665488643511503896, 1190736588532344714]), Fq::from_montgomery_limbs([9753136258891648437, 7592309943578822500, 18234430885873993524, 946608033429176051]), Fq::from_montgomery_limbs([8862120093151408513, 9919781382246740055, 1639967479777957120, 548895009658598348]), Fq::from_montgomery_limbs([13150047014556861649, 9895352886349978940, 607603433543469096, 825078058460205935]), Fq::from_montgomery_limbs([10677514517763000310, 1869057220976501750, 7668490026500068131, 645375934459787109]), Fq::from_montgomery_limbs([8393901821323241932, 7155803376644055598, 5465256629438666110, 467809976924970962]), Fq::from_montgomery_limbs([8008789779293081850, 17333068400582244417, 864473515802821379, 712131972755422562]), Fq::from_montgomery_limbs([5260641048740129119, 11495506189219575805, 1976170684554961654, 583558279245420304]), Fq::from_montgomery_limbs([10607922137491563126, 16997507064637422660, 16243052688991164520, 620318480202596319]), Fq::from_montgomery_limbs([8682850641454705537, 4234371891064954414, 11030571520428482979, 775687601614273649]), Fq::from_montgomery_limbs([12248979915462901096, 1794636648127247975, 16388845185353268388, 1257257804440120883]), Fq::from_montgomery_limbs([17181365213230240819, 3933917789297525218, 774796165591114183, 628159510187755171]), Fq::from_montgomery_limbs([9201407700189177387, 14700424513123193347, 18288661468232834482, 407382537568434540]), Fq::from_montgomery_limbs([11966891449526246216, 6846368159746727324, 5421814018651935761, 1007837491484494646]), Fq::from_montgomery_limbs([3054672449338249840, 772010416012553897, 804919836093674272, 60934971449786311]), Fq::from_montgomery_limbs([3349955854192164124, 12023516821995660430, 14073054570207692346, 391152224081538807]), Fq::from_montgomery_limbs([4393818606630194054, 11894249453630174803, 11407464681452601419, 527342257675756743]), Fq::from_montgomery_limbs([593191207061949875, 394301333075100218, 15992303837511873397, 1258463696198082538]), Fq::from_montgomery_limbs([7392815618978882544, 8600193649781721343, 10001082189003162790, 160465744058402439]), Fq::from_montgomery_limbs([5982722207731997556, 9327097271719907983, 16837081471143367937, 1323283752393867441]), Fq::from_montgomery_limbs([15234580594321690160, 14480758270368693259, 7897576353120019799, 1211836381357568240]), Fq::from_montgomery_limbs([17534396175019205578, 3323788238042131357, 16622036826489890791, 893487708746761741]), Fq::from_montgomery_limbs([3851834168141787069, 11582510337408899680, 15343784808633432566, 461896544402216282]), Fq::from_montgomery_limbs([1182215324455482337, 1943242735522063011, 4144863718139895080, 243576649285589719])]), +// mds: MdsMatrix::from_elements(vec![Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169])]), // alpha: Alpha::Exponent(17), // rounds: RoundNumbers {r_P: 31, r_F: 8}, // optimized_mds: OptimizedMdsMatrices { -// M_hat: SquareMatrix::new(6, 6, vec![Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap()]), -// v: Matrix::new(1, 6, vec![Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap()]), -// w: Matrix::new(6, 1, vec![Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap()]), -// M_prime: SquareMatrix::new(7, 7, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap()]), -// M_doubleprime: SquareMatrix::new(7, 7, vec![Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("4222230874714185212124412469390773265687949667577031913967616727958704619531").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929237").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159454").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3838391704285622920113102244900702968807226970524574467243287934507913290365").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6141426726856996672180963591841124750091563152839319147589260695212661264822").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6082374546791064011871531249611883165956067353292787232708594726989462598734").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap()]), -// M_inverse: SquareMatrix::new(7, 7, vec![Fq::from_str("20612592").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917192806825").map_err(|_| ()).unwrap(), Fq::from_str("901800900").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455915485397121").map_err(|_| ()).unwrap(), Fq::from_str("2229907680").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455916071294433").map_err(|_| ()).unwrap(), Fq::from_str("325909584").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917192806825").map_err(|_| ()).unwrap(), Fq::from_str("2308610304").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455907669789321").map_err(|_| ()).unwrap(), Fq::from_str("20987366400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455892880254561").map_err(|_| ()).unwrap(), Fq::from_str("14820309504").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455913777675105").map_err(|_| ()).unwrap(), Fq::from_str("901800900").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455907669789321").map_err(|_| ()).unwrap(), Fq::from_str("41503336875").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455827229149041").map_err(|_| ()).unwrap(), Fq::from_str("106135029000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455852901195441").map_err(|_| ()).unwrap(), Fq::from_str("15888092220").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455915485397121").map_err(|_| ()).unwrap(), Fq::from_str("20987366400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455827229149041").map_err(|_| ()).unwrap(), Fq::from_str("197317120000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455683799863041").map_err(|_| ()).unwrap(), Fq::from_str("142714091520").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455882102367441").map_err(|_| ()).unwrap(), Fq::from_str("2229907680").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455892880254561").map_err(|_| ()).unwrap(), Fq::from_str("106135029000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455683799863041").map_err(|_| ()).unwrap(), Fq::from_str("277995157440").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455746821301521").map_err(|_| ()).unwrap(), Fq::from_str("42368245920").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455916071294433").map_err(|_| ()).unwrap(), Fq::from_str("14820309504").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455852901195441").map_err(|_| ()).unwrap(), Fq::from_str("142714091520").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455746821301521").map_err(|_| ()).unwrap(), Fq::from_str("105089467392").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891217959745").map_err(|_| ()).unwrap(), Fq::from_str("325909584").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455913777675105").map_err(|_| ()).unwrap(), Fq::from_str("15888092220").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455882102367441").map_err(|_| ()).unwrap(), Fq::from_str("42368245920").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891217959745").map_err(|_| ()).unwrap(), Fq::from_str("6547819824").map_err(|_| ()).unwrap()]), -// M_hat_inverse: SquareMatrix::new(6, 6, vec![Fq::from_str("36072036").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917138698771").map_err(|_| ()).unwrap(), Fq::from_str("787026240").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455916294285201").map_err(|_| ()).unwrap(), Fq::from_str("771891120").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917199725737").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917138698771").map_err(|_| ()).unwrap(), Fq::from_str("2049547500").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455911397233041").map_err(|_| ()).unwrap(), Fq::from_str("8576568000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455911436272041").map_err(|_| ()).unwrap(), Fq::from_str("1629547920").map_err(|_| ()).unwrap(), Fq::from_str("787026240").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455911397233041").map_err(|_| ()).unwrap(), Fq::from_str("17758540800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891924579841").map_err(|_| ()).unwrap(), Fq::from_str("17839261440").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455912520595281").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455916294285201").map_err(|_| ()).unwrap(), Fq::from_str("8576568000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891924579841").map_err(|_| ()).unwrap(), Fq::from_str("36759690240").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891562581841").map_err(|_| ()).unwrap(), Fq::from_str("7110754560").map_err(|_| ()).unwrap(), Fq::from_str("771891120").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455911436272041").map_err(|_| ()).unwrap(), Fq::from_str("17839261440").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891562581841").map_err(|_| ()).unwrap(), Fq::from_str("18244699200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455912372454561").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455917199725737").map_err(|_| ()).unwrap(), Fq::from_str("1629547920").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455912520595281").map_err(|_| ()).unwrap(), Fq::from_str("7110754560").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455912372454561").map_err(|_| ()).unwrap(), Fq::from_str("1394801856").map_err(|_| ()).unwrap()]), -// M_00: Fq::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap(), -// M_i: Matrix::new(7, 7, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2971532415911286051480807062801752246591259658502923419803409154127716874227").map_err(|_| ()).unwrap(), Fq::from_str("186721909275808996213483557735547595196583288549267688741666424698377478502").map_err(|_| ()).unwrap(), Fq::from_str("171569226090454573056015571244986560811254383892286118258836989224221642407").map_err(|_| ()).unwrap(), Fq::from_str("3059343727662923148040974376454314232464250064500758647733074274651761726585").map_err(|_| ()).unwrap(), Fq::from_str("4534790817941674769520151899347645131818454957902974337909760859064524815201").map_err(|_| ()).unwrap(), Fq::from_str("752504296504922106039276029343024737384939687135507584023218842040330119392").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("186721909275808996213483557735547595196583288549267688741666424698377478502").map_err(|_| ()).unwrap(), Fq::from_str("6878014754292273965662364339621838293207934661231232074331918091480453008340").map_err(|_| ()).unwrap(), Fq::from_str("183363162394153695662618300137233056599401818684870300820436590183000839325").map_err(|_| ()).unwrap(), Fq::from_str("323309267169864967183993273237976405791799941298379378023660391163003148074").map_err(|_| ()).unwrap(), Fq::from_str("2984385967212965149577676299752889643335871322269624334601938328063273591337").map_err(|_| ()).unwrap(), Fq::from_str("2387384200502060729167223926301911620388467206818002709702008525318991518803").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("171569226090454573056015571244986560811254383892286118258836989224221642407").map_err(|_| ()).unwrap(), Fq::from_str("183363162394153695662618300137233056599401818684870300820436590183000839325").map_err(|_| ()).unwrap(), Fq::from_str("2202640673133172626883180044813653960680889430908222833514846101262482081955").map_err(|_| ()).unwrap(), Fq::from_str("4888295793251851281899864344306186279311431201119991135199837230820994784636").map_err(|_| ()).unwrap(), Fq::from_str("2433731852407108819432196859978838899151281290436756458939839325499215812031").map_err(|_| ()).unwrap(), Fq::from_str("731926506771160032112511263905821283491821021472892417724296623943939021102").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3059343727662923148040974376454314232464250064500758647733074274651761726585").map_err(|_| ()).unwrap(), Fq::from_str("323309267169864967183993273237976405791799941298379378023660391163003148074").map_err(|_| ()).unwrap(), Fq::from_str("4888295793251851281899864344306186279311431201119991135199837230820994784636").map_err(|_| ()).unwrap(), Fq::from_str("4879307465283136396656540908967210645566803069610027203615451315780292362539").map_err(|_| ()).unwrap(), Fq::from_str("53588176193090599021120787870659787980315522270614534505384592464815769697").map_err(|_| ()).unwrap(), Fq::from_str("408978125764434241332678747716884128531757404579793070344432643042299921165").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4534790817941674769520151899347645131818454957902974337909760859064524815201").map_err(|_| ()).unwrap(), Fq::from_str("2984385967212965149577676299752889643335871322269624334601938328063273591337").map_err(|_| ()).unwrap(), Fq::from_str("2433731852407108819432196859978838899151281290436756458939839325499215812031").map_err(|_| ()).unwrap(), Fq::from_str("53588176193090599021120787870659787980315522270614534505384592464815769697").map_err(|_| ()).unwrap(), Fq::from_str("3547177385091292298144724315597646110249274215668284461731278710569085728882").map_err(|_| ()).unwrap(), Fq::from_str("5351366443528656762905344630680491023130811138760868630072321645701479274440").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("752504296504922106039276029343024737384939687135507584023218842040330119392").map_err(|_| ()).unwrap(), Fq::from_str("2387384200502060729167223926301911620388467206818002709702008525318991518803").map_err(|_| ()).unwrap(), Fq::from_str("731926506771160032112511263905821283491821021472892417724296623943939021102").map_err(|_| ()).unwrap(), Fq::from_str("408978125764434241332678747716884128531757404579793070344432643042299921165").map_err(|_| ()).unwrap(), Fq::from_str("5351366443528656762905344630680491023130811138760868630072321645701479274440").map_err(|_| ()).unwrap(), Fq::from_str("6443272067441507346009006217334521613736782334945581007272802366242342772219").map_err(|_| ()).unwrap()]), -// v_collection: vec![Matrix::new(1, 6, vec![Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("7992079869994707722949780745632535110052190442199381837152988806493262315521").map_err(|_| ()).unwrap(), Fq::from_str("2400974937883106114672334551046419876877314235570589973299839194906676079275").map_err(|_| ()).unwrap(), Fq::from_str("1495094186720882779478446055629510586276010748690967517684035711738816437362").map_err(|_| ()).unwrap(), Fq::from_str("4553294399166630813180549490103937947111116882222551044268790113481775975974").map_err(|_| ()).unwrap(), Fq::from_str("4721650076204707538087345000927459081142480643047726768984534143485978627990").map_err(|_| ()).unwrap(), Fq::from_str("2863481130378056794722734134719622953652020593221982834037837906540290599614").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("2768918473928334563491601943898525318711312384477821833903327906778447410489").map_err(|_| ()).unwrap(), Fq::from_str("390642325379555301779940889089724185339708502097253513681223943887364803760").map_err(|_| ()).unwrap(), Fq::from_str("3341494777613818948885593684620865393793543176676768812401695367227353712488").map_err(|_| ()).unwrap(), Fq::from_str("3238939092625012882967350941997562123576024993494722172637725731749557095600").map_err(|_| ()).unwrap(), Fq::from_str("4719349967830965473744809299509667812604001855667592936741585606643692149352").map_err(|_| ()).unwrap(), Fq::from_str("4118738110220967041544862372729285207062492976349765936513039911780592002098").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("2327497137436718627416140967107253516969051692346333557812593379728310855116").map_err(|_| ()).unwrap(), Fq::from_str("7027060212920793663243495857988487919802233961807448052017033131129072623221").map_err(|_| ()).unwrap(), Fq::from_str("4986892509600647556741276362324904991790885183785366525418677315894485947761").map_err(|_| ()).unwrap(), Fq::from_str("1514196322905422597773563541749108811799537189448954309915737826284173592065").map_err(|_| ()).unwrap(), Fq::from_str("2249325158676764834620105602954601732785960081258375253389376891593204700996").map_err(|_| ()).unwrap(), Fq::from_str("8292955926579449576107812791030712311452043412867290027596539289541535522336").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("4271217437818815949938990517320338285099458061324498208787759561521720261113").map_err(|_| ()).unwrap(), Fq::from_str("7133074491574613903248543904967935845737671052466549454760124028941233544522").map_err(|_| ()).unwrap(), Fq::from_str("6296277583242434657903691348184845043089157989002336901640786368030837706503").map_err(|_| ()).unwrap(), Fq::from_str("3166968730869456307780998523723323465244619347522329739887414362745055780253").map_err(|_| ()).unwrap(), Fq::from_str("1011565385556723881562935636761493104958379987370689642626714748400539653406").map_err(|_| ()).unwrap(), Fq::from_str("2954554307111187065491675606782183162991387038143329464047999217849246204012").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("6344947172936788237003814657546218017886560198045266774401313596768565864541").map_err(|_| ()).unwrap(), Fq::from_str("3713003075137186807051079872378882285939755720355584380535354110659107294575").map_err(|_| ()).unwrap(), Fq::from_str("5152590182003496369775702721302332735216105958051124635273579451994132815179").map_err(|_| ()).unwrap(), Fq::from_str("1307013476906003321873015425370921844153846593509911768631796973903071734623").map_err(|_| ()).unwrap(), Fq::from_str("7678377664054863651940730677777426644560395525437392418262453813469093423909").map_err(|_| ()).unwrap(), Fq::from_str("7585889197547988929336839597495982627948266501715953301285214846469351262193").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("3633240764036730302829799241612384674818969520874781821058805867490455983157").map_err(|_| ()).unwrap(), Fq::from_str("2271709291405670066056603360416702015832511486624100124944712619160478403539").map_err(|_| ()).unwrap(), Fq::from_str("2193969055596424961106027792474671936780332680786760487915444318615876218096").map_err(|_| ()).unwrap(), Fq::from_str("5325697257668381005942764630668645989999759604505406772342071072526706670307").map_err(|_| ()).unwrap(), Fq::from_str("4730786278433336134651262395727595065042879520766462401226585451158905758810").map_err(|_| ()).unwrap(), Fq::from_str("6470817977317643965786306269949209657397893408314615347946520127545549358598").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("1804643137399501997892145221142349350062557457891317434975618667555841579290").map_err(|_| ()).unwrap(), Fq::from_str("4148350407437797777266489015241457439089581174966917344245442806404723533240").map_err(|_| ()).unwrap(), Fq::from_str("1362921597439020253582567376557520709739025907567831051509120598334422442772").map_err(|_| ()).unwrap(), Fq::from_str("7767987822764109549530323326214711330446552401944236086829655879830224255404").map_err(|_| ()).unwrap(), Fq::from_str("738474159265524751959043072028569272247479454111304610092650100105873348475").map_err(|_| ()).unwrap(), Fq::from_str("8126496732685771106040829934119202733259053277370631193395442806484780250105").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("604259321698896847790373602007734259257224956435886231718382787067516452575").map_err(|_| ()).unwrap(), Fq::from_str("7890756385333024244643106904245128455457999845996640138648620086273529574872").map_err(|_| ()).unwrap(), Fq::from_str("5384484290573392919892685721229692603955265518656239599366064134080331150756").map_err(|_| ()).unwrap(), Fq::from_str("5075492807667910554854483463036160344630540108549987845023663819348285370139").map_err(|_| ()).unwrap(), Fq::from_str("3759501637553048143369895401832756596707795281888811801227629449525465314470").map_err(|_| ()).unwrap(), Fq::from_str("1407293680556190241562496593446139970756456679522246187412238430873051529548").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("3779930024374424479555590057209848113560145826106709240135203119060739421956").map_err(|_| ()).unwrap(), Fq::from_str("6961850372861798510287610705950380316759460313239607079580294484733986084733").map_err(|_| ()).unwrap(), Fq::from_str("2984249821372139948857292705782224945602096484420679430340040977927960386230").map_err(|_| ()).unwrap(), Fq::from_str("27316756714969795316490676801391467524785542207044951498839555833562070262").map_err(|_| ()).unwrap(), Fq::from_str("5976606160493736325868817736717792627076259638061437576653350786274679361773").map_err(|_| ()).unwrap(), Fq::from_str("224876311782950451539995454407053277116060857536520210942760060162752854011").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("4955291914153931034825808818521925115939289999350929183099214254110926278122").map_err(|_| ()).unwrap(), Fq::from_str("6987333570739662956676463142636190127757043786003275247382629721771447545475").map_err(|_| ()).unwrap(), Fq::from_str("5528748383645271914644859952110503234146840824880133768530126692882774213853").map_err(|_| ()).unwrap(), Fq::from_str("4709941490691789097736576597266091150508411443160619838738784384406239651314").map_err(|_| ()).unwrap(), Fq::from_str("5635257327009345870850179100670864958913188441579286691253101961921449428807").map_err(|_| ()).unwrap(), Fq::from_str("6357447447406381200258919404586301438328184250241912943129018587607864264656").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("3323526238693028291659175131900839845766559375176859383887048667810017779920").map_err(|_| ()).unwrap(), Fq::from_str("259015480570643608683584850533938410337013173115267025007113449688099907661").map_err(|_| ()).unwrap(), Fq::from_str("1782523703735097240127183266065276335911308681464729426279652136355520240270").map_err(|_| ()).unwrap(), Fq::from_str("2505527043450937088610326430439132872477914039077900293440797157888058002140").map_err(|_| ()).unwrap(), Fq::from_str("2706759487962169205717504449325545627039776222411638449607886578747780287300").map_err(|_| ()).unwrap(), Fq::from_str("2768515238740647481746046219999136104654387949908480290919981398852317543977").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("2823198562735937069527670429520260372423636886876867432966981737644494818575").map_err(|_| ()).unwrap(), Fq::from_str("2408256888424885112079591420303146947714638647773938774567664304344118054240").map_err(|_| ()).unwrap(), Fq::from_str("4658918560159645496186157367158442238529974205112543302077659248985492246584").map_err(|_| ()).unwrap(), Fq::from_str("7047369142792914103336136353001081256611097211997660456007691752759174101341").map_err(|_| ()).unwrap(), Fq::from_str("4137626172684074448770720893250301887786479528327279266087239230936650360863").map_err(|_| ()).unwrap(), Fq::from_str("4600823758612394242491233053721253163318785578501576974189513328159243409479").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("1457452467467324445825354759502437222687338714696576946498157051037951095497").map_err(|_| ()).unwrap(), Fq::from_str("572185086166093350300248602124835164252957797536269343092702972292406721769").map_err(|_| ()).unwrap(), Fq::from_str("375507034351175620416183353751741018151850383770460361090460190272934066962").map_err(|_| ()).unwrap(), Fq::from_str("8385315398347827003747853011292188020245328012469399813008893861594009021083").map_err(|_| ()).unwrap(), Fq::from_str("2018462698917613238438997644206820102431756452641295936632999179192615642414").map_err(|_| ()).unwrap(), Fq::from_str("7908888764265328835673473216839016757412647830054190424517934029795934333335").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("7659164801145646626814986844830311716251402235734340761554764194202408740203").map_err(|_| ()).unwrap(), Fq::from_str("2280572786444500051293327673737782500962544310705112166461600186675096392629").map_err(|_| ()).unwrap(), Fq::from_str("5797289699486501736648385448361731791173415431904203287915686506129309317811").map_err(|_| ()).unwrap(), Fq::from_str("309516798119063989349747065107692209017586995167526997803141110082423199051").map_err(|_| ()).unwrap(), Fq::from_str("6987829457800001580263330220326477757312146002166840381406236751807812734595").map_err(|_| ()).unwrap(), Fq::from_str("3573293242211115572375585879384780991073468600067229441489796956652145548760").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("6913230520739304537684162939665887112556563997976053315466810090217988752944").map_err(|_| ()).unwrap(), Fq::from_str("878570080567377334739150071807321599939730189375918370216074727611936409223").map_err(|_| ()).unwrap(), Fq::from_str("2937090995014433089078245105618695814724783942922696703157618620510350033232").map_err(|_| ()).unwrap(), Fq::from_str("8321335430874574197004632306034006293742002828891072892783045851538109349687").map_err(|_| ()).unwrap(), Fq::from_str("6703396323441407289054101792401921107339395525549166965716835828144862935657").map_err(|_| ()).unwrap(), Fq::from_str("7981157534429456627251922015725247638058718560368000049447170697424187823765").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("3406040245914593459201988905832973653763939543017083311401987597133896186004").map_err(|_| ()).unwrap(), Fq::from_str("6719892518358096922360311024656759390112987630121744699683778208789109708980").map_err(|_| ()).unwrap(), Fq::from_str("4120931279238012564995997542799695468600389707240705956463031772869350982446").map_err(|_| ()).unwrap(), Fq::from_str("4821529834864949965445702867483423396497428237762794632531037976039217207758").map_err(|_| ()).unwrap(), Fq::from_str("4368153594563176824445777540536364229696491498760708732282363653286727590317").map_err(|_| ()).unwrap(), Fq::from_str("2809979344891853744733163055173964932021145937950394306579825690484434996852").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("2169089802823167233694168231653589499983287197905996013634547680871589911846").map_err(|_| ()).unwrap(), Fq::from_str("8043366846396684996803153547701316907486853456017101110993970004381981172608").map_err(|_| ()).unwrap(), Fq::from_str("4337024048992420305249758485692125528051187917843229901637206221823495725611").map_err(|_| ()).unwrap(), Fq::from_str("3879961221429927232007254860210576170111768768505481975736357869623697449267").map_err(|_| ()).unwrap(), Fq::from_str("2831448238952612834889178505177298512177094599330545187556904977665994153519").map_err(|_| ()).unwrap(), Fq::from_str("7911296809503676750079719485483266056330132951586854486165456996937281246225").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("4360577751598251443789350641893513497267286834366304610297037166297502140865").map_err(|_| ()).unwrap(), Fq::from_str("245392484555628045512953049249084465517336666377483464922307079679412032594").map_err(|_| ()).unwrap(), Fq::from_str("8131376494830434978991910364061547715814456858699143618464048389850916495304").map_err(|_| ()).unwrap(), Fq::from_str("4303357116753189179755435352506698625993860632018961817221653363073421605551").map_err(|_| ()).unwrap(), Fq::from_str("5475538941174116944168813910979568357127272783189294540580767652301126750820").map_err(|_| ()).unwrap(), Fq::from_str("1213363963268142990085233684143983290510566594530609859286044551429896518762").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("5194968509028232939505565441480429795924044289405054432844873084494956981042").map_err(|_| ()).unwrap(), Fq::from_str("3339670687515266746076864263975658693121911316758729968755577987089274104131").map_err(|_| ()).unwrap(), Fq::from_str("5651849134818027659080808521198039120782090975677462664032542433372486989729").map_err(|_| ()).unwrap(), Fq::from_str("3420499397483573303157014937470048467469939224584966186661369284206294376334").map_err(|_| ()).unwrap(), Fq::from_str("4129598328560531351709336581780087796070371276088587604563881631487174216338").map_err(|_| ()).unwrap(), Fq::from_str("6644756600626228865698859345091173225505897653872661586955701155264222960300").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("3986684349493474991649489907681056939682958623892310913719091217007666755897").map_err(|_| ()).unwrap(), Fq::from_str("327176924856451208981276134998379869770062842638901321796043647507966610743").map_err(|_| ()).unwrap(), Fq::from_str("1187796565822843833708875996460989236478576641001829504485590611431129523823").map_err(|_| ()).unwrap(), Fq::from_str("4627537935009432513142903965547069426720172883635794424402963121304865007661").map_err(|_| ()).unwrap(), Fq::from_str("2700275217520338411096320582320968544157205723036502430829135416335561594133").map_err(|_| ()).unwrap(), Fq::from_str("2010982744359185978033316039085624780275063506780801742451967544059579582778").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("62320420000000082093831685700692039543455003776204858891538140700730562780").map_err(|_| ()).unwrap(), Fq::from_str("1030473664643997546892309530264610266562252064765767989420593343119523365039").map_err(|_| ()).unwrap(), Fq::from_str("3775424158905106596190209034980311526318993016990633917227873200003608699756").map_err(|_| ()).unwrap(), Fq::from_str("5974263175179782189682688179096432481883774971814035358332879844030775931428").map_err(|_| ()).unwrap(), Fq::from_str("2640226464730323586704804033099750959805295453135356862672242892720496268119").map_err(|_| ()).unwrap(), Fq::from_str("8002163508658524653520615183578621606921539531587925684792192660184886980755").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("691280730493729216703430834325558620682769299173691343365944785758763047868").map_err(|_| ()).unwrap(), Fq::from_str("4119931719292839649421913734519490484021535835673728385117744421025476922754").map_err(|_| ()).unwrap(), Fq::from_str("3336230237376767290239549407498555620337888923640971638181172506247523415292").map_err(|_| ()).unwrap(), Fq::from_str("5062448259439827405458323602642928024404096034675093829669184681939070922779").map_err(|_| ()).unwrap(), Fq::from_str("7213237486779785173776222423449751232607441389041088658694926504335765055239").map_err(|_| ()).unwrap(), Fq::from_str("279468899677344087839039447509430543322933366755265852333823117675260543537").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("897995524923151874204111111262730806578836541267003314322406203899040805389").map_err(|_| ()).unwrap(), Fq::from_str("5479704205758736332607406159422767470050176207843890033213762409088531337153").map_err(|_| ()).unwrap(), Fq::from_str("1681670828251006565041847492695775223718890987641504922146296378400634282651").map_err(|_| ()).unwrap(), Fq::from_str("4732714417093501014308524891842081985702371381289583422397068939092320865389").map_err(|_| ()).unwrap(), Fq::from_str("7272371774227848893494196263072662939920596010915412568335234864584713153035").map_err(|_| ()).unwrap(), Fq::from_str("7493068195260429794675685959421480208652466916482902456883009489376311197921").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("7702815478478514521701541123140603389699263970322897445281310660622840913737").map_err(|_| ()).unwrap(), Fq::from_str("4188794212871506418360682573034054099921577729476808717530816826995761620864").map_err(|_| ()).unwrap(), Fq::from_str("835608170379202553185618372885326648949518436995563652190406505915370722674").map_err(|_| ()).unwrap(), Fq::from_str("4046128912327988078070215313283311540030645981021489992643379538966290463143").map_err(|_| ()).unwrap(), Fq::from_str("6800097811760596404542299388591346960309301857724844653559409281805123921815").map_err(|_| ()).unwrap(), Fq::from_str("5233002066189155441689969077161996207831496096774982003037111756375909305057").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("5693575984813870208886090686958376767942919984076686826314075819406693357115").map_err(|_| ()).unwrap(), Fq::from_str("1673383684557377085138754431432381708512163663619744494364185316167642829139").map_err(|_| ()).unwrap(), Fq::from_str("5742486983635806136512567664316411501363882099678481167078842119610752489373").map_err(|_| ()).unwrap(), Fq::from_str("1694513786365278810553764605135878317964196139382277672113919449181980565862").map_err(|_| ()).unwrap(), Fq::from_str("7380814210861661532301767653840588064429392733090126387661183815352799317375").map_err(|_| ()).unwrap(), Fq::from_str("7085891307035659653390675208067614851382123841240589557475796465408539761469").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("6547869538324066602850908408298264694345256117322034970199481297929958411615").map_err(|_| ()).unwrap(), Fq::from_str("7332387606884107254870646732635892592261432704483778002493738638111043992105").map_err(|_| ()).unwrap(), Fq::from_str("6742000149393280800083266454420071646721497345052615543539504296217070579417").map_err(|_| ()).unwrap(), Fq::from_str("6495994531606341510751550342241116238121080840162105656705775342189804517181").map_err(|_| ()).unwrap(), Fq::from_str("586603087362199507562771084888513879800221064624129056723478396083904343376").map_err(|_| ()).unwrap(), Fq::from_str("6774051440877927848134032916449754949453620909444130679324306069789791753664").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("4257326995725534305721882447368934910773550510778071306430418447853777775052").map_err(|_| ()).unwrap(), Fq::from_str("4202117970594662030203468603818939602501567096577993999017471841515492725043").map_err(|_| ()).unwrap(), Fq::from_str("6976403048862011221249333237090614675202663631455431445386958934096391690840").map_err(|_| ()).unwrap(), Fq::from_str("2808537441332221258433677344213859082405312320403187797854727579979313542432").map_err(|_| ()).unwrap(), Fq::from_str("883388542378631172482616227511249901109681641934985320810473744099020836845").map_err(|_| ()).unwrap(), Fq::from_str("2977107441688382108192492711126319843440372379163053797449179494013580160637").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("5713473266986796506811001887871816973415558565554940938139635148763794224262").map_err(|_| ()).unwrap(), Fq::from_str("4637959147832857689884957887319565727209143127817227072780119194297178805014").map_err(|_| ()).unwrap(), Fq::from_str("4855692527966263955051790710403356853449219823450653161958996979000781189584").map_err(|_| ()).unwrap(), Fq::from_str("925019382016372314618558131501990895754156999722676544190390953561091127847").map_err(|_| ()).unwrap(), Fq::from_str("6105423255520462525662991288037968308792655943978581420535598040036599991107").map_err(|_| ()).unwrap(), Fq::from_str("2583976545504230682979644750684382262608387235801641445703856992557442328241").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("5177706977962292842851753131934739566931571273157939983013622125850694666613").map_err(|_| ()).unwrap(), Fq::from_str("6027171566415239037360005269963084906418120366156018575196784770066430293982").map_err(|_| ()).unwrap(), Fq::from_str("7298767999809211852257612226305319450835672742831373219899936566011927244606").map_err(|_| ()).unwrap(), Fq::from_str("6628611823733949782085400455554362990990087712656001119059742556615651144627").map_err(|_| ()).unwrap(), Fq::from_str("3912675480422924202570397920970262758909643800193454897495816031838465649584").map_err(|_| ()).unwrap(), Fq::from_str("6776290655773766806134037706320799618035287628352809475860968944984210923889").map_err(|_| ()).unwrap()]), Matrix::new(1, 6, vec![Fq::from_str("3935774520161526740097689550249405987046328390443521871924853723988707896330").map_err(|_| ()).unwrap(), Fq::from_str("6918786608398592617276629876715484486041233343502195959209083096568163992460").map_err(|_| ()).unwrap(), Fq::from_str("3798804619192181012547382063045284903891320386224253033203661634354532335359").map_err(|_| ()).unwrap(), Fq::from_str("6958359647886431719493646056064811341300360163107724957953149340023495089048").map_err(|_| ()).unwrap(), Fq::from_str("6983827742609619254818998935222656639601430411092917449808525919708994534917").map_err(|_| ()).unwrap(), Fq::from_str("2677669127039915070153922045109578473191675770880810440570147864345552626822").map_err(|_| ()).unwrap()])], -// w_hat_collection: vec![Matrix::new(6, 1, vec![Fq::from_str("4222230874714185212124412469390773265687949667577031913967616727958704619531").map_err(|_| ()).unwrap(), Fq::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929237").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159454").map_err(|_| ()).unwrap(), Fq::from_str("3838391704285622920113102244900702968807226970524574467243287934507913290365").map_err(|_| ()).unwrap(), Fq::from_str("6141426726856996672180963591841124750091563152839319147589260695212661264822").map_err(|_| ()).unwrap(), Fq::from_str("6082374546791064011871531249611883165956067353292787232708594726989462598734").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("4222230874714185212124412469390773265687949667577031913967616728218408433999").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233453922486635241").map_err(|_| ()).unwrap(), Fq::from_str("5920955126100").map_err(|_| ()).unwrap(), Fq::from_str("6909105067714121256203584040821265343853008546944234041037918273581901234739").map_err(|_| ()).unwrap(), Fq::from_str("5373748385999872088158343142860984156330117758734404254140603114305521263287").map_err(|_| ()).unwrap(), Fq::from_str("7322470328175649878369610436425956432801479143769957445202580058028627621964").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("19694526679434762608922").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063676511134982758038587766").map_err(|_| ()).unwrap(), Fq::from_str("449782197840604804334880").map_err(|_| ()).unwrap(), Fq::from_str("6909105067714121256203584040821265343853008546944233392444095909506781412099").map_err(|_| ()).unwrap(), Fq::from_str("1535356681714249168045240897960281187522890788209830242838847199288190395902").map_err(|_| ()).unwrap(), Fq::from_str("6318583267054794653109260618528849502498050551478914766817831298892896986601").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("1497032304330324162618458541417474").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375887824981810411585137515900771992241").map_err(|_| ()).unwrap(), Fq::from_str("34189292491655564496915855909282960").map_err(|_| ()).unwrap(), Fq::from_str("767678340857124584022620448980140593761396092444739590789666329896247709571").map_err(|_| ()).unwrap(), Fq::from_str("6909105067714121256203584040821265343853043204558323526628825895326181628259").map_err(|_| ()).unwrap(), Fq::from_str("3365974263758161637637643507066770295723251041050700771527752329307650396823").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("113794127934652073573359854518539457356074408").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938780671607019838393861908837732848909298605355941").map_err(|_| ()).unwrap(), Fq::from_str("2598835557921291792385119776205377404281832320").map_err(|_| ()).unwrap(), Fq::from_str("6141426726856996672180963591837377175954278226909094808814703658100074323128").map_err(|_| ()).unwrap(), Fq::from_str("3070713363428498336090481795923196809230236874981638381328917319064102149484").map_err(|_| ()).unwrap(), Fq::from_str("5609957106263602729396072511777225851849766536266586933036012637836350010753").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("8649849297986071665276157533420698605253745215327156136").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424182319188751980067582585362494872935535074887074931523841").map_err(|_| ()).unwrap(), Fq::from_str("197545658421149818917561971141042446745854486127340997440").map_err(|_| ()).unwrap(), Fq::from_str("6141426726856996671896098703722601375622694308040571764542738889888950803608").map_err(|_| ()).unwrap(), Fq::from_str("3070713363428498336290733417831436517150502940615193805698933884644612054444").map_err(|_| ()).unwrap(), Fq::from_str("6023322366725131351507016665858479160691537412781490695942055328652698883770").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("657502230041317283767025639240476313891746830730683023968962359712").map_err(|_| ()).unwrap(), Fq::from_str("8444461744373059349037989890554749705790828340758533079207675960904452050641").map_err(|_| ()).unwrap(), Fq::from_str("15016066346629390132233299998858409247978718327591153325656946772480").map_err(|_| ()).unwrap(), Fq::from_str("2303035000917898327698950636348149247382811606268184512293140923890221835113").map_err(|_| ()).unwrap(), Fq::from_str("6141426742078751808016463421651164549794229779725621836880502819458640449688").map_err(|_| ()).unwrap(), Fq::from_str("5432800561878830456759146117323331318538544406461292221688948900282725875236").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("7756502168100571184376896302280551277548793166114668639883983616612521596699").map_err(|_| ()).unwrap(), Fq::from_str("4175157724607359289427558086631305210641516791653385486531603261744641783086").map_err(|_| ()).unwrap(), Fq::from_str("1416059597121053958848128267926139362734506289103718408674495275160432533625").map_err(|_| ()).unwrap(), Fq::from_str("2256677883012223113115674666522881880127488799250977469310075151400801433097").map_err(|_| ()).unwrap(), Fq::from_str("7071292475951265952987682896495006531647953024574866860245107900298149912242").map_err(|_| ()).unwrap(), Fq::from_str("2211106407139492155021949863554524644063070656030909157002547259089747550493").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("2602263341124119419147600624827447438986082328034425967696066618778512554933").map_err(|_| ()).unwrap(), Fq::from_str("2165915860896437438973961461429867834313126926074653100329148237021540506883").map_err(|_| ()).unwrap(), Fq::from_str("6929600495258348942343968645229240170562040042475317316542332746442883564751").map_err(|_| ()).unwrap(), Fq::from_str("7091627611238271039649712494089312289697889252980980096327086917449089768931").map_err(|_| ()).unwrap(), Fq::from_str("8401748971212958946521855216348549536545094243962934281840752808796068499726").map_err(|_| ()).unwrap(), Fq::from_str("7688672667136922415527838349445896811460438379038109343148065330626378989651").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("5527133803268077686151225145760980816565460725760488585529151764746659819444").map_err(|_| ()).unwrap(), Fq::from_str("1420465977977641080545070749415982853445599051771707088951082713745042631908").map_err(|_| ()).unwrap(), Fq::from_str("7047376190395367960949164888487996847279638781138175230063141865103094484458").map_err(|_| ()).unwrap(), Fq::from_str("2165145780342348990506906048672931216628755607705753985811995151202431804300").map_err(|_| ()).unwrap(), Fq::from_str("2330363392623895453330675002828476643751718479485796885705257620311258600906").map_err(|_| ()).unwrap(), Fq::from_str("708265230616189882069062451862440500827149299926423694051099015440875980243").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("2454094302824264707580445601970407527679048995808759039105841156977396020695").map_err(|_| ()).unwrap(), Fq::from_str("821335875430970773649202361630472362858048177062168250440298869253462060615").map_err(|_| ()).unwrap(), Fq::from_str("183573162384463899471570488290746850693500901219325686699411738076309511863").map_err(|_| ()).unwrap(), Fq::from_str("2796668117021201703320298849755532965523877585208601885396540013497772367925").map_err(|_| ()).unwrap(), Fq::from_str("5162031161158159530842102736359466134637688706608492790439123517498529951931").map_err(|_| ()).unwrap(), Fq::from_str("4091570422617304951741307638791061524968671405739168022549238038269479562245").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("737417062310641875717854177587329774735105148895641355087952769430553423077").map_err(|_| ()).unwrap(), Fq::from_str("4273603383860682790263241825695980936923693387937117633041424439557261189556").map_err(|_| ()).unwrap(), Fq::from_str("5613953334394940835192344443865169572035923269136339989725300651448437779043").map_err(|_| ()).unwrap(), Fq::from_str("5970741496963160151975575467965326108716841245297538137214719049177398175727").map_err(|_| ()).unwrap(), Fq::from_str("7183381362659247193528739142776882367501368440330884271377441605859256127998").map_err(|_| ()).unwrap(), Fq::from_str("513780765249169544963825173309893735540585013338068892775669096687804559139").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("2779629536295250731092438621118036921956697128125483760481776504081122115914").map_err(|_| ()).unwrap(), Fq::from_str("7394253754673156168452362255058891835420133990688577653209860752925696911785").map_err(|_| ()).unwrap(), Fq::from_str("415745502887986010638221288974137687574267613480360770748702995943235080703").map_err(|_| ()).unwrap(), Fq::from_str("4713860786245012428396497117005083142025054946867179299997449162783175709618").map_err(|_| ()).unwrap(), Fq::from_str("7421846132699326412452212935882185153701192583144272690124119786946541259588").map_err(|_| ()).unwrap(), Fq::from_str("4269853562516389470459167819117890630233818826455773032009793737526728914721").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("2729197371782575407599408379923690936957171100442605056593066227422321836812").map_err(|_| ()).unwrap(), Fq::from_str("2504325774583278165172327070553467359549266683503885693897641678809738304364").map_err(|_| ()).unwrap(), Fq::from_str("8010149206438103026942512144092961515512701514783471849833737658763585770215").map_err(|_| ()).unwrap(), Fq::from_str("7740593142796423942166875020873412727523565414296365088900809828363014813078").map_err(|_| ()).unwrap(), Fq::from_str("3889214044397985400634811245878178974364309864185248558312333288913117782467").map_err(|_| ()).unwrap(), Fq::from_str("7147195344077222712727860397001802884814268857523195957699287548038977344480").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("6525055137991025563442641792948601343252219443789817517262328532767297194932").map_err(|_| ()).unwrap(), Fq::from_str("4176104461436890274614849205817920116490813517963174316393509490755333125639").map_err(|_| ()).unwrap(), Fq::from_str("3763688205247176372714916105480966950087380206203629894502527791223781539850").map_err(|_| ()).unwrap(), Fq::from_str("6740121658694194863667067253050047084682118177445547374080792520025172439572").map_err(|_| ()).unwrap(), Fq::from_str("277743261640993205738189477176807889297707699564529302694786704219164803122").map_err(|_| ()).unwrap(), Fq::from_str("7561320922915877454592910217702443984638836770715812956701473878298965141543").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("678037994656638315044320375806213045333413303499346347761819782873358347299").map_err(|_| ()).unwrap(), Fq::from_str("3068859481908195193410796579511918175163642611384057677410991117039998101518").map_err(|_| ()).unwrap(), Fq::from_str("643496455385992335466025720988443201782291086775247314069940336031282257224").map_err(|_| ()).unwrap(), Fq::from_str("117008816555618128517407003888800521248168345403971286470219940711833605941").map_err(|_| ()).unwrap(), Fq::from_str("2193556659204886673185266460823286263515142486003081854295416181816963862972").map_err(|_| ()).unwrap(), Fq::from_str("526484012518620576802050623949095054805646484574753287924982547880486118095").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("1271681513644441576881320605484022904856585972264708373840155481588191464418").map_err(|_| ()).unwrap(), Fq::from_str("354302809621521641910052682190715354449567975654901328882040313605911394317").map_err(|_| ()).unwrap(), Fq::from_str("4864686249647799165085767915833712762108918965054447425381759787413914253569").map_err(|_| ()).unwrap(), Fq::from_str("3308000603710509123917501267387805188495421125708699886017151696212993621103").map_err(|_| ()).unwrap(), Fq::from_str("6301637987523405000406147772970404642530461143188930033078907205473208589886").map_err(|_| ()).unwrap(), Fq::from_str("6604928023250481449541821793422532372126522613671917245836875687405344779190").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("4455309302437988400247978836649149373064349787700165136763216616954129866804").map_err(|_| ()).unwrap(), Fq::from_str("3498248107762194682617173362097779965602870558832307975328475786013507978508").map_err(|_| ()).unwrap(), Fq::from_str("1566139969472275797575198116176816662668233129953917181580670671577078937849").map_err(|_| ()).unwrap(), Fq::from_str("1355147466212180870983886499378631512348142617378543897159003413651672684920").map_err(|_| ()).unwrap(), Fq::from_str("3529686117689783675017612646957517855192834636228967262187459527141362160235").map_err(|_| ()).unwrap(), Fq::from_str("492332142737138848780130509214129818118200587391154423991013494407255765902").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("4870629149819877404691719630975370611347013605793410713942417073069370371875").map_err(|_| ()).unwrap(), Fq::from_str("2399078142980031140291521751388842961085997337576968862512067215563093822204").map_err(|_| ()).unwrap(), Fq::from_str("3708877822583507743350110323522733863528643355466751851275704717214938918404").map_err(|_| ()).unwrap(), Fq::from_str("4659934970686421571857112812473321425164764393952157820004126478998490835412").map_err(|_| ()).unwrap(), Fq::from_str("4943573888412009109384646950610736804563962845255262704208403178778984841942").map_err(|_| ()).unwrap(), Fq::from_str("574190747345028748757479941424031591917303217731663302226030530784513235264").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("8413802661647996069929242978558377227858274358336126427211903639327803833209").map_err(|_| ()).unwrap(), Fq::from_str("519364413056777122986410731670806373800886479563051852550120848319225505878").map_err(|_| ()).unwrap(), Fq::from_str("7926804546501459228201204623325131860939001673282462498572744669512703076804").map_err(|_| ()).unwrap(), Fq::from_str("5650310321905591539559963214069793334754737568666543702646448786051353553296").map_err(|_| ()).unwrap(), Fq::from_str("2212379372877387742218381359390418343683168694381553896470110889296755279013").map_err(|_| ()).unwrap(), Fq::from_str("6836660046038469548805291223101800861311375959194362298531717617207198616422").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("4783393037952393291676157314203688715572568898491170576394490367655354700330").map_err(|_| ()).unwrap(), Fq::from_str("2564092004508338917172131695917182632124512867963633069036512436771487570987").map_err(|_| ()).unwrap(), Fq::from_str("6234763871139151449222613007869400141739427704391662491715437446263922756941").map_err(|_| ()).unwrap(), Fq::from_str("689103049127644270925099406037243367835562644586412023094949236816236531237").map_err(|_| ()).unwrap(), Fq::from_str("6851846354321535101578840356262994164671494700472243045405214332342721815881").map_err(|_| ()).unwrap(), Fq::from_str("5997292496028420476680707772620912594076026332432398364354381333842798084707").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("5160102254338178203639481010905547148079652309603644336740772043727665352789").map_err(|_| ()).unwrap(), Fq::from_str("1908587684123490184383493488393345901623694825735646560701708684401216116190").map_err(|_| ()).unwrap(), Fq::from_str("4607754449958274888663224753679727931518293982567530170325818946763802137602").map_err(|_| ()).unwrap(), Fq::from_str("3077300517885992872375505511813200362773532385839710312034164426589540687002").map_err(|_| ()).unwrap(), Fq::from_str("7532020324106484066925224084668148085387790393589392812602736372278615054276").map_err(|_| ()).unwrap(), Fq::from_str("344977220186613806599384685408032848394016886221781259797052361089856749437").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("3393918342469034924348116688940468088553725054272081137005893644398233292695").map_err(|_| ()).unwrap(), Fq::from_str("356281899587848124367887360007515220926404349673435312940743989041434010720").map_err(|_| ()).unwrap(), Fq::from_str("1758742446842427957265238289578738315501946123766607371038897954137567662312").map_err(|_| ()).unwrap(), Fq::from_str("3153279758273655617261199850808939384868848311566803603932878356236952020290").map_err(|_| ()).unwrap(), Fq::from_str("8018464815556207986344462980286589026737429793071319925512400071857345028066").map_err(|_| ()).unwrap(), Fq::from_str("2385617689466097179116916530734940962465651152336581042090550709183334141063").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("7426963327539378639426037730546639936416434663632106359847322808760959464570").map_err(|_| ()).unwrap(), Fq::from_str("5274296489964292775051093492157325226405689693565091986859809652401309607823").map_err(|_| ()).unwrap(), Fq::from_str("7827241313868774196245990793266909562648160445985645425406006810232271513840").map_err(|_| ()).unwrap(), Fq::from_str("3043499501949644477529208269833298836634909727183364948493064469038391134262").map_err(|_| ()).unwrap(), Fq::from_str("4340713803276461970375821544340407909092462955482721062263750193918064951694").map_err(|_| ()).unwrap(), Fq::from_str("5727982185296156082216966520688456783134943785289401264046725930042185635011").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("1044627383774178740246927034855276531721947891017405155504934664363963744205").map_err(|_| ()).unwrap(), Fq::from_str("3358443304821405853608077528484150146664863668795435090092302471470268187768").map_err(|_| ()).unwrap(), Fq::from_str("4393709706901091014969955480781664800996324532875596929838737765289660236287").map_err(|_| ()).unwrap(), Fq::from_str("5249451643950974464239301173831437707893267000803842660603692970765214658517").map_err(|_| ()).unwrap(), Fq::from_str("720403292222864764664662027099398853890117824525950586777116939477195987659").map_err(|_| ()).unwrap(), Fq::from_str("5135595196690594471321330706235194948208391266704109894291833948815105874156").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("1411014658510544882011475882370510673755434974948582565623271410876437451508").map_err(|_| ()).unwrap(), Fq::from_str("6948020882432572845197507952592969590694368103230430179570315615182282374398").map_err(|_| ()).unwrap(), Fq::from_str("6722964559981414065014969805335853003762918744908784920346397308171250169960").map_err(|_| ()).unwrap(), Fq::from_str("2455008936040100351240439755188491639058940013744234884624742038391114271446").map_err(|_| ()).unwrap(), Fq::from_str("519816307152140593257787552575361125906303707515220408961641101170845443050").map_err(|_| ()).unwrap(), Fq::from_str("6990382301199766734460364366996477159573560505261295017350942537257110652072").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("6714817096485701269481109364929965797023541742145557630544747997567839963519").map_err(|_| ()).unwrap(), Fq::from_str("4331876343893338488032725680021976137450544850291034412406871631704743586996").map_err(|_| ()).unwrap(), Fq::from_str("4635491174536761845308076787184519522702318218214225197392511044101416167838").map_err(|_| ()).unwrap(), Fq::from_str("7148265332819971213228527024783778597456328611568263264306119796668704183952").map_err(|_| ()).unwrap(), Fq::from_str("1444627790663353353628686023038051023634720862749153089014038404402852461112").map_err(|_| ()).unwrap(), Fq::from_str("5432552600858643112835107870131399115614741437380771002580944946833822933486").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("36842954376282979636557832682570642199266089699974775228248015408517509598").map_err(|_| ()).unwrap(), Fq::from_str("3026632691904039826108148794203883114232689902166652584331086002056629405140").map_err(|_| ()).unwrap(), Fq::from_str("7531168873176286077504374988548521825061872227636117160324933042887207703416").map_err(|_| ()).unwrap(), Fq::from_str("4106920952486254052597445599294048235835798103471802269193721813167710014279").map_err(|_| ()).unwrap(), Fq::from_str("7269478701521338174232988927503711794306378586726632748184437594824939217117").map_err(|_| ()).unwrap(), Fq::from_str("558872339179120902377263825890376033023587089352726486070837167228158365326").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("1548106820955839682293083625960349362535457133113634764223604681890115013651").map_err(|_| ()).unwrap(), Fq::from_str("4465281856335466678255125519673078819332377819720506371536654186525547242633").map_err(|_| ()).unwrap(), Fq::from_str("969773745441015858618983302688992181994425869758184064198996358037931424628").map_err(|_| ()).unwrap(), Fq::from_str("6280083935111582346708241309314509219070063468817439813483624632389419612812").map_err(|_| ()).unwrap(), Fq::from_str("5476655022179055938380910634396262067255155917597423161617148936716657922289").map_err(|_| ()).unwrap(), Fq::from_str("627097700844318626010053727275562019117584226452500403394783478047233703389").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("6118385258536040171789235122924575316438695697671861034911199061163074354147").map_err(|_| ()).unwrap(), Fq::from_str("6421295601851675449477168237283435552411514462601604107105032584911433751679").map_err(|_| ()).unwrap(), Fq::from_str("306373887315817443013092597694335151734702043938881288546684435295134210676").map_err(|_| ()).unwrap(), Fq::from_str("2241657777906355269052947603870169536855359103764382739209403126592539928079").map_err(|_| ()).unwrap(), Fq::from_str("4692167130329292138793589348243934406799530771369829890306782340284201189081").map_err(|_| ()).unwrap(), Fq::from_str("2192185799726907056194145512061571885230129215042723669930788085067747858131").map_err(|_| ()).unwrap()]), Matrix::new(6, 1, vec![Fq::from_str("7558776603930954101476040867719934215584329313775144345099897265341944047864").map_err(|_| ()).unwrap(), Fq::from_str("804545479171765838397001620010222983942166928200971493451522183079506799291").map_err(|_| ()).unwrap(), Fq::from_str("6658318296305447316451052953794899075501719904570254317018749819128942062534").map_err(|_| ()).unwrap(), Fq::from_str("2329968286560061123042124490889763719808027907946200461336848278774006569355").map_err(|_| ()).unwrap(), Fq::from_str("4647212202583877826756895323295662908730216001878570539128728543881363358774").map_err(|_| ()).unwrap(), Fq::from_str("7479084682217356250593141538344815887129372946396996095370364143452914287245").map_err(|_| ()).unwrap()])], +// M_hat: SquareMatrix::new(6, 6, vec![Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169])]), +// v: Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), +// w: Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), +// M_prime: SquareMatrix::new(7, 7, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169])]), +// M_doubleprime: SquareMatrix::new(7, 7, vec![Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([6933713838801944433, 16845582094611513195, 18106981831632269118, 1315719765541495999]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11025937787709817432, 2848215840891863663, 12003429085947921194, 123169188111155826]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12625372430371999830, 16677955247940128803, 7323211740492754581, 634092645821649835]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8476375831616065903, 8302751278140753414, 4675397025515049474, 916054888187664134]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10397071512469717592, 5168805500057287779, 15231087545157212262, 795647437775574917]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4753644871978862709, 5862282760667146308, 12460694012157225697, 599558919665641703]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), +// M_inverse: SquareMatrix::new(7, 7, vec![Fq::from_montgomery_limbs([18289540298934006401, 12620611207485559719, 12496121289749056322, 817144512748384706]), Fq::from_montgomery_limbs([15589773063064153532, 10937873166103048610, 6318262381745988044, 164305025615087669]), Fq::from_montgomery_limbs([15945838893269705074, 12231655940729207770, 16783976632846575746, 1109102887521365908]), Fq::from_montgomery_limbs([6834634673379885361, 14313980702431346769, 11799433102834887335, 414159939376644417]), Fq::from_montgomery_limbs([6202864031195801806, 9008291636618939950, 4452886644180013898, 834656796167786155]), Fq::from_montgomery_limbs([257831097013115576, 868816813650478155, 3804928554730106375, 37318070574597666]), Fq::from_montgomery_limbs([12731957617084167734, 10385122202334236509, 6304526407551965622, 473830859466044865]), Fq::from_montgomery_limbs([15589773063064153532, 10937873166103048610, 6318262381745988044, 164305025615087669]), Fq::from_montgomery_limbs([6846034351900465196, 14922456655897598264, 3385387262061980880, 41120221023296058]), Fq::from_montgomery_limbs([15382748348274919943, 17176897444608801178, 9672737639142736111, 667324299238078128]), Fq::from_montgomery_limbs([15347282079877344563, 7118861760574925591, 14639960435031189354, 496118406637979928]), Fq::from_montgomery_limbs([10633984218986397485, 1476776383719121929, 18242946201412975574, 235737836971566080]), Fq::from_montgomery_limbs([13255078662550912877, 6201099884138924934, 16598544366614787861, 517978551803961280]), Fq::from_montgomery_limbs([16511322183643786520, 12899213679171041629, 10327663219981717303, 101291905845336522]), Fq::from_montgomery_limbs([15945838893269705074, 12231655940729207770, 16783976632846575746, 1109102887521365908]), Fq::from_montgomery_limbs([15382748348274919943, 17176897444608801178, 9672737639142736111, 667324299238078128]), Fq::from_montgomery_limbs([14205197080554911234, 18284593956791143607, 9307844449907611885, 840522240017846486]), Fq::from_montgomery_limbs([15159258319784243147, 14082599260628033239, 6774164385877933413, 747982014981801174]), Fq::from_montgomery_limbs([1720795814776594401, 1331741422739941001, 1433030060135444919, 661580976464017359]), Fq::from_montgomery_limbs([18293763308414053579, 18299155137503640753, 10462936480575081846, 453983746301356936]), Fq::from_montgomery_limbs([4581286503082050232, 12284808854596259078, 3289926894666988909, 902128282614826112]), Fq::from_montgomery_limbs([6834634673379885361, 14313980702431346769, 11799433102834887335, 414159939376644417]), Fq::from_montgomery_limbs([15347282079877344563, 7118861760574925591, 14639960435031189354, 496118406637979928]), Fq::from_montgomery_limbs([15159258319784243147, 14082599260628033239, 6774164385877933413, 747982014981801174]), Fq::from_montgomery_limbs([8459024031946559011, 9756324734815253725, 14081981857002652443, 1295411099915753127]), Fq::from_montgomery_limbs([12916186197107076085, 5935794698380416041, 14163718741243160273, 1284207706380505486]), Fq::from_montgomery_limbs([18200592249652917081, 10952824854756428652, 13221851894140961386, 952100497899551398]), Fq::from_montgomery_limbs([7909306592215715661, 12372000920976206381, 13047646210570006173, 1134258014683902124]), Fq::from_montgomery_limbs([6202864031195801806, 9008291636618939950, 4452886644180013898, 834656796167786155]), Fq::from_montgomery_limbs([10633984218986397485, 1476776383719121929, 18242946201412975574, 235737836971566080]), Fq::from_montgomery_limbs([1720795814776594401, 1331741422739941001, 1433030060135444919, 661580976464017359]), Fq::from_montgomery_limbs([12916186197107076085, 5935794698380416041, 14163718741243160273, 1284207706380505486]), Fq::from_montgomery_limbs([3910809514494604292, 8483245271389311552, 16246267851842217096, 18865255698597878]), Fq::from_montgomery_limbs([3026843501192760993, 8380473052143493977, 3054950936628239486, 722212886196682246]), Fq::from_montgomery_limbs([17640176946983601983, 7851638753013976420, 7953773760774643320, 1060395049618029567]), Fq::from_montgomery_limbs([257831097013115576, 868816813650478155, 3804928554730106375, 37318070574597666]), Fq::from_montgomery_limbs([13255078662550912877, 6201099884138924934, 16598544366614787861, 517978551803961280]), Fq::from_montgomery_limbs([18293763308414053579, 18299155137503640753, 10462936480575081846, 453983746301356936]), Fq::from_montgomery_limbs([18200592249652917081, 10952824854756428652, 13221851894140961386, 952100497899551398]), Fq::from_montgomery_limbs([3026843501192760993, 8380473052143493977, 3054950936628239486, 722212886196682246]), Fq::from_montgomery_limbs([6947786146630418877, 15369056627168554704, 17602917142112233480, 860079864989181067]), Fq::from_montgomery_limbs([12292153329582579311, 12340018229585837748, 16138005556776207249, 689763430924300574]), Fq::from_montgomery_limbs([12731957617084167734, 10385122202334236509, 6304526407551965622, 473830859466044865]), Fq::from_montgomery_limbs([16511322183643786520, 12899213679171041629, 10327663219981717303, 101291905845336522]), Fq::from_montgomery_limbs([4581286503082050232, 12284808854596259078, 3289926894666988909, 902128282614826112]), Fq::from_montgomery_limbs([7909306592215715661, 12372000920976206381, 13047646210570006173, 1134258014683902124]), Fq::from_montgomery_limbs([17640176946983601983, 7851638753013976420, 7953773760774643320, 1060395049618029567]), Fq::from_montgomery_limbs([12292153329582579311, 12340018229585837748, 16138005556776207249, 689763430924300574]), Fq::from_montgomery_limbs([11306146037240305765, 10984198068608188499, 1191708097986331420, 836519420285054905])]), +// M_hat_inverse: SquareMatrix::new(6, 6, vec![Fq::from_montgomery_limbs([3792453098216396897, 12628553005522469477, 16642002769880465331, 421042619293543187]), Fq::from_montgomery_limbs([10263844291975416107, 13672341457628810763, 12509513995609872959, 205381282018859586]), Fq::from_montgomery_limbs([10784713721876928946, 5674574537437802090, 12687938002553184071, 136316472684139419]), Fq::from_montgomery_limbs([16070813810583366554, 1956961633890359529, 13965208031005279836, 927951972604280320]), Fq::from_montgomery_limbs([6738933144333850617, 6100304390614169754, 1210061970152249951, 909818292837236776]), Fq::from_montgomery_limbs([9669791352790763084, 10325954078533278386, 9503492366281944368, 1040674818174287413]), Fq::from_montgomery_limbs([10263844291975416107, 13672341457628810763, 12509513995609872959, 205381282018859586]), Fq::from_montgomery_limbs([6412844366295084778, 7666866282335076917, 1998128405856404681, 74724070388243614]), Fq::from_montgomery_limbs([2820801561543625657, 2418377097726488830, 6026234412050937676, 1126089764215992130]), Fq::from_montgomery_limbs([8551209674866173640, 6260366140671248954, 12081978629156052449, 1140556338048141522]), Fq::from_montgomery_limbs([3127468548134575066, 584585047777214689, 7762916153904627652, 166598529350882438]), Fq::from_montgomery_limbs([7594054111820467981, 8571015412052249811, 6107608647809765519, 1023873926642050928]), Fq::from_montgomery_limbs([10784713721876928946, 5674574537437802090, 12687938002553184071, 136316472684139419]), Fq::from_montgomery_limbs([2820801561543625657, 2418377097726488830, 6026234412050937676, 1126089764215992130]), Fq::from_montgomery_limbs([10427240268737712782, 8508693586717179156, 9391845005515956255, 937208025112203554]), Fq::from_montgomery_limbs([8182900134894401237, 12638356435589207249, 2514008238224928511, 262393601667707271]), Fq::from_montgomery_limbs([9827417092260447852, 9328415136733098350, 7749975888478067278, 1296132886589595648]), Fq::from_montgomery_limbs([16287831069372846812, 12117020194152290696, 2582012005292236373, 964219332138367410]), Fq::from_montgomery_limbs([16070813810583366554, 1956961633890359529, 13965208031005279836, 927951972604280320]), Fq::from_montgomery_limbs([8551209674866173640, 6260366140671248954, 12081978629156052449, 1140556338048141522]), Fq::from_montgomery_limbs([8182900134894401237, 12638356435589207249, 2514008238224928511, 262393601667707271]), Fq::from_montgomery_limbs([2689211423437640460, 9937738931024806642, 16752771701136165272, 1203240695252068537]), Fq::from_montgomery_limbs([4340203757804311965, 12676662818122060527, 8325672080044279362, 1087811919015138569]), Fq::from_montgomery_limbs([14389282186921406518, 13071685447061354484, 9323961789214815202, 798867032561203873]), Fq::from_montgomery_limbs([6738933144333850617, 6100304390614169754, 1210061970152249951, 909818292837236776]), Fq::from_montgomery_limbs([3127468548134575066, 584585047777214689, 7762916153904627652, 166598529350882438]), Fq::from_montgomery_limbs([9827417092260447852, 9328415136733098350, 7749975888478067278, 1296132886589595648]), Fq::from_montgomery_limbs([4340203757804311965, 12676662818122060527, 8325672080044279362, 1087811919015138569]), Fq::from_montgomery_limbs([16937615735900532927, 2828202157217662325, 11653172729566405164, 102608297022837914]), Fq::from_montgomery_limbs([10698441721372329435, 14189560518339287134, 16709548602960206315, 1115736315296030670]), Fq::from_montgomery_limbs([9669791352790763084, 10325954078533278386, 9503492366281944368, 1040674818174287413]), Fq::from_montgomery_limbs([7594054111820467981, 8571015412052249811, 6107608647809765519, 1023873926642050928]), Fq::from_montgomery_limbs([16287831069372846812, 12117020194152290696, 2582012005292236373, 964219332138367410]), Fq::from_montgomery_limbs([14389282186921406518, 13071685447061354484, 9323961789214815202, 798867032561203873]), Fq::from_montgomery_limbs([10698441721372329435, 14189560518339287134, 16709548602960206315, 1115736315296030670]), Fq::from_montgomery_limbs([4200873270792393235, 10250359348562610182, 13119023895300261973, 870734268521497409])]), +// M_00: Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), +// M_i: Matrix::new(7, 7, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3417057834288542701, 14660334709638275173, 15697961235617927687, 541283478161011852]), Fq::from_montgomery_limbs([7015809488978334700, 16756137731097346041, 4299145747412822878, 425771021418967410]), Fq::from_montgomery_limbs([11403455157288865564, 17867822347283350530, 6642326758447081407, 347793598737965121]), Fq::from_montgomery_limbs([3281498772575130056, 15793155797823121930, 13825210503534495803, 403937498710078315]), Fq::from_montgomery_limbs([14433853750795786283, 6064690325535561885, 8568546552249237512, 321732587903564709]), Fq::from_montgomery_limbs([6678655391923876018, 8629057843778719427, 9842628707936041139, 63076861057827674]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7015809488978334700, 16756137731097346041, 4299145747412822878, 425771021418967410]), Fq::from_montgomery_limbs([2912519858324498512, 6507880465488943086, 4272821136041054916, 111743668526988613]), Fq::from_montgomery_limbs([1748445869324305294, 9551769637184621333, 15854660035338842641, 935843652651688174]), Fq::from_montgomery_limbs([16017478920517952465, 12052990841260496131, 1846258033159005439, 1283952887503997049]), Fq::from_montgomery_limbs([13375753074817350454, 1048153563921378033, 9203345202329021202, 240551250239901980]), Fq::from_montgomery_limbs([11153565452311437343, 15840896398791388390, 6651106066134943770, 1041420503258293522]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11403455157288865564, 17867822347283350530, 6642326758447081407, 347793598737965121]), Fq::from_montgomery_limbs([1748445869324305294, 9551769637184621333, 15854660035338842641, 935843652651688174]), Fq::from_montgomery_limbs([12634906865313795269, 11036595778607414197, 3160889789817653150, 123157168832279614]), Fq::from_montgomery_limbs([8716577469114679639, 13354977326657221151, 13192299021058097299, 1294655858266660253]), Fq::from_montgomery_limbs([13373336070740714862, 8730572127209811217, 7187749001613674585, 593376019371200200]), Fq::from_montgomery_limbs([10026036648949247362, 12678383936758102898, 11178426371544881076, 1002297129682557342]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3281498772575130056, 15793155797823121930, 13825210503534495803, 403937498710078315]), Fq::from_montgomery_limbs([16017478920517952465, 12052990841260496131, 1846258033159005439, 1283952887503997049]), Fq::from_montgomery_limbs([8716577469114679639, 13354977326657221151, 13192299021058097299, 1294655858266660253]), Fq::from_montgomery_limbs([14690633444146561299, 13456453518898387751, 10432348396252513416, 1242585437512358865]), Fq::from_montgomery_limbs([14102570081274067998, 8257296766039180005, 7790604469177448243, 143690956943080350]), Fq::from_montgomery_limbs([8465733138989536717, 2929735846155108951, 4450573983160870127, 472219173524401119]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14433853750795786283, 6064690325535561885, 8568546552249237512, 321732587903564709]), Fq::from_montgomery_limbs([13375753074817350454, 1048153563921378033, 9203345202329021202, 240551250239901980]), Fq::from_montgomery_limbs([13373336070740714862, 8730572127209811217, 7187749001613674585, 593376019371200200]), Fq::from_montgomery_limbs([14102570081274067998, 8257296766039180005, 7790604469177448243, 143690956943080350]), Fq::from_montgomery_limbs([4085032723309791110, 4665611504008924558, 11824165711550330487, 578201258376880126]), Fq::from_montgomery_limbs([11519276958617059096, 13454485508887725898, 7249926774019308728, 1072756789797212364]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6678655391923876018, 8629057843778719427, 9842628707936041139, 63076861057827674]), Fq::from_montgomery_limbs([11153565452311437343, 15840896398791388390, 6651106066134943770, 1041420503258293522]), Fq::from_montgomery_limbs([10026036648949247362, 12678383936758102898, 11178426371544881076, 1002297129682557342]), Fq::from_montgomery_limbs([8465733138989536717, 2929735846155108951, 4450573983160870127, 472219173524401119]), Fq::from_montgomery_limbs([11519276958617059096, 13454485508887725898, 7249926774019308728, 1072756789797212364]), Fq::from_montgomery_limbs([8573207762665625898, 16056334493165972918, 10346718250214646205, 1191123760209144883])]), +// v_collection: vec![Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([10644639721044274615, 16734510270636734171, 6265966780522802029, 1180401342618465036]), Fq::from_montgomery_limbs([1254097908378330934, 13601601811345135765, 15071243631801644424, 297593012698954223]), Fq::from_montgomery_limbs([10771062345226876930, 7469649658028794228, 3597902033882677100, 608350358812428664]), Fq::from_montgomery_limbs([10231075707837198839, 11530522131003023037, 1802721152151214035, 1212125375706727806]), Fq::from_montgomery_limbs([548206758129328348, 778220363894850734, 12082251172806692919, 593860302507973656]), Fq::from_montgomery_limbs([6029427183938663855, 17136269120728144851, 7031277897576748532, 978052702327451285])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([14583548544607776390, 1455594659839297233, 7503148269133459078, 979881557166431467]), Fq::from_montgomery_limbs([4091794927241778027, 3984934849444513902, 4168704414264273635, 1243153189837659840]), Fq::from_montgomery_limbs([13672227389423134641, 7889118255497550145, 10535716868579808028, 727851871568307361]), Fq::from_montgomery_limbs([1805790605077811102, 13328027295111756288, 15284753467090911646, 476755389437853977]), Fq::from_montgomery_limbs([6818887996128827024, 12980010109101424586, 17837508282492360706, 804695904048021645]), Fq::from_montgomery_limbs([9531071905126860029, 10560990131084904417, 3843562488879133086, 427342220830413508])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([12999307184917437199, 4460278989335054240, 8039372983916400823, 524229825913330581]), Fq::from_montgomery_limbs([13201924241923240556, 11745564486322152121, 2471694394944636145, 181216534789741406]), Fq::from_montgomery_limbs([4934105058811497644, 12271038025203690017, 7436143789682315585, 998806416030886275]), Fq::from_montgomery_limbs([13725255261959326942, 8555513885879208558, 955378272993441581, 297008239472103166]), Fq::from_montgomery_limbs([10371095811858205849, 8804518571176544229, 11002636904361592873, 660578117299637260]), Fq::from_montgomery_limbs([8307653710943752623, 2839318436416200448, 12213117778126871947, 1025759164655249254])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([11863327563780294024, 10993730767593839696, 9502873035480842903, 1097248076762680248]), Fq::from_montgomery_limbs([6808878885915903933, 8278632955554852373, 12719166835729596674, 804467256685775329]), Fq::from_montgomery_limbs([16008107817056775055, 8608502583580218397, 2796011695423831437, 949203486167282741]), Fq::from_montgomery_limbs([9591171450453062265, 6399710760130247553, 16473627252289324238, 199489766710074990]), Fq::from_montgomery_limbs([2126693132859812176, 10946771068545746672, 16987361148217467014, 545647818048109007]), Fq::from_montgomery_limbs([11988059750093062229, 9298754840020496938, 15035120852882985245, 1192754512132360647])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([8283981142206306939, 15468588506068845291, 14286327059693983748, 168088448899207140]), Fq::from_montgomery_limbs([10471089395398769453, 96236653784383214, 16648343620891915559, 253629587649938570]), Fq::from_montgomery_limbs([2122557167897006073, 6496047148498928328, 4866370458783575330, 393653606927582732]), Fq::from_montgomery_limbs([1613936452873278524, 13810247455069732717, 15313868045534267346, 1243393042619890514]), Fq::from_montgomery_limbs([15475354144715027231, 7573523099482013249, 12718534995660881344, 1280011735315941795]), Fq::from_montgomery_limbs([16713988261819571430, 2839652657083011646, 3620474509759339159, 813365112700437390])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([5224860601737206030, 471099951455807337, 4240850224623809066, 1213277143090320240]), Fq::from_montgomery_limbs([8044997223262572963, 8080347158505061529, 3228586894312007285, 331597882779275433]), Fq::from_montgomery_limbs([1208998236383405070, 1447425529631254332, 8002978071615560825, 1168296975382357177]), Fq::from_montgomery_limbs([3717552334324548558, 14379760040658949225, 17287286958139444106, 498156372540796351]), Fq::from_montgomery_limbs([7205892599830853163, 15212333206847125686, 5699921803433736310, 905915093597247729]), Fq::from_montgomery_limbs([755943729919434357, 10577236669397908241, 14468710867857253298, 1024324011896165462])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([8058282063231996405, 17257430900010574484, 2158055163476481194, 595100858348853692]), Fq::from_montgomery_limbs([15085559623482919871, 3472078672722908583, 4599317711792091602, 222588611222065167]), Fq::from_montgomery_limbs([15424099905499014070, 8434797005632313353, 8131086932997815225, 1036565779889668097]), Fq::from_montgomery_limbs([1382697922847342157, 4665453833795528964, 9747274806721360803, 148779622932294522]), Fq::from_montgomery_limbs([4432837085227621901, 3625643010647482210, 9188161200126159834, 1031489011263833493]), Fq::from_montgomery_limbs([2595560161561027549, 10106811297951765366, 17488308776579863485, 206455909861435406])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([820166082021164174, 9749064658839893621, 2697165176777711952, 1013643423254794247]), Fq::from_montgomery_limbs([11434285783669558858, 13584809878479701720, 3915545683544186278, 1023126538570256918]), Fq::from_montgomery_limbs([2165364699284154689, 12685002878895760637, 6867136501788661212, 674836357022179385]), Fq::from_montgomery_limbs([9371284124941532260, 7254488926567729428, 14153148852060364975, 563833886155167209]), Fq::from_montgomery_limbs([12983913502532225115, 10422261732254055015, 9682741985590349706, 1152902980215236093]), Fq::from_montgomery_limbs([53453825694603265, 7363785068269762421, 10014136818496735189, 418364251047633957])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([9089547361822769623, 2614400882196504844, 18171746873737288094, 75978327930221735]), Fq::from_montgomery_limbs([16792233542280595044, 9194009742559712662, 16681314096151276162, 141104854369611948]), Fq::from_montgomery_limbs([14121587945665084254, 4285652051739813435, 908329507035055833, 1170458112249762210]), Fq::from_montgomery_limbs([17832160706398652605, 12757316993880307572, 17823976387828534641, 1060884446639737566]), Fq::from_montgomery_limbs([12238967831419693891, 17285564337796726189, 772363080009335540, 1133022491303716360]), Fq::from_montgomery_limbs([7101023699634357749, 6639281158265807289, 4981868997280764642, 985691418122098087])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([11269122037409773082, 12011421319544460999, 1334150225599331569, 2858146322225763]), Fq::from_montgomery_limbs([9313709853509185496, 16206428797220002184, 13680333402027486517, 1242753153191996216]), Fq::from_montgomery_limbs([17569743508708392526, 3142648113271106845, 1634996132313805038, 345389980530236831]), Fq::from_montgomery_limbs([13214675085238735159, 17546363296125310843, 15104140193957885186, 1009608979945975479]), Fq::from_montgomery_limbs([13156206507994500002, 15331136932468936255, 18120353711369546595, 212936761308279860]), Fq::from_montgomery_limbs([15728832258520667556, 2222718495126847960, 9069363803574780412, 1252511052567294538])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([15318220334729666071, 10085274749271496451, 13235713280652147722, 745052808139004576]), Fq::from_montgomery_limbs([13156235912943986954, 5448235351584523656, 14912753996910833259, 1074562042912540040]), Fq::from_montgomery_limbs([10973489371567110798, 13864494226359434162, 2551801121655091132, 842122627627640172]), Fq::from_montgomery_limbs([16434063247854180644, 4535379715543303383, 15837253172489347337, 811511753879666188]), Fq::from_montgomery_limbs([17168911107864577236, 43950174469174547, 5104860072131484949, 973362737471998355]), Fq::from_montgomery_limbs([7931655442728732623, 2231832287024216001, 1215678170119206083, 809922596417314673])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([11089365147905175739, 17689470198615435650, 1802029570881529665, 323182645037342266]), Fq::from_montgomery_limbs([15969427871111504498, 5489904452991350903, 6060256254335150822, 327519122975337122]), Fq::from_montgomery_limbs([8372741465623248660, 14241887742859321780, 5732992227950195767, 39295360183511289]), Fq::from_montgomery_limbs([1187756953137288615, 6353707652463699269, 16025288734445909769, 689723399381686930]), Fq::from_montgomery_limbs([3641027043425346704, 7529359599459005223, 2263874390889253898, 1174711192482135891]), Fq::from_montgomery_limbs([14213602576882685129, 1072450781726178504, 9166004798283088170, 288986234043895133])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([9857091378959575712, 4700244761781549157, 11886572911958021128, 978573057754163783]), Fq::from_montgomery_limbs([6859829417840328625, 5380908914233546421, 9985382358422821006, 809479275163892841]), Fq::from_montgomery_limbs([7129905675772133963, 9947583967153283633, 11488752011523120045, 70770661730429235]), Fq::from_montgomery_limbs([10339301687172431688, 7034120066892139373, 278535235730000358, 1037618672688193269]), Fq::from_montgomery_limbs([8073945182151246976, 8024480602729778451, 14228737842273667747, 5601376964086932]), Fq::from_montgomery_limbs([17455241286370251178, 5877720710031178913, 9559992722432789829, 1325168601990716931])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([4443170007910122686, 7353422220255768461, 15086677032035138267, 1000401307557218310]), Fq::from_montgomery_limbs([6016899902613423969, 17460518555665406782, 3732816219387681456, 602171657802810010]), Fq::from_montgomery_limbs([17215551508008455197, 14155576318076749717, 287763472218567445, 348594781061367360]), Fq::from_montgomery_limbs([13673281300516729195, 2214275010578136594, 5278640382055069707, 862836485498449760]), Fq::from_montgomery_limbs([14604602086577261525, 17331229080491881983, 9761345074674761926, 92431445071525752]), Fq::from_montgomery_limbs([288667004247211189, 8068558316435185759, 34133259048288536, 632325899262964414])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([4414532264671055849, 13933747433746332421, 13027565118143790352, 1050571576397137370]), Fq::from_montgomery_limbs([10778047724985809400, 1316157346886280268, 10174764403037871455, 1310251685035182702]), Fq::from_montgomery_limbs([2901779093000588757, 14345292131236108270, 325687763253834560, 1302296993426055332]), Fq::from_montgomery_limbs([10195270688246580514, 15529132938808577668, 16655748986619374751, 1334926369645181743]), Fq::from_montgomery_limbs([10219117138329677661, 17968691841862978952, 2586002244710590318, 890496969841145620]), Fq::from_montgomery_limbs([2498245601951074289, 1598646875827827107, 890275996690762376, 77165559003555915])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([2988605310258792866, 15957801327838169961, 7584840999811153279, 434926945147154735]), Fq::from_montgomery_limbs([9597713906228190573, 13530531350309731794, 11006707392867763256, 1180021669203726874]), Fq::from_montgomery_limbs([3103797984913840610, 13327065637625915613, 7317743376243954428, 454606898571769263]), Fq::from_montgomery_limbs([13418762319452988162, 7011698969983978549, 10043811570622910529, 1219725988569937648]), Fq::from_montgomery_limbs([16415739938738212197, 18000325972331813382, 2937222969358261592, 751420552035148970]), Fq::from_montgomery_limbs([18143523461998133814, 17501449569222234751, 11831229978852878240, 230065434288493720])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([390587431735370215, 6070182885512254444, 15678300086321846232, 658622796995655025]), Fq::from_montgomery_limbs([11187073703980753366, 11256592440200977896, 1503110027135689183, 1132851611041610655]), Fq::from_montgomery_limbs([13154916648506390915, 5339482676807482888, 7230250399862288620, 218460204422790571]), Fq::from_montgomery_limbs([9102410326146594084, 6165251247104570609, 17897733375690573799, 920164771069067785]), Fq::from_montgomery_limbs([17285085289295929853, 16238198804092185825, 16251509486414134096, 1084909706592090544]), Fq::from_montgomery_limbs([3880782017033225674, 4873252603362867352, 14459262730771211791, 163174741264077656])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([4363513037339290429, 11071402644779655945, 18203948441237058377, 487870628328334554]), Fq::from_montgomery_limbs([9854620422114551002, 11862250176770700568, 874594626487585300, 932096667364472947]), Fq::from_montgomery_limbs([2172530204291601442, 6393872278636522840, 684019909052108375, 180921268676761997]), Fq::from_montgomery_limbs([747820584568953283, 11441694611866320992, 4524856196876367929, 874564518710804172]), Fq::from_montgomery_limbs([7299335342253825037, 12867703813750147845, 7941311700245180087, 1108892033870182325]), Fq::from_montgomery_limbs([17832410557204971163, 4075792975869963488, 7197135716780572438, 152677169125496593])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([10163931248253127785, 1981713163631115965, 3150372916074444430, 470994848988866265]), Fq::from_montgomery_limbs([15083629881223276978, 2015879515814390952, 11644449746714623084, 946361618448877426]), Fq::from_montgomery_limbs([16592814677886046887, 8039452671655169748, 2594546365519790998, 584104276493702607]), Fq::from_montgomery_limbs([17407066489676124305, 8656046168534251407, 3138964226038501382, 514356098263219093]), Fq::from_montgomery_limbs([15942565322057954282, 6097316293590202889, 6372629697231874413, 113242342217125329]), Fq::from_montgomery_limbs([11571924722120150581, 13912164049336724059, 2502413236406840486, 679604324439169221])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([11231555889522859185, 12838308109173382219, 14989494611471795387, 1234334251746422128]), Fq::from_montgomery_limbs([11820760137592674131, 13233941704214912620, 9184955620669308585, 760535087243845704]), Fq::from_montgomery_limbs([18251843258930069429, 6913182660293023569, 15611295871669355399, 543202252785444658]), Fq::from_montgomery_limbs([3623801569902716815, 12012005568369974445, 8975238911566253998, 1306561840926137970]), Fq::from_montgomery_limbs([11553511503558092125, 12278824151250337447, 14503589672502199303, 1306659756102330132]), Fq::from_montgomery_limbs([15708785553057654326, 3840692890311772930, 4102206509788468425, 440698181344607784])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([8058055302582355971, 5700106105541005064, 7460926738156841111, 462277946682165887]), Fq::from_montgomery_limbs([4851568100746305461, 6584456459134975532, 17460185792418666468, 793703974849869892]), Fq::from_montgomery_limbs([1493013092751501655, 6157234009848897017, 14948235164845831294, 1116239172277392848]), Fq::from_montgomery_limbs([541291017778122597, 4361606389405799905, 13559255135673617904, 164046297400629617]), Fq::from_montgomery_limbs([6157883725635917010, 7921949762718398664, 8097426475493743176, 285172774886131081]), Fq::from_montgomery_limbs([276501516953041810, 15996807350070926146, 1269758076943886300, 195784581070827446])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([4853469952320798393, 17379711604415333498, 11341428304819039080, 766000305508925099]), Fq::from_montgomery_limbs([1723028172270801784, 7846165827796379646, 4636451005692610955, 871151940476972966]), Fq::from_montgomery_limbs([6590646061221323902, 889461654044032879, 1505496877923673922, 752475483640516924]), Fq::from_montgomery_limbs([13045448500706444324, 8361654882120486231, 4205925187373381862, 277826998934433801]), Fq::from_montgomery_limbs([9675553409793389785, 5667173122152825040, 8083271914684780456, 706216661468574727]), Fq::from_montgomery_limbs([14266510371042388064, 7106905440715991100, 10411622989018615279, 894382081849790039])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([9268336790197882301, 12070173591607011265, 7396189305808814103, 6826922221427887]), Fq::from_montgomery_limbs([11481176188982883772, 15479330738046464105, 15874300506335824, 418080356004810461]), Fq::from_montgomery_limbs([8402920895853151075, 11319528131289558551, 11236635718047704076, 590562434419913557]), Fq::from_montgomery_limbs([11942015297507883097, 16315121378556649183, 668425812435475072, 1203236348881767128]), Fq::from_montgomery_limbs([14719743395974511202, 1514583382813202278, 3223906165579006067, 1338589921222659040]), Fq::from_montgomery_limbs([11353873627418368002, 17696069599691683167, 17867255547403463352, 256390082737611698])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([3183181278357516648, 10539132954816790294, 14186140147230647162, 782128376830566716]), Fq::from_montgomery_limbs([24279344590760052, 1500125118480868266, 1805095232159146495, 1156936758956513949]), Fq::from_montgomery_limbs([10537024754772614474, 3289834431146907946, 204955315838625775, 635285322161689619]), Fq::from_montgomery_limbs([10063527467101509243, 6065807056365479935, 17027546583602504025, 991768228369353932]), Fq::from_montgomery_limbs([10809287584503006407, 1968797130899798907, 15335034484681843481, 581199600450356946]), Fq::from_montgomery_limbs([5342411348500260963, 6851928330103451454, 17931963062212165213, 1333165923948214303])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([5362873004958210141, 4780911804231906429, 491658981443450273, 865870945658130370]), Fq::from_montgomery_limbs([16170855628896579013, 16924415594421177943, 18099375624011254510, 1172947874675982311]), Fq::from_montgomery_limbs([2313253813846593553, 6024058999881721714, 3460494784065903603, 200192466049298184]), Fq::from_montgomery_limbs([16495862644170305555, 1027481903728649974, 18424464377133050050, 286370147149132790]), Fq::from_montgomery_limbs([10500420552294712757, 1190864375567816587, 7753792083623713506, 527733109368565721]), Fq::from_montgomery_limbs([14443372038206196537, 7620145268069197030, 14646532763986835342, 456340242357593922])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([9232251606394270216, 14408677736204106911, 13271324872968281, 759107595695446407]), Fq::from_montgomery_limbs([17249519010359595711, 3324593693860748091, 17110518692688522506, 1222951351162422358]), Fq::from_montgomery_limbs([18126276283902025445, 4360757737312030104, 7886535856284373354, 1092174897468921446]), Fq::from_montgomery_limbs([1062163077313937380, 11987404733688401354, 13771857460633546591, 404835587063112873]), Fq::from_montgomery_limbs([16497288776209779034, 2880366049054710506, 253042145042914898, 795216235095539205]), Fq::from_montgomery_limbs([13406148328760919071, 7241933139744138143, 12901549130103097508, 622176358374555103])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([8839697166194087406, 4483906360586614080, 14882309942760908718, 26805057196885842]), Fq::from_montgomery_limbs([7780277578177316464, 8830183239891425324, 17543080001337922949, 763106694028031052]), Fq::from_montgomery_limbs([1380876235740608953, 7727437954586184212, 6573237846455394763, 348129619934932866]), Fq::from_montgomery_limbs([14022759702194409553, 8495575903624052978, 4435568764932750980, 556954649769758600]), Fq::from_montgomery_limbs([10833230885057379503, 14946233534988385740, 3482517598744002245, 312685728556510786]), Fq::from_montgomery_limbs([4935346722124605172, 797590664817406232, 6711744841558593604, 1113832946092370199])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([4507604340829135994, 6192904589647086945, 349044365259597977, 1152686511406973589]), Fq::from_montgomery_limbs([195352152493747630, 5233440319211994798, 932481733874805995, 509755197807725335]), Fq::from_montgomery_limbs([6237574338367694863, 18409691934826828587, 2269618770290486313, 1105546858321591640]), Fq::from_montgomery_limbs([12982330271334867216, 3689728804743182371, 11969860905888785248, 384135728283136906]), Fq::from_montgomery_limbs([18265210337391869731, 11610294943475185851, 7713269183082030658, 64710928906612284]), Fq::from_montgomery_limbs([17581461696584771576, 1251761997536591051, 8677916614754373573, 11467824250957215])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([5293383473840045151, 14232932703686129211, 16580168622608048461, 944952712971843416]), Fq::from_montgomery_limbs([1172918766922903979, 5995995512044846696, 7739257607297521882, 1042510915533280011]), Fq::from_montgomery_limbs([1981724477088009475, 13354315713534102679, 11891854408097089989, 92846148123740243]), Fq::from_montgomery_limbs([976886551936370648, 14904356347049243804, 14591979302472212806, 1213715283121821429]), Fq::from_montgomery_limbs([15587984398787314569, 16826502960315805008, 12894364377505862261, 1260461626778401163]), Fq::from_montgomery_limbs([4959549071568407724, 16406890426995168379, 5205271867547136181, 625367672303411178])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([4469737807624992151, 13646441970050473001, 14103514615210198911, 951934596751743825]), Fq::from_montgomery_limbs([179935223424484463, 2716781758867967994, 13772831748270319508, 559465738003921114]), Fq::from_montgomery_limbs([3732370725359378315, 109679493243276219, 881555622161027305, 772217225730861177]), Fq::from_montgomery_limbs([2034891371688198908, 15927708347683796662, 2835422031008901944, 942335024460335016]), Fq::from_montgomery_limbs([10874231289292346814, 11117313284388646608, 16125883931973538451, 1333477728458259050]), Fq::from_montgomery_limbs([5836661691500937581, 2582555451477250318, 16743568702164980685, 1095040268607012655])])], +// w_hat_collection: vec![Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([6933713838801944433, 16845582094611513195, 18106981831632269118, 1315719765541495999]), Fq::from_montgomery_limbs([11025937787709817432, 2848215840891863663, 12003429085947921194, 123169188111155826]), Fq::from_montgomery_limbs([12625372430371999830, 16677955247940128803, 7323211740492754581, 634092645821649835]), Fq::from_montgomery_limbs([8476375831616065903, 8302751278140753414, 4675397025515049474, 916054888187664134]), Fq::from_montgomery_limbs([10397071512469717592, 5168805500057287779, 15231087545157212262, 795647437775574917]), Fq::from_montgomery_limbs([4753644871978862709, 5862282760667146308, 12460694012157225697, 599558919665641703])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([3525611259680496361, 16850996105995319551, 5895804919214678528, 391214039273829079]), Fq::from_montgomery_limbs([16383982061649260213, 7412768188479417373, 18252968433587413341, 921842098972532091]), Fq::from_montgomery_limbs([4293960317930015621, 15005027020601642292, 14505531830207858927, 1015323632458039193]), Fq::from_montgomery_limbs([6752151532781968377, 16993009794999287001, 14092320031767020691, 1182677145301447547]), Fq::from_montgomery_limbs([16314233041829270002, 3649678206581272066, 11390243497395273567, 313040234242687401]), Fq::from_montgomery_limbs([16897077646049598862, 5408248314355013755, 10936401950030912526, 513592532346930326])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([10142077329767560760, 6792944251304638223, 7902051751595654458, 52562103742172771]), Fq::from_montgomery_limbs([4124245661449561978, 16104205151533781959, 12907591592992771975, 375874492004655234]), Fq::from_montgomery_limbs([721737094669186114, 9206501775775148139, 4450459856140585915, 711734015520322130]), Fq::from_montgomery_limbs([614920776545720184, 9338526590820186332, 3423803905067391290, 1297483125050494498]), Fq::from_montgomery_limbs([5114006628798839509, 10631775008980466663, 3587509331998934684, 1269615621594518563]), Fq::from_montgomery_limbs([10586294365539695697, 13070162917427803989, 5131427260750659378, 185094384545327415])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([15393156556409725569, 12069454178577165134, 10615051884848589576, 627431092634767494]), Fq::from_montgomery_limbs([2254585774072887271, 9054648099999668560, 10092512970859140868, 128794736276163271]), Fq::from_montgomery_limbs([9634188559612410031, 11231916523014098458, 9347609823309203991, 350537733562293921]), Fq::from_montgomery_limbs([712883344164921598, 12267969327296118133, 18415463544294982318, 453347153304216575]), Fq::from_montgomery_limbs([6354724406448162447, 16973074452059542227, 1742850061709863465, 29248222949323830]), Fq::from_montgomery_limbs([5847808690552004737, 2583092622487380856, 16226455529753322167, 622812582439549387])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([8037108896489144647, 11600187371086455875, 14226278393962213262, 1257430093680684711]), Fq::from_montgomery_limbs([17768344430228638036, 12362984821927414562, 8755702286219707347, 1052522743722421089]), Fq::from_montgomery_limbs([6518969013844050226, 10104698889580418215, 12831301188037688559, 783109772397025172]), Fq::from_montgomery_limbs([6181962216281397012, 8791420351320694807, 5845391987758232061, 691946495243473347]), Fq::from_montgomery_limbs([555663508144587651, 2813166513808555896, 9604748549845359549, 1115460934710212864]), Fq::from_montgomery_limbs([638373104524889548, 6961133691969109992, 16899272275885442322, 107354495377389126])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([359839753750440452, 16872903944693818879, 9182594678934428762, 157875028486713218]), Fq::from_montgomery_limbs([18133892901854313763, 2808183347815612802, 13420838164084790320, 592901990662685620]), Fq::from_montgomery_limbs([2972894661558754427, 10007808519010762631, 9092666282720580619, 1045475284031737143]), Fq::from_montgomery_limbs([11312374728773702090, 14199049380673735694, 6883328492121377672, 254205863439515968]), Fq::from_montgomery_limbs([1622439358680448127, 16670668058993745597, 4548903667405006277, 711571731093376968]), Fq::from_montgomery_limbs([17647983290779098291, 516914030435843715, 12098656310263379019, 275469573180901388])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([8548644889741041300, 16958143034062232997, 13155023865968925107, 527671552750155065]), Fq::from_montgomery_limbs([13280891140215524593, 3305529464796220554, 13769067712411857696, 194876564429210557]), Fq::from_montgomery_limbs([4744158468698697612, 16501033922635430369, 13118709481247752005, 455296334218894134]), Fq::from_montgomery_limbs([3276121206714262439, 4384108406151911994, 10320409945935199931, 1129505288669932775]), Fq::from_montgomery_limbs([4802683862047720627, 12048656597166121442, 2985941889978900161, 1215862908384237465]), Fq::from_montgomery_limbs([9878053342652269422, 6952038940472105574, 13204721887023621809, 104559270963520601])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([2884484268998399392, 7516340773367415265, 17967577411328781785, 71104776242823513]), Fq::from_montgomery_limbs([6836357534971200276, 12307486411100090586, 3725741383492541705, 708703587844324306]), Fq::from_montgomery_limbs([16065785508863042824, 13168438874677663185, 10334681499739682637, 537952869573618152]), Fq::from_montgomery_limbs([4276306945181457487, 11319798687621632943, 11337729997070203637, 154843360608516964]), Fq::from_montgomery_limbs([15091173599951556922, 10089665296762720564, 1001320269268178313, 1278999239679089342]), Fq::from_montgomery_limbs([6790806302663889439, 15630966142638650191, 7219114191273641870, 607000211505329118])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([10941156742810682792, 13379581544377778361, 13597487267674595073, 856893196159093362]), Fq::from_montgomery_limbs([12116163542944543584, 10494464956681785456, 5328861516400529745, 1198358765731586889]), Fq::from_montgomery_limbs([18189172451487902278, 4704482581638044529, 984078958545158234, 1214725173814978653]), Fq::from_montgomery_limbs([5693469689620468779, 9572644835043944500, 2366490855072377760, 976822768924111263]), Fq::from_montgomery_limbs([13490986302612722028, 1283285868432826268, 15164008493321253514, 443251753067442416]), Fq::from_montgomery_limbs([13150294025593833313, 5620721896853634047, 4766918037148084086, 1004371804232239176])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([11674076986569886445, 14273565036215986478, 7256033114853758831, 1243175635214446154]), Fq::from_montgomery_limbs([13391657488427814604, 11740905283874021531, 9224412564843665854, 277256927127426063]), Fq::from_montgomery_limbs([9479795538791379585, 12974816116199774846, 12093010719550875010, 5065395771365623]), Fq::from_montgomery_limbs([8817914873159831624, 2104380883716865129, 18076504449817050016, 651566378088004291]), Fq::from_montgomery_limbs([2593549556231375650, 9464329604880807882, 931952291445829364, 1296192193647975938]), Fq::from_montgomery_limbs([6791830127635900713, 5571583372402235342, 5980079258218847792, 609581694037305767])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([3590436137035362796, 6878827383468400586, 2087187619625759972, 366519334389468484]), Fq::from_montgomery_limbs([8466797588269795178, 6233162019605045514, 7818079020321919455, 1299893902682642414]), Fq::from_montgomery_limbs([13213818269144599466, 1289947883313972118, 4059701246652915385, 12056266522820237]), Fq::from_montgomery_limbs([4508800680162331521, 15986068886298500867, 14977838885955851194, 38157078418942241]), Fq::from_montgomery_limbs([13953378503175087488, 2632607770308512210, 13562084469560012417, 245249845748719170]), Fq::from_montgomery_limbs([14192710935721498803, 10423371171643016558, 8787645447508907660, 1222320713106865517])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([11672182316223918869, 6397196540158184432, 16362125278956639955, 487254253940971622]), Fq::from_montgomery_limbs([3466115228336022838, 17336865038830586933, 15011622032603429066, 886109464755529302]), Fq::from_montgomery_limbs([60790403003891626, 11789627958407425130, 18093678967772149866, 163664659042316929]), Fq::from_montgomery_limbs([11752605341201064356, 17735918082592333925, 6652470350194431394, 889452019796415044]), Fq::from_montgomery_limbs([8401712234167110287, 10960633415813906272, 11916450035773002049, 1182232446618175169]), Fq::from_montgomery_limbs([10396262244990196196, 13566621656449952195, 17637374041715454767, 487328172506255483])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([359851191963578459, 6093707674603330913, 12382809233400904418, 822869288595513424]), Fq::from_montgomery_limbs([8685375674428402008, 11116570913984986227, 13141958117760910576, 694631449425721940]), Fq::from_montgomery_limbs([13799808203577028319, 17015236177612766046, 13321925256996230040, 83728605392058044]), Fq::from_montgomery_limbs([11345927491644574710, 6729113552022061366, 489680359452713554, 1063665064872602168]), Fq::from_montgomery_limbs([5144672341518660971, 13584780511637830006, 8111044646642319859, 760808052520956883]), Fq::from_montgomery_limbs([10534617268344014793, 13365424830059569868, 15323686518176324368, 630253372526730391])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([5574736329985492350, 1394240824897034276, 12869158727379905882, 927371660714513620]), Fq::from_montgomery_limbs([6250879616233772588, 14830533363705576088, 11405716231454843078, 302485753651389813]), Fq::from_montgomery_limbs([9376998902591535768, 10870546783769916945, 8867938913668980167, 168036903158516371]), Fq::from_montgomery_limbs([17665300127173928717, 16211022938249470990, 17778018974492488988, 1035038949736118270]), Fq::from_montgomery_limbs([8713486127840843643, 12284089155092108591, 9199322335133216480, 1254936361875119138]), Fq::from_montgomery_limbs([10672903121209769745, 1541284167923703332, 354508315039816196, 1077919680069474774])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([6003956627532398687, 12900385821050494701, 13212436788748797499, 550552294639902063]), Fq::from_montgomery_limbs([14895950277557938580, 3197587119252958842, 1370401976516442748, 185312282262907769]), Fq::from_montgomery_limbs([4334813612319164060, 1249839787510419412, 2014732433360765992, 674486378020601344]), Fq::from_montgomery_limbs([16372536311394952793, 16876000734634230902, 16256142784705290990, 1216045970949193228]), Fq::from_montgomery_limbs([7511261605071474477, 12731027885113475848, 7275278577140348070, 1332751723743282012]), Fq::from_montgomery_limbs([2087120385657061588, 5805219940951110446, 13072060426636966211, 863754038349923743])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([9861938477894648572, 1261863888379893097, 1659273544923639757, 1175309734597332353]), Fq::from_montgomery_limbs([3160898884988868850, 12315548764431121182, 12829922584215852165, 56495588159121736]), Fq::from_montgomery_limbs([9126361106532779429, 8812351712430538764, 16651360315827640335, 488907765340195245]), Fq::from_montgomery_limbs([8831436795438293115, 389432919099331880, 4151373017145697434, 20487081091778889]), Fq::from_montgomery_limbs([1478664308612791336, 8186322499300142837, 14558475073251694928, 808252273304974762]), Fq::from_montgomery_limbs([15607838810385275909, 12674581021244262249, 1909980166381620782, 345071109506949067])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([10897251009229233031, 3820618022447517075, 10985787470877927823, 403556049280121762]), Fq::from_montgomery_limbs([930794418602631676, 4219345337777307051, 12545787195024594643, 727460251993377030]), Fq::from_montgomery_limbs([1295669867887905036, 9507152194066574702, 7109356788802489574, 787002368140653778]), Fq::from_montgomery_limbs([3498224858763889755, 302153864491265874, 14518919122820805288, 961799431413434867]), Fq::from_montgomery_limbs([14579188115252453346, 8486675243511966662, 4198502112353568422, 266466804927785090]), Fq::from_montgomery_limbs([5714787944090956648, 8773050216612558194, 4209799818844007033, 157683362695822804])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([7490636877172818331, 18234545141478570777, 4868926515076353497, 1040485086378507404]), Fq::from_montgomery_limbs([4007494498414670332, 11381886286508088565, 2983212756609056257, 310114683693996305]), Fq::from_montgomery_limbs([9176086588288648852, 1592592270921797535, 4569673380486221672, 1302061240324827715]), Fq::from_montgomery_limbs([16913435421079334086, 1877470558106542334, 3613514508584067134, 934461884972210272]), Fq::from_montgomery_limbs([5267175603942094137, 1748374762382459641, 4882024791077414221, 1068225445733947215]), Fq::from_montgomery_limbs([4248184777234069323, 13346185782403877767, 10153633758750203581, 141684902152107360])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([14329113735110304247, 4241308009922883952, 9772848400881136490, 239381311112673117]), Fq::from_montgomery_limbs([1815346937549645652, 3479767444023955389, 4985298868790684050, 355453443190923870]), Fq::from_montgomery_limbs([5747089878066396614, 5454329989338975845, 12341448373351673623, 1202238166588655979]), Fq::from_montgomery_limbs([9296701061462558971, 17770007858418801719, 9914793610472554336, 1281893899901916554]), Fq::from_montgomery_limbs([3010329870005884069, 2836286366415384158, 2351971757588955099, 425289972726450364]), Fq::from_montgomery_limbs([18291414506166784212, 810246456460775309, 17528761664504541127, 1189494422506112895])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([13873201020652076543, 6243622914124108573, 6903929397781795660, 574766800775597314]), Fq::from_montgomery_limbs([17971358622227978668, 15854652377477090302, 1063842904034816, 989523394960344619]), Fq::from_montgomery_limbs([8015553520299503933, 4607530076716157995, 7439330134573907822, 1104246105186017619]), Fq::from_montgomery_limbs([3986330100644126569, 17707403369263436100, 4053571974764234396, 108842167919011278]), Fq::from_montgomery_limbs([5227388868334111117, 12812207377137498929, 2588198532604965494, 961490407308315800]), Fq::from_montgomery_limbs([7646326553387833689, 12724139924596788661, 629496738895522970, 1201441128237966538])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([14866344307104327368, 4985794825846590702, 853871436616991822, 749367072047711970]), Fq::from_montgomery_limbs([1876020443251361508, 6552070073373315737, 12995514842585856406, 1275392944325677985]), Fq::from_montgomery_limbs([7601514916050054383, 16910631174758870764, 7353760964415941247, 324644049762087391]), Fq::from_montgomery_limbs([16565109856331579529, 458787328687847682, 5878204963586402256, 1322072415305233581]), Fq::from_montgomery_limbs([12729053080732475923, 11510453208755572522, 3723997403677235406, 73363110170067874]), Fq::from_montgomery_limbs([18174997862860579716, 6182018227945955817, 2127647890385770221, 870293941267412601])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([10698372380060816691, 7522180405775599951, 15832604002112875278, 521032436098731379]), Fq::from_montgomery_limbs([15319055731354684350, 1753334646577885863, 4505520717374373397, 984179811150887857]), Fq::from_montgomery_limbs([13141271355432538382, 14700998572061668181, 4549081783230234567, 806347686644718089]), Fq::from_montgomery_limbs([9975557437768999376, 11618707034451291844, 3181936011792873831, 576438052445019413]), Fq::from_montgomery_limbs([16609855326770322939, 13212944030983556053, 3039401190695389047, 1188561968753866414]), Fq::from_montgomery_limbs([10305504178314593273, 14719639554020787850, 2480984582534492384, 221582009878780852])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([13200038943773919312, 14432882432204232972, 3023115969282520533, 343418406639707901]), Fq::from_montgomery_limbs([9327873286332474704, 5954324830215207584, 3873074387113200139, 744988613833241266]), Fq::from_montgomery_limbs([15847102383028666437, 1096370811445384001, 10166653322883901200, 327347038183216223]), Fq::from_montgomery_limbs([17600124854622807025, 15328683957983696187, 3518858654096416419, 638859422450597084]), Fq::from_montgomery_limbs([3012983939074171362, 9083322861410244018, 4322938770639600225, 442252654129847313]), Fq::from_montgomery_limbs([10656857781541021576, 5978481768391996531, 2250259229090183585, 432977302373307667])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([14355870696105147319, 8480124686198992740, 4123496920141395243, 506237667861983638]), Fq::from_montgomery_limbs([12320253406233535520, 8322795092624377756, 9572334243002510406, 1226552575804851889]), Fq::from_montgomery_limbs([9845446342011599085, 17778086686673507324, 5271342849823127028, 1088489886300171520]), Fq::from_montgomery_limbs([10715976971447272221, 1556354685447448032, 16979954691422909924, 386763037013271508]), Fq::from_montgomery_limbs([6180856312104178084, 11877570767790110506, 11499883073784997611, 393033674847566959]), Fq::from_montgomery_limbs([7644299261552751667, 2236838738262968574, 8460748568952358391, 1177808537547336633])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([9135896072628350252, 17288794130611191656, 16136991324140875732, 84153041777780941]), Fq::from_montgomery_limbs([3384444111049248095, 5013442674731807719, 8362856530990022791, 1126331696064245534]), Fq::from_montgomery_limbs([13385137591549846388, 11889738158254938557, 17705852903381913949, 155996115818620695]), Fq::from_montgomery_limbs([15454217037527338314, 9036781253178038581, 12351768307285004715, 776821242022223621]), Fq::from_montgomery_limbs([1200501875000044263, 6384384240290446957, 15639254494736291770, 930709414948460626]), Fq::from_montgomery_limbs([2141846397057350878, 14687259326247822547, 2879743331055932654, 420053148927601148])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([18343404923952179637, 1978770268004633152, 18074842923392944526, 99740808436074128]), Fq::from_montgomery_limbs([16339172153591076879, 13902224968596916829, 10987490026958244901, 480318192898237950]), Fq::from_montgomery_limbs([16708778634825784370, 5310850661772903365, 16720939557594415942, 983754580352601152]), Fq::from_montgomery_limbs([8614768398997670932, 10441907275834816828, 11459906999048618974, 98256766838754326]), Fq::from_montgomery_limbs([5461219359492352050, 8928173417887044164, 5632769833875876015, 938637862379787936]), Fq::from_montgomery_limbs([14478729241761067482, 14593688601059211201, 14567193330233850704, 193411838718316245])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([6244372198079752707, 12764020255605820167, 3597323991837773264, 232811656021755322]), Fq::from_montgomery_limbs([12794321084179091283, 12550727012798192271, 5852541072119985136, 1021072807450583460]), Fq::from_montgomery_limbs([5843482488715644166, 17968652270397807267, 10729147049305849619, 157069170856760481]), Fq::from_montgomery_limbs([16486113458959504396, 3842616654194538021, 16267097259825943411, 595256064535306261]), Fq::from_montgomery_limbs([18403329840356376661, 17180721686489435607, 16602787769632693868, 1218551944743323947]), Fq::from_montgomery_limbs([15792003884980763548, 103687243243986150, 1015407070790759683, 925892726865866689])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([4737231254389322774, 1982930339222313430, 17171322757846703283, 898862720123176395]), Fq::from_montgomery_limbs([15341788185538116478, 15152543049620221847, 11673048694712682284, 322745914045333317]), Fq::from_montgomery_limbs([12638501658486051138, 13136127249934274833, 16835414843273620909, 830854396919510911]), Fq::from_montgomery_limbs([15895567503124768810, 17851680667009624675, 9790662472981446008, 688513180346337911]), Fq::from_montgomery_limbs([7539663061168884957, 14647473521866168085, 14254615857988792976, 4914529917008946]), Fq::from_montgomery_limbs([10355365805280135879, 1713320802629047069, 11781471822278287496, 696018085837035473])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([17208622806574606453, 2131863109694270375, 17267390257687220562, 717142744114900489]), Fq::from_montgomery_limbs([13115781297674767878, 11806487226059857638, 3832559734382202821, 1327223946228164221]), Fq::from_montgomery_limbs([1519942432011064348, 2971486323152134197, 10412234235600737234, 627890410365264901]), Fq::from_montgomery_limbs([10935974904415640609, 3329695497336026013, 13276582814401540013, 624327570851923410]), Fq::from_montgomery_limbs([110740126727160908, 1977000808556019402, 17939216501132184661, 456092178041276768]), Fq::from_montgomery_limbs([13974795879491265452, 16756058358467461957, 18345173225794766341, 1240468105851879043])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([16648425534044120166, 17300631023568278668, 3769987016608299300, 701256036605548976]), Fq::from_montgomery_limbs([9545137723467262343, 5920020285572073751, 5586902085914198509, 1101010118319202051]), Fq::from_montgomery_limbs([1804254836884575917, 5416042091971666706, 2881258114252429182, 68889272174393525]), Fq::from_montgomery_limbs([15468731159921956531, 15872344848072676105, 1678659996910931386, 827142061320044550]), Fq::from_montgomery_limbs([14524351942355153784, 10797623040866138576, 12874995891465211466, 522880520258235794]), Fq::from_montgomery_limbs([3987121765421903331, 10914786903369841306, 14357739193531493338, 159659900263967910])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([1502512509312401925, 17658662731474453106, 12409373669027537750, 369255404008259275]), Fq::from_montgomery_limbs([3933340182670563102, 17988389551284440931, 2662254549780507248, 455350437925171541]), Fq::from_montgomery_limbs([12151336628671687181, 16659863612142679844, 4275242264769905759, 226663222642898029]), Fq::from_montgomery_limbs([16130436743434681682, 11552440823414351188, 4441812352013272663, 1024571907948499450]), Fq::from_montgomery_limbs([6575764606651544368, 3768634045069377030, 18077248345407646289, 1109390810042386997]), Fq::from_montgomery_limbs([14122304828382902866, 7822601784757433157, 15085114466160105232, 454674386781135986])])], // }, -// optimized_arc: OptimizedArcMatrix::new(39, 7, vec![Fq::from_str("3267179889377925711574658284856732208025355841040084473551461173520230225381").map_err(|_| ()).unwrap(), Fq::from_str("4218970795463228197327790213244921451375713052676530804173314273248521302251").map_err(|_| ()).unwrap(), Fq::from_str("6558452507257297773903880599933734956650828395452896303007568859251089292382").map_err(|_| ()).unwrap(), Fq::from_str("4042547271226656281806908526176747617793733742101121262910694724314042815131").map_err(|_| ()).unwrap(), Fq::from_str("4484826253675472206510819347554710738378387223810894155307581506069733612810").map_err(|_| ()).unwrap(), Fq::from_str("3340623787106332728769891522629193546852430705194948956506410107893436206270").map_err(|_| ()).unwrap(), Fq::from_str("1146818540713897566188401511637220499025428484560997690844890982000538808551").map_err(|_| ()).unwrap(), Fq::from_str("6089924376626192718256476404089056274813344438059373355846067526383524489588").map_err(|_| ()).unwrap(), Fq::from_str("3252380459144218718661502728554356451451872089835332429937606714939592080537").map_err(|_| ()).unwrap(), Fq::from_str("7116956469008263816717247030121065061393433609954531462053914466227296297033").map_err(|_| ()).unwrap(), Fq::from_str("2749312272215231848139078131254509267239590195342230643928479893117354148584").map_err(|_| ()).unwrap(), Fq::from_str("764882704567509245651596837424209709274533314828826071535700095515278197679").map_err(|_| ()).unwrap(), Fq::from_str("4932281286580045638368979604177064776138370306619513783360199241458597325911").map_err(|_| ()).unwrap(), Fq::from_str("6484320961953933323289746320919349728579597325051701151281300835155595148740").map_err(|_| ()).unwrap(), Fq::from_str("6682606457331543519450813892692923338913286820264911373641321435621952784002").map_err(|_| ()).unwrap(), Fq::from_str("6625780871179973490233386959951589849631496582163936124259260687776843181994").map_err(|_| ()).unwrap(), Fq::from_str("7949225290500346406153571792115001941134688057907882657603244062341345143557").map_err(|_| ()).unwrap(), Fq::from_str("6392844449548821017972820206673777102358896581926384483680180004397700038029").map_err(|_| ()).unwrap(), Fq::from_str("3392678655944756762416562388041708502386246415055289087688321666480356102352").map_err(|_| ()).unwrap(), Fq::from_str("1482525589417638728292358287918496174732548433885907700008322735579133317611").map_err(|_| ()).unwrap(), Fq::from_str("3098572574557576897289665910879403912332252678168883273111538708481992361738").map_err(|_| ()).unwrap(), Fq::from_str("5529056592387037922896478601046572040782992911318540751019232411511652047969").map_err(|_| ()).unwrap(), Fq::from_str("3748164104379232094417838431717964236407138591232998705172215282549268275626").map_err(|_| ()).unwrap(), Fq::from_str("7993215220832663678736550799426833055975676440107252656509024603970443366873").map_err(|_| ()).unwrap(), Fq::from_str("5554706095086365018531517384733334573065210312805294463584717615914523071948").map_err(|_| ()).unwrap(), Fq::from_str("2443631285780523173220046820359095033333463124538739189832478296145755085550").map_err(|_| ()).unwrap(), Fq::from_str("1220796011041198056582991284907417463980599290206522252014247996281492269358").map_err(|_| ()).unwrap(), Fq::from_str("1682760707303747404170762352671876629726555466723959746802386893894433719465").map_err(|_| ()).unwrap(), Fq::from_str("3051923729738325569700743140016346599799580971673827402271729235767984866691").map_err(|_| ()).unwrap(), Fq::from_str("7563176581771672618255447019898227372221620915263206079381670008997384230483").map_err(|_| ()).unwrap(), Fq::from_str("6714389944529537488857452034094868070645683033112486934483248858539099368014").map_err(|_| ()).unwrap(), Fq::from_str("7493906226657143301604183755067902519920822547119913298302294623502238733674").map_err(|_| ()).unwrap(), Fq::from_str("2154229324145977209709505054539133771940440151492224785606993781621358928730").map_err(|_| ()).unwrap(), Fq::from_str("7456876762420982497005391795935505349258720733415090396527680093854035684367").map_err(|_| ()).unwrap(), Fq::from_str("2463860822091516107069327148389300215821586320398049504393157965063872793114").map_err(|_| ()).unwrap(), Fq::from_str("7457734898674665726899333231363665869048074122705641470037575830423177022983").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6606638027680683034019087360504930965296383619912667674373484912931510081604").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3896120473808259659498886851165050715042137210210508969425175628918596110703").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4177785039984150553207166633005666784182736665405993035615821533100346473102").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2251264701928031600714846652509034432058540215603054186751448537230602211233").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5918356541462280245369962174485820011301090124256309721902773908738295333234").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4488288402938721031665768590845827018046248664515272235168813500747779130469").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("420804516809894227524959414447369962794383714748308458102009786417751385338").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1611892711560390106144670651718407615978367227165742318749208966143654708953").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3625688803767314787198072508648376639173374598674550917856802780225203641909").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5858314979178924176986455221724067371667793542695736437793040582649231142217").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4718469649382301003608330023856268030475656658372577531043938083130450360244").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7101923401566220379502756714091944759289065666990111994223809262581510991930").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2205893178730705290412148160747666618068740934944353076517034081562976037846").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("566819841478218788433029207586828887815246268605467258094080218381409354679").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8338268662992166550895097018748216356557418021592425015601050125971961877922").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("550747726396516458904193097749683959139768812560046963055412203445141510555").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6649371484039146069959271641955740256733353418841311643978236734398595127934").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2401235852414872890161144154127434587596859309807274678173402920624069948487").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2359766917637333091301887580657348885955799935313770486384545232084724526410").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1536556904746856543160299837694949527224460265981570672200684249095439228342").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5239491739480094741737608066646010096816870470677999810889296988406366638984").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8351070687600450810120155572058954232266570466877012525797484411025940422009").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3350142567086983170974492599937588617046949185020614743476460067513217808235").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1380167696271416207304028914120094605829261661079429177783223779312922081950").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("200591230621722282999884256572529502020351906981653626535579613005322864375").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6112426468352321907537481445509868610249385338744048909702839757395982274228").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4234794823819824216288706384030793953524919518937019309684882995210561605401").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2617023030286105441547722950902887917262286407967232161936665945310280906622").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2625262002311345264309624648651677447307963829568516041674770057182326832869").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2373941392307013801383592832488158577752891975962531227890579346355584846451").map_err(|_| ()).unwrap(), Fq::from_str("1961718924193031296798751690610974386828264605504889890771349325463025336195").map_err(|_| ()).unwrap(), Fq::from_str("2868124060985675920436079106596156284905943204632191942776718861373436542214").map_err(|_| ()).unwrap(), Fq::from_str("7845669997742840217688401931462742306009286446506113818599869436449377367754").map_err(|_| ()).unwrap(), Fq::from_str("6173407037353888350243445875635080301447444707547969387574700153706191518628").map_err(|_| ()).unwrap(), Fq::from_str("7098672234934132886939827569385283896802454444867206042797084120044836023173").map_err(|_| ()).unwrap(), Fq::from_str("5351899839977801032921348451916620591965842541634687391321577183284412726675").map_err(|_| ()).unwrap(), Fq::from_str("5620070496211129683300134579883602187317512502813714244130767313773035697719").map_err(|_| ()).unwrap(), Fq::from_str("6979709989426911001555340276783571500889381472387839399740190281565272894942").map_err(|_| ()).unwrap(), Fq::from_str("5135679336879799934417470005708054630248446694753779453216003661110099588738").map_err(|_| ()).unwrap(), Fq::from_str("138682133719722492420465554190750590837692301151943132427693112118115423576").map_err(|_| ()).unwrap(), Fq::from_str("3151429238189687747957628376177893410569754087843736384164577812731670460702").map_err(|_| ()).unwrap(), Fq::from_str("121814244732221808057679271483647003115742086673430961846079912667911157285").map_err(|_| ()).unwrap(), Fq::from_str("8371534681354007650628559426369748872592875254339532946571231278729041076560").map_err(|_| ()).unwrap(), Fq::from_str("3224012810937385216119822993567522300423926201642509833393672779197095195785").map_err(|_| ()).unwrap(), Fq::from_str("6906061554583095104670274977270927222784149562340469632678517151372610188027").map_err(|_| ()).unwrap(), Fq::from_str("7241632034261962184770214288273863345887509924743840645741009488606102609959").map_err(|_| ()).unwrap(), Fq::from_str("1777064018030106946519734883392052222472885181372642200849135017704677431530").map_err(|_| ()).unwrap(), Fq::from_str("8324217430862472098854213825386877833955599293369985729017003228770288665572").map_err(|_| ()).unwrap(), Fq::from_str("5729830751513293833514450194921789300271973437013945551402502294027950049854").map_err(|_| ()).unwrap(), Fq::from_str("2187758249046601765496974874050556156501868988788103300613705176170900124540").map_err(|_| ()).unwrap(), Fq::from_str("3661666483638282285384645460120103900291506320035168165941968172560553131692").map_err(|_| ()).unwrap(), Fq::from_str("71172694711798875087336054947012411069704167761224496888177661616309271064").map_err(|_| ()).unwrap(), Fq::from_str("5479753513109529765878513587350339376225541758759421668496911367601412633643").map_err(|_| ()).unwrap(), Fq::from_str("6657339706920780308636317262842926498794391181237998790979567359048507409879").map_err(|_| ()).unwrap(), Fq::from_str("2844473401317966605062077825184314014360268580545792284786608033783639709289").map_err(|_| ()).unwrap(), Fq::from_str("5533028151199355284748909539327941418386476750051202689820514906007980206539").map_err(|_| ()).unwrap(), Fq::from_str("2147788020290210661458158885081344432970895350439383460330782349760173328255").map_err(|_| ()).unwrap()]), +// optimized_arc: OptimizedArcMatrix::new(39, 7, vec![Fq::from_montgomery_limbs([15142982440796561447, 11586951767160912790, 2554152473571518408, 1060132733599829191]), Fq::from_montgomery_limbs([5004052621280210368, 17001459709892607063, 7681637351760180567, 370325849830378477]), Fq::from_montgomery_limbs([12700316700887579682, 10527071459591008162, 4649940422809756001, 1164398790994859766]), Fq::from_montgomery_limbs([14166576988026094609, 7313392791454005322, 12003933110859736764, 497349496445067730]), Fq::from_montgomery_limbs([660800666505769101, 8654643871558439567, 14263148622483513593, 820049075817239934]), Fq::from_montgomery_limbs([3633256971691786185, 10090676851691033833, 14588357423182388197, 831634409758195705]), Fq::from_montgomery_limbs([6492287632409988134, 12046607076154115291, 17147959445519551317, 461021671425820687]), Fq::from_montgomery_limbs([14444046072241906262, 11260694318344083229, 15743364178797140854, 866446994798567454]), Fq::from_montgomery_limbs([3641312158605685211, 14157364044999263645, 16784472236570305027, 425843099497195003]), Fq::from_montgomery_limbs([17723864121788076174, 13911937024562874191, 12749454259525933628, 451378649043069085]), Fq::from_montgomery_limbs([12784133990119646353, 17654455838119254543, 14047536069777387226, 645204516252515303]), Fq::from_montgomery_limbs([1959581704190940037, 13929985394687694163, 11022302142929130035, 283707020686355664]), Fq::from_montgomery_limbs([8629032034013359758, 8320916390268264398, 11188435069201519314, 1277918481865788038]), Fq::from_montgomery_limbs([1783621120979741815, 10125702604889014266, 7859706914940359291, 1258189548796714111]), Fq::from_montgomery_limbs([4197085784563434882, 243889206587889894, 328885806087941395, 929695947751686179]), Fq::from_montgomery_limbs([6420634290533400711, 3371757063543007366, 8900632765923820105, 371199850895065588]), Fq::from_montgomery_limbs([9679924820095672851, 5191301328839079795, 1468702730043861612, 1130258788388916276]), Fq::from_montgomery_limbs([14270884667693338729, 18421783881067727877, 702505960635108322, 876601962183112334]), Fq::from_montgomery_limbs([12801928710162774032, 15709283060501093378, 2508615709628312314, 924328772397935430]), Fq::from_montgomery_limbs([9019134492733417932, 4614098400696239641, 291908476903718505, 879711180612784839]), Fq::from_montgomery_limbs([12296479578360854848, 3423354675244851904, 17098596077633953792, 378482623029323224]), Fq::from_montgomery_limbs([13200816203042245771, 15381254577926224952, 14688424257545082743, 884773501591309967]), Fq::from_montgomery_limbs([16263843110415550162, 14001011937262187824, 2325893788175944450, 427344840846697831]), Fq::from_montgomery_limbs([10712788406702291397, 14628016237392831746, 12076323935029775432, 746032296870665924]), Fq::from_montgomery_limbs([7577844083779539683, 8593563853045273470, 6762705862919489296, 1011466592883577533]), Fq::from_montgomery_limbs([10970204418416076913, 4397529361571105931, 15590416832284287611, 432035610777585218]), Fq::from_montgomery_limbs([13604542201065871088, 8000646895858538916, 7463535664974476191, 112496092381655883]), Fq::from_montgomery_limbs([5448941064349247150, 18035446383961421934, 9688851655819494355, 314108334517577725]), Fq::from_montgomery_limbs([13216339084640418338, 18208749029142079159, 2801888902925820506, 1144112407212441278]), Fq::from_montgomery_limbs([7414209360993783553, 9029452093631467477, 10351555314693636524, 588771856204784285]), Fq::from_montgomery_limbs([3108201764764012849, 9316564318794683488, 2890833741230407843, 2976751152949582]), Fq::from_montgomery_limbs([5531824355021026381, 12498142272625928587, 3715194578260983474, 1067798051179441316]), Fq::from_montgomery_limbs([5339344176782059900, 10307852721097022359, 14767036192885737246, 130540287097272817]), Fq::from_montgomery_limbs([7180958399368342439, 128655658219475950, 15207307979599970655, 1124647386318203846]), Fq::from_montgomery_limbs([10677712105355735228, 303877370541742151, 11456613512094797466, 1197130552973396923]), Fq::from_montgomery_limbs([1852186172212255919, 7732103194240143876, 3191072801518998585, 684231033415976440]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12344835392323260771, 2083746688625641780, 9843550839040352981, 651659425757649777]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1110121811836510524, 11074047049180975687, 15444325776340307889, 1176464439067465611]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15910765157617366987, 3536546922624744505, 13839442880050335167, 1052063195754658296]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15883615976440084496, 10513678964631690585, 17274484441634888004, 104967936091342947]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6481049124859745810, 12420828791682339353, 3515061109189248511, 2970636150410785]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9330561373397764193, 15220428410405742122, 3596976591192400082, 1172536306991915045]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11645314245053381169, 12447229279329596583, 2611021837182599503, 1121293333579047218]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5520645742684358372, 4184771738280864541, 4013355666407389724, 651341887764501817]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3861533222480473435, 8229127100534402633, 961020646123781410, 1093771644395281795]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7693571830729430183, 14740278293355277643, 7478396620768437721, 1020903160466582154]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13974629067477558431, 5721400371209900889, 788632258150877276, 1052522919478138392]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4992769493438078027, 6924382181722868018, 8263199750104564483, 169174671387869155]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11416436440841880348, 7910510255652583772, 2772926057469350664, 240489949253278513]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8550478801539329000, 17416455311840648130, 7713828782443004553, 1257322107749939919]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10946761173248535048, 6300893940302812177, 14214574452301493380, 1064839331942993571]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12881919676216378529, 6525643603496459068, 7739411544375049269, 121520118034913063]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14171005468190725795, 807987272814416859, 16062924926726151568, 258817012972523442]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5031548057386859908, 16708231376954786943, 3901002117807196384, 15277199136600693]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3470573257247529570, 3778398720483160839, 4271650771133121672, 366341134231605540]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17671590415686923470, 14797555043330379484, 2826722725742773774, 673498791246184156]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4599390077836288923, 15103704149833090169, 13723271685426770651, 1238708412855247473]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12304403800545959570, 12269595607865918824, 4224309437769311654, 1102826182464027344]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7422908892054624300, 6613469136954082264, 2435694939055735193, 465151622319296864]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9966121319294113392, 1036787719885473593, 16922917099071401564, 957685172296873589]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9346051242088429570, 5881327167233602278, 18366005774591742073, 1234098542793269307]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6556095991079572091, 15800350435028538953, 17490188894945751356, 318651152411458756]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9604843137147166704, 10750667974649036098, 15855520508812075513, 289244356768878157]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9330357980066794783, 17865465819235974796, 9112978452518873031, 700544745156046737]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6722735210481586279, 9213635375899356767, 3419293198746470858, 397188667470959331]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5033510300536938046, 14319156262351107248, 14453339555250931608, 1300088399042594667]), Fq::from_montgomery_limbs([586365878943401533, 10219333061949038245, 7972787616665459187, 1180682599170166362]), Fq::from_montgomery_limbs([8677310049713074877, 6209659062870853276, 6361763165884296788, 1086786531947345096]), Fq::from_montgomery_limbs([4779669491370037827, 13794675476884129106, 2856260482144566523, 815058410432730978]), Fq::from_montgomery_limbs([8349785262387520653, 14703604045323517453, 10665488643511503896, 1190736588532344714]), Fq::from_montgomery_limbs([9753136258891648437, 7592309943578822500, 18234430885873993524, 946608033429176051]), Fq::from_montgomery_limbs([8862120093151408513, 9919781382246740055, 1639967479777957120, 548895009658598348]), Fq::from_montgomery_limbs([13150047014556861649, 9895352886349978940, 607603433543469096, 825078058460205935]), Fq::from_montgomery_limbs([10677514517763000310, 1869057220976501750, 7668490026500068131, 645375934459787109]), Fq::from_montgomery_limbs([8393901821323241932, 7155803376644055598, 5465256629438666110, 467809976924970962]), Fq::from_montgomery_limbs([8008789779293081850, 17333068400582244417, 864473515802821379, 712131972755422562]), Fq::from_montgomery_limbs([5260641048740129119, 11495506189219575805, 1976170684554961654, 583558279245420304]), Fq::from_montgomery_limbs([10607922137491563126, 16997507064637422660, 16243052688991164520, 620318480202596319]), Fq::from_montgomery_limbs([8682850641454705537, 4234371891064954414, 11030571520428482979, 775687601614273649]), Fq::from_montgomery_limbs([12248979915462901096, 1794636648127247975, 16388845185353268388, 1257257804440120883]), Fq::from_montgomery_limbs([17181365213230240819, 3933917789297525218, 774796165591114183, 628159510187755171]), Fq::from_montgomery_limbs([9201407700189177387, 14700424513123193347, 18288661468232834482, 407382537568434540]), Fq::from_montgomery_limbs([11966891449526246216, 6846368159746727324, 5421814018651935761, 1007837491484494646]), Fq::from_montgomery_limbs([3054672449338249840, 772010416012553897, 804919836093674272, 60934971449786311]), Fq::from_montgomery_limbs([3349955854192164124, 12023516821995660430, 14073054570207692346, 391152224081538807]), Fq::from_montgomery_limbs([4393818606630194054, 11894249453630174803, 11407464681452601419, 527342257675756743]), Fq::from_montgomery_limbs([593191207061949875, 394301333075100218, 15992303837511873397, 1258463696198082538]), Fq::from_montgomery_limbs([7392815618978882544, 8600193649781721343, 10001082189003162790, 160465744058402439]), Fq::from_montgomery_limbs([5982722207731997556, 9327097271719907983, 16837081471143367937, 1323283752393867441]), Fq::from_montgomery_limbs([15234580594321690160, 14480758270368693259, 7897576353120019799, 1211836381357568240]), Fq::from_montgomery_limbs([17534396175019205578, 3323788238042131357, 16622036826489890791, 893487708746761741]), Fq::from_montgomery_limbs([3851834168141787069, 11582510337408899680, 15343784808633432566, 461896544402216282]), Fq::from_montgomery_limbs([1182215324455482337, 1943242735522063011, 4144863718139895080, 243576649285589719])]), // } // } @@ -1226,23 +135,23 @@ pub fn rate_1() -> PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> { // PoseidonParameters { // M: 128, // t: 8, -// arc: ArcMatrix::new(39, 8, vec![Fq::from_str("8272449376473671765296008869302038521165312284059868547350729170495609308478").map_err(|_| ()).unwrap(), Fq::from_str("4148638154552987643427927719929617623033282419205047107576105870710636474516").map_err(|_| ()).unwrap(), Fq::from_str("4610941420378965310285838612448425703694278187368438665958951036771382090951").map_err(|_| ()).unwrap(), Fq::from_str("4189826392798972095615428009133315511437859427098777387981389252767021216956").map_err(|_| ()).unwrap(), Fq::from_str("3485778653302006026931053379631767402100167194043813051334318884790009606746").map_err(|_| ()).unwrap(), Fq::from_str("6997258294599821948176438428013771474496501637817875041649844838098869986336").map_err(|_| ()).unwrap(), Fq::from_str("4727315047627304951694923894487815521672122955066864851590793419420877448838").map_err(|_| ()).unwrap(), Fq::from_str("8323215308029035830922479600341609342422153730357233252273677915504737315769").map_err(|_| ()).unwrap(), Fq::from_str("5637158139100131712830467651283357933314259485688016797833552952753722230574").map_err(|_| ()).unwrap(), Fq::from_str("108652494334494423537470670066593093589367691856837736916781504579141415881").map_err(|_| ()).unwrap(), Fq::from_str("4282654110357871098442082930601101276537207779575238008006989562579070025596").map_err(|_| ()).unwrap(), Fq::from_str("4983986459778055581371939303652208870578018890190948885506698845403601706443").map_err(|_| ()).unwrap(), Fq::from_str("7812942429443051975589393178689314192901424482402091373617863947800041031380").map_err(|_| ()).unwrap(), Fq::from_str("41843404634003821257499508246384846359567653827738009587074364821357556674").map_err(|_| ()).unwrap(), Fq::from_str("3256367381652958574022221764563986866005281747176483523562910892352385700536").map_err(|_| ()).unwrap(), Fq::from_str("5081754897888927450572755485400127827962724388364782188548629761403223168208").map_err(|_| ()).unwrap(), Fq::from_str("3140662389046800714717134038842932929914881789234256624133712658493702862986").map_err(|_| ()).unwrap(), Fq::from_str("5837678370345291060707921053934078274570658514314699024317340256646194510315").map_err(|_| ()).unwrap(), Fq::from_str("1758249205614064761923397241362751226590619464566451174621990840706075711533").map_err(|_| ()).unwrap(), Fq::from_str("2996424966666775948197322316539263332388876501081218038331262962889143767323").map_err(|_| ()).unwrap(), Fq::from_str("5569073755001022846727381324947502843907951568584887846136479111303763947571").map_err(|_| ()).unwrap(), Fq::from_str("2152697470307011874759937686919219515105381348752365467161409416739810705705").map_err(|_| ()).unwrap(), Fq::from_str("2547478791649003851472374459274423878735641266844974068366653679604458605992").map_err(|_| ()).unwrap(), Fq::from_str("5819954505684844235667713476731504359909606655725958006022735818802065644880").map_err(|_| ()).unwrap(), Fq::from_str("2946723954639143698985169687050778926763705251783882355884017269111316721156").map_err(|_| ()).unwrap(), Fq::from_str("6674853737187547917453936531282787623469969017096699291523892007866852923446").map_err(|_| ()).unwrap(), Fq::from_str("5128641242163000635309430370963825992485844601443450009390057810268350954415").map_err(|_| ()).unwrap(), Fq::from_str("7352715836632872274247822067257986059394276266477211651891582858684335942428").map_err(|_| ()).unwrap(), Fq::from_str("6217878791689924076142875699523164926319528131418439289154670832402836449354").map_err(|_| ()).unwrap(), Fq::from_str("7597096949831323643078864071580889261097889487612663379874935302362723251908").map_err(|_| ()).unwrap(), Fq::from_str("237095701117524079797711198067928714601748963673162707716983647008814265398").map_err(|_| ()).unwrap(), Fq::from_str("81542366906477747415301649039728726195369083982626300684546056109880517297").map_err(|_| ()).unwrap(), Fq::from_str("7969630902758093833683878012450239872858160201838806304585343230952248744893").map_err(|_| ()).unwrap(), Fq::from_str("7316377572719821258453016885761550936433699619018709722118975759663969037436").map_err(|_| ()).unwrap(), Fq::from_str("3207827889377644662547841949258701640846910482047864903394795911204521625717").map_err(|_| ()).unwrap(), Fq::from_str("6413940547842866445385786420255165709131889744069745080884072064648094675572").map_err(|_| ()).unwrap(), Fq::from_str("4470034231322139393244401663130930843870170862250053073895724359300231030494").map_err(|_| ()).unwrap(), Fq::from_str("5985167286477158071662871046181300194905193138887251008228776699334161724649").map_err(|_| ()).unwrap(), Fq::from_str("4452904839488101491301112737515512023767891716505993453839350251808627474304").map_err(|_| ()).unwrap(), Fq::from_str("7860895867021231156914226137129456862426923892375642308547029895248541661553").map_err(|_| ()).unwrap(), Fq::from_str("6630686865763006697479097101020958994896044128307934854628091355832658931207").map_err(|_| ()).unwrap(), Fq::from_str("4575237871949309158131429656894197089450967121612001149478762082600131288476").map_err(|_| ()).unwrap(), Fq::from_str("766939745831065248189916028819932463734747817275069322853142547284848119411").map_err(|_| ()).unwrap(), Fq::from_str("2521363578568164921332548196959960367230186196038809440843174398050883733227").map_err(|_| ()).unwrap(), Fq::from_str("2233887665030634678034714762840607924432402341879481284411152084913926243816").map_err(|_| ()).unwrap(), Fq::from_str("1363145196169027166624365704741212262168466737920409271006019942527593579043").map_err(|_| ()).unwrap(), Fq::from_str("1728748828489523871369663443259576335445953252043747674734851978163284572347").map_err(|_| ()).unwrap(), Fq::from_str("3589764404206988851048143499419191311969029478266107959684865529873240501288").map_err(|_| ()).unwrap(), Fq::from_str("454582061846842940537911725193464848400438118719936897433155053207150006163").map_err(|_| ()).unwrap(), Fq::from_str("6097880848523255981783663207288828946664464748659437953833943301002070708011").map_err(|_| ()).unwrap(), Fq::from_str("6606494069007891346510409957417828767102023178333954862905901017371032576703").map_err(|_| ()).unwrap(), Fq::from_str("4107615390589339392820548815643444727694000077684088530907935118807954536569").map_err(|_| ()).unwrap(), Fq::from_str("1003918606062413360733488776720819899764655273788616417267649862117087160569").map_err(|_| ()).unwrap(), Fq::from_str("4967481022167399504714248462864334298293877052822767813298305699437148004423").map_err(|_| ()).unwrap(), Fq::from_str("7505807054377625488069618334595947210934444806903660876361926590185586442625").map_err(|_| ()).unwrap(), Fq::from_str("2937235658203904617712096065495213327167588881165918700771977595840739785540").map_err(|_| ()).unwrap(), Fq::from_str("3743920883448077512632614147297013095277830755810197805164568256886272231293").map_err(|_| ()).unwrap(), Fq::from_str("4675256943483187667445429177126032505760078656735578452557765669667886631950").map_err(|_| ()).unwrap(), Fq::from_str("457954792243890278352137958612420889090804294568854585984572595286485729090").map_err(|_| ()).unwrap(), Fq::from_str("853849747687579901321157781987563742960717711795759914963161381658119818700").map_err(|_| ()).unwrap(), Fq::from_str("8222541276506899231460690122857140339276358286108222152936800844854572097455").map_err(|_| ()).unwrap(), Fq::from_str("7438406943200357502672401610848443965649812236955334945447954905769718300513").map_err(|_| ()).unwrap(), Fq::from_str("2640696199554128576427187811969038868579739879509924283967463389130356425075").map_err(|_| ()).unwrap(), Fq::from_str("2655652588635129222042210269984915965810480642384939386497721975915298799897").map_err(|_| ()).unwrap(), Fq::from_str("3217782621522243223548045738370772617329805040816918825611164431186047161493").map_err(|_| ()).unwrap(), Fq::from_str("947337883334508960509785476955419483097351316459470904704471240368983130317").map_err(|_| ()).unwrap(), Fq::from_str("6893498773873549648445806320954175770417825628673932018859169967779061669525").map_err(|_| ()).unwrap(), Fq::from_str("3549512494769711136877093045046220046555277099241366676305738541088437234800").map_err(|_| ()).unwrap(), Fq::from_str("188595022227591198772700874154043466570753818796304743231710175490064810553").map_err(|_| ()).unwrap(), Fq::from_str("7926280734182825119014941098863511068008726025720447818037681597094028288687").map_err(|_| ()).unwrap(), Fq::from_str("5328823006174239298836209859004707742902620901161932353646613955574632849830").map_err(|_| ()).unwrap(), Fq::from_str("3643132442411531550762707210036054181111950121816801222793446946975671426944").map_err(|_| ()).unwrap(), Fq::from_str("223811283886641278441633783763730335821391676025225789605640185401047180328").map_err(|_| ()).unwrap(), Fq::from_str("8105880403956334966170035890059708655437042366031673977270600203028614932716").map_err(|_| ()).unwrap(), Fq::from_str("7291355104533494809155393706541735791575586647249043086018796878886658168102").map_err(|_| ()).unwrap(), Fq::from_str("7611701800471868248724290484349188144353618836337988703536700402080844390332").map_err(|_| ()).unwrap(), Fq::from_str("1436786789990417548761477983450497180735471335332880597317434589805856427771").map_err(|_| ()).unwrap(), Fq::from_str("7600085433595855824996872008078098226260886015198064396437327207276917121720").map_err(|_| ()).unwrap(), Fq::from_str("5029449320917522052289391657447529701127506383746674724200291418366055244112").map_err(|_| ()).unwrap(), Fq::from_str("6886825880948667116018395022681308947452993793907932102687592989125186041774").map_err(|_| ()).unwrap(), Fq::from_str("5845241369239092051204667517323930061829070088554172171792110724198606401412").map_err(|_| ()).unwrap(), Fq::from_str("4162725373069625128551984577973151037992554335378296833000957757364090719940").map_err(|_| ()).unwrap(), Fq::from_str("3237246111767816396368458173267299399557492443072947364702415679925636571187").map_err(|_| ()).unwrap(), Fq::from_str("830701079037121106433992803311368087413846981956837462414498630581651793402").map_err(|_| ()).unwrap(), Fq::from_str("2196364324569118898404019786967816611441428716833788431451140967866871605803").map_err(|_| ()).unwrap(), Fq::from_str("6753922090288340120668448254869264195438903583210381863317254582876604059215").map_err(|_| ()).unwrap(), Fq::from_str("3278166685154456830901506486886389406639525283727907954935200636096028010850").map_err(|_| ()).unwrap(), Fq::from_str("5786959252098271000208967629797263716944656467823397231149097680939487648632").map_err(|_| ()).unwrap(), Fq::from_str("1908697537089514501783359248626973918401305040507758964257539878861345830490").map_err(|_| ()).unwrap(), Fq::from_str("5623482144375131023825905339360417675361217284375813015987496790143762179693").map_err(|_| ()).unwrap(), Fq::from_str("4069696247470142907808851317942521531222429930330519094286917875239205096382").map_err(|_| ()).unwrap(), Fq::from_str("7473708033898226549502377310715405001631633226016676732225225246104006304064").map_err(|_| ()).unwrap(), Fq::from_str("7968097074364896190426873307203920680578508830659346047441212030754294890547").map_err(|_| ()).unwrap(), Fq::from_str("2750027194169860594301948270681671971768983322995676262915003574138222334293").map_err(|_| ()).unwrap(), Fq::from_str("5926992445108463225458163957180508831154768105404460564971380259827882483888").map_err(|_| ()).unwrap(), Fq::from_str("8236286391698466571493128303242200865463018961214038675236970119480621222788").map_err(|_| ()).unwrap(), Fq::from_str("8334780562761233153941257145079302303490120745177090320723723636435406468801").map_err(|_| ()).unwrap(), Fq::from_str("949719520023679378768851557518699756924522256471503862479759499601220369534").map_err(|_| ()).unwrap(), Fq::from_str("5372483877960489505551208473749141362207477310379540533072313319778275921752").map_err(|_| ()).unwrap(), Fq::from_str("5749187993829590544609286084993648337986047815732954868582710978731469866982").map_err(|_| ()).unwrap(), Fq::from_str("4566976547402342111696723933810183167604073795281476956095621435462238669144").map_err(|_| ()).unwrap(), Fq::from_str("3258609544217448574198621491388339190182925542526479883374007068796823160057").map_err(|_| ()).unwrap(), Fq::from_str("1877893633883368995460699521630970116669587569933569267883836518571897778215").map_err(|_| ()).unwrap(), Fq::from_str("5946567171632824236333963154051878983043994432907168064027273967134014341427").map_err(|_| ()).unwrap(), Fq::from_str("105931664511336149957584997375530129929108061604718816766850425337966483819").map_err(|_| ()).unwrap(), Fq::from_str("3334436208623913462800910444002593149657843770356076722012842774818858193788").map_err(|_| ()).unwrap(), Fq::from_str("2542525398722164928349556023984418941288183915531914678385788069164453572484").map_err(|_| ()).unwrap(), Fq::from_str("4325729638094798167888033500432941197696802068677268118169676790569961279556").map_err(|_| ()).unwrap(), Fq::from_str("5086221959524628151988325986854153595750538180228152044781036556066799929135").map_err(|_| ()).unwrap(), Fq::from_str("814053785175139316093814632246124669245448274155786076572025583537106284178").map_err(|_| ()).unwrap(), Fq::from_str("856559262938027158334811547682069668183819901434802027583664868534912374762").map_err(|_| ()).unwrap(), Fq::from_str("7098002372386064108546794749664794680069755615559518896946628869991990938200").map_err(|_| ()).unwrap(), Fq::from_str("3692175837436518301650623692887323065336827487996896962549174591686028336225").map_err(|_| ()).unwrap(), Fq::from_str("1007582158016437529205780524083115117449712152139569389821288332592983438016").map_err(|_| ()).unwrap(), Fq::from_str("2847781526242572782394249062992590975075600946998798020950451429876955455347").map_err(|_| ()).unwrap(), Fq::from_str("4683135938877485667218909295587020784482020063366509400878909769039963402194").map_err(|_| ()).unwrap(), Fq::from_str("3071223860731265748299223217826645386000956812064841287233076908524780113711").map_err(|_| ()).unwrap(), Fq::from_str("465336005424349322459410135527270587484143218066190391405764495653890307638").map_err(|_| ()).unwrap(), Fq::from_str("3492521239902589258215993550954350302878198081888018022034188315933417282349").map_err(|_| ()).unwrap(), Fq::from_str("4652503015596864532936839963102524688315689115828904201661779672404133596246").map_err(|_| ()).unwrap(), Fq::from_str("6684493595002463532648655455829581530070483011366463933884714421685168062108").map_err(|_| ()).unwrap(), Fq::from_str("5144815691459069012290739686961880509034734568672359075047700851046282192984").map_err(|_| ()).unwrap(), Fq::from_str("8371739448006008802462855315414529155151374415405948579037680330595176885289").map_err(|_| ()).unwrap(), Fq::from_str("7562265460651226242904474681477097810256092178931499606342797263210024328912").map_err(|_| ()).unwrap(), Fq::from_str("2173115990036758502424877991024231517600619158057524800212336697746053937701").map_err(|_| ()).unwrap(), Fq::from_str("3250667032841248111949415525977085654656554385364739778848554685344763670402").map_err(|_| ()).unwrap(), Fq::from_str("964319544077259865638943155040799869001767127798523470355645153608731787358").map_err(|_| ()).unwrap(), Fq::from_str("2430625397940759018828403325697234910709308356345530717148345000606821958076").map_err(|_| ()).unwrap(), Fq::from_str("3001535549948948017968051344910179825469022106767548021637053637992914172619").map_err(|_| ()).unwrap(), Fq::from_str("5315142258465964331422831407649081078928730784491878179959989170251813258669").map_err(|_| ()).unwrap(), Fq::from_str("965329642546226660858115602501751516967460844522828532063227378062843450560").map_err(|_| ()).unwrap(), Fq::from_str("5401374926816885496189951921489312093848246583610832737254098205111592584029").map_err(|_| ()).unwrap(), Fq::from_str("4589429967151333056465198809951652750181579966978928736484472069481903686820").map_err(|_| ()).unwrap(), Fq::from_str("3458261861557917590305563421230461439522295470636639786838452072955923791588").map_err(|_| ()).unwrap(), Fq::from_str("3540986098747695482229933888622145098982183585657249365327909297854697622982").map_err(|_| ()).unwrap(), Fq::from_str("7470309027079141098627625264292527283122575469971006686552366285421096253077").map_err(|_| ()).unwrap(), Fq::from_str("2179322880286147185818971352290290535398107814740820178158943851622770567223").map_err(|_| ()).unwrap(), Fq::from_str("2089024225624099915154884013014820565635001045727245004973844249532877227137").map_err(|_| ()).unwrap(), Fq::from_str("3745196152859075670103663786165296848991734820226608733576975765763784214197").map_err(|_| ()).unwrap(), Fq::from_str("5672117491393732267161232737901625070111283663814490501970587252984671104420").map_err(|_| ()).unwrap(), Fq::from_str("5535101561762086991739090706628408222278165295627513352446657788234735178470").map_err(|_| ()).unwrap(), Fq::from_str("4440412540504162202198729017209308004949607304407749784221311782337858576119").map_err(|_| ()).unwrap(), Fq::from_str("3359457225420955510670545823689885262117252893127204615784464590776623693182").map_err(|_| ()).unwrap(), Fq::from_str("7718700411772965015689480507781316141517838375440370022460377848627123433547").map_err(|_| ()).unwrap(), Fq::from_str("2715335394270831764022982421053388805904453348572352072511789215823634657140").map_err(|_| ()).unwrap(), Fq::from_str("2305394127892986712263611635091515963372045710527019930680959161755991581436").map_err(|_| ()).unwrap(), Fq::from_str("2104972175624447794213330228917071364628371857711624604067665770479050713317").map_err(|_| ()).unwrap(), Fq::from_str("4990408798088167893471930814242652526162152619546041242615151653990184623175").map_err(|_| ()).unwrap(), Fq::from_str("3546351782556761966634238365300793530101766032734247847631348153218054433710").map_err(|_| ()).unwrap(), Fq::from_str("6941379896394926157279545496034560776204185627880417585133134949693486894967").map_err(|_| ()).unwrap(), Fq::from_str("3765682351607970622474687645495718516809053317470313795212873610836687492641").map_err(|_| ()).unwrap(), Fq::from_str("1207533003481997657312293689910907907236139141655579992322510033847857304531").map_err(|_| ()).unwrap(), Fq::from_str("2367608536896159625655496931554378270669809712765549804935381107581639335217").map_err(|_| ()).unwrap(), Fq::from_str("6740684757519218497781122306839073844591800192518192807966040074697494708307").map_err(|_| ()).unwrap(), Fq::from_str("4825078264829092308849020398835091230150958669789654848183245719996217810228").map_err(|_| ()).unwrap(), Fq::from_str("757849457700891267639946788002659929760787593114261537886517453442631326884").map_err(|_| ()).unwrap(), Fq::from_str("7617772044426127670284892056579815733041062017845578841457124144997188700609").map_err(|_| ()).unwrap(), Fq::from_str("6126914317054895618513724602591620020763139973453381199031734626160282424363").map_err(|_| ()).unwrap(), Fq::from_str("7309843634867779812093280088790495003505753384616149220486277128321443360023").map_err(|_| ()).unwrap(), Fq::from_str("1259045021150840298617452894914942995550334738680554788989111034227499491886").map_err(|_| ()).unwrap(), Fq::from_str("6908852663530609931869772676856572326587751586644415647416984824204508461868").map_err(|_| ()).unwrap(), Fq::from_str("2671163502279357383610023212372912845574427645391569743630053050134656449368").map_err(|_| ()).unwrap(), Fq::from_str("2253946543527456223564501046546653180581332524942313474306216527047916362566").map_err(|_| ()).unwrap(), Fq::from_str("2030100334146239207771413242471735260650620721144598972699602321723136370634").map_err(|_| ()).unwrap(), Fq::from_str("40136492577474487082578317934995153095444291472418348784208268307823576963").map_err(|_| ()).unwrap(), Fq::from_str("1328502896116213008216090269243206830476875304891514589862470805735960197505").map_err(|_| ()).unwrap(), Fq::from_str("2175457100448366043468948306824876374571255415169204367917523352636059523500").map_err(|_| ()).unwrap(), Fq::from_str("848096714151848638058077696231402045438976521686198724753397956243263361176").map_err(|_| ()).unwrap(), Fq::from_str("7326707703146548191924309921234510923213429298978752715858856593375670975031").map_err(|_| ()).unwrap(), Fq::from_str("8020848049439135363046795113229123697335011439425849583690097857796354293406").map_err(|_| ()).unwrap(), Fq::from_str("2872066176395073354270436839808457995283183903908368639216624738139270132084").map_err(|_| ()).unwrap(), Fq::from_str("5471198344191077510316915787799643927338870830479949711570028837725727564729").map_err(|_| ()).unwrap(), Fq::from_str("1741430244738961672359734090272574360220271561693335033986668762944253150357").map_err(|_| ()).unwrap(), Fq::from_str("4356718847916159090890175332029871781666686525313324801485121290210350977313").map_err(|_| ()).unwrap(), Fq::from_str("1915825281181304681717438772665664008551415142216399579957772298761588670131").map_err(|_| ()).unwrap(), Fq::from_str("6752507498248911914258494537015947822770496022652738004954334046021268179431").map_err(|_| ()).unwrap(), Fq::from_str("6435500822045476885664457278250354078183208240173088455313671699589064210926").map_err(|_| ()).unwrap(), Fq::from_str("4005655958479828597482874865200570219717330877601858610297703126495951848191").map_err(|_| ()).unwrap(), Fq::from_str("7603056894886664726937737797763939814260275998741045549962283638102561816924").map_err(|_| ()).unwrap(), Fq::from_str("7795000395210164850220878606140677113277107373288537208497722455538220318806").map_err(|_| ()).unwrap(), Fq::from_str("917320595292638661667403842817932900132962299959363554479605980634588307616").map_err(|_| ()).unwrap(), Fq::from_str("6195953597262272816204513727519160769187324292780523758506326479711653329716").map_err(|_| ()).unwrap(), Fq::from_str("5210320134011615244811769147852947156213832233893904017659562469491212996451").map_err(|_| ()).unwrap(), Fq::from_str("2678514272744198115243461877272315308662882251029646710852224841033352683757").map_err(|_| ()).unwrap(), Fq::from_str("8245480591264354451287811907600289397193312401022996926386207111592224163474").map_err(|_| ()).unwrap(), Fq::from_str("1810723795729939140285130542608913912106146186624803481958058125368137246958").map_err(|_| ()).unwrap(), Fq::from_str("6934231245879731726925076918123133287631381869999919632026827777187779792677").map_err(|_| ()).unwrap(), Fq::from_str("590834790443507840356941266970275491247008371407676094240923921500838927945").map_err(|_| ()).unwrap(), Fq::from_str("3878921643809799253821622216886490966257939494370483252296976611002702558042").map_err(|_| ()).unwrap(), Fq::from_str("928826120010035496569791931286940620206504111619818440942374788925304449363").map_err(|_| ()).unwrap(), Fq::from_str("6725026018629510451281875456543760311503078154949570854941233701799070311778").map_err(|_| ()).unwrap(), Fq::from_str("3003148202782596396359186535120522667375370570161108490841163463175802317848").map_err(|_| ()).unwrap(), Fq::from_str("1886891004374730958071000580978109068595840002475804123014204342684111463015").map_err(|_| ()).unwrap(), Fq::from_str("4565805385814231959782079505107795930916475365536886260229957711935491849452").map_err(|_| ()).unwrap(), Fq::from_str("1211834574858376502921448977740611760260468466113172479096577881268438497754").map_err(|_| ()).unwrap(), Fq::from_str("6245508252456431611061613652416050411030580391326361212667451154702429416845").map_err(|_| ()).unwrap(), Fq::from_str("829315491499023305058712884431039396396667828840054776463716212478411575752").map_err(|_| ()).unwrap(), Fq::from_str("7538445340263150076248828200494071745257103202342849297416972546781664247095").map_err(|_| ()).unwrap(), Fq::from_str("5643327396007828505091548576410746339436977397667960710498393093284201075199").map_err(|_| ()).unwrap(), Fq::from_str("7515779657260457854721203868528633163235381684326685705752702650452559910840").map_err(|_| ()).unwrap(), Fq::from_str("7452702100554733045412057646117433044694697722837077538785827886899132485977").map_err(|_| ()).unwrap(), Fq::from_str("4553783823481622598308870589366435852853680348100846921212856662869809684516").map_err(|_| ()).unwrap(), Fq::from_str("582929454544911278140721152001621380689152904415578510371086119231524052122").map_err(|_| ()).unwrap(), Fq::from_str("2284335772357371554233517681079027956753057991678774936927402945058752085321").map_err(|_| ()).unwrap(), Fq::from_str("5456684552687898964128826005037487511571662299569174067002182911602835717397").map_err(|_| ()).unwrap(), Fq::from_str("2002766771156843817402660103013565137257774523956112626124274058994616233711").map_err(|_| ()).unwrap(), Fq::from_str("2312028605300893937127988713572164770169393391336467553404005721687095966100").map_err(|_| ()).unwrap(), Fq::from_str("7429303438479759992240463746909874635268332144238861549000030011997194127215").map_err(|_| ()).unwrap(), Fq::from_str("3106223239863153611616263771405196091523360216634991325659058227193347801900").map_err(|_| ()).unwrap(), Fq::from_str("6666946274405723279700227546539310587325390124439913891132320173241483283276").map_err(|_| ()).unwrap(), Fq::from_str("4676739466967224175622289159690926752476707108222464504599081378960389643604").map_err(|_| ()).unwrap(), Fq::from_str("5842607952834968017287120965908363015129772426718623461132697578633585777835").map_err(|_| ()).unwrap(), Fq::from_str("5364783892198285595872026636595901526366350468040516432385252101459015607425").map_err(|_| ()).unwrap(), Fq::from_str("3485071970907145275247724645416736271673602860278751978873660448943580044221").map_err(|_| ()).unwrap(), Fq::from_str("2798375185753767667864026874563050421569326201523512568962672770491907455655").map_err(|_| ()).unwrap(), Fq::from_str("2414417638752144032012037528494000192657497689382278627035876594592511005075").map_err(|_| ()).unwrap(), Fq::from_str("661987636789252083679799885930108147461569289914044898496917133723045450092").map_err(|_| ()).unwrap(), Fq::from_str("5687593546992634801859329177869530088715688782465673628312854308203741896917").map_err(|_| ()).unwrap(), Fq::from_str("7224382516678941224777121759643483563668065974824311819278532059088473345148").map_err(|_| ()).unwrap(), Fq::from_str("431324183660472307669367902329073117234054304078961028486928758152864434759").map_err(|_| ()).unwrap(), Fq::from_str("4518877277533199499328766120518460996085100690609686158177602172519906068797").map_err(|_| ()).unwrap(), Fq::from_str("5391835477134703796034069251540723745522041339998688727108117190445638218851").map_err(|_| ()).unwrap(), Fq::from_str("3084131590160580774264885819879705586133663474490831704510266745422724996982").map_err(|_| ()).unwrap(), Fq::from_str("7779069091452917819020830713067226165449989015518979911433840971527131208460").map_err(|_| ()).unwrap(), Fq::from_str("185039770821595137236804133069099322985998472494483272069999744789889748848").map_err(|_| ()).unwrap(), Fq::from_str("8029477893257488211042037110746440704171814734977854419426564734945403648225").map_err(|_| ()).unwrap(), Fq::from_str("3768811872439582740294129582266604115776257432703540992101255817181729546568").map_err(|_| ()).unwrap(), Fq::from_str("1482701443747440584653760022259498129978952597727550260447685354298247805065").map_err(|_| ()).unwrap(), Fq::from_str("6940725841548915128089313173093112642668367371612971137422813583883070977419").map_err(|_| ()).unwrap(), Fq::from_str("7498036603151279444684091327644632652332501180713944745737503727104975850454").map_err(|_| ()).unwrap(), Fq::from_str("4485051050305917836897380943903236575176223122801326374563206647816422053464").map_err(|_| ()).unwrap(), Fq::from_str("2862270592035779624634242584383423114075858614411294290698966342579552164222").map_err(|_| ()).unwrap(), Fq::from_str("1647597539230627465120566478976349420540412563694969080667082579863039057373").map_err(|_| ()).unwrap(), Fq::from_str("2670201293323303124920879729977856964926310351640714430891874568696667805337").map_err(|_| ()).unwrap(), Fq::from_str("3944874080431099508600740397660159104644491848586265845399439481741594893428").map_err(|_| ()).unwrap(), Fq::from_str("7441608756273399065608904743120755272296171834839220814870650164707179356912").map_err(|_| ()).unwrap(), Fq::from_str("6448147535752588404685046340000155603472743418043360747756219986387781466729").map_err(|_| ()).unwrap(), Fq::from_str("5246883906182231937623153878741265494276942057768692645745562548865838158227").map_err(|_| ()).unwrap(), Fq::from_str("4146044029517896137506086049777462016160932079767861805167428658152269564679").map_err(|_| ()).unwrap(), Fq::from_str("4856783742090289027612628795887617911978474669313962818839010919653628981233").map_err(|_| ()).unwrap(), Fq::from_str("2994890752665575333204004982104058531275290219946751520581554652298499133699").map_err(|_| ()).unwrap(), Fq::from_str("2449052342444801026698260247824121080288486515536555296023314187125749374667").map_err(|_| ()).unwrap(), Fq::from_str("2998786513251520792110140149737413892348621005345980678472512625605781277269").map_err(|_| ()).unwrap(), Fq::from_str("660277759815832118079627194170579158731511263502134490252450512640490622254").map_err(|_| ()).unwrap(), Fq::from_str("7602834738389654410189879303443257302829142924668683337951052496876613659845").map_err(|_| ()).unwrap(), Fq::from_str("4340254507665859492530130696279616022801890966228654788432228468846874201375").map_err(|_| ()).unwrap(), Fq::from_str("5538783359704656375901433745566656948139511044612264529704996966790826021331").map_err(|_| ()).unwrap(), Fq::from_str("3740488357066247880091047485243143039778583067909431245989521589582403638447").map_err(|_| ()).unwrap(), Fq::from_str("6444251413257263526126290780550542774216406844238753461960215028723949862696").map_err(|_| ()).unwrap(), Fq::from_str("7341641947663484844328043515343729807909123936609985775023717633635987610112").map_err(|_| ()).unwrap(), Fq::from_str("954055219472603312910258066170353018500350168365512755779257151877511630849").map_err(|_| ()).unwrap(), Fq::from_str("621979679398477706810119322235034055302387926836012978866753665488872010166").map_err(|_| ()).unwrap(), Fq::from_str("3045972520082664782397200265123298357095533988312257765706650537831607944165").map_err(|_| ()).unwrap(), Fq::from_str("3774523491402165283426529523346257893701036791463548019014538571630832704683").map_err(|_| ()).unwrap(), Fq::from_str("2633833230646472413009451168674544903622103194742856911343971423451860020388").map_err(|_| ()).unwrap(), Fq::from_str("2372068134128172337438976361288541510866738140480909090174334164945407149325").map_err(|_| ()).unwrap(), Fq::from_str("4819747858487835465383178000494913565381678619979030845813448322856621588130").map_err(|_| ()).unwrap(), Fq::from_str("8147948816888556558788092973070747332316476606228906915149695608802272561318").map_err(|_| ()).unwrap(), Fq::from_str("1970454002571994669100590431760352850990506694744060999685808298178024455964").map_err(|_| ()).unwrap(), Fq::from_str("2382858340760720645193645833728214361901466798856555408619241315953704006287").map_err(|_| ()).unwrap(), Fq::from_str("4540589684254621896005473622215466361161492265388117654076724327951184932003").map_err(|_| ()).unwrap(), Fq::from_str("5890930679685294775127431961519672035001620239007610895722648188666415313360").map_err(|_| ()).unwrap(), Fq::from_str("4865100902944156473127085391446401225646462288726828322536464280533200989062").map_err(|_| ()).unwrap(), Fq::from_str("3640872870152505776282378684709027479987537052878181719999535648429006990754").map_err(|_| ()).unwrap(), Fq::from_str("4779523772891030661115866801947819205976229759777229507696949668063262418709").map_err(|_| ()).unwrap(), Fq::from_str("365885605870642222320559055492012121319541489302160518999844827775852861569").map_err(|_| ()).unwrap(), Fq::from_str("1071971747185306581402948225183571120598245219902341532930085617181119603325").map_err(|_| ()).unwrap(), Fq::from_str("6856531985325327376182983118412466978838692044064549776560719026899179236755").map_err(|_| ()).unwrap(), Fq::from_str("3041505653817756266549815698332245539498299392746043138164441503445649195214").map_err(|_| ()).unwrap(), Fq::from_str("1648538485556134432618529454438366597771911820623077423559278747670707945349").map_err(|_| ()).unwrap(), Fq::from_str("8021843423576337942812993729691463285991026345526291427970076858087072972681").map_err(|_| ()).unwrap(), Fq::from_str("3507873657708557599838709925109001352680898474781609934600305570106363693891").map_err(|_| ()).unwrap(), Fq::from_str("3075383093881241495899353144182411167741769296334327341278851133385063141014").map_err(|_| ()).unwrap(), Fq::from_str("8347930078798039471049340625814038199459634608701298651893809115795742304550").map_err(|_| ()).unwrap(), Fq::from_str("4956438466327574269145554000595944930223480515490309938282011695704748745643").map_err(|_| ()).unwrap(), Fq::from_str("2154123169732422630171543118390041433815790688868035745995458312417851614105").map_err(|_| ()).unwrap(), Fq::from_str("471581645724928297880218751701571715649648075005561136173031649772147644664").map_err(|_| ()).unwrap(), Fq::from_str("6282973807228559347678931248652784570495288746294696867286034565521376625120").map_err(|_| ()).unwrap(), Fq::from_str("1416024922195333694909038858996253797782585494758699299469010179303933407535").map_err(|_| ()).unwrap(), Fq::from_str("2536786345769540458457197026434576201843040132602962654330301529321277853807").map_err(|_| ()).unwrap(), Fq::from_str("3625346994346262101074016662525684274846352014684613212636681749029860414438").map_err(|_| ()).unwrap(), Fq::from_str("8185154950738214151796515968928351126603905297125790874608920063796767252690").map_err(|_| ()).unwrap(), Fq::from_str("2091359350151991805321734262591896664272488333838196693958572789838473427626").map_err(|_| ()).unwrap(), Fq::from_str("7893870176223799684038550109973360297326111269737078480578958224089785457116").map_err(|_| ()).unwrap(), Fq::from_str("1520182496293084184060350659186894159187633793202146327512504615309868073244").map_err(|_| ()).unwrap(), Fq::from_str("986343632237534315729765358105004123719914801088741895575181866570497964221").map_err(|_| ()).unwrap(), Fq::from_str("4097141299559832108681797482282499886552681964557682291595867549941946001900").map_err(|_| ()).unwrap(), Fq::from_str("5170162657752733961617316579862704251015678496124961523018864855203991590574").map_err(|_| ()).unwrap(), Fq::from_str("7493448755702210572189375484947729156648010297427762392736281250135251611888").map_err(|_| ()).unwrap(), Fq::from_str("6306473423076606291527527393606984727052936248884714392394987865264933460998").map_err(|_| ()).unwrap(), Fq::from_str("6490159471621292220891426718270011645908869111376473944426770950932725435316").map_err(|_| ()).unwrap(), Fq::from_str("3085590823906807640982299920152736395554307120994537085809023375753886005214").map_err(|_| ()).unwrap(), Fq::from_str("6470210152105334455344254379422681911310598808426785938835085698000538958774").map_err(|_| ()).unwrap(), Fq::from_str("6384336895500659645759952084976852819294861590593737217260679303514486658147").map_err(|_| ()).unwrap(), Fq::from_str("5403908794555626454891599520460723503768107553937985694373405266900803378169").map_err(|_| ()).unwrap(), Fq::from_str("7491312003383848086366979202793200051175563793929611119984170139909207668912").map_err(|_| ()).unwrap(), Fq::from_str("4387144195323867178748400107405487976710661311964448504266174388350850987894").map_err(|_| ()).unwrap(), Fq::from_str("2359754701244196043720426483051454843104685842583792338379012975172349507848").map_err(|_| ()).unwrap(), Fq::from_str("6267415440471529358165929206436078810779767091328742668461372203706996320269").map_err(|_| ()).unwrap(), Fq::from_str("244265221148857592230117779251126109093672259705074593425726854244432431537").map_err(|_| ()).unwrap(), Fq::from_str("3339783573831930710228181302359655715657861147157281612383276198708893187560").map_err(|_| ()).unwrap(), Fq::from_str("4616762454119578616027399475977737765223162792543279667476807359876684539357").map_err(|_| ()).unwrap(), Fq::from_str("2701067941287335451337695832217251573222436646292125046249999856859643981490").map_err(|_| ()).unwrap(), Fq::from_str("5393196336119855744824571655674412475633706505827284947563193413492438488691").map_err(|_| ()).unwrap(), Fq::from_str("6796573436449302551523083955724739045751503643681750413111371067794789878597").map_err(|_| ()).unwrap(), Fq::from_str("1717871245275641451442602910236392322516037306074008675881250178168072663141").map_err(|_| ()).unwrap(), Fq::from_str("2525541969317989804751812899254922410702247459776828808500461785313548593449").map_err(|_| ()).unwrap(), Fq::from_str("4393406080224759831407943487747233497883289715389419134393180407785819428816").map_err(|_| ()).unwrap(), Fq::from_str("759271099303622493097265875295304471216619404471506323635435779228707599323").map_err(|_| ()).unwrap(), Fq::from_str("6657858624373344153040139320987988391335408962732827923838403731161871088770").map_err(|_| ()).unwrap(), Fq::from_str("6939038849898671885316533183739266254229700214001815157826574893807635000524").map_err(|_| ()).unwrap(), Fq::from_str("2956062250044031925588211089300332661152138256628933421957907397358544574740").map_err(|_| ()).unwrap()]), -// mds: MdsMatrix::from_elements(vec![Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("8042344523265114689760785655982425267977046985861013169462127100873723084801").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("8042344523265114689760785655982425267977046985861013169462127100873723084801").map_err(|_| ()).unwrap(), Fq::from_str("1151517511285686876033930673470210890642168091157372340172986380352373987142").map_err(|_| ()).unwrap()]), +// arc: ArcMatrix::new(39, 8, vec![Fq::from_montgomery_limbs([17670646277747935280, 16706444459999957760, 7654997937391160943, 659194013361630234]), Fq::from_montgomery_limbs([9306410324956668761, 11918867663968452855, 16159669320449336406, 1027263653273380654]), Fq::from_montgomery_limbs([10424544810878645940, 11533042162917906716, 11405431418950019185, 1181592306684207657]), Fq::from_montgomery_limbs([15511314950168773025, 2706584092620486610, 12589344906057924987, 198949415522711747]), Fq::from_montgomery_limbs([6463242934034011456, 4480775049700236083, 1147244402884869561, 251099301522684222]), Fq::from_montgomery_limbs([6076653156556680739, 6058362204127962922, 2609006430585927072, 1274277644859784421]), Fq::from_montgomery_limbs([4034147285618545471, 16309046946281719379, 11732506942908882170, 1141734761043516350]), Fq::from_montgomery_limbs([15181402120606708665, 769117698742393942, 8000709366545785093, 128042919054960870]), Fq::from_montgomery_limbs([1723632755773767909, 7425611528820224114, 3846361608213771012, 1317157014229771878]), Fq::from_montgomery_limbs([1180004570926588292, 9835115993104089813, 255514544102365106, 370024046994873563]), Fq::from_montgomery_limbs([16507101987459533719, 15603514395660572922, 14849362947260167652, 1094669615299361663]), Fq::from_montgomery_limbs([1641419564627940104, 1734977130266781622, 2359844858057393580, 88569664018692634]), Fq::from_montgomery_limbs([16267328831985402574, 4504129177123355587, 2430336937000039615, 182724946762968945]), Fq::from_montgomery_limbs([17793535158928999608, 5634031392654154747, 10364337635238532583, 1179994829791766723]), Fq::from_montgomery_limbs([145700301814233551, 7743364595931833861, 13600389751414362190, 60896176710147956]), Fq::from_montgomery_limbs([17934232373820563709, 6533845630243602776, 15324676632824344806, 193078344538210235]), Fq::from_montgomery_limbs([3358859423299088468, 11840854300859333122, 8971776175135254558, 1017237487419914281]), Fq::from_montgomery_limbs([16328481477177681368, 1582997519876787207, 5731557971602616313, 498420306800783215]), Fq::from_montgomery_limbs([12526989383108933614, 11731194362815364383, 12171285115754354694, 1149426086446852474]), Fq::from_montgomery_limbs([809732533742229508, 9195963923014534752, 11886583635578374853, 1292532069463172705]), Fq::from_montgomery_limbs([15459398930996981001, 17972537529111616674, 6256384561719931081, 1099908904421687269]), Fq::from_montgomery_limbs([6194631511262826563, 5980361634035332899, 6132585703186883039, 1343152289862207638]), Fq::from_montgomery_limbs([13704532277655419198, 9493963458736770267, 12653804519172949169, 218428805830292650]), Fq::from_montgomery_limbs([8013496787819495990, 18081394694809078101, 14689354188530395484, 215594972753885108]), Fq::from_montgomery_limbs([1765918642197202432, 14609627278749496598, 17838479232731490790, 483435431183692300]), Fq::from_montgomery_limbs([16887594024800193480, 1328476430727273505, 17409984215868190656, 1068059229250495642]), Fq::from_montgomery_limbs([15487315671093445122, 4028755842123792652, 14118515559434131307, 600004660835889583]), Fq::from_montgomery_limbs([13620558349664282044, 9072735252525972202, 312787852320488038, 47231029883010665]), Fq::from_montgomery_limbs([9895950479699930991, 1320083262020086701, 9381389112858508819, 928504768072893822]), Fq::from_montgomery_limbs([10747871248019763953, 4479404654791651748, 11550770912037988700, 438216942461032792]), Fq::from_montgomery_limbs([18385142532667962947, 12272398000439779637, 7461987138462771945, 558726769125714997]), Fq::from_montgomery_limbs([14139485618053732983, 8348792317702713313, 367233286875102863, 186067690854023043]), Fq::from_montgomery_limbs([9041249832633195933, 456527929350696070, 3136123267563166118, 862425036609816636]), Fq::from_montgomery_limbs([9876321727332632023, 772451632218152169, 2580763841740601079, 1142028710995573927]), Fq::from_montgomery_limbs([10533796008132988682, 170935373731786369, 14423133339980810247, 95055508444762275]), Fq::from_montgomery_limbs([4649364153559136229, 7934671244579715116, 1725602943667409585, 43552745816587563]), Fq::from_montgomery_limbs([8961999013353095080, 2142418418315880644, 4123910506434734507, 397827113331247074]), Fq::from_montgomery_limbs([2830645454593024582, 16129482998540180384, 14637878185709838570, 838139034347032562]), Fq::from_montgomery_limbs([12946263415316598300, 14878150584739579253, 16849157713730765625, 1119287030817500036]), Fq::from_montgomery_limbs([15997726492611173881, 1184045769764515709, 17570821640390521168, 1030525166811213785]), Fq::from_montgomery_limbs([4265559081433102256, 11769099699992876903, 10631998596214553362, 629920260964559213]), Fq::from_montgomery_limbs([5157337023141684195, 9558723136849813533, 17067637485396248185, 1292601583198374157]), Fq::from_montgomery_limbs([11353399385134117629, 2171806967430036166, 13097746482717663094, 586742781877852644]), Fq::from_montgomery_limbs([1069667428899547423, 10788650400324959681, 5252327185070245031, 819088289991387988]), Fq::from_montgomery_limbs([4718192935689796196, 936436242961860243, 3017815728777383941, 780298204568547665]), Fq::from_montgomery_limbs([4440526970403334531, 4424298208172375576, 10234579833526167822, 505023592953711511]), Fq::from_montgomery_limbs([4918322558939638760, 9690520639912900881, 5542814067313497246, 380973540266134644]), Fq::from_montgomery_limbs([9286878702031291355, 4012311069843170007, 618344267270697646, 472052248696324346]), Fq::from_montgomery_limbs([5515965792241216655, 12550695208348294011, 659754676577929048, 656440060717186789]), Fq::from_montgomery_limbs([8831501139794786744, 7594112778983174926, 8104526671183916999, 495730236370502114]), Fq::from_montgomery_limbs([17540013351656383980, 526615498448493498, 1434949581303472569, 432295170184586654]), Fq::from_montgomery_limbs([16852826829533863229, 16646101864172251902, 17632936959873614814, 109658534507710529]), Fq::from_montgomery_limbs([10636456498263271254, 15109124910717906315, 11668474560270048234, 1296049032043861262]), Fq::from_montgomery_limbs([12825075668663632434, 5819798153387583193, 4880455503263027836, 801173774991292287]), Fq::from_montgomery_limbs([14486651003108579603, 2482031833299980317, 11187840813488772056, 509321777815437929]), Fq::from_montgomery_limbs([8118974380261220505, 16461246043293688641, 13082662763745388975, 1038588716762883494]), Fq::from_montgomery_limbs([5731200332460900228, 8786620433378472829, 13932094144651464518, 488785602167183804]), Fq::from_montgomery_limbs([10524031539917302527, 10788579146719387781, 2127880595616407095, 1059950077979303833]), Fq::from_montgomery_limbs([5949937211870070822, 4596156438811326001, 16863220530278231284, 1206526762260473240]), Fq::from_montgomery_limbs([8254843496528701475, 16430360916832531565, 7205448801338782124, 446338536784822815]), Fq::from_montgomery_limbs([289840651692288450, 17201836854477413895, 13970461968236180401, 1087853954070862964]), Fq::from_montgomery_limbs([580513008010762079, 829478851231913782, 10526131895320013439, 288889415938637383]), Fq::from_montgomery_limbs([9443502181797148323, 7700433399763019139, 6523170715391691579, 690320529397890241]), Fq::from_montgomery_limbs([17385565262285073596, 5652729129833809825, 5754846028854174174, 644301327458204078]), Fq::from_montgomery_limbs([10591125214113881524, 9225725266018596826, 9355747915664481308, 776410040105357079]), Fq::from_montgomery_limbs([9691894789652129853, 14667119801492707274, 4616580392236285481, 911862737929211265]), Fq::from_montgomery_limbs([5328612994946451300, 11901467171940119902, 12066779857870668281, 563430691473174027]), Fq::from_montgomery_limbs([5440290565189005724, 907133565222704805, 17434239031512456810, 1307317854813232623]), Fq::from_montgomery_limbs([1968218328054856894, 2870644718005301826, 11704111566790320318, 859557807871195562]), Fq::from_montgomery_limbs([9665243622030788996, 3894043111862548693, 8651495608452602974, 196890012228714384]), Fq::from_montgomery_limbs([1811318098116764117, 13655150694370398684, 6815946900059011917, 290581066009768770]), Fq::from_montgomery_limbs([5291662797603414486, 9976505778352937130, 18094101094996988099, 1244544548315716916]), Fq::from_montgomery_limbs([9550922411414470754, 2559237915370255061, 4289970449795683516, 700825515431345401]), Fq::from_montgomery_limbs([2966982422777393142, 3218865522692669697, 18384778728203892883, 1101167759984396250]), Fq::from_montgomery_limbs([2248950665261207727, 17785118295943931326, 17515375671127827105, 271356461720641826]), Fq::from_montgomery_limbs([2914870987885463507, 10687584786677185088, 9928447420467895555, 897829002169041990]), Fq::from_montgomery_limbs([9461028554882623448, 3241431013683194658, 4200859715375860214, 247909540912074667]), Fq::from_montgomery_limbs([9484762440333250094, 9154823463484785662, 5077140138132238606, 1217948890232839466]), Fq::from_montgomery_limbs([1721708237225335663, 6589142598549247219, 16963982649759394752, 1325370920515859453]), Fq::from_montgomery_limbs([1581154353773201694, 8859491775898173368, 3478556371389172479, 761951195116054505]), Fq::from_montgomery_limbs([5414431534772354985, 5784939336020461618, 8193906688438115902, 619056837793590578]), Fq::from_montgomery_limbs([5158566907177787182, 510437656260968539, 18375886464296814687, 496771913288779260]), Fq::from_montgomery_limbs([646494282535877757, 12737151480704198413, 5471421123526354063, 634833038935883700]), Fq::from_montgomery_limbs([16181443408673327918, 1926257882480036072, 190463000805340911, 725721205978748339]), Fq::from_montgomery_limbs([7167760716023892074, 5428322849307462840, 14114178188915343377, 442277493806724508]), Fq::from_montgomery_limbs([9842757490151171477, 12090204626601182995, 4235533359914016519, 235018089373226021]), Fq::from_montgomery_limbs([689571657822682190, 10120322490102263749, 15349544629296264734, 879110129942909963]), Fq::from_montgomery_limbs([10848673159730542826, 4254896082380917657, 7095278498028251644, 1283578418017245899]), Fq::from_montgomery_limbs([11397620827145756612, 12197349421718102268, 667097273385403287, 776832025612247811]), Fq::from_montgomery_limbs([9536830619644896323, 4636833749605880653, 12285714887794138165, 1202400709127503383]), Fq::from_montgomery_limbs([12430146514789240945, 4526156431412134307, 513622053209881149, 214778917602192418]), Fq::from_montgomery_limbs([6167098201419516498, 3154640343084703344, 14434779005902723423, 733632272342828673]), Fq::from_montgomery_limbs([18346541912745902187, 17556217100268103816, 14141252440750669936, 569875244889036285]), Fq::from_montgomery_limbs([15618469611711155008, 8545147381062171474, 13019086273197685281, 567609712932306745]), Fq::from_montgomery_limbs([10102215164832802529, 12690048864743685174, 5165853392556586922, 270489738300122432]), Fq::from_montgomery_limbs([11927164480530891201, 14108489374813791633, 13017388607106060581, 850938729783185225]), Fq::from_montgomery_limbs([17624557745440616873, 2058796150101806399, 3985511902134676603, 388277619947822053]), Fq::from_montgomery_limbs([2514382380191783963, 14675210002114941075, 17998140577033030519, 386023351355332372]), Fq::from_montgomery_limbs([10528288814462561256, 8933204649364546390, 14874592129223984742, 399487853473549061]), Fq::from_montgomery_limbs([5664751596212948671, 6514969831451331945, 12061422083014489160, 933043664098111606]), Fq::from_montgomery_limbs([12225851766128513711, 17952953998987374262, 13430826736801915124, 1339971583679078644]), Fq::from_montgomery_limbs([1845651887319106020, 6930431492749731513, 10484176960040080733, 1170790578042537798]), Fq::from_montgomery_limbs([6348862923042548556, 1486875087558341712, 4194544242438091841, 78164005256144789]), Fq::from_montgomery_limbs([14692463016290478473, 9329360702930196569, 1183214256895952754, 471672221434976115]), Fq::from_montgomery_limbs([12425146353419210200, 11291312622557382836, 17924529967710695385, 316781213195510748]), Fq::from_montgomery_limbs([18081335327542674793, 17730828508504228247, 15095343772187852738, 496240897850542584]), Fq::from_montgomery_limbs([6906018396868182531, 7580743900120262926, 1967444667836204859, 273417108766582414]), Fq::from_montgomery_limbs([16469004144906175061, 6719414013547880652, 7667039018964612703, 450462562192687741]), Fq::from_montgomery_limbs([3699459642673757801, 8364096682669340023, 10547343127916338322, 1039413061935527341]), Fq::from_montgomery_limbs([2771106982987870684, 8573563587841378420, 1206719325810700776, 143426260059118164]), Fq::from_montgomery_limbs([4238031571774841747, 10683460310325108305, 10841990503446643706, 1301654934696530594]), Fq::from_montgomery_limbs([5203929344429628388, 16885411007452841607, 17902872474369879449, 255936061345264752]), Fq::from_montgomery_limbs([16419947603551223738, 15661157019396954707, 3821221238374718246, 416126177086460787]), Fq::from_montgomery_limbs([16922553208005265111, 16360160113507055509, 536165461233550481, 608549986932555649]), Fq::from_montgomery_limbs([3592206260685120065, 1954831133507660101, 5600597071609130865, 213648140091026624]), Fq::from_montgomery_limbs([6516082392033585373, 13946838009919256327, 6452501836291584617, 506431739097044218]), Fq::from_montgomery_limbs([5518181572807062513, 292110089321494827, 8886174429861609032, 814625545290394060]), Fq::from_montgomery_limbs([12610347423199665749, 17943367344775386000, 17093121972053566454, 556259058966026962]), Fq::from_montgomery_limbs([5583294814190562448, 18088402493981602497, 15928392856949829098, 901622636021551608]), Fq::from_montgomery_limbs([16249951298748852814, 6111361788233877783, 12919350091432296884, 721226010556420107]), Fq::from_montgomery_limbs([2218172102857239703, 2329323851667514953, 6784983166719863241, 993993486987443276]), Fq::from_montgomery_limbs([14394544906593037198, 15461851001194987466, 12193473059473668298, 358314776306336360]), Fq::from_montgomery_limbs([2603326905829233946, 16916036572436423298, 5790056800663566282, 1283614572025968285]), Fq::from_montgomery_limbs([5913046777942823275, 8211910935104269782, 17190335617208567380, 38682663530408751]), Fq::from_montgomery_limbs([6279799617741999852, 2368459429864835947, 13817854282822876412, 857599403523844060]), Fq::from_montgomery_limbs([13513221728804468015, 11648472211124988287, 16337147311151149281, 1213356362315889859]), Fq::from_montgomery_limbs([6735193215800666100, 13415126246050738636, 6546772491702052570, 864959054725113379]), Fq::from_montgomery_limbs([13946560916675101048, 1305536234013471373, 1996487601117501987, 6637280482434640]), Fq::from_montgomery_limbs([17986217868852303932, 266126649469053928, 4699823734038470617, 1235954369265597233]), Fq::from_montgomery_limbs([9706578390759094801, 4557052655228011544, 6501501161504104166, 300118669717388750]), Fq::from_montgomery_limbs([17271021878237926614, 16508898608489641541, 2510098231880106517, 1253549827753884905]), Fq::from_montgomery_limbs([16081696380667951121, 12546061674505954303, 3027939816911481659, 1326122367352440135]), Fq::from_montgomery_limbs([8750820783999769857, 14131264523532409831, 11860451755197446498, 745462829225755593]), Fq::from_montgomery_limbs([7819519394598054633, 7533208822188068621, 3889432398222336031, 176964346604581200]), Fq::from_montgomery_limbs([13626588278396502750, 15706390030365469804, 12311149232441048374, 610208895283453621]), Fq::from_montgomery_limbs([11094868539621714049, 1330865564750703444, 8208579708506329523, 1146297945936422016]), Fq::from_montgomery_limbs([7814348133249287361, 6078857359953567878, 15411726589694581351, 1299224180894534955]), Fq::from_montgomery_limbs([8835381130778819320, 134779635200388096, 15334224426829348450, 785788572858947262]), Fq::from_montgomery_limbs([16203055023538295629, 13066812413033753111, 13966479479457537321, 675899367132765792]), Fq::from_montgomery_limbs([8545027219899966991, 6186973227993574577, 3038538378161392821, 535103590192673792]), Fq::from_montgomery_limbs([3360320054957481727, 34336684756912399, 3413779266271394009, 764051173981439036]), Fq::from_montgomery_limbs([293023250682873552, 7322391841105288851, 198244575944514326, 656738111777844461]), Fq::from_montgomery_limbs([18423107368729444354, 5597408372052789576, 7207721424788749840, 943687777186537434]), Fq::from_montgomery_limbs([13170086198505174331, 15859783812716989104, 5301807370963313339, 799729083241888205]), Fq::from_montgomery_limbs([17279707292509004232, 10595487011792355137, 12602364184919926920, 311754230366163159]), Fq::from_montgomery_limbs([8130970296785420178, 2169620052609587269, 1837093242073059498, 276242467334991300]), Fq::from_montgomery_limbs([15139243365203952649, 4858541150918282204, 1228673366499097007, 1293322423335373790]), Fq::from_montgomery_limbs([15413937563393284083, 365038001085082591, 11386425434875288889, 291771874675930828]), Fq::from_montgomery_limbs([3865668766578896210, 14190581838784817460, 2274316418059288551, 870991438678094683]), Fq::from_montgomery_limbs([9571157470530489958, 4980823355121973943, 5333320516499456270, 770038796278147152]), Fq::from_montgomery_limbs([16981726629451591296, 5326474426552210602, 1524717641929835760, 219842939123356623]), Fq::from_montgomery_limbs([16039208901368659229, 5184640515669419530, 3080932410472693273, 510043620105971072]), Fq::from_montgomery_limbs([10111763974722315511, 8329709076294929314, 16998679271562967459, 574065224827752177]), Fq::from_montgomery_limbs([8462560254681779659, 10954941970268851750, 14488455499782134046, 963141804021766550]), Fq::from_montgomery_limbs([8265856446621399759, 16247707484341474163, 12400770599134010433, 771647552338284605]), Fq::from_montgomery_limbs([5671942973524499, 18330128788177211715, 4789615159654137053, 622759709526318785]), Fq::from_montgomery_limbs([17479950722059179918, 7049818057003906554, 10084589816123170899, 1193808990238611595]), Fq::from_montgomery_limbs([896116343457540936, 2638281787069340966, 3380620512921535857, 36644632120836151]), Fq::from_montgomery_limbs([2322146546165600970, 271027138366968218, 7162645116150464142, 441026262100973114]), Fq::from_montgomery_limbs([11627404673587174924, 1016523621299971825, 8777376750651265173, 904797647346869914]), Fq::from_montgomery_limbs([2336599983193427372, 18294536733010623722, 1910254562936909612, 288459876244919538]), Fq::from_montgomery_limbs([10866222389981094234, 12754738301243938778, 2023962300189713384, 841827876240589471]), Fq::from_montgomery_limbs([12337869057490259818, 9301235609521246009, 16444168617638171143, 1108049112276481315]), Fq::from_montgomery_limbs([18388904709130326983, 14432270782760350172, 5671872767281599553, 996264049295637410]), Fq::from_montgomery_limbs([2918495984421967960, 15152292474410287951, 16695048790099726675, 206789987868447903]), Fq::from_montgomery_limbs([6798036226759712530, 2524547494567206246, 343094056066178021, 1079202981664139204]), Fq::from_montgomery_limbs([283923512386736187, 6373209277312452652, 11471152742161283191, 352597911054493754]), Fq::from_montgomery_limbs([18344480346791250887, 6055456955702765744, 13357935878541036141, 1170362631105533341]), Fq::from_montgomery_limbs([17978397370482672109, 5066451535613649009, 14053101851847429570, 384003300586620459]), Fq::from_montgomery_limbs([6537240767762022960, 15287887514003130639, 13714824082467376651, 325998042020099848]), Fq::from_montgomery_limbs([4220213521712332659, 17903257264224768614, 14353077305493411978, 1217616808421443849]), Fq::from_montgomery_limbs([6303107750424964008, 10553099269256611636, 5652309430855981542, 809187312341384962]), Fq::from_montgomery_limbs([1467640326258074734, 9958994673877282208, 948807165231437865, 847979042319462524]), Fq::from_montgomery_limbs([14465965197425638820, 1065990778266164589, 2272519010377842609, 171604326652711548]), Fq::from_montgomery_limbs([16535399098764373288, 6722849851726415551, 12327525818310696665, 617153762162922214]), Fq::from_montgomery_limbs([16271640629055517264, 6432350282845335097, 8618264300933865260, 264879473167088472]), Fq::from_montgomery_limbs([9343764438142603568, 4076892716460943411, 4516415268764304436, 15742193002987304]), Fq::from_montgomery_limbs([11522515971258098144, 3066993658503053898, 17512877804099724909, 611356418591586870]), Fq::from_montgomery_limbs([4963578364552643616, 6202702392079615379, 7168882355307838637, 299344600077925413]), Fq::from_montgomery_limbs([14129405866465653759, 354882826696964962, 9660427351909071801, 291149128932052640]), Fq::from_montgomery_limbs([6569686896435195187, 1896994952028172314, 2117936942259387423, 1226223740596210813]), Fq::from_montgomery_limbs([8136826296150976656, 5114560834461259857, 12698438831882127582, 1064812274674793315]), Fq::from_montgomery_limbs([5204762908686848050, 18170247715344035008, 10079839806977450219, 1015117163163578828]), Fq::from_montgomery_limbs([1971186989634095352, 5677558375626169162, 3790083583317699341, 158130166070339790]), Fq::from_montgomery_limbs([9180297996268451616, 10521870846784715198, 11257197750166742798, 1008680790543022462]), Fq::from_montgomery_limbs([15102432377621017232, 824737829862625480, 15733286904587679385, 359217550415334382]), Fq::from_montgomery_limbs([4981259850785194804, 15036275071388584091, 17758791361697138722, 236481669158055589]), Fq::from_montgomery_limbs([3901233362525026592, 12813965168957277386, 5314390603519503713, 998031094116574634]), Fq::from_montgomery_limbs([4078498358432220507, 12075726151602811779, 5342542781210762674, 21775695708843112]), Fq::from_montgomery_limbs([13735056988005095110, 9135371967743228564, 6185376342737833602, 666002395605514749]), Fq::from_montgomery_limbs([18046228494581227779, 8202114407403963695, 4947702695068466084, 788320793950394154]), Fq::from_montgomery_limbs([7218302974216051660, 3228464294576983613, 6671727537595126477, 173754647728010839]), Fq::from_montgomery_limbs([7621257321835633802, 8049874917307223403, 9478314901912088133, 870251875807451739]), Fq::from_montgomery_limbs([5044996355847148919, 273615366352511195, 4942152417670343549, 199398188932346157]), Fq::from_montgomery_limbs([2595093843514271275, 1154391123098543540, 4985894556505531500, 854386142979270925]), Fq::from_montgomery_limbs([12759949881257920813, 1010457605698465717, 5217636609151955807, 817084911938507107]), Fq::from_montgomery_limbs([5979737281050353100, 3539786440569025402, 14471457140846241143, 907982120351578122]), Fq::from_montgomery_limbs([16416626656337038566, 752298127295719085, 866476478245896231, 830777061413161901]), Fq::from_montgomery_limbs([17284526810241082338, 13213233959887135278, 2713075662623866960, 1171532591409183723]), Fq::from_montgomery_limbs([8064354122312926171, 4789249084747322790, 9919523931750221465, 419197152698850604]), Fq::from_montgomery_limbs([16629353489243762868, 11598883503129680580, 278636461422073174, 1203042448092989642]), Fq::from_montgomery_limbs([16545356932968522584, 10146757853340947518, 2437689509695855762, 464048598784979390]), Fq::from_montgomery_limbs([5331959515776232924, 3487514764868921659, 5860818581382620461, 167831223077979532]), Fq::from_montgomery_limbs([2682933818861368295, 7444683236761914337, 2283469126638096803, 272174229926312669]), Fq::from_montgomery_limbs([5483054922977937779, 318986619952765070, 4791617305206485237, 1275035358174361434]), Fq::from_montgomery_limbs([4586602402683656583, 11875566498302421311, 560651239278356123, 130789238180500900]), Fq::from_montgomery_limbs([13475546304629005641, 1809680849885580336, 6148758205685753344, 1015272727127650918]), Fq::from_montgomery_limbs([18199016777093209980, 5614538780880978862, 14532750892253808663, 1120673202287670548]), Fq::from_montgomery_limbs([7979559541587633926, 1549411440381912045, 13170209322716529702, 561270408065407020]), Fq::from_montgomery_limbs([15279595015844449808, 17853680372412830934, 12690878740975697658, 190806245751470341]), Fq::from_montgomery_limbs([1933135302920649522, 2329259343686385217, 5986214093116711712, 437917490927487372]), Fq::from_montgomery_limbs([12529279623600953551, 4004103524068207361, 17383023741426003338, 13318527301206951]), Fq::from_montgomery_limbs([18009701980761163605, 4547817745757475315, 17631087904948254977, 246989508356009632]), Fq::from_montgomery_limbs([14234349688403493927, 2241500746438474640, 1648115951043925356, 529436668472805988]), Fq::from_montgomery_limbs([14111082894836574658, 4098316701848925924, 3720696502600521690, 977251546365326678]), Fq::from_montgomery_limbs([2443616537395128437, 13678987928408466225, 16807254711436855033, 601335544571650468]), Fq::from_montgomery_limbs([12969308795370128797, 1532941629572075493, 9106717660115400778, 1089446992863060197]), Fq::from_montgomery_limbs([16646776755234291239, 15128084475268734564, 11393204553412007553, 838617701679652479]), Fq::from_montgomery_limbs([13260373450845806376, 13305876398081489975, 15328643090518932448, 818860400916977295]), Fq::from_montgomery_limbs([17906146044330204615, 17863342707079833111, 13022629852534083638, 1328181038047481506]), Fq::from_montgomery_limbs([10820137181908478766, 5520339361329099025, 6461544718626485262, 866252272778375002]), Fq::from_montgomery_limbs([14688227483907802311, 2519702212313051686, 8103674382557125023, 689198778502256390]), Fq::from_montgomery_limbs([4422411727383004887, 38494189414052956, 7231885838058987299, 306462357471198280]), Fq::from_montgomery_limbs([8147364543363235664, 5966406127022341654, 9906078756256022488, 1154653879133001463]), Fq::from_montgomery_limbs([17616667317393619629, 8830117592103096180, 10242736408532701810, 367000561528732856]), Fq::from_montgomery_limbs([9905329343001728010, 254719974105054165, 11980601159747742583, 1280526116709693810]), Fq::from_montgomery_limbs([6868659545386222523, 8844781874090119286, 10793326335526947043, 1292404946512391578]), Fq::from_montgomery_limbs([17850102253172036488, 16878929783220491580, 12148612402256632289, 1179496799944407367]), Fq::from_montgomery_limbs([6929880085758156619, 4120392668704643628, 11836473204519946866, 28485748677085595]), Fq::from_montgomery_limbs([7800178991375085209, 14774867153037785291, 11799747171946617460, 602919953250380891]), Fq::from_montgomery_limbs([17054340314101625508, 4698130283999778899, 4742470825260640374, 959009998492737982]), Fq::from_montgomery_limbs([2393186109518086396, 6858067904112781658, 250925929886996803, 813730459239750430]), Fq::from_montgomery_limbs([2218833032329181388, 552395772797949524, 6530705058787819865, 835936496067889425]), Fq::from_montgomery_limbs([3262056243364729906, 11024409760304501943, 1452785405793489479, 142671579891481074]), Fq::from_montgomery_limbs([6735174709999307467, 2125505582074675403, 4509781828031030374, 108593715289115480]), Fq::from_montgomery_limbs([498171931293929377, 12913268518770675643, 1815201461805994707, 946978086066606985]), Fq::from_montgomery_limbs([16200210184230174374, 3713355895827454434, 14718940205181940826, 1064592931466804937]), Fq::from_montgomery_limbs([13536929950841620194, 3713133295284324907, 4736815980159531884, 758794941833570859]), Fq::from_montgomery_limbs([861407446467585047, 12743454769660930162, 7792877431815389510, 943863054041968511]), Fq::from_montgomery_limbs([10460589994003660312, 13699084750678449563, 6912858821101282428, 983481932576822508]), Fq::from_montgomery_limbs([6395189001561693172, 909428077299806733, 14034485419172147354, 892696750070934303]), Fq::from_montgomery_limbs([16314238556028756835, 12721184065200972840, 4215220052710637306, 969581304771032797]), Fq::from_montgomery_limbs([15243970771075793563, 7265733909785546869, 11400286633658577098, 227245542346740687]), Fq::from_montgomery_limbs([2661479521314659209, 14172387955084721030, 12674281103636294869, 1085804564589438497]), Fq::from_montgomery_limbs([18227002291515532973, 15774793184931310359, 6437329245046594308, 396285509955206909]), Fq::from_montgomery_limbs([6914466148291815333, 4167126971788791314, 4527924238135969746, 1300810520025754908]), Fq::from_montgomery_limbs([14395967678844513466, 14422556923576200015, 191387961653560003, 729196198527215531]), Fq::from_montgomery_limbs([7196572830394614073, 16632412363674496211, 16792884878696839152, 457278866683205345]), Fq::from_montgomery_limbs([9831172453260561658, 4633416154293085629, 748737550195349212, 1194104217944615385]), Fq::from_montgomery_limbs([6973573180719962464, 5007888960458011612, 8062128917836753116, 744480032753315017]), Fq::from_montgomery_limbs([16633938277270943002, 664463662401382838, 12794755704372974494, 554917201554530927]), Fq::from_montgomery_limbs([13757343111051456383, 2277523607348509991, 12211485585154160377, 1191938841499200958]), Fq::from_montgomery_limbs([2099651241677249799, 16005931431677972788, 4057176764026877324, 707860945208429696]), Fq::from_montgomery_limbs([2165339887464167998, 7647994110899007446, 5094066233657896225, 709010531879165945]), Fq::from_montgomery_limbs([3831632088851469384, 13057932256077855788, 8222411545973514625, 843256628060293546]), Fq::from_montgomery_limbs([11183603857561726385, 11584937131366886392, 10218687281854749192, 1214449080735682681]), Fq::from_montgomery_limbs([4616248479126876226, 7741252456972311173, 15728165050985347386, 1181171544306467254]), Fq::from_montgomery_limbs([9990077617045592495, 15002413693275212677, 15144228310702885841, 620548150749293884]), Fq::from_montgomery_limbs([11425804337294316958, 7221778875452068210, 12010104440786017368, 1011771244946000970]), Fq::from_montgomery_limbs([5747596481169639613, 1104073856460899094, 9146430142057149431, 765525234705139109]), Fq::from_montgomery_limbs([3812959281946602235, 14465851686889375345, 10322234575416122404, 932678259808721672]), Fq::from_montgomery_limbs([8276661801860095514, 14823492496323764121, 13701004212965117137, 355220593809969742]), Fq::from_montgomery_limbs([2822736401887161227, 7201497867288478670, 17622780267628213622, 1209422737251283832]), Fq::from_montgomery_limbs([6817376778442520781, 4154445874851092990, 16808416654356258571, 874896460001984569]), Fq::from_montgomery_limbs([6944399192847445119, 11369644718917282470, 2667187192361233639, 556544027948695271]), Fq::from_montgomery_limbs([5985721645222736084, 16218645614583785224, 4868776535917705543, 340479768034825225]), Fq::from_montgomery_limbs([423267142339143725, 10672508482801134053, 10023426192840323691, 143702757733007341]), Fq::from_montgomery_limbs([16968412399372724525, 8496071221427589946, 10167242106830249881, 948296106142898645]), Fq::from_montgomery_limbs([6077151186983453387, 15293901317827186404, 14701565635632126093, 255295815714470534]), Fq::from_montgomery_limbs([2340976401132931162, 15060372762537152076, 53380542410648341, 264784757483154853]), Fq::from_montgomery_limbs([18327041937543135548, 9711578301735907982, 14543056172433622210, 917652325595281384]), Fq::from_montgomery_limbs([16912960214874381489, 15496697595960727025, 10003663904717205393, 692183641514800495]), Fq::from_montgomery_limbs([631791826835558467, 6501686441307729051, 3099396544628491613, 61251147299142612]), Fq::from_montgomery_limbs([17691931260195143223, 8098931117406259915, 9971027644422011861, 1136957700009068910]), Fq::from_montgomery_limbs([2062604623511907833, 2446845511672682965, 13161140743748372941, 284099378520214643]), Fq::from_montgomery_limbs([10652315713215424934, 14813440799481647832, 13466669344664711667, 1176746728204537787]), Fq::from_montgomery_limbs([340206030049443520, 12731571821339495677, 14595218864578621848, 861695502136866474]), Fq::from_montgomery_limbs([3281942488953589693, 3787812821549520969, 9952331543838149583, 1038372048519458034]), Fq::from_montgomery_limbs([18390450269856250573, 10364014773689157664, 17543739276626667853, 671606213095247190]), Fq::from_montgomery_limbs([12094846023530852586, 13769932740865047240, 113296399784931588, 214330261285932478]), Fq::from_montgomery_limbs([6374588877936433558, 11607665174546753642, 15847675340170713041, 474145143590361300]), Fq::from_montgomery_limbs([4088002413776997222, 16030858922743461837, 4313473177343544055, 817302900123673764]), Fq::from_montgomery_limbs([18216186189548814543, 5687648301273358200, 6564098766262925833, 235647764529877689]), Fq::from_montgomery_limbs([1421650618584051851, 9669410210003093316, 15430467067773365518, 994269415526604309]), Fq::from_montgomery_limbs([7574559796775011993, 9643962694113220666, 1013275434882478619, 543427156325963008]), Fq::from_montgomery_limbs([4532353768594877907, 2433286855157726742, 15167390808651362948, 914159030044677082]), Fq::from_montgomery_limbs([14155199821083030453, 3642619697360819367, 7765405773737076472, 1202115259646869817]), Fq::from_montgomery_limbs([16335533268534142579, 4358492749042076660, 16385044626223358243, 847268434257421024]), Fq::from_montgomery_limbs([726136436292617217, 4735276118883290434, 6495677390337301519, 1007951275499954400]), Fq::from_montgomery_limbs([1441892049918589996, 16125120862288806381, 5244917656153261337, 108755599353706277]), Fq::from_montgomery_limbs([9330223445766086137, 9406197553353640417, 13281468059023600014, 500503138812404763]), Fq::from_montgomery_limbs([5355456155777194776, 15418542913049291849, 7681885321566295504, 1188094463923126996]), Fq::from_montgomery_limbs([11882193142358058793, 4624069509548102427, 6735235437551193554, 962114122876706035]), Fq::from_montgomery_limbs([1819083831857771980, 8349663267034291058, 14403983179525206765, 942284040773068417]), Fq::from_montgomery_limbs([7024062436534453440, 15203692147142724388, 17082973923084045231, 1191890185052815108]), Fq::from_montgomery_limbs([6672719206476059341, 18362672287252020084, 3555226216430454216, 300718449399370145]), Fq::from_montgomery_limbs([5828458911011841758, 9271852277477872143, 18378348640149073615, 591074353691784318]), Fq::from_montgomery_limbs([15397757499179479361, 1878199828613873660, 4164621900891789384, 558990401377082502]), Fq::from_montgomery_limbs([11069496558892348093, 10253211614498485032, 11458203419889384673, 575447664584685933]), Fq::from_montgomery_limbs([9808353214047792416, 4805184465312945639, 3985871967202506787, 1229730183276593449]), Fq::from_montgomery_limbs([8420435996312062450, 11100705514596499443, 1523101111273631766, 639557004587150270]), Fq::from_montgomery_limbs([15630012259368829028, 15079774099427294323, 16765804689810369633, 834886070512612798]), Fq::from_montgomery_limbs([2000344807995355152, 8654391083188520616, 13301563010992444431, 490951127405891771]), Fq::from_montgomery_limbs([11761875542266860374, 709339183471929228, 17682621289319303167, 570040706396372700]), Fq::from_montgomery_limbs([3366481512891059038, 12720609556939839584, 1707138651265172645, 36940608792331559]), Fq::from_montgomery_limbs([2427334396528044490, 10170194639028880515, 18243990154741074229, 607502491270396977]), Fq::from_montgomery_limbs([6267947100515031640, 14520122887125811439, 6695614471931546770, 251319533602819784]), Fq::from_montgomery_limbs([7663026857490478572, 15777701966597798170, 10617198553182548195, 642318201966621785]), Fq::from_montgomery_limbs([9959998770754152632, 13119241263216166622, 6328810982306793729, 571460896430554998]), Fq::from_montgomery_limbs([12042605027273090048, 14859482580111939906, 11509134713697889199, 561895216440235106]), Fq::from_montgomery_limbs([1156916933025613310, 4529329408550568088, 14286907616576238972, 1309540780962817079]), Fq::from_montgomery_limbs([7510365353910652337, 14538991928012962248, 4644117500717216624, 1340316749461135700])]), +// mds: MdsMatrix::from_elements(vec![Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([13217949757478296855, 18361600593446830079, 18223280994163007859, 471593720435477782])]), // alpha: Alpha::Exponent(17), // rounds: RoundNumbers {r_P: 31, r_F: 8}, // optimized_mds: OptimizedMdsMatrices { -// M_hat: SquareMatrix::new(7, 7, vec![Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("8042344523265114689760785655982425267977046985861013169462127100873723084801").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("8042344523265114689760785655982425267977046985861013169462127100873723084801").map_err(|_| ()).unwrap(), Fq::from_str("1151517511285686876033930673470210890642168091157372340172986380352373987142").map_err(|_| ()).unwrap()]), -// v: Matrix::new(1, 7, vec![Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap()]), -// w: Matrix::new(7, 1, vec![Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap()]), -// M_prime: SquareMatrix::new(8, 8, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("8042344523265114689760785655982425267977046985861013169462127100873723084801").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7916682890089097272733273380107699873164905626706934838689281364922571161601").map_err(|_| ()).unwrap(), Fq::from_str("5464063484924239686278651430976294814419699569805570712193386353828911860556").map_err(|_| ()).unwrap(), Fq::from_str("2345683819285658451180229149661540703159972037542795507759787071088169233067").map_err(|_| ()).unwrap(), Fq::from_str("5777789618029937658696564431797900258309825860894885777008317627732964216186").map_err(|_| ()).unwrap(), Fq::from_str("8022238661956951903036383691842469204807104368396360636538471783121538777089").map_err(|_| ()).unwrap(), Fq::from_str("8042344523265114689760785655982425267977046985861013169462127100873723084801").map_err(|_| ()).unwrap(), Fq::from_str("1151517511285686876033930673470210890642168091157372340172986380352373987142").map_err(|_| ()).unwrap()]), -// M_doubleprime: SquareMatrix::new(8, 8, vec![Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap(), Fq::from_str("1876547055428526760944183319729232562527977630034236406207829656870535386466").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3940748816399906197982784971431388381308753023071896453036442279428124311489").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974457").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1279463901428540973371034081633567656269075656841524822414429311502637763217").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4015548244483420901041399271588427721213714369164170211885285839177509288748").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6436687627186659973728125302987332670769042150571978721992590536328654594667").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4200578408690009903344287277240051351504934541076636878511372539610198442011").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1").map_err(|_| ()).unwrap()]), -// M_inverse: SquareMatrix::new(8, 8, vec![Fq::from_str("331273800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455913286720641").map_err(|_| ()).unwrap(), Fq::from_str("21024843840").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455860068755841").map_err(|_| ()).unwrap(), Fq::from_str("90789098400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455833603917441").map_err(|_| ()).unwrap(), Fq::from_str("41902660800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455908629633921").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455913286720641").map_err(|_| ()).unwrap(), Fq::from_str("51943731840").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455649820317441").map_err(|_| ()).unwrap(), Fq::from_str("735869534400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454744134736641").map_err(|_| ()).unwrap(), Fq::from_str("1089469180800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455369881137921").map_err(|_| ()).unwrap(), Fq::from_str("115232317200").map_err(|_| ()).unwrap(), Fq::from_str("21024843840").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455649820317441").map_err(|_| ()).unwrap(), Fq::from_str("1389975787200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233452068245520641").map_err(|_| ()).unwrap(), Fq::from_str("6173658691200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233450155327793921").map_err(|_| ()).unwrap(), Fq::from_str("2908743037200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455302836880641").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455860068755841").map_err(|_| ()).unwrap(), Fq::from_str("735869534400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233452068245520641").map_err(|_| ()).unwrap(), Fq::from_str("10722670358400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233438631164903681").map_err(|_| ()).unwrap(), Fq::from_str("16205854064400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233447704487722241").map_err(|_| ()).unwrap(), Fq::from_str("1741288348800").map_err(|_| ()).unwrap(), Fq::from_str("90789098400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454744134736641").map_err(|_| ()).unwrap(), Fq::from_str("6173658691200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233438631164903681").map_err(|_| ()).unwrap(), Fq::from_str("27991929747600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233429572063594241").map_err(|_| ()).unwrap(), Fq::from_str("13397846716800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233453068028304641").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455833603917441").map_err(|_| ()).unwrap(), Fq::from_str("1089469180800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233450155327793921").map_err(|_| ()).unwrap(), Fq::from_str("16205854064400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233429572063594241").map_err(|_| ()).unwrap(), Fq::from_str("24881715331200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233443224712349441").map_err(|_| ()).unwrap(), Fq::from_str("2706911887680").map_err(|_| ()).unwrap(), Fq::from_str("41902660800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455369881137921").map_err(|_| ()).unwrap(), Fq::from_str("2908743037200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233447704487722241").map_err(|_| ()).unwrap(), Fq::from_str("13397846716800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233443224712349441").map_err(|_| ()).unwrap(), Fq::from_str("6492802639680").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454529249296641").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455908629633921").map_err(|_| ()).unwrap(), Fq::from_str("115232317200").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455302836880641").map_err(|_| ()).unwrap(), Fq::from_str("1741288348800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233453068028304641").map_err(|_| ()).unwrap(), Fq::from_str("2706911887680").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454529249296641").map_err(|_| ()).unwrap(), Fq::from_str("297462844800").map_err(|_| ()).unwrap()]), -// M_hat_inverse: SquareMatrix::new(7, 7, vec![Fq::from_str("641280640").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455911462818561").map_err(|_| ()).unwrap(), Fq::from_str("22299076800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455873954627841").map_err(|_| ()).unwrap(), Fq::from_str("46558512000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891336472321").map_err(|_| ()).unwrap(), Fq::from_str("5975009040").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455911462818561").map_err(|_| ()).unwrap(), Fq::from_str("55599031488").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455707454854401").map_err(|_| ()).unwrap(), Fq::from_str("411577246080").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455474172204801").map_err(|_| ()).unwrap(), Fq::from_str("249320831760").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455860049152257").map_err(|_| ()).unwrap(), Fq::from_str("22299076800").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455707454854401").map_err(|_| ()).unwrap(), Fq::from_str("797553993600").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454345932481281").map_err(|_| ()).unwrap(), Fq::from_str("1699914762000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454957457373441").map_err(|_| ()).unwrap(), Fq::from_str("221618517120").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455873954627841").map_err(|_| ()).unwrap(), Fq::from_str("411577246080").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454345932481281").map_err(|_| ()).unwrap(), Fq::from_str("3110214416400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233452539800823041").map_err(|_| ()).unwrap(), Fq::from_str("1913978102400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455474172204801").map_err(|_| ()).unwrap(), Fq::from_str("46558512000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455474172204801").map_err(|_| ()).unwrap(), Fq::from_str("1699914762000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233452539800823041").map_err(|_| ()).unwrap(), Fq::from_str("3680727120000").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233453825206455041").map_err(|_| ()).unwrap(), Fq::from_str("485855979840").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455891336472321").map_err(|_| ()).unwrap(), Fq::from_str("249320831760").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233454957457373441").map_err(|_| ()).unwrap(), Fq::from_str("1913978102400").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233453825206455041").map_err(|_| ()).unwrap(), Fq::from_str("1192555586880").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455639777250561").map_err(|_| ()).unwrap(), Fq::from_str("5975009040").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455860049152257").map_err(|_| ()).unwrap(), Fq::from_str("221618517120").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455474172204801").map_err(|_| ()).unwrap(), Fq::from_str("485855979840").map_err(|_| ()).unwrap(), Fq::from_str("8444461749428370424248824938781546531375899335154063827935233455639777250561").map_err(|_| ()).unwrap(), Fq::from_str("64780797312").map_err(|_| ()).unwrap()]), -// M_00: Fq::from_str("7388904030749824121217721821433853214953911918259805849443329273927733084161").map_err(|_| ()).unwrap(), -// M_i: Matrix::new(8, 8, vec![Fq::from_str("1").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5987802675949301722734385919344137409857194935044766256074095640396681039620").map_err(|_| ()).unwrap(), Fq::from_str("3553705083859528362617438366698217359460023642562222809102497295709732843049").map_err(|_| ()).unwrap(), Fq::from_str("1471498806406329435653147925889651042291246022460863395407601073234501312545").map_err(|_| ()).unwrap(), Fq::from_str("7327333833707077501239003319093682957785371992237509876238455576393180821184").map_err(|_| ()).unwrap(), Fq::from_str("4528896639439799324617953490368919146378250448146155586883292735308991953644").map_err(|_| ()).unwrap(), Fq::from_str("237790219739220190185128338681864436314293209860904232407596054589852123998").map_err(|_| ()).unwrap(), Fq::from_str("7980037802415770957241592981036111647175626945384370454240323936626768569375").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3553705083859528362617438366698217359460023642562222809102497295709732843049").map_err(|_| ()).unwrap(), Fq::from_str("3508443347698883923356335547785729687612222249185397723735886584774205036076").map_err(|_| ()).unwrap(), Fq::from_str("4560714272573214180482754936523249208839114909110599725316757684969169339990").map_err(|_| ()).unwrap(), Fq::from_str("6144159359716410116981577774822403752412981418640990629076790115919294821466").map_err(|_| ()).unwrap(), Fq::from_str("951590151720823176384478317185369533014426946486914990566558990833034190696").map_err(|_| ()).unwrap(), Fq::from_str("5247386132682151562738764958592545833305864671135408282506693808101502023013").map_err(|_| ()).unwrap(), Fq::from_str("8337767701504474018913570462304750872904718586427535123402022807024886922784").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1471498806406329435653147925889651042291246022460863395407601073234501312545").map_err(|_| ()).unwrap(), Fq::from_str("4560714272573214180482754936523249208839114909110599725316757684969169339990").map_err(|_| ()).unwrap(), Fq::from_str("1786015959091056798080035641825072671264475024520963143882954708758594992367").map_err(|_| ()).unwrap(), Fq::from_str("1950891177939887640697138530443964835164958008167870202318068975784795408880").map_err(|_| ()).unwrap(), Fq::from_str("6717212549584634724964634331096801776928043887780579188448771387758173398978").map_err(|_| ()).unwrap(), Fq::from_str("635198105378237387307776049704032658349755686396875644857765922796927875915").map_err(|_| ()).unwrap(), Fq::from_str("3095148013001311046817328885645685570642748290737833907229522220911216382997").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7327333833707077501239003319093682957785371992237509876238455576393180821184").map_err(|_| ()).unwrap(), Fq::from_str("6144159359716410116981577774822403752412981418640990629076790115919294821466").map_err(|_| ()).unwrap(), Fq::from_str("1950891177939887640697138530443964835164958008167870202318068975784795408880").map_err(|_| ()).unwrap(), Fq::from_str("8387532266654620581348630508238588355481223248899836244135652430363895602355").map_err(|_| ()).unwrap(), Fq::from_str("2650694787661483373619145108833496474237329209702318227944058573141282685946").map_err(|_| ()).unwrap(), Fq::from_str("5533919037673724620511302335117804120276201450591187300716841214469989374792").map_err(|_| ()).unwrap(), Fq::from_str("5246922544191653694134152075354469250176891713518109233999908508463235368025").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4528896639439799324617953490368919146378250448146155586883292735308991953644").map_err(|_| ()).unwrap(), Fq::from_str("951590151720823176384478317185369533014426946486914990566558990833034190696").map_err(|_| ()).unwrap(), Fq::from_str("6717212549584634724964634331096801776928043887780579188448771387758173398978").map_err(|_| ()).unwrap(), Fq::from_str("2650694787661483373619145108833496474237329209702318227944058573141282685946").map_err(|_| ()).unwrap(), Fq::from_str("4683860795254151995118777804192174160709422264912795099871743771790179518211").map_err(|_| ()).unwrap(), Fq::from_str("7485050546895969666725737679261803808393726473422573724872927284363282181066").map_err(|_| ()).unwrap(), Fq::from_str("7075563150891563543018066683010289076432378200940445857257754620150534944364").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("237790219739220190185128338681864436314293209860904232407596054589852123998").map_err(|_| ()).unwrap(), Fq::from_str("5247386132682151562738764958592545833305864671135408282506693808101502023013").map_err(|_| ()).unwrap(), Fq::from_str("635198105378237387307776049704032658349755686396875644857765922796927875915").map_err(|_| ()).unwrap(), Fq::from_str("5533919037673724620511302335117804120276201450591187300716841214469989374792").map_err(|_| ()).unwrap(), Fq::from_str("7485050546895969666725737679261803808393726473422573724872927284363282181066").map_err(|_| ()).unwrap(), Fq::from_str("3417748148482912299230167032939376641166673547855060675897122853291289371726").map_err(|_| ()).unwrap(), Fq::from_str("4963343343321585433868151343546992102250304092632696150330940061467712531806").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7980037802415770957241592981036111647175626945384370454240323936626768569375").map_err(|_| ()).unwrap(), Fq::from_str("8337767701504474018913570462304750872904718586427535123402022807024886922784").map_err(|_| ()).unwrap(), Fq::from_str("3095148013001311046817328885645685570642748290737833907229522220911216382997").map_err(|_| ()).unwrap(), Fq::from_str("5246922544191653694134152075354469250176891713518109233999908508463235368025").map_err(|_| ()).unwrap(), Fq::from_str("7075563150891563543018066683010289076432378200940445857257754620150534944364").map_err(|_| ()).unwrap(), Fq::from_str("4963343343321585433868151343546992102250304092632696150330940061467712531806").map_err(|_| ()).unwrap(), Fq::from_str("8159993471843855332094099775842401052452467944366702145198144441356061228407").map_err(|_| ()).unwrap()]), -// v_collection: vec![Matrix::new(1, 7, vec![Fq::from_str("4691367638571316902360458299323081406319944075085591015519574142176338466134").map_err(|_| ()).unwrap(), Fq::from_str("7600015574485533381823942444903391878238309401638657445141710110325668315137").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974284").map_err(|_| ()).unwrap(), Fq::from_str("7740756603642672888894756193883084320427907723891225175607297334590958469121").map_err(|_| ()).unwrap(), Fq::from_str("7794887768703111160845069174259889105885445540142212764247907805462223912961").map_err(|_| ()).unwrap(), Fq::from_str("7841285910183486822516766014582864636277620811214487840225573923351880007681").map_err(|_| ()).unwrap(), Fq::from_str("7881497632799812395965569942862776762617506046143792906072884558856248623105").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("5219146497910590053876009857996928064530937783532720004765526233171176543574").map_err(|_| ()).unwrap(), Fq::from_str("7899780168450127086835062905352785829862723475259935282824541722792671118598").map_err(|_| ()).unwrap(), Fq::from_str("8067124429871446632935527648921999756408570143481961188723500863706443405818").map_err(|_| ()).unwrap(), Fq::from_str("4429969631449676176188987442517409199991973239572039784208562210514978807837").map_err(|_| ()).unwrap(), Fq::from_str("3498505526508972792512927050497411340209246826006802252908736972880120073444").map_err(|_| ()).unwrap(), Fq::from_str("5696732086386662823969710914775098188683101104282602265196266433118929294697").map_err(|_| ()).unwrap(), Fq::from_str("4637987270057961719928725688465944067528292177932567189877466188757148737872").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7415693080699932064364849636074970636625742841193427172306106792355821729407").map_err(|_| ()).unwrap(), Fq::from_str("5391905966602543289406683148770611740036208408712987814963626389129094231390").map_err(|_| ()).unwrap(), Fq::from_str("7063566820767301122758024960012172736112562763789704908071087116185515244386").map_err(|_| ()).unwrap(), Fq::from_str("4073359495093618330560810719601847054572773308210789257623555721217937299615").map_err(|_| ()).unwrap(), Fq::from_str("4810356859393596811894340406879850492222203487617904700559785794130590739481").map_err(|_| ()).unwrap(), Fq::from_str("7891574885194451625400293769476857514010232262187438024394094254239472968266").map_err(|_| ()).unwrap(), Fq::from_str("3308634882010814802384259353585548921336022975300912838553343585716795852178").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("579073959925806491953540826025781735378520241546644982357934608498807236184").map_err(|_| ()).unwrap(), Fq::from_str("2907226757671246798681581930419855667608471662674916637084392882988970852583").map_err(|_| ()).unwrap(), Fq::from_str("8156406236938990361476914247603978213558239661537529232857139585183723547841").map_err(|_| ()).unwrap(), Fq::from_str("5243026264413841311155283516691647864915859747889312836817177160806140861274").map_err(|_| ()).unwrap(), Fq::from_str("6575655272740609656600320613123041637168155202248295957098678098769321491790").map_err(|_| ()).unwrap(), Fq::from_str("4825320608297442975315222076964475406171816389454849516794472330236729339594").map_err(|_| ()).unwrap(), Fq::from_str("974743027463604342780669477305383217358432018569005521612149956927566172268").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("3574936129284657137947148210970002706352158491363595460951898503884178385217").map_err(|_| ()).unwrap(), Fq::from_str("2645177403441472977319190318136965589313267860656229331796029563726252613752").map_err(|_| ()).unwrap(), Fq::from_str("2290263721944597416384490908094950593869119707645489202242107971524589380613").map_err(|_| ()).unwrap(), Fq::from_str("5791632002335649526864557012489252809115071401905890338234871396931239040306").map_err(|_| ()).unwrap(), Fq::from_str("794639593196062266821628409361492770613558676051338103517009785469926246152").map_err(|_| ()).unwrap(), Fq::from_str("610352968679606882198703556973663980339738544578371485313426020880831163161").map_err(|_| ()).unwrap(), Fq::from_str("4910144646748681105322539635150289921989139879696515742553249594832949530333").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("4730502537277752940588121584558756294403865542173129225143110856167856031643").map_err(|_| ()).unwrap(), Fq::from_str("6893955669674486886581759798105165730772561974844595049036458705642028644437").map_err(|_| ()).unwrap(), Fq::from_str("7107040296125890793195024914039920264826542368573246995877913824761506257896").map_err(|_| ()).unwrap(), Fq::from_str("7789699459005903584349152278301427638773525354818791542919178568458284630759").map_err(|_| ()).unwrap(), Fq::from_str("4546110736822651777310046028398708729766201966608524881508681707518874426125").map_err(|_| ()).unwrap(), Fq::from_str("2060511813305880084114582417089748441359691618769269705763905261737275558681").map_err(|_| ()).unwrap(), Fq::from_str("2791397867587663277090301095251556721321704086298635963805460370120822994894").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7642892199182292173023175522572484012093196254898777241608588771772720163462").map_err(|_| ()).unwrap(), Fq::from_str("3433840508679392671375376209567845274889554655260280739185505981916839072460").map_err(|_| ()).unwrap(), Fq::from_str("1592423932310440230146378604626640092213187726585085264923403126541689131414").map_err(|_| ()).unwrap(), Fq::from_str("1067672748385758625392479661696295307429418798809950746556323793442631948787").map_err(|_| ()).unwrap(), Fq::from_str("1356404616469048446953514899679085784101960908561894133021765961085416743216").map_err(|_| ()).unwrap(), Fq::from_str("4393349844635422641754579540656962737075487462085058301475752751294988314485").map_err(|_| ()).unwrap(), Fq::from_str("6759796157382764528040137610573218386127935026179881706033917731793102622352").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("4125103463970419603397915653877922802488806283516324893288974204174483056788").map_err(|_| ()).unwrap(), Fq::from_str("5591634307151490754844500409194491577227754096314058218954740936405232230035").map_err(|_| ()).unwrap(), Fq::from_str("3041461786294355221095900899936074454982148181448250132594371583680037319675").map_err(|_| ()).unwrap(), Fq::from_str("1443520442884336543332900885259183427403063748640361379559162193352537692636").map_err(|_| ()).unwrap(), Fq::from_str("3069759010130040043167675039546268816663342559067709434766787980246793735035").map_err(|_| ()).unwrap(), Fq::from_str("7961014071743534019014632448301344184990745512052695141346453071736340876493").map_err(|_| ()).unwrap(), Fq::from_str("18215202940431684213494834772814725774891716048434570833729449898243135326").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7157496258599630562443972470145215044976756443455976232702688889408096009174").map_err(|_| ()).unwrap(), Fq::from_str("7520287540794388925603391285905662999662867195701633633495232082926266548052").map_err(|_| ()).unwrap(), Fq::from_str("5865678293200537496037868265176039708372417614631306379269068101604940433194").map_err(|_| ()).unwrap(), Fq::from_str("48004315796779157691424675110866081084916533064693197340621977788423547542").map_err(|_| ()).unwrap(), Fq::from_str("678794553559570614270566850828831439399778738331790728297982871331582695195").map_err(|_| ()).unwrap(), Fq::from_str("3665848980303301998938665417345118587489227783966860769406538529633068046058").map_err(|_| ()).unwrap(), Fq::from_str("1147022452428813261950595937478921464670665000738494818578826520030558355324").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("5324236208655075021241096182211904237241693203573283720021860333722404902980").map_err(|_| ()).unwrap(), Fq::from_str("4094213580406721438004663397518300270502593826351509547417470918983127495970").map_err(|_| ()).unwrap(), Fq::from_str("6749186843058419358266132619994906322856735047708966524828454143835374429502").map_err(|_| ()).unwrap(), Fq::from_str("723722231207513615028524829855221273358994271482865755442408338017731744886").map_err(|_| ()).unwrap(), Fq::from_str("7150850632600139328249708382337907214476473094637731404400622130609232473383").map_err(|_| ()).unwrap(), Fq::from_str("6548828407143582984841181386186939307913973375652499436454528279387602376804").map_err(|_| ()).unwrap(), Fq::from_str("168810805010511092998729383838161121133729456921756120521404728421135571883").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("5502532178759265731922186416182516703534981692927666071294802462928470062591").map_err(|_| ()).unwrap(), Fq::from_str("35560602429301782167644924730904022195101978722665956370542867412801820020").map_err(|_| ()).unwrap(), Fq::from_str("6288120325409583536815287773718836993665637550784543329270101530579045167924").map_err(|_| ()).unwrap(), Fq::from_str("2626406123776297952320347407918527613620788484211418654778179254193178718441").map_err(|_| ()).unwrap(), Fq::from_str("562820747307969563357403167937906730848485709882473765169093216403459074069").map_err(|_| ()).unwrap(), Fq::from_str("1956005757288702414229669271786024402820651646481176857713366771349584073769").map_err(|_| ()).unwrap(), Fq::from_str("858227876316805370593658907888007228450187522054302698566191984336756435088").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("6822401393300855116879285139877907407888065600055085280099706605824930504490").map_err(|_| ()).unwrap(), Fq::from_str("8236741597069294960383919545799191089447620562415116551622211968529054290005").map_err(|_| ()).unwrap(), Fq::from_str("2948988990576160075655618796344161346248671903482386925364069446031509662159").map_err(|_| ()).unwrap(), Fq::from_str("4927987915431003083735924942091663872689442004725074752099182543538781559525").map_err(|_| ()).unwrap(), Fq::from_str("5067820357846738599078560193790331534070413522585988304352990283690165834052").map_err(|_| ()).unwrap(), Fq::from_str("3740404546645824275910830029071616233755675437919341362169280304043321212195").map_err(|_| ()).unwrap(), Fq::from_str("2111200376139609315307658664556561824110594055775683837622575644075659717842").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("2174539996425559666826410891902127156721562825661764032133784573788648557786").map_err(|_| ()).unwrap(), Fq::from_str("769248806812050516283801371439836604797755950190689340673851701602214018327").map_err(|_| ()).unwrap(), Fq::from_str("2675108534474186087748721950283638103718426217979823986744458730333158817982").map_err(|_| ()).unwrap(), Fq::from_str("484239727951207591417552519171991452663618328098922010975903490745815649731").map_err(|_| ()).unwrap(), Fq::from_str("771595101981472953058810896565135008762469352363117779833598904370472185034").map_err(|_| ()).unwrap(), Fq::from_str("1044782380823930343902684601198514834772684376963122371608530897699395332966").map_err(|_| ()).unwrap(), Fq::from_str("2292437741777702734055940231229102241274442374524847813496630313228835284426").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("3359417340608624162898658408956286189294127743380243454207081499618581612673").map_err(|_| ()).unwrap(), Fq::from_str("7028496655273398671172395158474667041916231378840461235980340040146883807139").map_err(|_| ()).unwrap(), Fq::from_str("1612024885140962802803680529119798987213924573486801427376405219829257052650").map_err(|_| ()).unwrap(), Fq::from_str("4432622732158192977140269005261356459651503573460247812157348947803331784585").map_err(|_| ()).unwrap(), Fq::from_str("7347726614280935207472751412467736967521608220419124825798685134005164056256").map_err(|_| ()).unwrap(), Fq::from_str("2275564718237426779918817558328920283123722669878267073152295742787702504365").map_err(|_| ()).unwrap(), Fq::from_str("2042118618486735390004430938217940358056505093397859879936401601617026670535").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("4137824898590194285666074961589565128994125672725963044981003510292835072481").map_err(|_| ()).unwrap(), Fq::from_str("8123524316822506389839988823183224921909493290119323233568872009084270935759").map_err(|_| ()).unwrap(), Fq::from_str("3678638619593349297103604479772218342641348071724409374902846425087192531865").map_err(|_| ()).unwrap(), Fq::from_str("4480175025246479133746279206422857025373263631098300777426299345601747002709").map_err(|_| ()).unwrap(), Fq::from_str("1665333334942408675117838283810122509139451255623682654356281056741745847605").map_err(|_| ()).unwrap(), Fq::from_str("6825032770884547870364827095941136814656245118800013383740443201823168355372").map_err(|_| ()).unwrap(), Fq::from_str("93302708605752771400032577809696538155815798380647736995832995073251554726").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7904420687476998167792245818781400836131164255195937753284185830321868382235").map_err(|_| ()).unwrap(), Fq::from_str("1555153458340522383173824435718545771177056983547210273013219072135561351670").map_err(|_| ()).unwrap(), Fq::from_str("830383350906804189259112282234353353608119182204451912387705203989961757087").map_err(|_| ()).unwrap(), Fq::from_str("3456456284559078554508146465285483532222154488970420706158742089993140906034").map_err(|_| ()).unwrap(), Fq::from_str("3671238262333634058973205736366985715425186279267598310447904053249922853719").map_err(|_| ()).unwrap(), Fq::from_str("7405764832808601103711929445934321604116979188067454894812221813322922475490").map_err(|_| ()).unwrap(), Fq::from_str("7593469988847892207884232876611533002833419361277957140461596326108643694698").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("1978273272299834292591126783774413913593812309894639240806482874369860378822").map_err(|_| ()).unwrap(), Fq::from_str("8316127508943490476713947811908356514809995669643367363097055778835361418237").map_err(|_| ()).unwrap(), Fq::from_str("504479419995849636058622125345465287440727856190299396307763746692714961057").map_err(|_| ()).unwrap(), Fq::from_str("7900908390841890265211288235756266286145740680496789614172974839654237467253").map_err(|_| ()).unwrap(), Fq::from_str("5813384146097420947212046394535737585759957512993864723250970463300421178064").map_err(|_| ()).unwrap(), Fq::from_str("1032637872845236297346329846281096302654244366628952580043191441147397660125").map_err(|_| ()).unwrap(), Fq::from_str("343379830722556770456326323352139963875167070080580201515690987065251486912").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("3574664812163336457293878436783012641794978309822833775924762357291748278557").map_err(|_| ()).unwrap(), Fq::from_str("2502722352743876750952322924868196768348150146414241605763056199057187860110").map_err(|_| ()).unwrap(), Fq::from_str("3448300331792167149277248613327659175711861373649823893074345603645806844868").map_err(|_| ()).unwrap(), Fq::from_str("8169708347265401538506618095762903937495242711089275307640012779642671083045").map_err(|_| ()).unwrap(), Fq::from_str("2188454359516425210667651089970577635410627667522295286860289340428351181434").map_err(|_| ()).unwrap(), Fq::from_str("7705026160374792680627522380210282027407377856374049229750363731541432103743").map_err(|_| ()).unwrap(), Fq::from_str("427693743177362918507683318288154679859115633935674271625560083860760601624").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7177006381743154255082939477979950691406063383680689661265803200866395370786").map_err(|_| ()).unwrap(), Fq::from_str("2217914183345151528285084611709360347039873199328443402397971785242531857036").map_err(|_| ()).unwrap(), Fq::from_str("56117075176406383403379240299626338903643468387347752957507159953115989224").map_err(|_| ()).unwrap(), Fq::from_str("6700013260335466131512998478978138964671359794982252989435652507186376094550").map_err(|_| ()).unwrap(), Fq::from_str("3538103420893712641300679553747307593125100565205702231674611866046469798960").map_err(|_| ()).unwrap(), Fq::from_str("3535761337917069397853979605527391881530205022862882522721056714517399516201").map_err(|_| ()).unwrap(), Fq::from_str("4792932734184078531929839957316952869907553251015932106108001525422724689996").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("3627065917965011067928814538573355934296255750858331870507121772570339368954").map_err(|_| ()).unwrap(), Fq::from_str("5894514926968401584306172853036531498444743856778512594048306622363295971370").map_err(|_| ()).unwrap(), Fq::from_str("6953962099089743276810433784966387364821314174819222022830612122697916386003").map_err(|_| ()).unwrap(), Fq::from_str("1369363699880882253972635974711633257431434510236154514579968798052244619363").map_err(|_| ()).unwrap(), Fq::from_str("1345000968885262957906117677255165119462115545467261937625319008684764226272").map_err(|_| ()).unwrap(), Fq::from_str("2574908814979798335811710530680921856151750921313368821150534513908804942904").map_err(|_| ()).unwrap(), Fq::from_str("2274122711934267684748591252330176584191821122950998488559364329776334110412").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("5058358197187775448457187896642003602140930050042561514437451864437419663789").map_err(|_| ()).unwrap(), Fq::from_str("8169315541354842035448700926046485995357477895212518967589633380337342330868").map_err(|_| ()).unwrap(), Fq::from_str("4208866343764157044149396781711324601057077504495906334792068243219686230392").map_err(|_| ()).unwrap(), Fq::from_str("4492855826534130272657431599914280592446889868219419378568368186789126664310").map_err(|_| ()).unwrap(), Fq::from_str("8354201251122896161461677259713964234072404985185364660849123593411981126696").map_err(|_| ()).unwrap(), Fq::from_str("3441632979435452241638199024701271594593258333968734196559390055346359710994").map_err(|_| ()).unwrap(), Fq::from_str("7205797181716337159713173844648591196641795585853171012368744221891176842494").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("4688894183395564384735085304769791579904390152119790455597579213305686209138").map_err(|_| ()).unwrap(), Fq::from_str("1720984636446161686724852085221993383599577456401369793638420309409664465509").map_err(|_| ()).unwrap(), Fq::from_str("7512618564374751996148862034970031319672019085411400229862351883599296147621").map_err(|_| ()).unwrap(), Fq::from_str("6438438929497042201268729870346789904686350582968390036349034966681318053266").map_err(|_| ()).unwrap(), Fq::from_str("954391960697389704486808439769294829496354946916643936579856657620573939853").map_err(|_| ()).unwrap(), Fq::from_str("919690982656537728246307165544427390829435490213889749014397264916486824772").map_err(|_| ()).unwrap(), Fq::from_str("552019023398190790458068343809201163100153476773434103925036577698292446607").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7023261662395900523393369237387433571581176531290068105857812129213894430660").map_err(|_| ()).unwrap(), Fq::from_str("3139221192647842444391960382090696051605219119850609505342162707013483456143").map_err(|_| ()).unwrap(), Fq::from_str("934601359865684394521084046280192088038457606280193920222996751431527940648").map_err(|_| ()).unwrap(), Fq::from_str("3530715520073224219879340990263113036296244875680177143570902501651392528002").map_err(|_| ()).unwrap(), Fq::from_str("3544555912556702704621300521038529610722334740547723147079556692628145155871").map_err(|_| ()).unwrap(), Fq::from_str("4100540746209267768748482676428079373467886882759412040612266343752742681678").map_err(|_| ()).unwrap(), Fq::from_str("6728732194524499650606291010620190118646942370570503244300760817501662832276").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7368817873751876582496989433342624006233500116260591421769273016378544156304").map_err(|_| ()).unwrap(), Fq::from_str("6571617532986588963636284663084898135265943506679752032808038593840690550041").map_err(|_| ()).unwrap(), Fq::from_str("5342984625831497563205296500949597710867570731333920373077104072376312217109").map_err(|_| ()).unwrap(), Fq::from_str("2686676745851327222300965995817661504584394905268737191520278982163850818493").map_err(|_| ()).unwrap(), Fq::from_str("1763152377567147521803938002046151991534295992834343384819829435110945794799").map_err(|_| ()).unwrap(), Fq::from_str("4893330949619348361167642669972637735325671619271883656430481517113966806946").map_err(|_| ()).unwrap(), Fq::from_str("414344109355501870156709841330000678144374572028269579598657927336862145505").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("3865112971120624110022577332710387002236164556958861040953573633602069504967").map_err(|_| ()).unwrap(), Fq::from_str("6799696086859597228356355342638832485805468253947231149032404678115715746734").map_err(|_| ()).unwrap(), Fq::from_str("7933355749454024838361918663497810781569445010357336237387755837582242577436").map_err(|_| ()).unwrap(), Fq::from_str("7549760862785332633177298822090871736934164243141323492825789299131659718460").map_err(|_| ()).unwrap(), Fq::from_str("5207516807486724388620727435950185632988341488489834724044899978032154858408").map_err(|_| ()).unwrap(), Fq::from_str("6924559754387258858153869967765663638868546501283524478566330743582082205732").map_err(|_| ()).unwrap(), Fq::from_str("841345160146100964645129849608848330313946253894268274850157330232572830629").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("1389446611567558294147758526712362771127004014674874584067665147933372850118").map_err(|_| ()).unwrap(), Fq::from_str("6397034856725794996766551865270005250377704486901984596519747198554061148465").map_err(|_| ()).unwrap(), Fq::from_str("205091484996310478205703607716484078123053032065875030687222830709169725972").map_err(|_| ()).unwrap(), Fq::from_str("6760700655223747282503709932399015496786065040576644044409208187280186899640").map_err(|_| ()).unwrap(), Fq::from_str("6208839752299751281929089777333555574637643038073339905446787043144565458232").map_err(|_| ()).unwrap(), Fq::from_str("7799020404886684366046619883196793726934585574318686715186038482331817391940").map_err(|_| ()).unwrap(), Fq::from_str("2096892926148424031780972095669470073193351141524607985243983251877644113229").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("621782867159875264358700569196861886225263328356198879034425424109187183714").map_err(|_| ()).unwrap(), Fq::from_str("3512738818249127629435053711663315906049595101189715112136086738800582609601").map_err(|_| ()).unwrap(), Fq::from_str("3192249988371773259853623429379386166722766832020189919449930172723474476574").map_err(|_| ()).unwrap(), Fq::from_str("3089339745538850097130804756733874704612142248507766167096123277397531297047").map_err(|_| ()).unwrap(), Fq::from_str("3083625222105880065195444481164146971731794592933533958669703693809500778892").map_err(|_| ()).unwrap(), Fq::from_str("3273363364850963237981488703768333764275671812843766981483361416179996953511").map_err(|_| ()).unwrap(), Fq::from_str("7748033361405347289752809537097699489635473435337400646842573868428162224866").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("1545625684590523475787632627291017308379651563860294214155832906269302310704").map_err(|_| ()).unwrap(), Fq::from_str("1202311766334514351306399525003248301450683432994462553910755004165884142433").map_err(|_| ()).unwrap(), Fq::from_str("2947200870033348813479419826439728846859029549028835010967423259467912433334").map_err(|_| ()).unwrap(), Fq::from_str("2508591113733320408922890896679591128908716439375370130348925879771969289506").map_err(|_| ()).unwrap(), Fq::from_str("1164803469926668468468377640760689999616473384457624926818957202174658653063").map_err(|_| ()).unwrap(), Fq::from_str("2932649542154101984475205582120208530940935610581291905335736294371023919798").map_err(|_| ()).unwrap(), Fq::from_str("2825614731816557815225412156228666173831383093588979868493851366840372506315").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("7329082863975206882581081919461170442814649825411789773837117434173648601584").map_err(|_| ()).unwrap(), Fq::from_str("5180348996880381086795081621809250959135148058360471923036454708038250136600").map_err(|_| ()).unwrap(), Fq::from_str("4624622061638310709236430231388578596380377046606832730205643038500787334557").map_err(|_| ()).unwrap(), Fq::from_str("5304546910495849338546351160540497732865593813864779803460859431654853358340").map_err(|_| ()).unwrap(), Fq::from_str("3571359489158352685288273516666561349519419367196182175433016369605513511955").map_err(|_| ()).unwrap(), Fq::from_str("5709312927520532191687554001871301105905529279522595903967130804723854957820").map_err(|_| ()).unwrap(), Fq::from_str("7366486316821458107983173143814434159831765190702826324948222927269770816717").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("5233654585352624813407638537397807226928652120346714028342769151727893699327").map_err(|_| ()).unwrap(), Fq::from_str("185603810584831040910145966955984825695608102565502526623716188221215566339").map_err(|_| ()).unwrap(), Fq::from_str("3162150505327454394653368945400057372042633964254024335551309199365577734169").map_err(|_| ()).unwrap(), Fq::from_str("7302823677701409286756593017904335141152970388909073078892389778015293471084").map_err(|_| ()).unwrap(), Fq::from_str("5792828468757570165733388860635984484717441089790307514809200926639244357501").map_err(|_| ()).unwrap(), Fq::from_str("337196961175007424160849138323492834759981681249389623278091568473208726145").map_err(|_| ()).unwrap(), Fq::from_str("6532476656365069077985695592066985591611407773678090844920845869661790728635").map_err(|_| ()).unwrap()]), Matrix::new(1, 7, vec![Fq::from_str("591974908425765936009237241734941323627256550053973883199004838658865252279").map_err(|_| ()).unwrap(), Fq::from_str("2203332906052779152418481494350866767263282811690502934939569671652009638025").map_err(|_| ()).unwrap(), Fq::from_str("1879441701543400346585910122900901984903428399131693026457756745004883591950").map_err(|_| ()).unwrap(), Fq::from_str("8413835281132999135870465797954119754718546116888646532517168433884922949283").map_err(|_| ()).unwrap(), Fq::from_str("2532623531753300235535073800876012110115713687387112403872832110951915450813").map_err(|_| ()).unwrap(), Fq::from_str("5463927936086078298396594311349737473363583404692473092511607811895072393682").map_err(|_| ()).unwrap(), Fq::from_str("995802384113279216268392612242705530636879747323240252027594260573840283293").map_err(|_| ()).unwrap()])], -// w_hat_collection: vec![Matrix::new(7, 1, vec![Fq::from_str("1876547055428526760944183319729232562527977630034236406207829656870535386466").map_err(|_| ()).unwrap(), Fq::from_str("3940748816399906197982784971431388381308753023071896453036442279428124311489").map_err(|_| ()).unwrap(), Fq::from_str("2303035022571373752067861346940421781284336182314744680345972760704747974457").map_err(|_| ()).unwrap(), Fq::from_str("1279463901428540973371034081633567656269075656841524822414429311502637763217").map_err(|_| ()).unwrap(), Fq::from_str("4015548244483420901041399271588427721213714369164170211885285839177509288748").map_err(|_| ()).unwrap(), Fq::from_str("6436687627186659973728125302987332670769042150571978721992590536328654594667").map_err(|_| ()).unwrap(), Fq::from_str("4200578408690009903344287277240051351504934541076636878511372539610198442011").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("7506188221714107043776733278916930250111910520136945624831318658871097313992").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890102709218623488672684285930454").map_err(|_| ()).unwrap(), Fq::from_str("1535356681714249168045240897960281187522890788209829786897316313475061094982").map_err(|_| ()).unwrap(), Fq::from_str("5117855605714163893484136326534270625076302627366099289657714986643616618580").map_err(|_| ()).unwrap(), Fq::from_str("2066826302307643110830131978023455444742352984128617020823311345096204840493").map_err(|_| ()).unwrap(), Fq::from_str("7735835588637178500535636832030647521749949740595680849367240442898918223437").map_err(|_| ()).unwrap(), Fq::from_str("1732197281934024702410015372057753134641210120031602836499535391175025879992").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4691367638571316902360458299323081406319944075085869094283047544128965097245").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890100067942747205993134377700694").map_err(|_| ()).unwrap(), Fq::from_str("3838391704285622920113102244900702968807226970534684532047125900347329284655").map_err(|_| ()).unwrap(), Fq::from_str("5885533946571288477506756775514411218837748021450960338988386640059762345271").map_err(|_| ()).unwrap(), Fq::from_str("1889669762109845129901834951335730692335865585510842301499652689757663100384").map_err(|_| ()).unwrap(), Fq::from_str("767678340857124584022620448980140593761445394092527664623665177688863847331").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697687583932890105582445746383624538643981654").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("1876547055428526760944183319729232564996830558882921370085200635914161757298").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832549959187697664133979269129411577729222157622700660054").map_err(|_| ()).unwrap(), Fq::from_str("1535356681714249168045240897960281277282898449313996749172572207011231438662").map_err(|_| ()).unwrap(), Fq::from_str("5117855605714163893484136326534270447032358682750967335661760440047530741140").map_err(|_| ()).unwrap(), Fq::from_str("3602182984021892278875372875983736825998991950905668480067448289259195809907").map_err(|_| ()).unwrap(), Fq::from_str("5491852746131737408777207827319467214623371274702956479872978501098272951891").map_err(|_| ()).unwrap(), Fq::from_str("3031345243384543229217526901101068011131563559922350480013285743181620779586").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("7506188221714107043776755198137225704302301452691470069439610796715417563592").map_err(|_| ()).unwrap(), Fq::from_str("5629641166285580282832341763431709994046159475425538184112360852222253028694").map_err(|_| ()).unwrap(), Fq::from_str("5373748385999872088159140059265887620864401844143310311532857965386390688117").map_err(|_| ()).unwrap(), Fq::from_str("511785560571416389346832904844148528158598915245801513580781857931654793154").map_err(|_| ()).unwrap(), Fq::from_str("3897443884351555580424254613757089002584166097452827235892132265594076125342").map_err(|_| ()).unwrap(), Fq::from_str("944834881054922564949941060147858147922611614540486226224274701050365732592").map_err(|_| ()).unwrap(), Fq::from_str("2381771262659283965813997617132079911750436851670610825625736214110550870909").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4691367638765922348505423816524139023476165361506542695484181104583152617245").map_err(|_| ()).unwrap(), Fq::from_str("5629641164437155592816387068688323147753438089075869791870972562874505188694").map_err(|_| ()).unwrap(), Fq::from_str("3070713370503762439009237301418464522683398272130995948634360329226078006924").map_err(|_| ()).unwrap(), Fq::from_str("1279463887394362913071717151070872368042983174217235076478638512008472662885").map_err(|_| ()).unwrap(), Fq::from_str("7972044324171824104064096186155445045013212005033835133164006886912409668745").map_err(|_| ()).unwrap(), Fq::from_str("8444461740759459060495145807914439351449455218504439619235371916455879639041").map_err(|_| ()).unwrap(), Fq::from_str("5629641168296342910514168466499301086206267018139985757291273012023859172694").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("6972172146678521646521066467591452770941415852427147751321957654196549786534").map_err(|_| ()).unwrap(), Fq::from_str("2347145495980781705499203082181571214849452120480286352139140144970505477357").map_err(|_| ()).unwrap(), Fq::from_str("1047568412247903836923187409208220232812136970086040508140224750056493420925").map_err(|_| ()).unwrap(), Fq::from_str("4254698862624943857504879382001982149696583163008759658612088952586733163226").map_err(|_| ()).unwrap(), Fq::from_str("6315724568176583725358769253035722528512823976618810746178178949160582808225").map_err(|_| ()).unwrap(), Fq::from_str("1808433681143102398596263992246537263717393877526593947706580140042983806051").map_err(|_| ()).unwrap(), Fq::from_str("6843905112036599447213157812378286454152663935373616742808805940508695305177").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("1729565466604918195154479677200796809978101943095013566904965953994961504272").map_err(|_| ()).unwrap(), Fq::from_str("833944992161644786107658298864925414856158117984751724934838393992941514330").map_err(|_| ()).unwrap(), Fq::from_str("941357990821498245833242093841393955005889889527688615335027719936849380273").map_err(|_| ()).unwrap(), Fq::from_str("3253209925215144859995781254312415112132598506806876838621021573241936411228").map_err(|_| ()).unwrap(), Fq::from_str("3200399487414284172624656113953681437295262223130511720215402697409152108104").map_err(|_| ()).unwrap(), Fq::from_str("7575037554886651505716791436244547803360374756952605023249991880668693603906").map_err(|_| ()).unwrap(), Fq::from_str("3624213020401957045328050862151116881185438564867367062590678688829450989023").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("7840238751651172111315369018969012586573478175686246090882431772771293058969").map_err(|_| ()).unwrap(), Fq::from_str("7634051586755370991827493225306990673382943825574572126978367854745928059606").map_err(|_| ()).unwrap(), Fq::from_str("2305450724082239007555748390907063191255141221405967112821727903767276325969").map_err(|_| ()).unwrap(), Fq::from_str("1421278435935707711954065605572558083340539268830915540578626373104471532114").map_err(|_| ()).unwrap(), Fq::from_str("4719813761205374918095853450469223782954902447418206915711414459794089682848").map_err(|_| ()).unwrap(), Fq::from_str("6855769349651750698302136475949302764207280870728778064696355383564701893080").map_err(|_| ()).unwrap(), Fq::from_str("4385057805214878540075232250422029703370108714796245851266129166540079479345").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("5179691420155578585406107595071523172436905318526091719240735214486928072175").map_err(|_| ()).unwrap(), Fq::from_str("5372691709048573392973211037722420346553633341064829379048939858341364833644").map_err(|_| ()).unwrap(), Fq::from_str("6412480196738767123860661896935274531340568713622224785750041485021764730231").map_err(|_| ()).unwrap(), Fq::from_str("1876087993515156849197580045358369481490811946296405834995593030983210414024").map_err(|_| ()).unwrap(), Fq::from_str("1592314610138122947598448528315408251910836000489053235812566371448847239752").map_err(|_| ()).unwrap(), Fq::from_str("8062110400404906455161329394361574968761434187383684847371694238983093276486").map_err(|_| ()).unwrap(), Fq::from_str("1841867413146832890668993267315702904994180092227700185928827858142063575433").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4910632304406185473004058610353957462752801700756329602035494194172187281494").map_err(|_| ()).unwrap(), Fq::from_str("118391449438002460990304077187569321654231640788733944870191602291824494867").map_err(|_| ()).unwrap(), Fq::from_str("1513102093412661056661025570319663374641451139852041759617866411948786033234").map_err(|_| ()).unwrap(), Fq::from_str("6144666681799863152161805012227692428147095423027212442800675796813717186498").map_err(|_| ()).unwrap(), Fq::from_str("2581771351480587226498764208976386873377051431992415012778297532442748316168").map_err(|_| ()).unwrap(), Fq::from_str("3926916384010785158645453315811629925606996394996208190932284825957541429100").map_err(|_| ()).unwrap(), Fq::from_str("5787049311028145409943698751945095705096348906393912278149232817210124395136").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("2694546864817821170546433352762998120203753915754548284320719903681828218308").map_err(|_| ()).unwrap(), Fq::from_str("130981943402589242051027096717266657104612439970581678367300489610199718719").map_err(|_| ()).unwrap(), Fq::from_str("4776928240540258167706248126827500258919145325148334201458412666978683010782").map_err(|_| ()).unwrap(), Fq::from_str("4045432725957393234017489535469875038992605381438392185042200708474417370908").map_err(|_| ()).unwrap(), Fq::from_str("673714763111279057507323596434839870645185224265996472658627949025168210763").map_err(|_| ()).unwrap(), Fq::from_str("7493422158560634062692208084649709757062990990163728086145358223339978489284").map_err(|_| ()).unwrap(), Fq::from_str("8287878695162135331279729726965915160400130017415074650681865228016285102516").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4720791980586431679090467685511873181209162992218402917963914757979790369710").map_err(|_| ()).unwrap(), Fq::from_str("4678932308204327931969490167601179542933374435055101859351752284526243548707").map_err(|_| ()).unwrap(), Fq::from_str("3469751346316711443071121746828347796311287490344298484531510947618630292138").map_err(|_| ()).unwrap(), Fq::from_str("200349577196065912196957843459407175599426422635831565862013047540795832475").map_err(|_| ()).unwrap(), Fq::from_str("7395709417877530407579880809346613907852482476327971582355683191980541696765").map_err(|_| ()).unwrap(), Fq::from_str("554364021947203954692525123695668644862199005429734478709495476085331439258").map_err(|_| ()).unwrap(), Fq::from_str("6838805576060167543497530740136757904988146292234405926954502031399115866974").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("5851641428992944498225970191676011139927616628382479729715293600824089291924").map_err(|_| ()).unwrap(), Fq::from_str("7106532003787095148705386568560879842741551996552928948111492320079116096015").map_err(|_| ()).unwrap(), Fq::from_str("224501820112054270363380600227247039917499544972766439329884912842413414050").map_err(|_| ()).unwrap(), Fq::from_str("1127162082711690829045222078599691586821587330400944834069240790795699899068").map_err(|_| ()).unwrap(), Fq::from_str("5798822439126016187260713499025778075862089305814308478555434149304976901392").map_err(|_| ()).unwrap(), Fq::from_str("4209737562173919317621194630314244408012960707336110779235272838398593739028").map_err(|_| ()).unwrap(), Fq::from_str("2974234494097530292928176143106939971184117701227568930243967246458227551317").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("7772812954741869836637180023992453867931165204625440986065959296530160073215").map_err(|_| ()).unwrap(), Fq::from_str("4465944305445855244757940279729436266880665716788599493785440359721261721506").map_err(|_| ()).unwrap(), Fq::from_str("7065075864730562665936405311809470574554459892841370994127476218904330562654").map_err(|_| ()).unwrap(), Fq::from_str("2826258677922580420700412165088961267240983736469142652351925834777780680067").map_err(|_| ()).unwrap(), Fq::from_str("7095033285770044778643379560526017253450847368462382990132036819941366863511").map_err(|_| ()).unwrap(), Fq::from_str("2986127768027870011657973171881583071473857397012430712159793436707224411733").map_err(|_| ()).unwrap(), Fq::from_str("6340549894141248021660397979807074529771874236367321828946816037204437911362").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("195882422092013103373602239951432786240054223535314554365144234683903267917").map_err(|_| ()).unwrap(), Fq::from_str("5744661548076389989901764233438033940893474838392222207756754346502023963395").map_err(|_| ()).unwrap(), Fq::from_str("3391275279365955662042825734079749257572921952004778258232817473700256719782").map_err(|_| ()).unwrap(), Fq::from_str("5390756633253238752580139933234531698863653277792923229054615468401800582856").map_err(|_| ()).unwrap(), Fq::from_str("8077043215884919260035274879680443117912777494381243752506986540510599052133").map_err(|_| ()).unwrap(), Fq::from_str("5772964683743304509316738455191126313286622255913733148500235222630050675915").map_err(|_| ()).unwrap(), Fq::from_str("8410995765739590443396857464908600912424888535603351745109715613585818826754").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("8033300570689542909429729311799665636833898701625791361001886151598908149785").map_err(|_| ()).unwrap(), Fq::from_str("198887028740205765140811291119303598104175742644528804736142415737460662615").map_err(|_| ()).unwrap(), Fq::from_str("5773907049303743368959522427927434190003227864404283801392623065399949263008").map_err(|_| ()).unwrap(), Fq::from_str("7377923111711972976446685745675799818076285218032504430885934723620618949737").map_err(|_| ()).unwrap(), Fq::from_str("1990885066843671740853435967237164068311713610738317005284480417776696273973").map_err(|_| ()).unwrap(), Fq::from_str("1408060542912412797659601618849635411029239485868208213522765188130143030479").map_err(|_| ()).unwrap(), Fq::from_str("4272667495053194768941907841266337914537387719689882877192208470471802028072").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("1280541705404676393712433620141752742891865073604214841408428084128640715310").map_err(|_| ()).unwrap(), Fq::from_str("4365792738234205776051640669852060282605657818112750212449979792150698660021").map_err(|_| ()).unwrap(), Fq::from_str("2169654389356134963974782157472640896560661520459721934413850449529131221539").map_err(|_| ()).unwrap(), Fq::from_str("6953155509425645347661530699343912834303360066102449102583284522213697593811").map_err(|_| ()).unwrap(), Fq::from_str("5030756583598839172173627735755230335972342522521050163199401412566668421661").map_err(|_| ()).unwrap(), Fq::from_str("1174984193043137818193184645792991272490089670987619264898900569369186933996").map_err(|_| ()).unwrap(), Fq::from_str("7813247648535153376411270823539386289731187256077276187123568807942819337500").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("8045370883343592906319034832204469328968814009139709780825677784970470346630").map_err(|_| ()).unwrap(), Fq::from_str("3432891366645624853283914793139251546667602864231526550938382005461455614402").map_err(|_| ()).unwrap(), Fq::from_str("6943404575808555799702230502575082290739387233611384394314646314207131998755").map_err(|_| ()).unwrap(), Fq::from_str("2968252319173345876070553339689063753959519154738465866411690585919511517205").map_err(|_| ()).unwrap(), Fq::from_str("8155590636117151624723446019047124652607083719080945681199928612911914849400").map_err(|_| ()).unwrap(), Fq::from_str("6103919022579245252160198203656503024087928320941264640496017641292774845596").map_err(|_| ()).unwrap(), Fq::from_str("3963579110802215362848165655448465029470422864130708419310804850975765343313").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("208474123992408329007049099311695013855253221307133385207401001480901476151").map_err(|_| ()).unwrap(), Fq::from_str("3862036979998462428666425073670485953395791661453978943314661816332483084587").map_err(|_| ()).unwrap(), Fq::from_str("1860054712307019107151568851592732436986008083846154412662931648931405134295").map_err(|_| ()).unwrap(), Fq::from_str("7727501830330413312796055332659721679160822282912440621974577136455275367087").map_err(|_| ()).unwrap(), Fq::from_str("6576637429949023546228071485356312229506003314221597818677555821593564395192").map_err(|_| ()).unwrap(), Fq::from_str("3609487875239270810461077597722386101400168010223784364498721835383576610682").map_err(|_| ()).unwrap(), Fq::from_str("213457203808643633815104509907945709172481625382071750024507572599570798670").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("6431536127143882335643669716124729377553236599827642573468968751633695321743").map_err(|_| ()).unwrap(), Fq::from_str("7948748758408944439632399787810057973890333576166338269165287179094153710985").map_err(|_| ()).unwrap(), Fq::from_str("3643297833260159806732278250516499491379871897989670247070532201598000364129").map_err(|_| ()).unwrap(), Fq::from_str("3108770067264661975454522377905005677646891740631641166611468183109876429446").map_err(|_| ()).unwrap(), Fq::from_str("3659393035979706890154341166026954313167709844636842673138470367277606392492").map_err(|_| ()).unwrap(), Fq::from_str("4137549957447539929454795255423720438610733304644394040174947213394186139056").map_err(|_| ()).unwrap(), Fq::from_str("6245068119879337536401896390443737993562290722882889276353649888327283077907").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("1372005354715420535202493632127767974500947270944223538169627561226094071477").map_err(|_| ()).unwrap(), Fq::from_str("76117184258313660192786771042509509673890216216208183502539326831168477775").map_err(|_| ()).unwrap(), Fq::from_str("5665114254315591950564981477518610259459923596771612852566518876915038978034").map_err(|_| ()).unwrap(), Fq::from_str("7644790547456375147805321271568769250108391406619334054083690222378526082081").map_err(|_| ()).unwrap(), Fq::from_str("3715940602022552339242883357774975732777012501020641148216096654330326129756").map_err(|_| ()).unwrap(), Fq::from_str("2575510198638140464667791371138243953360289031989395447868121477240993561243").map_err(|_| ()).unwrap(), Fq::from_str("7771043163864483906117395806038464308962844971301098522283673146334075988243").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("7511608318142726670087065305750007700921745161598055138428567817400952878451").map_err(|_| ()).unwrap(), Fq::from_str("17642875791981381489885329598606849204411780884655599671693936555312813879").map_err(|_| ()).unwrap(), Fq::from_str("6180573009727882520553822636659239786453734655656434720374546424442378600980").map_err(|_| ()).unwrap(), Fq::from_str("690524128603773153648197393085258757067241114046690794737006302047404566693").map_err(|_| ()).unwrap(), Fq::from_str("5774711182959316157585498117763265701656350858063342519715224625900143562341").map_err(|_| ()).unwrap(), Fq::from_str("6717155113726666935118443690867736171109457779116852415386382728363872905066").map_err(|_| ()).unwrap(), Fq::from_str("7408704831345764845214264234026801997427335973510616930254381297980968056629").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4565256442346215774853772891913032281212779361339706061230721821018813326426").map_err(|_| ()).unwrap(), Fq::from_str("932768097413820357711546811379894043449519611138770755121142047881435819223").map_err(|_| ()).unwrap(), Fq::from_str("4582011657923209493259608444664710734944370495394739050752111203971168684120").map_err(|_| ()).unwrap(), Fq::from_str("7201187863209331527279944800204443410932577259849138036545489553565494961524").map_err(|_| ()).unwrap(), Fq::from_str("7429940763809531036239027016563518056485799281135049616686357360048025381476").map_err(|_| ()).unwrap(), Fq::from_str("5880092413258951489491829990144250509075714129271728738681740676628721314946").map_err(|_| ()).unwrap(), Fq::from_str("6635019251055222825513504926526960006567567868336673980003910633071737142110").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("2676767917380723618121069549278840020950830533956777842819084976061384007488").map_err(|_| ()).unwrap(), Fq::from_str("7335850977875350919356878288231490448051704971333524322968310651526743176649").map_err(|_| ()).unwrap(), Fq::from_str("5489275163586778597237393898027810529305453946733624560008563082558329672459").map_err(|_| ()).unwrap(), Fq::from_str("7532825360330372649519441662245099012227235660983284423975518417807941768103").map_err(|_| ()).unwrap(), Fq::from_str("6808696547028943210340303387500091993307571038348277524438851144542738932361").map_err(|_| ()).unwrap(), Fq::from_str("652525946773627791668052817505802500179905662466782623712932464954635097840").map_err(|_| ()).unwrap(), Fq::from_str("3028776668570346144076321985668953848899200404134186029842769031628265500993").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("2086717537168567595874528507628751697655869205210268390911719632623783724756").map_err(|_| ()).unwrap(), Fq::from_str("6369128981308628045054712785020425567379558664203371354008928504176254805894").map_err(|_| ()).unwrap(), Fq::from_str("902925663446395838458492495612352179135802043682117172546005917481995601052").map_err(|_| ()).unwrap(), Fq::from_str("756249192600122628843112783551733107290231495487895821367221900241545813550").map_err(|_| ()).unwrap(), Fq::from_str("3901946961785946014178360358513487464102920573692390346789637269723252566620").map_err(|_| ()).unwrap(), Fq::from_str("2084372406648728595461083720076781426193443287451032762661871433214858962627").map_err(|_| ()).unwrap(), Fq::from_str("203189105281363800138416804513711380834759656706287615359891697265414391592").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4571887597600061581636032265491360720832674055634258856751594627684293652663").map_err(|_| ()).unwrap(), Fq::from_str("3615517452247810838782256761448803817153217363669237369222855920322688432339").map_err(|_| ()).unwrap(), Fq::from_str("4116906712510784840149164032627379024964522136734431654030117362519110272406").map_err(|_| ()).unwrap(), Fq::from_str("7607250616054587482485157059974464806353753251474928972794845294247904194089").map_err(|_| ()).unwrap(), Fq::from_str("7645940000598066524988684211467539145690814830286920284055490119050574537680").map_err(|_| ()).unwrap(), Fq::from_str("2458144132282877388043045515095804621102154588266628053185217533284091997304").map_err(|_| ()).unwrap(), Fq::from_str("701118472179862917499550629534733263230436874833193439017731526990562964530").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("1077684492371111675934642649265884162676191599378783970366318737176363027192").map_err(|_| ()).unwrap(), Fq::from_str("6602875819143041892796615556605356908841160959329536598320512527551679789184").map_err(|_| ()).unwrap(), Fq::from_str("4962276641984552359079117089593963363296330043665029073179719871492465330621").map_err(|_| ()).unwrap(), Fq::from_str("4572594765283134638692619207550610826706659883081830876150676118444907651504").map_err(|_| ()).unwrap(), Fq::from_str("3576830796935768793629943514300990893488107714114106422530462297615120001803").map_err(|_| ()).unwrap(), Fq::from_str("4288217861539662722265938936026331499074523352723546606789797244790174019846").map_err(|_| ()).unwrap(), Fq::from_str("2753309121719585215636067389906767798495485248030815979016906082631596282300").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("3562330150389516353503071786623663120010722153569280423040902937353054570806").map_err(|_| ()).unwrap(), Fq::from_str("2886333704961071712871884327463180140859867702302335094155198888968897500634").map_err(|_| ()).unwrap(), Fq::from_str("7814881876898698126542491363119678800703671912971596677216786884230727364370").map_err(|_| ()).unwrap(), Fq::from_str("5977402345687747326675770766035691314577396515250829650189027830840251953938").map_err(|_| ()).unwrap(), Fq::from_str("1907332004071032020391007511261490294277591182367964017779706045054753304049").map_err(|_| ()).unwrap(), Fq::from_str("7597941001877662280813412206939632407616609340329339016577843815269850505887").map_err(|_| ()).unwrap(), Fq::from_str("3172571512946701860238805740931759804386612798898170576670888030370850064868").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4828918993861831819965590131669175698286098122597383097509451147209578460795").map_err(|_| ()).unwrap(), Fq::from_str("2398999624151656091311166758775063629882842912863357159645171755504082492332").map_err(|_| ()).unwrap(), Fq::from_str("1857507650251243830302196135774786963822939109169258292691951914546285338594").map_err(|_| ()).unwrap(), Fq::from_str("4869001947823583054618611464516298078230454774997288316889205611554943257556").map_err(|_| ()).unwrap(), Fq::from_str("6879147386315389121984906754150953309217404731469506210864659010696503841164").map_err(|_| ()).unwrap(), Fq::from_str("8232593534617146192159176270665904261385649930979502834219059864096961798932").map_err(|_| ()).unwrap(), Fq::from_str("1382505528006092444278356277274570839872020250731101098345024763734206494637").map_err(|_| ()).unwrap()]), Matrix::new(7, 1, vec![Fq::from_str("4785698396222281748435513577476884856184575759142443962329689696420127159663").map_err(|_| ()).unwrap(), Fq::from_str("2063995161031395306645093700799473170679690097893142800516315229929439294551").map_err(|_| ()).unwrap(), Fq::from_str("205654954383710933270456828880992684613259878453300057831437368876707573248").map_err(|_| ()).unwrap(), Fq::from_str("7399910865345063292931400288535539953875220063541964509270851100757831806297").map_err(|_| ()).unwrap(), Fq::from_str("2595678523883848790422648423438509719566910824151068669142015641736384514534").map_err(|_| ()).unwrap(), Fq::from_str("7207370490454638207106812603067572089981569457164846175794006813719684799678").map_err(|_| ()).unwrap(), Fq::from_str("6932010022199487662466309052117135454573992130730154415887157502747011442251").map_err(|_| ()).unwrap()])], +// M_hat: SquareMatrix::new(7, 7, vec![Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([13217949757478296855, 18361600593446830079, 18223280994163007859, 471593720435477782])]), +// v: Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214])]), +// w: Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214])]), +// M_prime: SquareMatrix::new(8, 8, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([13217949757478296855, 18361600593446830079, 18223280994163007859, 471593720435477782])]), +// M_doubleprime: SquareMatrix::new(8, 8, vec![Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([5469465372454405746, 11693688927749785195, 9284229770381589387, 263916402201309764]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8025142443496737775, 1611073224873590596, 1595200312703520851, 268362793599128279]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2646197433325367530, 3327161674116363870, 17523969835882673765, 1224872920276084181]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3531022552160069605, 1044916798369741293, 13484540382795405112, 975392012720575741]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3532672362950129848, 13232567668052949956, 3949082925084889589, 1169300250855119928]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17405909644706202533, 9068195655028130334, 4993737853698066182, 760630245260613434]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10760096219897954109, 15819961273994906871, 12000866060961275644, 494051747708222359]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), +// M_inverse: SquareMatrix::new(8, 8, vec![Fq::from_montgomery_limbs([13084505025340709209, 6658414703856389670, 1229628874832604981, 544699057731131701]), Fq::from_montgomery_limbs([9271504314401065906, 16573554673674659136, 11112785265390720139, 695302674280213266]), Fq::from_montgomery_limbs([17755863455076530065, 714019269282123475, 2516777105896065646, 758853547373067215]), Fq::from_montgomery_limbs([18230149865394473823, 17597653080170983126, 8526134725373349310, 254065511080298010]), Fq::from_montgomery_limbs([12943062609168455850, 4036522178185995734, 13999395164871811986, 158263095242933732]), Fq::from_montgomery_limbs([9727917081763370379, 12523860206965601712, 6438415234309761598, 578292727069385307]), Fq::from_montgomery_limbs([4722164372208948539, 6191995659471889704, 9488304077820150497, 383493821809394045]), Fq::from_montgomery_limbs([6308417298426862088, 11443735935349473316, 5741617995111411363, 1072746374115513684]), Fq::from_montgomery_limbs([9271504314401065906, 16573554673674659136, 11112785265390720139, 695302674280213266]), Fq::from_montgomery_limbs([6461820328084053982, 3713881430924031860, 2384237101556363354, 925204973024161309]), Fq::from_montgomery_limbs([11045222492845432763, 12330616953129622165, 6721295490146207098, 737212261478666249]), Fq::from_montgomery_limbs([17374877272010299584, 12910097275334870758, 11030123918921243889, 999547114982057960]), Fq::from_montgomery_limbs([2710620113890028948, 7440189668352585633, 11434649235474493285, 24415954842353912]), Fq::from_montgomery_limbs([7017296967873341431, 5083670538613016079, 13450510072544819929, 553876772227031394]), Fq::from_montgomery_limbs([13756252569614172144, 10114182252140374927, 8424160399132869901, 370135544443278065]), Fq::from_montgomery_limbs([8192890567029291618, 6189339163642963502, 10515708329663122411, 718287917303790275]), Fq::from_montgomery_limbs([17755863455076530065, 714019269282123475, 2516777105896065646, 758853547373067215]), Fq::from_montgomery_limbs([11045222492845432763, 12330616953129622165, 6721295490146207098, 737212261478666249]), Fq::from_montgomery_limbs([1107303498763469844, 5522738209527454529, 7444362964372879018, 94326278492989394]), Fq::from_montgomery_limbs([17301615911438019293, 6207101570101901683, 6912719408314906153, 670136716188149414]), Fq::from_montgomery_limbs([8052773691804060961, 7894827066734284032, 17737200459541160653, 1344927881702280038]), Fq::from_montgomery_limbs([3579877764578944756, 17358359975581377230, 2902328015395623063, 1076553286270705854]), Fq::from_montgomery_limbs([7922495546740583511, 13377932406425725078, 312087136472518954, 724215661521432074]), Fq::from_montgomery_limbs([14304988956035390969, 2978747834443270582, 211153190861140083, 1101825800236420991]), Fq::from_montgomery_limbs([18230149865394473823, 17597653080170983126, 8526134725373349310, 254065511080298010]), Fq::from_montgomery_limbs([17374877272010299584, 12910097275334870758, 11030123918921243889, 999547114982057960]), Fq::from_montgomery_limbs([17301615911438019293, 6207101570101901683, 6912719408314906153, 670136716188149414]), Fq::from_montgomery_limbs([11280947822772662719, 3998258523005585690, 3083179120639342004, 919842772758514385]), Fq::from_montgomery_limbs([9288629788793402586, 2259376874925369448, 13217169487415398853, 539099117435770765]), Fq::from_montgomery_limbs([8430375547150652021, 1001249403497996831, 16789953243695164761, 1344355087100203329]), Fq::from_montgomery_limbs([527596723520651020, 15187839531048996200, 6255568353483246533, 170911683896477388]), Fq::from_montgomery_limbs([1734565667097520919, 12020388067710193448, 6095663732563761512, 1138214739842689620]), Fq::from_montgomery_limbs([12943062609168455850, 4036522178185995734, 13999395164871811986, 158263095242933732]), Fq::from_montgomery_limbs([2710620113890028948, 7440189668352585633, 11434649235474493285, 24415954842353912]), Fq::from_montgomery_limbs([8052773691804060961, 7894827066734284032, 17737200459541160653, 1344927881702280038]), Fq::from_montgomery_limbs([9288629788793402586, 2259376874925369448, 13217169487415398853, 539099117435770765]), Fq::from_montgomery_limbs([11829305752964125757, 10778200385642703226, 2095381984842221696, 365296429444826263]), Fq::from_montgomery_limbs([9209237328018148115, 9013177660724622161, 13411670809827118984, 1159740245409298491]), Fq::from_montgomery_limbs([1786760175787716883, 16585118128488698423, 3661827234912273881, 1175179421357105610]), Fq::from_montgomery_limbs([6997506992288193640, 3314349379260916067, 10669743096907430976, 828027530724672872]), Fq::from_montgomery_limbs([9727917081763370379, 12523860206965601712, 6438415234309761598, 578292727069385307]), Fq::from_montgomery_limbs([7017296967873341431, 5083670538613016079, 13450510072544819929, 553876772227031394]), Fq::from_montgomery_limbs([3579877764578944756, 17358359975581377230, 2902328015395623063, 1076553286270705854]), Fq::from_montgomery_limbs([8430375547150652021, 1001249403497996831, 16789953243695164761, 1344355087100203329]), Fq::from_montgomery_limbs([9209237328018148115, 9013177660724622161, 13411670809827118984, 1159740245409298491]), Fq::from_montgomery_limbs([2800053360411677182, 7739112841912438666, 4458443078052365313, 1221561517743072277]), Fq::from_montgomery_limbs([5714397546912390046, 7204578223640664713, 3369806468691410388, 19539807714888073]), Fq::from_montgomery_limbs([7912928165080095595, 10691173171385779887, 7900069818404182519, 558654216499734169]), Fq::from_montgomery_limbs([4722164372208948539, 6191995659471889704, 9488304077820150497, 383493821809394045]), Fq::from_montgomery_limbs([13756252569614172144, 10114182252140374927, 8424160399132869901, 370135544443278065]), Fq::from_montgomery_limbs([7922495546740583511, 13377932406425725078, 312087136472518954, 724215661521432074]), Fq::from_montgomery_limbs([527596723520651020, 15187839531048996200, 6255568353483246533, 170911683896477388]), Fq::from_montgomery_limbs([1786760175787716883, 16585118128488698423, 3661827234912273881, 1175179421357105610]), Fq::from_montgomery_limbs([5714397546912390046, 7204578223640664713, 3369806468691410388, 19539807714888073]), Fq::from_montgomery_limbs([11467623733094325177, 12601944683740404995, 14270804009154313170, 1283543454792166291]), Fq::from_montgomery_limbs([1591478553039085540, 13629203225225281079, 9223729349286412660, 541375501705678927]), Fq::from_montgomery_limbs([6308417298426862088, 11443735935349473316, 5741617995111411363, 1072746374115513684]), Fq::from_montgomery_limbs([8192890567029291618, 6189339163642963502, 10515708329663122411, 718287917303790275]), Fq::from_montgomery_limbs([14304988956035390969, 2978747834443270582, 211153190861140083, 1101825800236420991]), Fq::from_montgomery_limbs([1734565667097520919, 12020388067710193448, 6095663732563761512, 1138214739842689620]), Fq::from_montgomery_limbs([6997506992288193640, 3314349379260916067, 10669743096907430976, 828027530724672872]), Fq::from_montgomery_limbs([7912928165080095595, 10691173171385779887, 7900069818404182519, 558654216499734169]), Fq::from_montgomery_limbs([1591478553039085540, 13629203225225281079, 9223729349286412660, 541375501705678927]), Fq::from_montgomery_limbs([1183879673177082740, 4195985459140120089, 6602546398975040286, 268356784116832629])]), +// M_hat_inverse: SquareMatrix::new(7, 7, vec![Fq::from_montgomery_limbs([4596204885914937926, 7838695242625897787, 3035134948628881865, 1207227057562625259]), Fq::from_montgomery_limbs([15896440128761118173, 15649465122428497798, 4384954020081155217, 913236075158308182]), Fq::from_montgomery_limbs([2335397575999068166, 14422783505571319241, 2719190544357073120, 274885737548821162]), Fq::from_montgomery_limbs([9009029437947626511, 7346990291023997455, 3414440920242711508, 50729493538167678]), Fq::from_montgomery_limbs([1147572841630042462, 8929633407603160962, 14641836547291178689, 426104246454882272]), Fq::from_montgomery_limbs([17053865508971679549, 2198382506890441430, 11312636819879946010, 1106661992673439325]), Fq::from_montgomery_limbs([13854198271768011224, 4053309739918946052, 18433076019880982368, 615216866081782140]), Fq::from_montgomery_limbs([15896440128761118173, 15649465122428497798, 4384954020081155217, 913236075158308182]), Fq::from_montgomery_limbs([4761711418629517518, 591743220415883789, 2347216482122737487, 541885199414988935]), Fq::from_montgomery_limbs([16049706050976647208, 9176322874162797755, 12242590547654900654, 61012554895502211]), Fq::from_montgomery_limbs([10907149703911289876, 345335516406280141, 13671249158696272740, 1076200797284812494]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([7820919546658569809, 8474571377527450081, 15463257988737541409, 600187776405677822]), Fq::from_montgomery_limbs([17765856891579054878, 11653192174908829654, 4966200605019140816, 13151716642854399]), Fq::from_montgomery_limbs([2335397575999068166, 14422783505571319241, 2719190544357073120, 274885737548821162]), Fq::from_montgomery_limbs([16049706050976647208, 9176322874162797755, 12242590547654900654, 61012554895502211]), Fq::from_montgomery_limbs([13442108051579804680, 3187031622749351601, 18435466452818364440, 257424390549798158]), Fq::from_montgomery_limbs([14787872399840322022, 11612292071578382904, 2915446897265489403, 1027394734812832541]), Fq::from_montgomery_limbs([14650186278276933856, 11736505343490130034, 4478509448304020774, 790137565622286814]), Fq::from_montgomery_limbs([16227186307902919639, 13050765287152844350, 6672057872444298207, 1120660629979522345]), Fq::from_montgomery_limbs([17280730943809781377, 2101938472365641700, 2221542087098170284, 682975842437066220]), Fq::from_montgomery_limbs([9009029437947626511, 7346990291023997455, 3414440920242711508, 50729493538167678]), Fq::from_montgomery_limbs([10907149703911289876, 345335516406280141, 13671249158696272740, 1076200797284812494]), Fq::from_montgomery_limbs([14787872399840322022, 11612292071578382904, 2915446897265489403, 1027394734812832541]), Fq::from_montgomery_limbs([9754754145024164416, 9500194995930094065, 4605218223030367360, 489015282389927384]), Fq::from_montgomery_limbs([11235823697266068713, 9767911161281654263, 15004902496107301847, 1252504438181231825]), Fq::from_montgomery_limbs([773466991163756584, 6984379341355406564, 2865211391772182450, 1128797324971138943]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([1147572841630042462, 8929633407603160962, 14641836547291178689, 426104246454882272]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([14650186278276933856, 11736505343490130034, 4478509448304020774, 790137565622286814]), Fq::from_montgomery_limbs([11235823697266068713, 9767911161281654263, 15004902496107301847, 1252504438181231825]), Fq::from_montgomery_limbs([10750604789646168140, 372497979918419381, 10429606583776526343, 928966821232337907]), Fq::from_montgomery_limbs([10962493869149920375, 10887885654637674355, 384224715829329873, 165837155970255258]), Fq::from_montgomery_limbs([2645295168975782308, 13863838601458690618, 7409022743292405220, 617686796815916414]), Fq::from_montgomery_limbs([17053865508971679549, 2198382506890441430, 11312636819879946010, 1106661992673439325]), Fq::from_montgomery_limbs([7820919546658569809, 8474571377527450081, 15463257988737541409, 600187776405677822]), Fq::from_montgomery_limbs([16227186307902919639, 13050765287152844350, 6672057872444298207, 1120660629979522345]), Fq::from_montgomery_limbs([773466991163756584, 6984379341355406564, 2865211391772182450, 1128797324971138943]), Fq::from_montgomery_limbs([10962493869149920375, 10887885654637674355, 384224715829329873, 165837155970255258]), Fq::from_montgomery_limbs([17704196732594477900, 7529737242141985421, 3056083190610322131, 537754595320396000]), Fq::from_montgomery_limbs([4588045927327100104, 15273424236288740466, 3730020508107780990, 1184499396891674504]), Fq::from_montgomery_limbs([13854198271768011224, 4053309739918946052, 18433076019880982368, 615216866081782140]), Fq::from_montgomery_limbs([17765856891579054878, 11653192174908829654, 4966200605019140816, 13151716642854399]), Fq::from_montgomery_limbs([17280730943809781377, 2101938472365641700, 2221542087098170284, 682975842437066220]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([2645295168975782308, 13863838601458690618, 7409022743292405220, 617686796815916414]), Fq::from_montgomery_limbs([4588045927327100104, 15273424236288740466, 3730020508107780990, 1184499396891674504]), Fq::from_montgomery_limbs([5513671693009890019, 13840477803572862779, 13148892977164251883, 530785029804846654])]), +// M_00: Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), +// M_i: Matrix::new(8, 8, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6320288599439722802, 17139790906886685752, 15622446705354855394, 1250967766698858445]), Fq::from_montgomery_limbs([12907953951183108118, 570406863259453574, 9479663564103955646, 1023356057988386223]), Fq::from_montgomery_limbs([5445632916888334837, 1254961675994290676, 17739625680446876718, 887995330051968477]), Fq::from_montgomery_limbs([6322290143919737275, 6221802074515073157, 3956268074861890555, 1230594881276209560]), Fq::from_montgomery_limbs([6707360385690721071, 168555159922046132, 3944622502497320499, 871144945884010465]), Fq::from_montgomery_limbs([2037533433720590943, 11084683233172165964, 9053730132862546054, 793120143512682509]), Fq::from_montgomery_limbs([16034329588701802957, 3903236010590312092, 9048724434495743556, 974216030141738060]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12907953951183108118, 570406863259453574, 9479663564103955646, 1023356057988386223]), Fq::from_montgomery_limbs([2630356400630794821, 484400404306129097, 10294032504232056871, 1245743613753800727]), Fq::from_montgomery_limbs([7020374536790409354, 11449249974296852948, 11812715459389350230, 761793057268134936]), Fq::from_montgomery_limbs([14832891855204883256, 1120380609975889545, 13112310496604860424, 265468754987956357]), Fq::from_montgomery_limbs([1471871698735710625, 5066062283984961905, 18437666505161167766, 732132698348695885]), Fq::from_montgomery_limbs([12165164801578981607, 2595888614156384905, 3065973630931260883, 580278735590489736]), Fq::from_montgomery_limbs([14321853632102951979, 5605761176730605396, 4630454347263185176, 122758557320262262]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5445632916888334837, 1254961675994290676, 17739625680446876718, 887995330051968477]), Fq::from_montgomery_limbs([7020374536790409354, 11449249974296852948, 11812715459389350230, 761793057268134936]), Fq::from_montgomery_limbs([8776438364931459725, 12817858402105398175, 11110959846851041399, 66365362687656724]), Fq::from_montgomery_limbs([8240747731577468633, 14565407531273622630, 3117214821926093855, 377503066268731506]), Fq::from_montgomery_limbs([3910521513192788403, 13982250796740762630, 7488541789654977578, 950543461716681145]), Fq::from_montgomery_limbs([13037154073613592925, 5935342861935913439, 15852552537899162249, 940304910644322576]), Fq::from_montgomery_limbs([6931234819087160937, 3778580043557980929, 15772931149205513556, 42782763261291533]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6322290143919737275, 6221802074515073157, 3956268074861890555, 1230594881276209560]), Fq::from_montgomery_limbs([14832891855204883256, 1120380609975889545, 13112310496604860424, 265468754987956357]), Fq::from_montgomery_limbs([8240747731577468633, 14565407531273622630, 3117214821926093855, 377503066268731506]), Fq::from_montgomery_limbs([11125067532471981344, 14191984257965181085, 12061981722855456559, 593208493053362841]), Fq::from_montgomery_limbs([12343763401003110605, 14101666204297852634, 12890733422632852105, 917529488625337921]), Fq::from_montgomery_limbs([12402063032118952752, 2700777936756282138, 16216549649819784559, 1155661828697936045]), Fq::from_montgomery_limbs([2194969812170857806, 13161078840371575175, 5264735936454844546, 101144700881461918]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6707360385690721071, 168555159922046132, 3944622502497320499, 871144945884010465]), Fq::from_montgomery_limbs([1471871698735710625, 5066062283984961905, 18437666505161167766, 732132698348695885]), Fq::from_montgomery_limbs([3910521513192788403, 13982250796740762630, 7488541789654977578, 950543461716681145]), Fq::from_montgomery_limbs([12343763401003110605, 14101666204297852634, 12890733422632852105, 917529488625337921]), Fq::from_montgomery_limbs([11359111242441949022, 11240352269459571893, 17263815313749644065, 781240072875924051]), Fq::from_montgomery_limbs([16712698548631210778, 8113828394758785535, 9984182942939561022, 781254146059533921]), Fq::from_montgomery_limbs([7404478796369705144, 1939616247903098428, 2043282094878258870, 67588237262069794]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2037533433720590943, 11084683233172165964, 9053730132862546054, 793120143512682509]), Fq::from_montgomery_limbs([12165164801578981607, 2595888614156384905, 3065973630931260883, 580278735590489736]), Fq::from_montgomery_limbs([13037154073613592925, 5935342861935913439, 15852552537899162249, 940304910644322576]), Fq::from_montgomery_limbs([12402063032118952752, 2700777936756282138, 16216549649819784559, 1155661828697936045]), Fq::from_montgomery_limbs([16712698548631210778, 8113828394758785535, 9984182942939561022, 781254146059533921]), Fq::from_montgomery_limbs([6959694198409880686, 10513484520296585955, 17245503495642767610, 326963768321955511]), Fq::from_montgomery_limbs([10751863449412314814, 12531617507536929183, 2333159255918151628, 108101348738232165]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16034329588701802957, 3903236010590312092, 9048724434495743556, 974216030141738060]), Fq::from_montgomery_limbs([14321853632102951979, 5605761176730605396, 4630454347263185176, 122758557320262262]), Fq::from_montgomery_limbs([6931234819087160937, 3778580043557980929, 15772931149205513556, 42782763261291533]), Fq::from_montgomery_limbs([2194969812170857806, 13161078840371575175, 5264735936454844546, 101144700881461918]), Fq::from_montgomery_limbs([7404478796369705144, 1939616247903098428, 2043282094878258870, 67588237262069794]), Fq::from_montgomery_limbs([10751863449412314814, 12531617507536929183, 2333159255918151628, 108101348738232165]), Fq::from_montgomery_limbs([8242539079403140188, 8061347952042345076, 11707135840504604934, 914785475508666052])]), +// v_collection: vec![Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([18366132767879360967, 5431013863214313926, 3325023203464288028, 747241129062195048]), Fq::from_montgomery_limbs([4861545468195100803, 11791803721085820360, 16861242526837808182, 587224779081284519]), Fq::from_montgomery_limbs([6038434302262732315, 17199494462234427620, 17847977008226730647, 613398622514363430]), Fq::from_montgomery_limbs([8422783269805610096, 16656220536572751252, 7918639979705401643, 170910085608382473]), Fq::from_montgomery_limbs([18349346982789927355, 8017591337915184637, 18372658176979362927, 927323834744911125]), Fq::from_montgomery_limbs([6098144161467281354, 2162126959782930019, 8016715582812993181, 87916415604842323]), Fq::from_montgomery_limbs([14926888907449900570, 16034226105739794058, 8242495446855270900, 170857479056428767])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([13761299995988853307, 10330765076738035315, 13655052507848964233, 121839220114831784]), Fq::from_montgomery_limbs([15369322242721768225, 7050142047224256972, 12643665775034470999, 1102328692521833676]), Fq::from_montgomery_limbs([10555474781715655116, 6656109843697517764, 16567476834724252290, 1315407115111807184]), Fq::from_montgomery_limbs([15635518385029844173, 579774923863089338, 4907175580968184975, 679471495325209728]), Fq::from_montgomery_limbs([11185461100085345821, 8221939874744266357, 12287775310123057539, 1019299127883999231]), Fq::from_montgomery_limbs([586274284242963056, 8310909834705600558, 3054222778649762639, 763190023338919332]), Fq::from_montgomery_limbs([6717490082866871699, 9561189803595277803, 2358146706687598339, 229707033421591253])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([9862704231385218313, 13914100249743202263, 10014223727046890158, 679200801234608014]), Fq::from_montgomery_limbs([16286005160576575401, 2766108936000922095, 13859049965904094985, 720362228683248654]), Fq::from_montgomery_limbs([18028696975939559798, 6945291324150110288, 3594371327059432745, 1256526022736975448]), Fq::from_montgomery_limbs([13724722228213474447, 17954541567374385206, 10748596771783277924, 116970063643881223]), Fq::from_montgomery_limbs([17627786090808150672, 7901620020601608720, 1877160764958626418, 756288000881176875]), Fq::from_montgomery_limbs([14537377980409294015, 18005737005152562388, 9571375812741383887, 59753059053707643]), Fq::from_montgomery_limbs([4228748937594043872, 11086846199995865064, 15359245871481193897, 1099589394616459299])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([6835681309479739469, 2522595035308448012, 13579423836020142879, 321430679545810677]), Fq::from_montgomery_limbs([8928134061485321773, 14157720579697729134, 10344780082168020995, 97202987142506800]), Fq::from_montgomery_limbs([3126697640027307204, 1153410184564297189, 4809813821719177551, 994774295722128937]), Fq::from_montgomery_limbs([3918576597698600036, 13183810862438807325, 15214887128855617985, 279159001700097111]), Fq::from_montgomery_limbs([2830967354854515654, 17469509170635724421, 8035672669498122237, 267629026497518109]), Fq::from_montgomery_limbs([13871567487914888086, 5246409741722402492, 16832389611931438025, 1295010963726258350]), Fq::from_montgomery_limbs([17057934674164606699, 6421519839681476555, 2956724044796119398, 327825682992218753])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([4795884052041907920, 14375534011696101577, 2427060550596560456, 393919458849239754]), Fq::from_montgomery_limbs([15372002461943753964, 11342165919824154367, 11980800855746001270, 994521975576249810]), Fq::from_montgomery_limbs([3093026885592381242, 16909708896875106142, 9191689902351332536, 192118286974103755]), Fq::from_montgomery_limbs([2545301077237922815, 15144706238324940883, 6113286606593174468, 372600161316484359]), Fq::from_montgomery_limbs([2142773713360590483, 4755608127774394592, 14813148169732966311, 917761966614679749]), Fq::from_montgomery_limbs([4228649950611283773, 11633437476481650378, 40335982213672820, 963989416626637070]), Fq::from_montgomery_limbs([7391565095119442761, 5231979613403440246, 15148609598356850747, 95369680580052342])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([6221242600163036024, 13151745595003222769, 1880070415953293074, 859483057557051135]), Fq::from_montgomery_limbs([4057704583061373110, 330438596431033553, 11138603368324646862, 567019942240333219]), Fq::from_montgomery_limbs([6808348652855723900, 16038145083514774712, 7335293401571608063, 1256860263027810296]), Fq::from_montgomery_limbs([14712597649859914536, 2461131389363589307, 14971367896336061978, 440886131765627826]), Fq::from_montgomery_limbs([12563821899625315748, 1397025790367362621, 11711011249975071041, 1326491445493487906]), Fq::from_montgomery_limbs([7386366618870533036, 17891650149672567880, 7623078793319051970, 896259535119079804]), Fq::from_montgomery_limbs([10076387373785417531, 11621404135443198278, 2342191148009104794, 1208570082728513479])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([15679839989875735864, 3094159736795405193, 8433247987399569527, 598394739716746812]), Fq::from_montgomery_limbs([13169926426306420693, 1494478164246339314, 1807871555080064306, 341871317105251652]), Fq::from_montgomery_limbs([8871477167695700102, 7124763693791718581, 9576781928097497051, 714519781637518717]), Fq::from_montgomery_limbs([5983131451216637528, 14746501237947100556, 5131581902376092495, 53578888100518755]), Fq::from_montgomery_limbs([4061768962354414816, 11864639021370326188, 865372274790703007, 960248048765553610]), Fq::from_montgomery_limbs([13741178490350281184, 16104064291813496481, 430569565272838614, 1002559943654640050]), Fq::from_montgomery_limbs([2394748621667543278, 9724971631453415812, 4137744279709050144, 1128204720227512009])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([8347131072359520901, 7051906710316929352, 16145803176151958291, 425602845445213918]), Fq::from_montgomery_limbs([1777783046051939958, 9344856863579469212, 15141578180236122558, 1282494716270035254]), Fq::from_montgomery_limbs([9034384578885080751, 4457232682759798992, 2752092198692805323, 133997596024339666]), Fq::from_montgomery_limbs([6632806707492790657, 4419466991289176034, 10545594397744340230, 225792487504094029]), Fq::from_montgomery_limbs([13666870638471858948, 6325954648727450515, 6820384268867641136, 650912658514216838]), Fq::from_montgomery_limbs([18425172866543397587, 460014089142918565, 13475177727189665478, 755199790640816277]), Fq::from_montgomery_limbs([17074816481639390245, 8326625026248068453, 11628221368426774047, 168403074861182097])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([6496117145112017285, 8108611305258852743, 1288333658986417240, 489166257449840915]), Fq::from_montgomery_limbs([5905164426314492425, 14726319284315803257, 15419119459033009106, 748785652021292365]), Fq::from_montgomery_limbs([2903900515980491508, 14518787377368638193, 5737950893394728457, 1246585555966129910]), Fq::from_montgomery_limbs([13545067403644787822, 12929589241462425919, 6328577959723156897, 669792805130642725]), Fq::from_montgomery_limbs([10880665937604410417, 12182942785008105675, 8043148962657686879, 114751567600998309]), Fq::from_montgomery_limbs([475884094757470315, 13519631230544868403, 15555278094421071668, 284046901452720062]), Fq::from_montgomery_limbs([4404185810772829111, 13082485550708084688, 4458404332519456617, 747118566938719314])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([9005422667436345080, 6610327294069915149, 3392047280994887983, 185928194404395622]), Fq::from_montgomery_limbs([5907489245706778002, 2611521107474717810, 15424563447378789128, 1081732924695236796]), Fq::from_montgomery_limbs([6936175948569238427, 16265819354303431672, 9296694820053549015, 380971488662375691]), Fq::from_montgomery_limbs([11847879878992849222, 17246157629192690467, 2240336221502957918, 551120206298529047]), Fq::from_montgomery_limbs([13322826606934505627, 11726197427344458839, 11800080869580456447, 426669602496174268]), Fq::from_montgomery_limbs([6217036164702465819, 14690910531871435703, 13161157531336562298, 732442567722820811]), Fq::from_montgomery_limbs([14882293327891629398, 9369498032959659338, 7000848696812799171, 754562041670533469])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([7595387151201254327, 16626796275200533088, 2940178911825115337, 1184031511121567741]), Fq::from_montgomery_limbs([9948362750111031958, 14209593175711129688, 8446364573948386189, 802006068920106393]), Fq::from_montgomery_limbs([15169311970095301438, 12318244252296365506, 11639105278755798079, 84817162733084173]), Fq::from_montgomery_limbs([5831579622220754273, 10846086049576885619, 15991974831220053526, 756084870377153501]), Fq::from_montgomery_limbs([4538407139413953048, 3210811593774606829, 7928892177512965493, 295438458271184500]), Fq::from_montgomery_limbs([16833512221632219759, 4464061448066183306, 13162091753490675863, 292236190186079508]), Fq::from_montgomery_limbs([13779800725609980259, 9773765625728017659, 15074810316420391540, 950783607166623145])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([15895706787288222123, 9777370406550782832, 1347824831892755594, 1241011767014366278]), Fq::from_montgomery_limbs([12826978362776209042, 10633709265050784734, 17957605540213546613, 887698438045779720]), Fq::from_montgomery_limbs([7324188878915493946, 6492479003127466111, 8377249725203128879, 1000161290003049779]), Fq::from_montgomery_limbs([6704086117324761110, 146265122731217307, 2383903051894120264, 719647807141165334]), Fq::from_montgomery_limbs([1940312057575972126, 17930067253838912265, 317360086895888872, 5748540581767140]), Fq::from_montgomery_limbs([17103257683729273147, 13931874259783487325, 11872224486078756015, 956814895668207498]), Fq::from_montgomery_limbs([13769500095117682353, 516850361598419166, 16964626273259476242, 769634211482580445])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([3113137472185380309, 3788943308088978270, 15570984136244536866, 64143465381601420]), Fq::from_montgomery_limbs([7162163846740423034, 17407158529676601980, 982523548091459495, 1241886141897586570]), Fq::from_montgomery_limbs([14248266967200521181, 12810010597713281838, 15956352259342376510, 1249991327654319042]), Fq::from_montgomery_limbs([14421471441198040024, 4052632755320875533, 10507979567878886533, 966126597683502788]), Fq::from_montgomery_limbs([1330169793100628257, 5902370011388045841, 4268141693837804182, 504954696237745802]), Fq::from_montgomery_limbs([12989224119893885561, 17234018500273188391, 10939008301878322098, 259903928118608299]), Fq::from_montgomery_limbs([10430146681254844704, 16501713083418526441, 1818813698196386223, 290604987547570674])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([2272958606081209500, 2462669223449072253, 9500254477224930595, 45443314528508583]), Fq::from_montgomery_limbs([15776657251710579335, 14822492561927322901, 3903750765721394200, 630182332308162068]), Fq::from_montgomery_limbs([12563868195165779174, 12561252953252587550, 11907364401269631108, 581676404653821486]), Fq::from_montgomery_limbs([148332194159159988, 10068425626588210986, 13535393921505334097, 153553395999465163]), Fq::from_montgomery_limbs([7747426768506042379, 7652171709845608793, 11069887529886935999, 60205371617013159]), Fq::from_montgomery_limbs([9292570341502960523, 3236193786725371597, 8898130554136882239, 1009410450149925646]), Fq::from_montgomery_limbs([12885815634665358426, 15963150787962414249, 4369817253063661209, 642948406974549063])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([1380867230584918716, 16725144872260989882, 11444322500251449972, 837022230218511427]), Fq::from_montgomery_limbs([1087920425360181417, 17141257576042242544, 8987292985620878561, 1110305532217600753]), Fq::from_montgomery_limbs([10359964772262918650, 10077460265989495047, 17578499003187392916, 757342367774183991]), Fq::from_montgomery_limbs([2779779035056260202, 2282975003625087828, 1919400866622348845, 493318954648288095]), Fq::from_montgomery_limbs([15672164960009522373, 3256607523370073938, 13852207222752867333, 1244522698781289416]), Fq::from_montgomery_limbs([12874545038411867774, 1217025423748364582, 75869870772488332, 1001217245879206186]), Fq::from_montgomery_limbs([8523257600072604774, 8621165006673159831, 1464388999950649637, 1217963817687697670])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([15922812187951378322, 4516460162368536866, 15018766830043386765, 1340613465456337965]), Fq::from_montgomery_limbs([287441026936003136, 14764192345714853717, 4173276030750185119, 472111033963352598]), Fq::from_montgomery_limbs([10839733167051473961, 3454260583859678864, 11304905847738494430, 650946296327920383]), Fq::from_montgomery_limbs([9515448149018827481, 3488032113770392732, 10593726245432275549, 583635792309485522]), Fq::from_montgomery_limbs([2742448600840811735, 6652758193289359848, 9635320418424938172, 967821689260084870]), Fq::from_montgomery_limbs([9881468678921411834, 11537438085600848038, 7216253876764370660, 1304070984061260617]), Fq::from_montgomery_limbs([6196769084394513175, 1271040910625745125, 11073763102896512393, 1165794523446068715])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([15799597978241847363, 12818531158251383624, 6963429972659041410, 397194962489148197]), Fq::from_montgomery_limbs([138391674938830183, 6888521073413350790, 13718840433311127770, 1101538822720967029]), Fq::from_montgomery_limbs([12684981053383903956, 5500073381157750545, 4169486943568405011, 879134225324190092]), Fq::from_montgomery_limbs([464851715795247463, 2927900015464510347, 17346267830876442053, 1137028262870600951]), Fq::from_montgomery_limbs([1966072756669882436, 14267740345733608423, 3868025407329923728, 1329300268340841458]), Fq::from_montgomery_limbs([12791556832852048085, 7187847328998161782, 6410129678700860221, 1141843742471101195]), Fq::from_montgomery_limbs([17394082241710727109, 3925707544410201182, 15631236622778680461, 867359934041458160])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([12197981561714622691, 3447558190007550222, 8731482567404865792, 504033851083789168]), Fq::from_montgomery_limbs([15548011549070215821, 18176746913742005334, 6759691930131684149, 748826448544702472]), Fq::from_montgomery_limbs([14426381672075599127, 6754779155763548400, 1569326308679565884, 301254674498691116]), Fq::from_montgomery_limbs([1190926793578469751, 4569874070454135204, 15349066761719847213, 1143729593598143496]), Fq::from_montgomery_limbs([4377698380788322951, 626231241120536954, 5782570196326664329, 794203002404066761]), Fq::from_montgomery_limbs([18203023968026598600, 769509082182406304, 14347905833288757784, 849309248009120890]), Fq::from_montgomery_limbs([6219667569923491560, 12993749535175636460, 9317843769426981121, 466063065647080758])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([12360205003642410439, 12233377474426101645, 8749241487473360725, 771733806369229100]), Fq::from_montgomery_limbs([12909744147344161535, 15270140525914393786, 958053852923168614, 1122903083941798107]), Fq::from_montgomery_limbs([11512594517381251244, 7788994558197263271, 17789727628017887833, 604964920168437514]), Fq::from_montgomery_limbs([11365008776320664479, 7674849678441687585, 10947191902817323894, 745598673291635479]), Fq::from_montgomery_limbs([9298337976025138670, 3504219772802793091, 18423486933153538231, 674863471944898182]), Fq::from_montgomery_limbs([10037370553997808960, 5643541321548796784, 3954322339884102888, 1116686823797890292]), Fq::from_montgomery_limbs([9151115627925470056, 1080688967380275155, 15991630648226528878, 1130423917661403285])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([16294982486276945283, 7049820508618491066, 8145571059898393342, 186002704339584638]), Fq::from_montgomery_limbs([755176559839955182, 11156178401444222993, 14456074258881310686, 278477091367678088]), Fq::from_montgomery_limbs([1257685548905109784, 5141440235439936072, 17862579642779035136, 330137635933850138]), Fq::from_montgomery_limbs([7830781886086349569, 12605497826381107847, 6483908192271317597, 742032532267494998]), Fq::from_montgomery_limbs([15889009530646425854, 4873730462912310136, 2661766248464352916, 886629163939946863]), Fq::from_montgomery_limbs([12291205541312705254, 7759245016766434277, 14282726477924298523, 275206715444074183]), Fq::from_montgomery_limbs([7015277851946876128, 6540146872039720132, 3413400018095950201, 488630649619127768])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([8080067703614789529, 14335022802712765520, 12181558540579879368, 1181883134308686818]), Fq::from_montgomery_limbs([3930610870091700987, 11870595227272460342, 5614691549969018824, 1036838548873476989]), Fq::from_montgomery_limbs([15116537084696928201, 6562302783432438956, 8446888808137423003, 1165521566881319341]), Fq::from_montgomery_limbs([7622363474306732593, 14018499983613194146, 5504535021523794239, 1156251508187455677]), Fq::from_montgomery_limbs([18353812883604490408, 7863175561039540930, 16157508248448358210, 295160799461001215]), Fq::from_montgomery_limbs([9630152100811825815, 18335618989479732132, 8847214215895375728, 938895491334142608]), Fq::from_montgomery_limbs([13116080893996470839, 13627909126954009780, 15760064020863415616, 884515223942721558])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([6687780439253411478, 6719196503388333019, 88771745794551678, 987619641692746386]), Fq::from_montgomery_limbs([18227317062064988196, 14045861136043637767, 16184554390694852575, 168316121892514264]), Fq::from_montgomery_limbs([2567020624281662578, 12408201210305429297, 15172611508502121839, 184308211509770511]), Fq::from_montgomery_limbs([6504349685450813046, 6151032549024957176, 8446915662866336279, 721911887099189465]), Fq::from_montgomery_limbs([3337661731072526341, 2993440831960528581, 1509729075929391927, 478329275350342603]), Fq::from_montgomery_limbs([1009230922039257241, 6930789170818330480, 4189309447677808153, 116099938331986078]), Fq::from_montgomery_limbs([11734050699831527761, 10637489645393719148, 526453959140559372, 879302010498683200])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([4873204063755775221, 9933480403362446589, 9949453296663390065, 246028972103247826]), Fq::from_montgomery_limbs([1486515864865111240, 8186666825731582288, 17298579416284146352, 75432580959795592]), Fq::from_montgomery_limbs([505624159752585300, 400192717675446053, 16830576854563029465, 1083591845791403649]), Fq::from_montgomery_limbs([15707645648143644435, 15104101221834649015, 2714910978190477603, 1152442812583011873]), Fq::from_montgomery_limbs([13680539759561187051, 166623071797346207, 14072328976002035503, 1262049047131890020]), Fq::from_montgomery_limbs([1997216355444588659, 4362151030955817495, 4119100627602964220, 86616090171999332]), Fq::from_montgomery_limbs([2511307420156057573, 14546073810053310617, 2740719298105876931, 1306803605810669667])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([9796594921607316066, 9046940149281062534, 3066668479453506525, 629717731494457650]), Fq::from_montgomery_limbs([15245080183700001743, 17772522498139932944, 1303200707700973869, 1321448515508953860]), Fq::from_montgomery_limbs([15382852889694635458, 13258286043643865801, 9129565020842704924, 647265428745294973]), Fq::from_montgomery_limbs([406339679439528630, 358526789424126981, 15360185281241795369, 402771395127408535]), Fq::from_montgomery_limbs([14729795014613647379, 6659603767330364601, 10382867237853880917, 983014168589450240]), Fq::from_montgomery_limbs([130913533882362207, 3464497722457480940, 6174897712775413536, 362284933576221116]), Fq::from_montgomery_limbs([6802705157024058052, 13442544871481896094, 13780491571272760495, 909644424511448796])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([15361452699552249664, 9640740743000109947, 5568737378741199451, 962844949024683508]), Fq::from_montgomery_limbs([459261181401017545, 7171449908290213843, 15871949118083492196, 158962359341824787]), Fq::from_montgomery_limbs([7906547241546612427, 7911718846541029411, 14951976648354808013, 421942213347946833]), Fq::from_montgomery_limbs([11183093321955941025, 11064782095852757040, 17028937525080502941, 84626144143427215]), Fq::from_montgomery_limbs([15224853022182992564, 6262171785917223470, 16177655818423871790, 1014568265658824394]), Fq::from_montgomery_limbs([625719919361420446, 8380808592474630812, 3431067771421433694, 687333698000967202]), Fq::from_montgomery_limbs([16024186533956349632, 6397405785318083633, 15989828043790400414, 850765743467676249])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([16821206357298616469, 1130392039725774709, 5626389420189454642, 1118339463429080277]), Fq::from_montgomery_limbs([8638502030638568937, 14913248685358382503, 2067471807256194154, 1100154439569300281]), Fq::from_montgomery_limbs([17564526714798056567, 2679133728209391057, 12485118550630518387, 962529009983964522]), Fq::from_montgomery_limbs([4671481911068696338, 11211404871059653651, 4714104003967750529, 460522700989518506]), Fq::from_montgomery_limbs([6601065644493764993, 6108401876661130452, 518511813649845646, 611513774682652448]), Fq::from_montgomery_limbs([2861830270848819795, 16356361265808876600, 12810879004275814176, 1286972374050895235]), Fq::from_montgomery_limbs([15194368129140163866, 4422109454732341537, 16494227980417936974, 290982210272018089])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([17007536869668539214, 3870339684122566773, 7418389053554657334, 263511272051190454]), Fq::from_montgomery_limbs([12410612082473707857, 4040398757796296521, 16094020059960359234, 939075584469470040]), Fq::from_montgomery_limbs([7418236128585187557, 15691596850766474049, 4839121991874976767, 1173030423683112566]), Fq::from_montgomery_limbs([5215564176166340124, 2655381196051933641, 6045374250672288630, 176416756249057657]), Fq::from_montgomery_limbs([13952195320089654608, 13938861125107555897, 13572960470464709581, 247820705708880751]), Fq::from_montgomery_limbs([7397318582807137181, 18043760894393149278, 14776480882092071507, 1134492376276011511]), Fq::from_montgomery_limbs([10024735062566598040, 5074414902312726054, 16541770110513564624, 1319392307629355494])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([17701692352398604469, 12227868835058163041, 6355645072062803626, 46662470597422118]), Fq::from_montgomery_limbs([17486353498011500258, 14688387905134443671, 86673003791736603, 334193962485781999]), Fq::from_montgomery_limbs([2725938978570184818, 12538279414757715369, 4423739824876634382, 990960136859773111]), Fq::from_montgomery_limbs([1658418413165666717, 4481948955101880251, 2380234418157645031, 242453692938449648]), Fq::from_montgomery_limbs([16462799862547279938, 15860491361132810167, 17855590817263886803, 566253932393246465]), Fq::from_montgomery_limbs([7795866114233701913, 671818567137775288, 8587656269292170703, 1248608466500904131]), Fq::from_montgomery_limbs([12734974453986836356, 13876952892523324606, 8958492656376686082, 1219220119207244562])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([16939094048589357804, 27828887622580244, 17879324893769825916, 1323982021311509582]), Fq::from_montgomery_limbs([3829148264852223810, 16344601064097516632, 17405856957400469367, 1015406940125315334]), Fq::from_montgomery_limbs([2496078501178333445, 3431033003985481851, 18046940389757892591, 78803126847324668]), Fq::from_montgomery_limbs([10354574228107355459, 2956204224517963071, 4281810991966937657, 773005109651151512]), Fq::from_montgomery_limbs([11661373254033173032, 7617994408757678472, 3818523458153749994, 1124211529831618075]), Fq::from_montgomery_limbs([5343527255304572547, 18057091451537453565, 7219465431491887651, 438777407253439449]), Fq::from_montgomery_limbs([6944386246740202781, 15457528402087694028, 3684425466632772887, 516255567451219667])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([11265451120049686448, 17733431402661201252, 10181100791013355567, 1222168459125423207]), Fq::from_montgomery_limbs([16541130910067039592, 8550248424255720611, 5388592089365012797, 401807388479450663]), Fq::from_montgomery_limbs([15535862948076515909, 14246335147027067446, 3440553300570031637, 1140798916603065405]), Fq::from_montgomery_limbs([181454369079184993, 10259998444066142751, 13378833995981646023, 1233479771041134216]), Fq::from_montgomery_limbs([16855179079358889281, 15202871199402424660, 10704979988227736970, 1092640973189828568]), Fq::from_montgomery_limbs([8641652447153871125, 14767053670343766852, 14349039701716536407, 776309354634057048]), Fq::from_montgomery_limbs([16709348381005515895, 522436120289473263, 2848448538858947951, 930729981926185853])])], +// w_hat_collection: vec![Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([5469465372454405746, 11693688927749785195, 9284229770381589387, 263916402201309764]), Fq::from_montgomery_limbs([8025142443496737775, 1611073224873590596, 1595200312703520851, 268362793599128279]), Fq::from_montgomery_limbs([2646197433325367530, 3327161674116363870, 17523969835882673765, 1224872920276084181]), Fq::from_montgomery_limbs([3531022552160069605, 1044916798369741293, 13484540382795405112, 975392012720575741]), Fq::from_montgomery_limbs([3532672362950129848, 13232567668052949956, 3949082925084889589, 1169300250855119928]), Fq::from_montgomery_limbs([17405909644706202533, 9068195655028130334, 4993737853698066182, 760630245260613434]), Fq::from_montgomery_limbs([10760096219897954109, 15819961273994906871, 12000866060961275644, 494051747708222359])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([6362811837083607038, 10112120774028974554, 18223478424715278594, 334017453759956923]), Fq::from_montgomery_limbs([9425287269899366801, 11550170751949156528, 13535057945185910331, 481928711879823346]), Fq::from_montgomery_limbs([17472259370242997056, 5455690506444253075, 8901482994501262481, 216965978934341710]), Fq::from_montgomery_limbs([6461374808168440859, 2522061882145442234, 15960549034903032234, 172640120507478914]), Fq::from_montgomery_limbs([15948529219279584260, 15982605346874278694, 6269535640895470052, 598935737770408401]), Fq::from_montgomery_limbs([6387843144535167444, 3817387412721348785, 8453759171668596794, 249153266075439378]), Fq::from_montgomery_limbs([12733356128673768262, 1719659461140646111, 6773786044742649854, 1187765335723023490])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([13381096107094038201, 17813208526318089114, 18335536409132991824, 339697501389957039]), Fq::from_montgomery_limbs([17742161265183589279, 16788867255988109560, 14412857631192854758, 241525962952821929]), Fq::from_montgomery_limbs([3132656462108501803, 7337059831094147936, 10405916960575845901, 228104793330536468]), Fq::from_montgomery_limbs([4603265731852134279, 5399214122633296191, 8344043762552329652, 985455486033881462]), Fq::from_montgomery_limbs([14183899592653698860, 2177269342994828180, 10884678024220653483, 217447665355687992]), Fq::from_montgomery_limbs([11323936221359713158, 3341391736943984982, 17508560691141182274, 13239895022264913]), Fq::from_montgomery_limbs([13840945524485292215, 9974520753931283863, 4195523720400973895, 762227204403897594])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([4114179516470424298, 6425976053490693203, 12882959905974456947, 110103675307258331]), Fq::from_montgomery_limbs([15116210321604905525, 4118549106744296512, 3828886987178664227, 25697701772294022]), Fq::from_montgomery_limbs([17140438063675080897, 14878172760305139023, 16025135762152951507, 855206538655380046]), Fq::from_montgomery_limbs([10902652921411376407, 298732053043081440, 3474200546567636561, 73249755607734230]), Fq::from_montgomery_limbs([10553805817393106605, 11201074828085121396, 245273431044608348, 1118444153373328294]), Fq::from_montgomery_limbs([10914295885365195477, 9781502968861552189, 3016024785085649390, 1070566622248381309]), Fq::from_montgomery_limbs([17207023773498274582, 16270409020606599297, 15615674408609362833, 496415543408113636])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([12908589501999937487, 8065526495594728145, 14801981742319743709, 275346991162297736]), Fq::from_montgomery_limbs([17950935244956210974, 2150016307817314195, 16459867286579284659, 1042519399748946084]), Fq::from_montgomery_limbs([17900103050404502082, 14452186078281849672, 6480606341801761206, 622530813027865777]), Fq::from_montgomery_limbs([6659043465579778142, 5257478652828025077, 4476708827204863480, 16044674601944326]), Fq::from_montgomery_limbs([12982211781831995222, 12049124325752315255, 8705698258631367529, 1297634030024262944]), Fq::from_montgomery_limbs([6491213021781179190, 6621864740150572837, 16900492784527502379, 1222186981051134852]), Fq::from_montgomery_limbs([10406390218848689011, 15713870170786523261, 10757974052401463167, 1094311561986616580])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([7587047764889575280, 11453570134345482138, 6685160859155170229, 1173043895898907255]), Fq::from_montgomery_limbs([16754290437895255736, 9337309604462582506, 12206937090776739366, 420058562194519310]), Fq::from_montgomery_limbs([6762379518159147694, 8708770658919355547, 10850018038610162125, 1008085848049838570]), Fq::from_montgomery_limbs([13364112208667503342, 15694121621742726571, 10880035211673377855, 373642360429768529]), Fq::from_montgomery_limbs([2270999049018193688, 1120874468185376800, 411758025544146420, 1286339318101647584]), Fq::from_montgomery_limbs([6487825500972649335, 16454995602857338429, 5467561124775466727, 878704090415683008]), Fq::from_montgomery_limbs([1065155450424764553, 12374494253224172277, 8660000041795033471, 1111585064452242609])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([13207693125029693018, 4845337225517968099, 6777888238547968314, 1213784418907181141]), Fq::from_montgomery_limbs([8840475980926169942, 2439983533649319439, 10722568534952104178, 237040204857642763]), Fq::from_montgomery_limbs([12845192406743600306, 2989732167685602396, 9737375858921653666, 1230697363927166390]), Fq::from_montgomery_limbs([17347381872588777362, 13861116144606039805, 13092379011701123650, 764219716687899335]), Fq::from_montgomery_limbs([17560394342108123527, 2417597080550067173, 4892519055479234860, 41147728874013821]), Fq::from_montgomery_limbs([16525591378009204013, 15575464991459515509, 8422968616365174468, 411199147172891757]), Fq::from_montgomery_limbs([2381387149440902461, 5412036122050682991, 13528312040883572709, 906698787086289152])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([3906793572005745013, 18158346260651031144, 13885155522309058406, 81682927312739464]), Fq::from_montgomery_limbs([11556601788249882111, 16294603434168644341, 3233905800589936432, 205935519984731]), Fq::from_montgomery_limbs([15060956636956141748, 14545891040349678052, 11359264221189720465, 356824974507480378]), Fq::from_montgomery_limbs([13651037643855144634, 9057349283398801990, 11128939939991098829, 339192257850626331]), Fq::from_montgomery_limbs([13297032679166497156, 9615759066125111838, 17802636590285232697, 561508163130847528]), Fq::from_montgomery_limbs([8397658199708546603, 7714753189153428100, 7790178778963243461, 185139104215370464]), Fq::from_montgomery_limbs([2180790926999539040, 13412426570621087300, 11981287146222961423, 639288905678439923])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([14052035671409641250, 13059764049401289819, 11971569074865081653, 1150074447408905206]), Fq::from_montgomery_limbs([9430708294750522894, 10157980309621419039, 15263989057722108309, 986177323832836397]), Fq::from_montgomery_limbs([16901845294627087710, 3489277370587647922, 16697435307791475526, 77304496269930872]), Fq::from_montgomery_limbs([11082416581543669906, 10393162674600623371, 3285406343096341615, 1301030845466123760]), Fq::from_montgomery_limbs([18004954247480805141, 5840089398123238351, 10933632362911021710, 691842568234993272]), Fq::from_montgomery_limbs([17084441454288473640, 2235549442526480819, 4281084601663253516, 854500520628530615]), Fq::from_montgomery_limbs([15995978179451110635, 5254996480963543781, 12228168137501357375, 768298814850744789])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([14897923782972976882, 14769556083418318998, 1736582590048574781, 834637190815349022]), Fq::from_montgomery_limbs([15951362473351174286, 7550580364442366310, 1142582367377712360, 493901798774432186]), Fq::from_montgomery_limbs([6843713892592087790, 17187186375181169829, 2346758743517403254, 440860120126405528]), Fq::from_montgomery_limbs([16233685001159101924, 3591097020136681981, 3308092724991209243, 753631765436882275]), Fq::from_montgomery_limbs([12817371395153180792, 11781447572225130349, 6186298687319142696, 3684689165947228]), Fq::from_montgomery_limbs([373243522249877820, 14362378102133706173, 11334127490376039043, 1029386563565171794]), Fq::from_montgomery_limbs([3320051586177558481, 3693313581776176503, 4243258718797155237, 280296683627599109])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([15777714567664176983, 13315644392893971158, 17663595314793470728, 277994346352588461]), Fq::from_montgomery_limbs([10698748229571229513, 4993514528007275782, 9851470184989070944, 486473547501834583]), Fq::from_montgomery_limbs([15731541659238915573, 10580160097474154328, 14072730437229004460, 541485168141790138]), Fq::from_montgomery_limbs([3621838382408245781, 5140837518507686846, 692462686779552266, 1071238232671920069]), Fq::from_montgomery_limbs([16903035807706989718, 16402342976729397848, 6638418596135594138, 766006849863633370]), Fq::from_montgomery_limbs([3391835462656069558, 8478240763735883610, 6583767175704093831, 605702159954668519]), Fq::from_montgomery_limbs([13153440956937332187, 8778062398439311613, 14496687227146002795, 1184865635693926839])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([5492025723621450587, 4802310335533070821, 5103778166610184416, 1237824309223979752]), Fq::from_montgomery_limbs([13230781860208750726, 13444089818089484139, 17921412814723519524, 1222680843018701540]), Fq::from_montgomery_limbs([6469994574006187252, 9454411230540098121, 347262197325431191, 486705196263913773]), Fq::from_montgomery_limbs([3947674970632735265, 2916300977963946491, 6881904307166023017, 457112286806257099]), Fq::from_montgomery_limbs([8734203063029639947, 9235030054635977911, 17117573327238268274, 1336943205846791314]), Fq::from_montgomery_limbs([14915061407614767729, 5343187615398945512, 5552119928369165945, 230612833250200287]), Fq::from_montgomery_limbs([15343760251811669074, 11849716817931855852, 12235003752862513196, 1092174591577707855])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([16055670419025007879, 10167255563356161134, 5873677174484181331, 1119183194058634412]), Fq::from_montgomery_limbs([6545073505115712765, 12208880957985144024, 2413898051352165752, 200177087583496979]), Fq::from_montgomery_limbs([10675772825457541870, 13221200307080776964, 8360161479127911800, 166239764386669819]), Fq::from_montgomery_limbs([2006419824145230446, 1298290087846863922, 11954724771700273308, 1258575857924774921]), Fq::from_montgomery_limbs([5182647705377916601, 12490693483304324120, 16433633239279713593, 95750642123415707]), Fq::from_montgomery_limbs([95333990082317168, 17157473840728451869, 10012571168547117601, 89162384671094023]), Fq::from_montgomery_limbs([4909644498074356100, 4736187679400324044, 5882012018493447769, 1092049061252631253])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([7311109856180655396, 11772066066061778775, 4758323204662324777, 424401521788398695]), Fq::from_montgomery_limbs([10327551942056000767, 7896891757351259654, 5415141459879741043, 970729526627356745]), Fq::from_montgomery_limbs([16598021919990022911, 4748198554306289116, 17393884082489388120, 1042289367721564407]), Fq::from_montgomery_limbs([6071815438135838764, 6957160250256416369, 5727172448350823478, 363080876294209892]), Fq::from_montgomery_limbs([9289142807381535883, 17159982138314567248, 17888157697874972247, 525936327365438813]), Fq::from_montgomery_limbs([13845673834923418042, 3021171551531346231, 6196055431827427575, 879039969582851499]), Fq::from_montgomery_limbs([5868202154697212122, 13487005442942356371, 16163257120298149093, 656445568990681140])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([6021369790491535593, 2415914828808962567, 8804789562076458409, 141257607088107152]), Fq::from_montgomery_limbs([8888538666372726960, 417693810472292690, 6625260792856360214, 48639855527887045]), Fq::from_montgomery_limbs([6477686476345016713, 5099365493188187874, 9710843539546247353, 356644031678310872]), Fq::from_montgomery_limbs([514050899336931730, 1305432265166896997, 3022676376566559511, 992533360610514607]), Fq::from_montgomery_limbs([3586775418789355531, 9516764397514990497, 13077440505677103078, 1193605133897764836]), Fq::from_montgomery_limbs([11915336245727353796, 3787026284924392313, 9686187959466848805, 331336880299973516]), Fq::from_montgomery_limbs([13079652964588155522, 3686330961737298646, 12410090506639101095, 1254304946836077906])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([14841602521644800285, 9707581858559806753, 8194272850889842673, 1175777861699186223]), Fq::from_montgomery_limbs([8340457880130547197, 17733479127111148650, 9935013927746385786, 727641041410784864]), Fq::from_montgomery_limbs([15762625424586722564, 3435382265052399320, 8159926067386473340, 197998409655179296]), Fq::from_montgomery_limbs([8605915918798970675, 13692084072552856212, 4328810091072359910, 868588572376767645]), Fq::from_montgomery_limbs([1361081942051675201, 15249716130118278159, 2121941051566676057, 559576702023081922]), Fq::from_montgomery_limbs([10752810451997705936, 2862464874834320603, 10309748098106940300, 1304236557076849780]), Fq::from_montgomery_limbs([2835871431608154484, 1749514314752450621, 2725234542965358215, 1201694229063035252])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([1073940549267563537, 6847045449574399581, 17756819714770896582, 1117463338790312145]), Fq::from_montgomery_limbs([12704094153865092665, 8539050408973245584, 17734788789994913591, 929238621728331350]), Fq::from_montgomery_limbs([10082772236499648827, 15108304350645714070, 3086595294879967436, 1200387991311725607]), Fq::from_montgomery_limbs([5047622605931054175, 7557906648527048263, 9624095609160422424, 45506591031030909]), Fq::from_montgomery_limbs([6965550813182250949, 565066047981282920, 13462964114732145360, 980356066902323608]), Fq::from_montgomery_limbs([15558299170349086309, 1286346204199469533, 3574858446200038472, 851991524979889708]), Fq::from_montgomery_limbs([7325586067383897002, 10233684635542340023, 17557031856919477181, 132029230490414274])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([7217923862445368663, 3794612520606418012, 8670181285195573375, 240971390392704685]), Fq::from_montgomery_limbs([537441915444801171, 3014981172602304732, 1479722163959615169, 155749091741220885]), Fq::from_montgomery_limbs([13062793399299583557, 1159027774347651884, 2336679478816355142, 270200510125259051]), Fq::from_montgomery_limbs([3831694067573543757, 10964370664526245902, 4087998121879874921, 905965084930019006]), Fq::from_montgomery_limbs([13194259065052094927, 388722439697642959, 178624285496351497, 578824842066706531]), Fq::from_montgomery_limbs([17948259725763227950, 9014484167981796209, 6107081279184176814, 69534426400404264]), Fq::from_montgomery_limbs([7978550262967360739, 7491565367832202367, 4365729291374404994, 1335365781615388178])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([10669459440663038789, 6552676677342008487, 13316372054996453680, 550925049999738916]), Fq::from_montgomery_limbs([4419333495078684322, 6927538080001000341, 2225108594758156053, 1079053614093719540]), Fq::from_montgomery_limbs([1972675078636948291, 12089663092664065043, 17766574022138625521, 121432615644490431]), Fq::from_montgomery_limbs([1053520141057629369, 10770912132989963882, 1148187868111152786, 707938827427743885]), Fq::from_montgomery_limbs([3260322753636284964, 10729835216415125135, 716444025392599556, 690504199610876560]), Fq::from_montgomery_limbs([6934370135811844333, 6301658833825444793, 4848235658034124485, 472091301484588447]), Fq::from_montgomery_limbs([9777643377073268806, 791842489813847254, 12448150674843197239, 458910758561278370])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([15803810666230694733, 17547487450377911929, 11906139405746854533, 825285431509255503]), Fq::from_montgomery_limbs([16600353337473024459, 1886864376737549006, 616311009164692973, 639902607392049032]), Fq::from_montgomery_limbs([1680268521087434801, 1091097160854707765, 18087803601592847532, 572438372434779394]), Fq::from_montgomery_limbs([13425154509660903739, 7155042440442144058, 5484293510771639701, 440694050533320954]), Fq::from_montgomery_limbs([18374411341880395201, 14499066397809595914, 13606711309161552316, 988627169135416549]), Fq::from_montgomery_limbs([2227485226860398923, 6037771840516072237, 10092335873046301438, 263890669231622026]), Fq::from_montgomery_limbs([16396442279804673220, 11758563075897600330, 14728620288909029404, 1009629620490761817])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([17746049445618651584, 15474250106095074477, 6808865525843107141, 252069263355480366]), Fq::from_montgomery_limbs([10094119795803932244, 10978354614679659751, 7451382830965148493, 1131617137883762978]), Fq::from_montgomery_limbs([16463020271793267367, 16484453755363327531, 16299428051085732734, 1215317962997421603]), Fq::from_montgomery_limbs([222141886324808295, 13928396678279854231, 10143359980064533818, 815662865945589973]), Fq::from_montgomery_limbs([12231656940181472813, 6572412520702222123, 12613052303172694748, 266113525618574574]), Fq::from_montgomery_limbs([988110300489242272, 2246797931487708434, 10572926100714461647, 903118853801541805]), Fq::from_montgomery_limbs([530795899436597525, 8521163943052335338, 8151289800410686217, 36252124276088895])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([15950738796712300438, 5211784799364900458, 10872161777257884476, 622500837165264302]), Fq::from_montgomery_limbs([1796299668914971469, 10069069742410689124, 17398930418864211639, 571074796095573997]), Fq::from_montgomery_limbs([17415629526903541572, 60522099572337001, 7357276421993594658, 67139681069623750]), Fq::from_montgomery_limbs([3150476614427182634, 11400695529363767640, 9974085938634932190, 201799321821634924]), Fq::from_montgomery_limbs([17211147489720667761, 15454125189814636772, 1785683860014593630, 1234545901167080662]), Fq::from_montgomery_limbs([12917754021603623789, 10145571812631521550, 5237021007548635344, 113519696768852825]), Fq::from_montgomery_limbs([15503258828146475946, 914788767927389955, 8850539145480636682, 452504293017031100])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([3745554364046936255, 4597306622888789154, 5979651250338667136, 1238385628454513051]), Fq::from_montgomery_limbs([3776630884323931547, 3549782146440747750, 5508785071859620867, 701959603932551327]), Fq::from_montgomery_limbs([15669417982403128442, 4987063011318496848, 2675129774208819610, 752856218864954922]), Fq::from_montgomery_limbs([12384169795306075140, 13266521557806758758, 8976316392650036414, 779369456063978984]), Fq::from_montgomery_limbs([7882432423342926513, 17205292058596297059, 11479846445566224721, 1260089851413577942]), Fq::from_montgomery_limbs([14020835325904272518, 10352766579517264043, 15417820050597494655, 621361945178146722]), Fq::from_montgomery_limbs([17051687952810193326, 6871472877919148363, 3489400199188897362, 687766677359196782])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([17382705588788402853, 4598916697035859633, 4518832565581736311, 653080619696360531]), Fq::from_montgomery_limbs([2250500707327888710, 8472537755265510597, 8234912680399854173, 435433220178846885]), Fq::from_montgomery_limbs([11580178681277497490, 5498607256285409706, 4135785859002967214, 1124489661838811902]), Fq::from_montgomery_limbs([17779714097123614458, 8699423459123996923, 15631484148488778752, 909516986337557641]), Fq::from_montgomery_limbs([18163751795979980990, 11867922209368440763, 10515761459427034219, 1332994349752029313]), Fq::from_montgomery_limbs([6467500727988715108, 9306282235622577642, 13541102366651570877, 416775728642319774]), Fq::from_montgomery_limbs([10383099790322168017, 17058343682036470720, 16556281441888606360, 1108176927190266030])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([8622953880956768188, 7398970229585501839, 3084527402086859984, 1314489003639612227]), Fq::from_montgomery_limbs([2647974631426734642, 3924418247812102940, 4184932287519868312, 1194114797716949792]), Fq::from_montgomery_limbs([14598747211696490139, 10879316167117011549, 9287974170985802960, 731429090606059611]), Fq::from_montgomery_limbs([9444556880219125709, 5586056795682328427, 7367116120983861589, 588219877692556070]), Fq::from_montgomery_limbs([10966009764315859760, 10742608081271307349, 3709772539537310986, 497532886403996414]), Fq::from_montgomery_limbs([15416260817024711436, 431667905910500746, 1387964135713748516, 918060216721194080]), Fq::from_montgomery_limbs([11657403806820742348, 10510065601598889238, 8349835292055724063, 502241567933397208])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([5125027997144123095, 7303165910753964935, 10691796975927186405, 1054799562052499765]), Fq::from_montgomery_limbs([3677058682136778866, 2112392306281972958, 6200265695478657913, 720439016775781556]), Fq::from_montgomery_limbs([8272146025997512256, 10341698166702554611, 15851101317909170235, 452521866559100336]), Fq::from_montgomery_limbs([9968119379746477391, 13931547738079661500, 12809160964499846690, 770440521239403115]), Fq::from_montgomery_limbs([11434415940462413800, 16684667769948280834, 17418898698438354203, 1004769570334088081]), Fq::from_montgomery_limbs([3258653721799542419, 3871032496675885535, 15086212796812657551, 548348409520277973]), Fq::from_montgomery_limbs([9315341100800814485, 16973311177794380607, 9399876472392037546, 371744665007363788])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([13784204593688045203, 987916117600213001, 10766183396659311558, 616603627600417345]), Fq::from_montgomery_limbs([16045652418239566399, 8490486261587787544, 17701136459350400996, 200715104605533295]), Fq::from_montgomery_limbs([16284971980816740279, 8206294557799882679, 2790028614836001157, 1230396046687758171]), Fq::from_montgomery_limbs([9870167375285365220, 7246310481239931900, 17367559916410875637, 828013539220163509]), Fq::from_montgomery_limbs([16072962173730053757, 4193938980038706222, 11164976873168367038, 230857852443905890]), Fq::from_montgomery_limbs([7523323272036182261, 7860098358273104019, 14378442365280097332, 1330897076351403427]), Fq::from_montgomery_limbs([5166916295217303780, 12258429519770930476, 7573997247042435361, 682178487313104306])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([2043764091903620445, 4485903403091863087, 7882707843266586726, 32588602135411527]), Fq::from_montgomery_limbs([15445407966754968040, 18357001192960460653, 4704086230082948769, 786939246434391312]), Fq::from_montgomery_limbs([16117366278228333427, 18271129267524238221, 10279609063883049289, 1039698878929789014]), Fq::from_montgomery_limbs([7187518414442758799, 1779717612181090682, 11702580549115117112, 938810897647106356]), Fq::from_montgomery_limbs([17722222577775244941, 9996465098177475040, 6523413930963943566, 594985722442752339]), Fq::from_montgomery_limbs([14942503613037167587, 18043065733746265056, 18350946329946766564, 456482704506596726]), Fq::from_montgomery_limbs([413913659191909137, 6804960474770818549, 11211569852612831192, 29172099643213194])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([12244020429757927595, 7878431481226438368, 15736494002689538032, 952552586365680365]), Fq::from_montgomery_limbs([6811639335636941408, 13087253934833450042, 14243138544038514009, 802500736974958878]), Fq::from_montgomery_limbs([5119841013779673124, 924763452388520667, 13728889174508658116, 1253763325687067827]), Fq::from_montgomery_limbs([15043507624384025219, 14829641103772380163, 3009461704678867396, 937642236989310683]), Fq::from_montgomery_limbs([11671642017952121222, 16541053200478701290, 1980039776401781944, 588963913112990120]), Fq::from_montgomery_limbs([10584858696775764162, 11016739814752144940, 16324314276275577748, 654922621317102495]), Fq::from_montgomery_limbs([3244897877015736117, 11237789704802235882, 15022173147815144257, 40109243059779922])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([13421818826894964525, 6843121314819036302, 177656756133214759, 1219229288475674852]), Fq::from_montgomery_limbs([6718699512784917601, 586674041776306822, 18334677892276409595, 789222582574373919]), Fq::from_montgomery_limbs([2284827956975526833, 6582209151387402444, 16582912253436322211, 341803586231976372]), Fq::from_montgomery_limbs([7256396544134998118, 8214951682602116321, 3245431556959173874, 1245025275513704302]), Fq::from_montgomery_limbs([15432965983836887543, 14720892157109837025, 15495565877696769481, 28040874075986580]), Fq::from_montgomery_limbs([2845048156588876954, 8511864041625766030, 12227720668782503297, 751125685338714507]), Fq::from_montgomery_limbs([16400929974316258476, 14955948068318960184, 10179371694614714547, 1203413977422071153])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([6945749691605470013, 11814685140591736549, 9661986044853389934, 549110123010799116]), Fq::from_montgomery_limbs([10314852142802128718, 16931011931436831749, 6272554436628472312, 613946066674111963]), Fq::from_montgomery_limbs([7885885393747543748, 6205273416854026781, 3045614234898978712, 325443134576651832]), Fq::from_montgomery_limbs([16340716059032367665, 13900104810468791197, 13840116352417324181, 807825755702914983]), Fq::from_montgomery_limbs([11307065830129329386, 17314979792657924564, 1031027443933101440, 670942943796932032]), Fq::from_montgomery_limbs([16427383528817659047, 269318770779983782, 12646967434416881049, 792232402464509209]), Fq::from_montgomery_limbs([5305513183378836911, 3912518176481377699, 15813014949092997837, 717786010393961950])])], // }, -// optimized_arc: OptimizedArcMatrix::new(39, 8, vec![Fq::from_str("8272449376473671765296008869302038521165312284059868547350729170495609308478").map_err(|_| ()).unwrap(), Fq::from_str("4148638154552987643427927719929617623033282419205047107576105870710636474516").map_err(|_| ()).unwrap(), Fq::from_str("4610941420378965310285838612448425703694278187368438665958951036771382090951").map_err(|_| ()).unwrap(), Fq::from_str("4189826392798972095615428009133315511437859427098777387981389252767021216956").map_err(|_| ()).unwrap(), Fq::from_str("3485778653302006026931053379631767402100167194043813051334318884790009606746").map_err(|_| ()).unwrap(), Fq::from_str("6997258294599821948176438428013771474496501637817875041649844838098869986336").map_err(|_| ()).unwrap(), Fq::from_str("4727315047627304951694923894487815521672122955066864851590793419420877448838").map_err(|_| ()).unwrap(), Fq::from_str("8323215308029035830922479600341609342422153730357233252273677915504737315769").map_err(|_| ()).unwrap(), Fq::from_str("5637158139100131712830467651283357933314259485688016797833552952753722230574").map_err(|_| ()).unwrap(), Fq::from_str("108652494334494423537470670066593093589367691856837736916781504579141415881").map_err(|_| ()).unwrap(), Fq::from_str("4282654110357871098442082930601101276537207779575238008006989562579070025596").map_err(|_| ()).unwrap(), Fq::from_str("4983986459778055581371939303652208870578018890190948885506698845403601706443").map_err(|_| ()).unwrap(), Fq::from_str("7812942429443051975589393178689314192901424482402091373617863947800041031380").map_err(|_| ()).unwrap(), Fq::from_str("41843404634003821257499508246384846359567653827738009587074364821357556674").map_err(|_| ()).unwrap(), Fq::from_str("3256367381652958574022221764563986866005281747176483523562910892352385700536").map_err(|_| ()).unwrap(), Fq::from_str("5081754897888927450572755485400127827962724388364782188548629761403223168208").map_err(|_| ()).unwrap(), Fq::from_str("3140662389046800714717134038842932929914881789234256624133712658493702862986").map_err(|_| ()).unwrap(), Fq::from_str("5837678370345291060707921053934078274570658514314699024317340256646194510315").map_err(|_| ()).unwrap(), Fq::from_str("1758249205614064761923397241362751226590619464566451174621990840706075711533").map_err(|_| ()).unwrap(), Fq::from_str("2996424966666775948197322316539263332388876501081218038331262962889143767323").map_err(|_| ()).unwrap(), Fq::from_str("5569073755001022846727381324947502843907951568584887846136479111303763947571").map_err(|_| ()).unwrap(), Fq::from_str("2152697470307011874759937686919219515105381348752365467161409416739810705705").map_err(|_| ()).unwrap(), Fq::from_str("2547478791649003851472374459274423878735641266844974068366653679604458605992").map_err(|_| ()).unwrap(), Fq::from_str("5819954505684844235667713476731504359909606655725958006022735818802065644880").map_err(|_| ()).unwrap(), Fq::from_str("2946723954639143698985169687050778926763705251783882355884017269111316721156").map_err(|_| ()).unwrap(), Fq::from_str("6674853737187547917453936531282787623469969017096699291523892007866852923446").map_err(|_| ()).unwrap(), Fq::from_str("5128641242163000635309430370963825992485844601443450009390057810268350954415").map_err(|_| ()).unwrap(), Fq::from_str("7352715836632872274247822067257986059394276266477211651891582858684335942428").map_err(|_| ()).unwrap(), Fq::from_str("6217878791689924076142875699523164926319528131418439289154670832402836449354").map_err(|_| ()).unwrap(), Fq::from_str("7597096949831323643078864071580889261097889487612663379874935302362723251908").map_err(|_| ()).unwrap(), Fq::from_str("237095701117524079797711198067928714601748963673162707716983647008814265398").map_err(|_| ()).unwrap(), Fq::from_str("81542366906477747415301649039728726195369083982626300684546056109880517297").map_err(|_| ()).unwrap(), Fq::from_str("7969630902758093833683878012450239872858160201838806304585343230952248744893").map_err(|_| ()).unwrap(), Fq::from_str("3789327608923240559621438807555696123833071955799944159387139196635270052063").map_err(|_| ()).unwrap(), Fq::from_str("6942616259250924824073986423294800348651033465355434234434993171049712250516").map_err(|_| ()).unwrap(), Fq::from_str("2647437603096292336353677765155312490789174022898243243816650308367065378101").map_err(|_| ()).unwrap(), Fq::from_str("858333965015035637643335195902146224444598500681518760427029286506032744943").map_err(|_| ()).unwrap(), Fq::from_str("1085987275871688332924812187386406747246042360380060273363537934161803248437").map_err(|_| ()).unwrap(), Fq::from_str("131244237985541375592729188507346605049439505813779950494766218772899758145").map_err(|_| ()).unwrap(), Fq::from_str("8162284026136349222474753321840031971765915654813381581275117004695374042650").map_err(|_| ()).unwrap(), Fq::from_str("8377966484821285635062133307724528670490764417368291567050759399120800713798").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6683135554507103312548415634835771695346853367393830432480354483776963346061").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2364264937015271597195130959991703143036264788670414162349951210762322968487").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7177210463401468215533723224323420436159896385743502049044063066021320863299").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5321755656196686918677181304437356383675997707902461504646790696979458444105").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("5273909547463914314311121506305889722562287170180792835051985610930490751736").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3524920266646250812189331201989872055640559899716802944944958871821450859410").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3301983957403153259338489549576582345951825570486799616806922754330762472977").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6673499656849907531628536663885825753664675720291382647320697476251378700120").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("1425551101551462259535092602551860254166749477354386121616078836669644882196").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8053099556957609980711279208897255220880821260943259374965408763774661782217").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2309393037289334753926171018572958469284953624866032575895746422511308172679").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("6739323531923276813794688774733915761174890747235564536150406736732855010836").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2113476282918034868081062154313983617562296599978058098083698921160825340508").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("291144037825967459368489782451793991392643527556288908882015551935442610051").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7881680865401501348808149620040019562419411500658158289003943905314003623546").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("398653848611615203461446873634902510920329653587500486676482630864147990938").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7542595010985278252426930418732019254441233633369170565525116826658577895896").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("624646061076484871998998136899085459755354844295806804251352949555781761900").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2878007940045280915232178001764062802242036376084965026739527182456170745800").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("957138565110708992656758056404288915794461431846827426815707069867574474195").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3573878058072025981267513622008560027419877239740926244852309429167924033178").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2753753270744095065090261815840182647789875208390784947622997744192408651519").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("2674947701019192619637312463382626859837200638524022459273079560454426330098").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4616845004491896593243577117812476572782262747038425056775977006441329607530").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("472769197802757141666730694540641940396667319756835802922497001228129628101").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("4649292990069818513168066888219552448438414049200294093658290508988720134989").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("8376917518523341006108089001316126110827184327011733608448297453486530426437").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3811152039323168938101246639657115818769282522604240518662116231683280999657").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("7758492066947493347583714495077260042960647116506643056327150605211157896111").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("0").map_err(|_| ()).unwrap(), Fq::from_str("3625346994346262101074016662525684274846352014684613212636681749029860414438").map_err(|_| ()).unwrap(), Fq::from_str("8185154950738214151796515968928351126603905297125790874608920063796767252690").map_err(|_| ()).unwrap(), Fq::from_str("2091359350151991805321734262591896664272488333838196693958572789838473427626").map_err(|_| ()).unwrap(), Fq::from_str("7893870176223799684038550109973360297326111269737078480578958224089785457116").map_err(|_| ()).unwrap(), Fq::from_str("1520182496293084184060350659186894159187633793202146327512504615309868073244").map_err(|_| ()).unwrap(), Fq::from_str("986343632237534315729765358105004123719914801088741895575181866570497964221").map_err(|_| ()).unwrap(), Fq::from_str("4097141299559832108681797482282499886552681964557682291595867549941946001900").map_err(|_| ()).unwrap(), Fq::from_str("5170162657752733961617316579862704251015678496124961523018864855203991590574").map_err(|_| ()).unwrap(), Fq::from_str("7493448755702210572189375484947729156648010297427762392736281250135251611888").map_err(|_| ()).unwrap(), Fq::from_str("6306473423076606291527527393606984727052936248884714392394987865264933460998").map_err(|_| ()).unwrap(), Fq::from_str("6490159471621292220891426718270011645908869111376473944426770950932725435316").map_err(|_| ()).unwrap(), Fq::from_str("3085590823906807640982299920152736395554307120994537085809023375753886005214").map_err(|_| ()).unwrap(), Fq::from_str("6470210152105334455344254379422681911310598808426785938835085698000538958774").map_err(|_| ()).unwrap(), Fq::from_str("6384336895500659645759952084976852819294861590593737217260679303514486658147").map_err(|_| ()).unwrap(), Fq::from_str("5403908794555626454891599520460723503768107553937985694373405266900803378169").map_err(|_| ()).unwrap(), Fq::from_str("7491312003383848086366979202793200051175563793929611119984170139909207668912").map_err(|_| ()).unwrap(), Fq::from_str("4387144195323867178748400107405487976710661311964448504266174388350850987894").map_err(|_| ()).unwrap(), Fq::from_str("2359754701244196043720426483051454843104685842583792338379012975172349507848").map_err(|_| ()).unwrap(), Fq::from_str("6267415440471529358165929206436078810779767091328742668461372203706996320269").map_err(|_| ()).unwrap(), Fq::from_str("244265221148857592230117779251126109093672259705074593425726854244432431537").map_err(|_| ()).unwrap(), Fq::from_str("3339783573831930710228181302359655715657861147157281612383276198708893187560").map_err(|_| ()).unwrap(), Fq::from_str("4616762454119578616027399475977737765223162792543279667476807359876684539357").map_err(|_| ()).unwrap(), Fq::from_str("2701067941287335451337695832217251573222436646292125046249999856859643981490").map_err(|_| ()).unwrap(), Fq::from_str("5393196336119855744824571655674412475633706505827284947563193413492438488691").map_err(|_| ()).unwrap(), Fq::from_str("6796573436449302551523083955724739045751503643681750413111371067794789878597").map_err(|_| ()).unwrap(), Fq::from_str("1717871245275641451442602910236392322516037306074008675881250178168072663141").map_err(|_| ()).unwrap(), Fq::from_str("2525541969317989804751812899254922410702247459776828808500461785313548593449").map_err(|_| ()).unwrap(), Fq::from_str("4393406080224759831407943487747233497883289715389419134393180407785819428816").map_err(|_| ()).unwrap(), Fq::from_str("759271099303622493097265875295304471216619404471506323635435779228707599323").map_err(|_| ()).unwrap(), Fq::from_str("6657858624373344153040139320987988391335408962732827923838403731161871088770").map_err(|_| ()).unwrap(), Fq::from_str("6939038849898671885316533183739266254229700214001815157826574893807635000524").map_err(|_| ()).unwrap(), Fq::from_str("2956062250044031925588211089300332661152138256628933421957907397358544574740").map_err(|_| ()).unwrap()]), +// optimized_arc: OptimizedArcMatrix::new(39, 8, vec![Fq::from_montgomery_limbs([17670646277747935280, 16706444459999957760, 7654997937391160943, 659194013361630234]), Fq::from_montgomery_limbs([9306410324956668761, 11918867663968452855, 16159669320449336406, 1027263653273380654]), Fq::from_montgomery_limbs([10424544810878645940, 11533042162917906716, 11405431418950019185, 1181592306684207657]), Fq::from_montgomery_limbs([15511314950168773025, 2706584092620486610, 12589344906057924987, 198949415522711747]), Fq::from_montgomery_limbs([6463242934034011456, 4480775049700236083, 1147244402884869561, 251099301522684222]), Fq::from_montgomery_limbs([6076653156556680739, 6058362204127962922, 2609006430585927072, 1274277644859784421]), Fq::from_montgomery_limbs([4034147285618545471, 16309046946281719379, 11732506942908882170, 1141734761043516350]), Fq::from_montgomery_limbs([15181402120606708665, 769117698742393942, 8000709366545785093, 128042919054960870]), Fq::from_montgomery_limbs([1723632755773767909, 7425611528820224114, 3846361608213771012, 1317157014229771878]), Fq::from_montgomery_limbs([1180004570926588292, 9835115993104089813, 255514544102365106, 370024046994873563]), Fq::from_montgomery_limbs([16507101987459533719, 15603514395660572922, 14849362947260167652, 1094669615299361663]), Fq::from_montgomery_limbs([1641419564627940104, 1734977130266781622, 2359844858057393580, 88569664018692634]), Fq::from_montgomery_limbs([16267328831985402574, 4504129177123355587, 2430336937000039615, 182724946762968945]), Fq::from_montgomery_limbs([17793535158928999608, 5634031392654154747, 10364337635238532583, 1179994829791766723]), Fq::from_montgomery_limbs([145700301814233551, 7743364595931833861, 13600389751414362190, 60896176710147956]), Fq::from_montgomery_limbs([17934232373820563709, 6533845630243602776, 15324676632824344806, 193078344538210235]), Fq::from_montgomery_limbs([3358859423299088468, 11840854300859333122, 8971776175135254558, 1017237487419914281]), Fq::from_montgomery_limbs([16328481477177681368, 1582997519876787207, 5731557971602616313, 498420306800783215]), Fq::from_montgomery_limbs([12526989383108933614, 11731194362815364383, 12171285115754354694, 1149426086446852474]), Fq::from_montgomery_limbs([809732533742229508, 9195963923014534752, 11886583635578374853, 1292532069463172705]), Fq::from_montgomery_limbs([15459398930996981001, 17972537529111616674, 6256384561719931081, 1099908904421687269]), Fq::from_montgomery_limbs([6194631511262826563, 5980361634035332899, 6132585703186883039, 1343152289862207638]), Fq::from_montgomery_limbs([13704532277655419198, 9493963458736770267, 12653804519172949169, 218428805830292650]), Fq::from_montgomery_limbs([8013496787819495990, 18081394694809078101, 14689354188530395484, 215594972753885108]), Fq::from_montgomery_limbs([1765918642197202432, 14609627278749496598, 17838479232731490790, 483435431183692300]), Fq::from_montgomery_limbs([16887594024800193480, 1328476430727273505, 17409984215868190656, 1068059229250495642]), Fq::from_montgomery_limbs([15487315671093445122, 4028755842123792652, 14118515559434131307, 600004660835889583]), Fq::from_montgomery_limbs([13620558349664282044, 9072735252525972202, 312787852320488038, 47231029883010665]), Fq::from_montgomery_limbs([9895950479699930991, 1320083262020086701, 9381389112858508819, 928504768072893822]), Fq::from_montgomery_limbs([10747871248019763953, 4479404654791651748, 11550770912037988700, 438216942461032792]), Fq::from_montgomery_limbs([18385142532667962947, 12272398000439779637, 7461987138462771945, 558726769125714997]), Fq::from_montgomery_limbs([14139485618053732983, 8348792317702713313, 367233286875102863, 186067690854023043]), Fq::from_montgomery_limbs([9041249832633195933, 456527929350696070, 3136123267563166118, 862425036609816636]), Fq::from_montgomery_limbs([15124489565605096262, 9591776999407651202, 9949743867591863836, 379301809986101293]), Fq::from_montgomery_limbs([7936212225265692567, 5167873242552786141, 15086007892632579186, 34123317109097916]), Fq::from_montgomery_limbs([11979204740795107684, 9025639229793397244, 5413420333413553932, 863248811490344887]), Fq::from_montgomery_limbs([9695363700834200933, 8045139581671731368, 11369126945536873679, 469549910005852030]), Fq::from_montgomery_limbs([16001389245048329705, 14343919283544642008, 8770282828186128872, 609282374273682689]), Fq::from_montgomery_limbs([3823216797063303082, 1094417965873836739, 128140664081656267, 505393735803371332]), Fq::from_montgomery_limbs([11607694328136514560, 15466463320091898450, 1284330480161723488, 523170093647820661]), Fq::from_montgomery_limbs([6591976781647884526, 13155313999173994351, 5534892153549946238, 596288575025257402]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11245287468508932221, 6475072057356916286, 8955917100198612964, 906270931915685321]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15725649958168108419, 4885330408482380508, 6484207300414290657, 1056573086606426860]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16437212199268506264, 15424576221688158299, 13027006101536779850, 608117920425829987]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17697959731033747413, 881277620659586097, 12999020138550792084, 218994748484938916]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12187347033384567067, 17834331425991885966, 8111171543195993305, 1237278747760332198]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11540996079264122621, 2083205448185058166, 346303233664255773, 67570065514985214]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10393932313960189738, 17658417030509504989, 4494310414388827903, 1083916009420136201]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2630959439345449795, 1305013099304121044, 14958893064556663587, 502133670161114876]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13496177055604370316, 12107925075218853848, 10893831346139387200, 735686689798442157]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12364352345596204590, 12473718848164928984, 2425158662567034925, 904357473540167435]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14250114029266561642, 9657963390342822389, 16617255202449702017, 52229193358824331]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3393942568576243306, 15201405507578251139, 6434177138638406256, 116816845492109945]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14360127524315233155, 4631991403443744392, 10826720762323261633, 1154614674523717146]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14829610837565210361, 7693159893394777397, 13277623225200387185, 263905793180518944]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4366690825327685189, 15770582084981330795, 9277162666554299542, 1073180600510589318]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16303997479448678802, 7666294877889688289, 2209941188570371640, 1162514781528013202]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1444309609555002006, 10573827461364748619, 2213854418060563275, 401298293463815465]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13603143649902644173, 267673648604347469, 14770735498081352270, 897064240488864979]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8455439882916778200, 7244379144226653693, 4901050804550540073, 742531378918583129]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9638569098999723413, 8668710516732565855, 12439587172429553092, 769864205315111320]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10577866480500504509, 15180092538013446632, 5047010252898418108, 950851917894966177]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3189260863075829869, 10864458126965265163, 3908173847970795616, 372196369105917792]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2051981355439501951, 5174689290614735930, 13076787589476369050, 248791600711156417]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18083408695123027967, 12620252496424532716, 15225720090085185173, 1087409511851215366]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1151518846415312778, 2617847070972026268, 11920538756871768189, 372494371299109617]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8129021687746030207, 5089594247705352277, 13404536729495455227, 996268291797137887]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9082481642086184012, 16123562957232930427, 113453873016526172, 1171240835007212511]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9619017927874739465, 12861346968534199922, 6474341695138246789, 329774666529093679]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4828844673239990367, 9237140426585666270, 4472429349292670700, 1211740921942321738]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6374588877936433558, 11607665174546753642, 15847675340170713041, 474145143590361300]), Fq::from_montgomery_limbs([4088002413776997222, 16030858922743461837, 4313473177343544055, 817302900123673764]), Fq::from_montgomery_limbs([18216186189548814543, 5687648301273358200, 6564098766262925833, 235647764529877689]), Fq::from_montgomery_limbs([1421650618584051851, 9669410210003093316, 15430467067773365518, 994269415526604309]), Fq::from_montgomery_limbs([7574559796775011993, 9643962694113220666, 1013275434882478619, 543427156325963008]), Fq::from_montgomery_limbs([4532353768594877907, 2433286855157726742, 15167390808651362948, 914159030044677082]), Fq::from_montgomery_limbs([14155199821083030453, 3642619697360819367, 7765405773737076472, 1202115259646869817]), Fq::from_montgomery_limbs([16335533268534142579, 4358492749042076660, 16385044626223358243, 847268434257421024]), Fq::from_montgomery_limbs([726136436292617217, 4735276118883290434, 6495677390337301519, 1007951275499954400]), Fq::from_montgomery_limbs([1441892049918589996, 16125120862288806381, 5244917656153261337, 108755599353706277]), Fq::from_montgomery_limbs([9330223445766086137, 9406197553353640417, 13281468059023600014, 500503138812404763]), Fq::from_montgomery_limbs([5355456155777194776, 15418542913049291849, 7681885321566295504, 1188094463923126996]), Fq::from_montgomery_limbs([11882193142358058793, 4624069509548102427, 6735235437551193554, 962114122876706035]), Fq::from_montgomery_limbs([1819083831857771980, 8349663267034291058, 14403983179525206765, 942284040773068417]), Fq::from_montgomery_limbs([7024062436534453440, 15203692147142724388, 17082973923084045231, 1191890185052815108]), Fq::from_montgomery_limbs([6672719206476059341, 18362672287252020084, 3555226216430454216, 300718449399370145]), Fq::from_montgomery_limbs([5828458911011841758, 9271852277477872143, 18378348640149073615, 591074353691784318]), Fq::from_montgomery_limbs([15397757499179479361, 1878199828613873660, 4164621900891789384, 558990401377082502]), Fq::from_montgomery_limbs([11069496558892348093, 10253211614498485032, 11458203419889384673, 575447664584685933]), Fq::from_montgomery_limbs([9808353214047792416, 4805184465312945639, 3985871967202506787, 1229730183276593449]), Fq::from_montgomery_limbs([8420435996312062450, 11100705514596499443, 1523101111273631766, 639557004587150270]), Fq::from_montgomery_limbs([15630012259368829028, 15079774099427294323, 16765804689810369633, 834886070512612798]), Fq::from_montgomery_limbs([2000344807995355152, 8654391083188520616, 13301563010992444431, 490951127405891771]), Fq::from_montgomery_limbs([11761875542266860374, 709339183471929228, 17682621289319303167, 570040706396372700]), Fq::from_montgomery_limbs([3366481512891059038, 12720609556939839584, 1707138651265172645, 36940608792331559]), Fq::from_montgomery_limbs([2427334396528044490, 10170194639028880515, 18243990154741074229, 607502491270396977]), Fq::from_montgomery_limbs([6267947100515031640, 14520122887125811439, 6695614471931546770, 251319533602819784]), Fq::from_montgomery_limbs([7663026857490478572, 15777701966597798170, 10617198553182548195, 642318201966621785]), Fq::from_montgomery_limbs([9959998770754152632, 13119241263216166622, 6328810982306793729, 571460896430554998]), Fq::from_montgomery_limbs([12042605027273090048, 14859482580111939906, 11509134713697889199, 561895216440235106]), Fq::from_montgomery_limbs([1156916933025613310, 4529329408550568088, 14286907616576238972, 1309540780962817079]), Fq::from_montgomery_limbs([7510365353910652337, 14538991928012962248, 4644117500717216624, 1340316749461135700])]), // } // } diff --git a/poseidon377/src/params/rate_1.rs b/poseidon377/src/params/rate_1.rs new file mode 100644 index 0000000..e683ffa --- /dev/null +++ b/poseidon377/src/params/rate_1.rs @@ -0,0 +1,1317 @@ +use decaf377::Fq; +use poseidon_parameters::v1::{ + Alpha, ArcMatrix, Matrix, MdsMatrix, OptimizedArcMatrix, OptimizedMdsMatrices, + PoseidonParameters, RoundNumbers, SquareMatrix, +}; + +/// Parameters for the rate-1 instance of Poseidon. +pub const fn rate_1() -> PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> { + PoseidonParameters { + M: 128, + arc: ArcMatrix::<39, 2, 78>::new_from_known([ + Fq::from_montgomery_limbs([ + 6258896775460530561, + 1267570262938364784, + 10583705394133388288, + 4331270346116315, + ]), + Fq::from_montgomery_limbs([ + 15454694353288852986, + 2205227775135851582, + 9104115866970654747, + 48952601862872692, + ]), + Fq::from_montgomery_limbs([ + 17632203450119298224, + 13599315412875479343, + 7140007131719627884, + 569020719923681609, + ]), + Fq::from_montgomery_limbs([ + 6608939517720255573, + 15066841911042588370, + 8648475674864948310, + 578035154261448463, + ]), + Fq::from_montgomery_limbs([ + 1055805092356900670, + 5486646384412869322, + 9705528431443784365, + 307684188417815151, + ]), + Fq::from_montgomery_limbs([ + 11248650571348093756, + 1514639161444600232, + 968234586550369174, + 1313541476846290422, + ]), + Fq::from_montgomery_limbs([ + 5189078861895589451, + 9996051726892023924, + 14955307722807799098, + 1320126769029056157, + ]), + Fq::from_montgomery_limbs([ + 14397975440942704641, + 14269464930912859892, + 9230505175050478925, + 1093012507774165575, + ]), + Fq::from_montgomery_limbs([ + 6847445113090943697, + 17673603016395516883, + 15250705377106188486, + 539035154593930175, + ]), + Fq::from_montgomery_limbs([ + 6947720323756162913, + 3313209312340777357, + 18395293995391548637, + 209157278787801614, + ]), + Fq::from_montgomery_limbs([ + 3458319354278701363, + 11429938079178703613, + 7005241729732086579, + 150425083810087548, + ]), + Fq::from_montgomery_limbs([ + 2543869222269883848, + 6129645233495109995, + 1076912762679804840, + 1127382646597654684, + ]), + Fq::from_montgomery_limbs([ + 3802085031173312140, + 1153736051705836195, + 34368926314299214, + 870379362515076367, + ]), + Fq::from_montgomery_limbs([ + 5488449230911278270, + 2470593653263895214, + 2746242821352744093, + 1170504430408456781, + ]), + Fq::from_montgomery_limbs([ + 3039943962034370722, + 16476527388322339887, + 5748836754427063321, + 874163389084517420, + ]), + Fq::from_montgomery_limbs([ + 11160556015001057055, + 18242508582059343688, + 1914918650959602739, + 1060251542697903110, + ]), + Fq::from_montgomery_limbs([ + 1250158851421170863, + 3598229175113435790, + 11440021114985999339, + 539355236403595924, + ]), + Fq::from_montgomery_limbs([ + 17381864786167270102, + 5920159615239164628, + 7621039653090189177, + 80820461513544845, + ]), + Fq::from_montgomery_limbs([ + 9427313983461117140, + 12722081891364237901, + 2526344363227396036, + 169367802375106360, + ]), + Fq::from_montgomery_limbs([ + 18279043286872423918, + 11282585104763746254, + 6663752460065940976, + 1313306297247703395, + ]), + Fq::from_montgomery_limbs([ + 11348011840530639501, + 13585724393536580138, + 16173408530293170097, + 237306649524404549, + ]), + Fq::from_montgomery_limbs([ + 9105438583131143101, + 484614180087189633, + 11007155874658626631, + 1105934356159118197, + ]), + Fq::from_montgomery_limbs([ + 17692463671930692407, + 8848595903938472796, + 11444065729641962767, + 856337008348787181, + ]), + Fq::from_montgomery_limbs([ + 11475710285348090819, + 12082432292625800602, + 4973698077631026180, + 250886293876957218, + ]), + Fq::from_montgomery_limbs([ + 3831119291993789483, + 11955292354948817093, + 10578474534116863906, + 292270082742245378, + ]), + Fq::from_montgomery_limbs([ + 11074518745033881448, + 14103711443902779277, + 9703092681767716480, + 1027943651677607178, + ]), + Fq::from_montgomery_limbs([ + 14255504761835093988, + 12836619582277229653, + 16470467141944117103, + 216605519265731395, + ]), + Fq::from_montgomery_limbs([ + 17412479146814766387, + 7550994961529157056, + 16948400072627593287, + 686398674032066558, + ]), + Fq::from_montgomery_limbs([ + 14019001188641598557, + 17711295492607709098, + 17317648113970387478, + 1005852188387049762, + ]), + Fq::from_montgomery_limbs([ + 2757938402041260135, + 10858479133892891281, + 6226991255650955925, + 113236437448370768, + ]), + Fq::from_montgomery_limbs([ + 2864831845918016166, + 11222314241298259255, + 6809710896423414618, + 391420167412878448, + ]), + Fq::from_montgomery_limbs([ + 15295022328131697798, + 14180180046854426704, + 5969598612677890929, + 422063763314834782, + ]), + Fq::from_montgomery_limbs([ + 9004302479558436050, + 9395856654729450347, + 1876513748778519470, + 1078019802682326971, + ]), + Fq::from_montgomery_limbs([ + 17483474807509017611, + 1860495490123329066, + 10427704098322365889, + 168618466562963955, + ]), + Fq::from_montgomery_limbs([ + 3325616628101926400, + 6318651352098105269, + 10561353542035867513, + 347869863814864598, + ]), + Fq::from_montgomery_limbs([ + 10608180854761738188, + 7227409243651228657, + 10245865730256963695, + 33366710867335616, + ]), + Fq::from_montgomery_limbs([ + 6377899455837337983, + 6460750903815498030, + 14658523922399852198, + 850391300192126368, + ]), + Fq::from_montgomery_limbs([ + 9949314602248501685, + 9592125889973713334, + 12540141676151911968, + 902630930644097978, + ]), + Fq::from_montgomery_limbs([ + 9874569741817026646, + 8597014183735249181, + 14218226934847278615, + 990148636388408942, + ]), + Fq::from_montgomery_limbs([ + 9660554731559651732, + 4712943300030820950, + 8606150340609690108, + 160577077343575019, + ]), + Fq::from_montgomery_limbs([ + 1527563399863479849, + 15731827835699836031, + 7229971325383988685, + 826813386663462338, + ]), + Fq::from_montgomery_limbs([ + 18280004775370667641, + 10717313307037013407, + 3515684275541234253, + 1288829721588576759, + ]), + Fq::from_montgomery_limbs([ + 9831584723932855792, + 1077247411674292976, + 4470807593665567057, + 629496612576050491, + ]), + Fq::from_montgomery_limbs([ + 18018152400203412106, + 16658517283861939563, + 15927825308647499591, + 1046841820836193453, + ]), + Fq::from_montgomery_limbs([ + 424287065221489244, + 17051291629546655826, + 4983999217110075951, + 1278494067020803559, + ]), + Fq::from_montgomery_limbs([ + 13081137544640017921, + 1196650010435295235, + 15746798075854654528, + 1203678627802318991, + ]), + Fq::from_montgomery_limbs([ + 939677723946433505, + 11567589096003441629, + 12722931402128711345, + 720362007908860959, + ]), + Fq::from_montgomery_limbs([ + 14103532265560668917, + 10923867233350724517, + 18049017711808115649, + 375405789021031150, + ]), + Fq::from_montgomery_limbs([ + 497571197013480246, + 10623440047065153586, + 4886324577963912147, + 1126015905264708236, + ]), + Fq::from_montgomery_limbs([ + 8235696195804714347, + 8423059580415141744, + 17356311622946336763, + 215719902708291122, + ]), + Fq::from_montgomery_limbs([ + 13167547990249432274, + 13822834764858661811, + 1681839468362828968, + 1102696208723885390, + ]), + Fq::from_montgomery_limbs([ + 14358625551422878077, + 17488520719897236232, + 10532471740075617546, + 780155994080253829, + ]), + Fq::from_montgomery_limbs([ + 17574454647216920383, + 13786111586753929723, + 11740472500664499721, + 34830030445253818, + ]), + Fq::from_montgomery_limbs([ + 9209614961980615136, + 9937652035573086410, + 1218815569248823646, + 236722195254239968, + ]), + Fq::from_montgomery_limbs([ + 3620849600049355235, + 2774041983584442196, + 6713450660153581499, + 1022079506649410443, + ]), + Fq::from_montgomery_limbs([ + 15478035690602744699, + 17214923924946245378, + 13206453575278417593, + 842388521454715001, + ]), + Fq::from_montgomery_limbs([ + 7853082889027573297, + 5688955180632238595, + 4814575662942306312, + 837428779080817192, + ]), + Fq::from_montgomery_limbs([ + 6927274665365457380, + 4891595237470578015, + 9799180733026983523, + 417480065074766363, + ]), + Fq::from_montgomery_limbs([ + 9633744074825535160, + 13348096458316776884, + 10200632920038276183, + 1241967248070647028, + ]), + Fq::from_montgomery_limbs([ + 7315634111998276785, + 14989100225520468879, + 2450102833924358633, + 264607654026641770, + ]), + Fq::from_montgomery_limbs([ + 7717087918080228437, + 10060974775377729782, + 15332244215838611263, + 711171330417334270, + ]), + Fq::from_montgomery_limbs([ + 2324103748366230971, + 10995578112328024729, + 15408740786099239677, + 1268694519894110373, + ]), + Fq::from_montgomery_limbs([ + 11893493435520502207, + 3766971087184646941, + 15414311780153824548, + 275458309578547698, + ]), + Fq::from_montgomery_limbs([ + 3031245967343841039, + 4502052608729245908, + 4341196184555983012, + 1220348581034324635, + ]), + Fq::from_montgomery_limbs([ + 14560505796665136876, + 9750262619582169702, + 11805062379512156262, + 947525094566692079, + ]), + Fq::from_montgomery_limbs([ + 7374167934946983346, + 10320986442790179232, + 1316321051690183387, + 672142052910646114, + ]), + Fq::from_montgomery_limbs([ + 6678718452413104008, + 3653041364903437992, + 3698421704565957570, + 448468818117066870, + ]), + Fq::from_montgomery_limbs([ + 12909750526124334775, + 6274889465513641781, + 11804747737295382226, + 507133470520718817, + ]), + Fq::from_montgomery_limbs([ + 9667929895833397580, + 11082007517281041627, + 10049496943206931153, + 128401977346054829, + ]), + Fq::from_montgomery_limbs([ + 12310961684508931943, + 17018879353361910672, + 9780939516032057631, + 874860903480789609, + ]), + Fq::from_montgomery_limbs([ + 1042224041096057459, + 15183806776241160696, + 2334295613683866263, + 49327571912713520, + ]), + Fq::from_montgomery_limbs([ + 17515802687784336662, + 10591106814883990536, + 4193417463306063615, + 23930315094714182, + ]), + Fq::from_montgomery_limbs([ + 15007113684212052093, + 95900555196155559, + 9807646841884583683, + 251554444378507936, + ]), + Fq::from_montgomery_limbs([ + 8094314597037982537, + 326195237272228919, + 9972406889128755860, + 563568079596439234, + ]), + Fq::from_montgomery_limbs([ + 12074057828954296990, + 17459062068677478655, + 2059156604363327430, + 860353551420485928, + ]), + Fq::from_montgomery_limbs([ + 13609943108532429528, + 16610915446730445558, + 9788093117338911219, + 1175759231734449357, + ]), + Fq::from_montgomery_limbs([ + 7485446014387007697, + 13102110362887743132, + 11648775823210990955, + 43349719308454144, + ]), + Fq::from_montgomery_limbs([ + 11902878575783530648, + 16441587368398080183, + 9321126611136841229, + 579191052426365547, + ]), + ]), + mds: MdsMatrix::new_from_known([ + Fq::from_montgomery_limbs([ + 14093733558879256570, + 16573587507929677817, + 13530556323685588983, + 1151689812725735417, + ]), + Fq::from_montgomery_limbs([ + 15302903146332116305, + 8895355854553175376, + 548696419140371791, + 319366418254432479, + ]), + Fq::from_montgomery_limbs([ + 15302903146332116305, + 8895355854553175376, + 548696419140371791, + 319366418254432479, + ]), + Fq::from_montgomery_limbs([ + 16270238816294404093, + 17510165790819614716, + 15988650198697570299, + 575844906362867708, + ]), + ]), + alpha: Alpha::Exponent(17), + rounds: RoundNumbers { r_P: 31, r_F: 8 }, + optimized_mds: OptimizedMdsMatrices { + M_hat: SquareMatrix::<1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 16270238816294404093, + 17510165790819614716, + 15988650198697570299, + 575844906362867708, + ])]), + v: Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 15302903146332116305, + 8895355854553175376, + 548696419140371791, + 319366418254432479, + ])]), + w: Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 15302903146332116305, + 8895355854553175376, + 548696419140371791, + 319366418254432479, + ])]), + M_prime: SquareMatrix::<2, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16270238816294404093, + 17510165790819614716, + 15988650198697570299, + 575844906362867708, + ]), + ]), + M_doubleprime: SquareMatrix::<2, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 14093733558879256570, + 16573587507929677817, + 13530556323685588983, + 1151689812725735417, + ]), + Fq::from_montgomery_limbs([ + 15302903146332116305, + 8895355854553175376, + 548696419140371791, + 319366418254432479, + ]), + Fq::from_montgomery_limbs([ + 5871380364199810372, + 17134679344503149891, + 2194785676561487165, + 1277465673017729916, + ]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + ]), + M_inverse: SquareMatrix::<2, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 5994009629053419274, + 15434301171572932352, + 1350487059822599859, + 1102422137481273087, + ]), + Fq::from_montgomery_limbs([ + 18054649431151608138, + 10789890749345300822, + 12135909219384222141, + 1220664558067982680, + ]), + Fq::from_montgomery_limbs([ + 18054649431151608138, + 10789890749345300822, + 12135909219384222141, + 1220664558067982680, + ]), + Fq::from_montgomery_limbs([ + 11262517505635122707, + 5960750817236483583, + 14179438877114240358, + 859563904274372775, + ]), + ]), + M_hat_inverse: SquareMatrix::<1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 16163137587655999434, + 1588334981690687431, + 11094542470912991159, + 1141836277676842951, + ])]), + M_00: Fq::from_montgomery_limbs([ + 14093733558879256570, + 16573587507929677817, + 13530556323685588983, + 1151689812725735417, + ]), + M_i: Matrix::<2, 2, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 4]), + ]), + v_collection: [ + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 15302903146332116305, + 8895355854553175376, + 548696419140371791, + 319366418254432479, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 1281160748661064590, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 992930372509352846, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 920872778471424910, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 902858379961942926, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 898354780334572430, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 897228880427729806, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896947405451019150, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896877036706841486, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896859444520797070, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896855046474285966, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853946962658190, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853672084751246, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853603365274510, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853586185405326, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853581890438030, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580816696206, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580548260750, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580481151886, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580464374670, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580460180366, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580459131790, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580458869646, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580458804110, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580458787726, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580458783630, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580458782606, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580458782350, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580458782286, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 483667834981143894, + 4307404968133219670, + 16943348926633375062, + 896853580458782270, + ])]), + ], + w_hat_collection: [ + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 5871380364199810372, + 17134679344503149891, + 2194785676561487165, + 1277465673017729916, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 2862272125674542349, + 12261906873994007818, + 6321048831233967347, + 1074021580006399469, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 9272583245283021873, + 11217561065666991141, + 4379357376214336458, + 260245207961077682, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 196844833712984260, + 7976756115248861334, + 17517429504857345834, + 1040980831844310728, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 17057618151146341133, + 12523702104395956820, + 12271391923288747173, + 128082215312722720, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 12890240383456709684, + 13201320270164724051, + 12192079545735885462, + 512328861250890882, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 13941971633936019663, + 9450685481039963469, + 4906550719283927641, + 704035074315390132, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 17423394883381543738, + 6433782946050643252, + 5689644244654688611, + 125579555885213732, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 14353347312397520104, + 7288387710493021395, + 4311832904909202829, + 502318223540854929, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 1347655275989709727, + 4245699316062704462, + 10279052303396300340, + 663992523475246318, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 4665119351487123067, + 10521689812050988343, + 15701185823635138767, + 1310689723212811875, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 16483972148533344745, + 4256692817894913241, + 5006417198399918906, + 1206917780786727308, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 8419151115589576609, + 16090192988689716068, + 17567574918587694308, + 791830011082389037, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 13778856883705323138, + 14545068902940102031, + 993508820741100432, + 476759302953209355, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 17496437634930473479, + 14825680012141475389, + 15452500040433442369, + 561756841124664021, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 13920016566121523227, + 15948124448946968822, + 17948232698074155269, + 901746993810482688, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 17335574612123557994, + 13976794743969113048, + 2516139938686944276, + 916427233865583959, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 12551062722422145446, + 6091475924057689953, + 14574745195976306768, + 975148194085989039, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 11859759237326046870, + 11443688791831100804, + 7468934004005101886, + 1210032034967609362, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 8369043544469936725, + 7944688737015363087, + 8970898067298874614, + 804287027805917254, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 13578426599226763602, + 409795969952241723, + 3500289563004924887, + 526587369847322221, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 16694716497016235335, + 13624820501318689005, + 7032878935779188570, + 761069108701115486, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 9987630261992854810, + 4683578953455993781, + 14194957110635732328, + 353715693428115148, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 2331531148080600167, + 12273208361624145621, + 12918060978883315103, + 69582403024287196, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 9326124592322400668, + 12199345299077479252, + 14778755768114157182, + 278329612097148786, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 411010221870499440, + 11903893048890813778, + 3774790851327973882, + 1113318448388595147, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 17914279703776401853, + 9785505765254214980, + 12641069530299914214, + 417432681489860393, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 15591384841505236723, + 14234171535107478802, + 6702510657540042648, + 324450355271268176, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 7025307144892292044, + 1596453919301260363, + 8363298556450618979, + 1297801421085072705, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 7477979248444469037, + 5449237394315104554, + 12548356277080942984, + 1155364572275770626, + ])]), + Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([ + 9288667662653177009, + 2413627220660929702, + 10841843085892687389, + 585617177038562311, + ])]), + ], + }, + optimized_arc: OptimizedArcMatrix::<39, 2, 78>::new_from_known([ + Fq::from_montgomery_limbs([ + 6258896775460530561, + 1267570262938364784, + 10583705394133388288, + 4331270346116315, + ]), + Fq::from_montgomery_limbs([ + 15454694353288852986, + 2205227775135851582, + 9104115866970654747, + 48952601862872692, + ]), + Fq::from_montgomery_limbs([ + 17632203450119298224, + 13599315412875479343, + 7140007131719627884, + 569020719923681609, + ]), + Fq::from_montgomery_limbs([ + 6608939517720255573, + 15066841911042588370, + 8648475674864948310, + 578035154261448463, + ]), + Fq::from_montgomery_limbs([ + 1055805092356900670, + 5486646384412869322, + 9705528431443784365, + 307684188417815151, + ]), + Fq::from_montgomery_limbs([ + 11248650571348093756, + 1514639161444600232, + 968234586550369174, + 1313541476846290422, + ]), + Fq::from_montgomery_limbs([ + 5189078861895589451, + 9996051726892023924, + 14955307722807799098, + 1320126769029056157, + ]), + Fq::from_montgomery_limbs([ + 14397975440942704641, + 14269464930912859892, + 9230505175050478925, + 1093012507774165575, + ]), + Fq::from_montgomery_limbs([ + 6847445113090943697, + 17673603016395516883, + 15250705377106188486, + 539035154593930175, + ]), + Fq::from_montgomery_limbs([ + 3611307702635802055, + 2044680977517755214, + 1507155857745404241, + 416523989909284581, + ]), + Fq::from_montgomery_limbs([ + 15773496315521971064, + 3417307918093239503, + 5319102997109207920, + 1059459273997968718, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10991357984979900529, + 11786708072563616304, + 15195751910119459835, + 1325497062894455603, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16027823656497991124, + 9570249298141187698, + 9384192828271733406, + 598167880091560796, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4121766814818268604, + 5642500678209337527, + 11249605790034284655, + 169274140565479991, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 18428671666826012339, + 3103504747064554186, + 2824060703077903905, + 650804942285219865, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6536595406830723568, + 12507627360655164307, + 5816557923264156407, + 1171438146865855396, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7014452833430165540, + 2192734170292167642, + 18020153564698148489, + 943832042172430504, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 15061407369851519692, + 5313653764899529765, + 18112450540856929121, + 723535739146239880, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11839250336475774987, + 15868350915088614311, + 11144158850926607283, + 20878601091348541, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4149527232578341040, + 5854266614316639968, + 16351407150591024716, + 455766835829125567, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12471037099388658934, + 2086101075023281280, + 1788538226576314996, + 1339656767645635692, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11602956738027931852, + 9207937453523162767, + 13647296147603057333, + 111521899082870644, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4471865953303794141, + 10665791129581261198, + 12917311030821790127, + 421715564603751799, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7266742212555730010, + 4344990323783613969, + 6675828359235980546, + 1075010774212196894, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17274747138948537703, + 8997958909963391104, + 7585281533244210281, + 1289863406379487668, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16682415876718386807, + 6754707099034381256, + 17068117384213468958, + 1039851084794055603, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17452413239970755288, + 15172605790896474036, + 12289534575869712530, + 1247895409152971025, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9189529962407134994, + 11058665231577655834, + 16040250280290103955, + 583188588452985106, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12330122353729758122, + 7872244451651384396, + 1718216203500654841, + 947488898510695688, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2532148827221633905, + 11277707113691069015, + 13146274701375091754, + 1122111291456835663, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 13318309830858313604, + 15574521868164640680, + 16956455155077117710, + 135767028023417208, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 750420733483410590, + 2418854296448104823, + 15284086408483984263, + 341138452402312061, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16457963474965655942, + 5443472470949495638, + 2064775438293218219, + 400327702117075871, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10542835534533651006, + 6753561243806226378, + 12003236697439509817, + 241774398989798606, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 1079740531825589218, + 855297542685037903, + 469984130808287107, + 1004975734823384044, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11494156914009901023, + 10804976036978117356, + 8604768447320145756, + 183564350030538687, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16681620867545906411, + 2060231339788432100, + 17049513972176383365, + 112003830623007503, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 668347479965076886, + 10549614204057010371, + 13122395911704198577, + 892397509190749082, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 832717394377902022, + 17441619158292034189, + 10775807051709353596, + 73942828503744396, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17843890747357672894, + 10605743677137367533, + 6810818872903428049, + 148499098324463880, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 1042224041096057459, + 15183806776241160696, + 2334295613683866263, + 49327571912713520, + ]), + Fq::from_montgomery_limbs([ + 17515802687784336662, + 10591106814883990536, + 4193417463306063615, + 23930315094714182, + ]), + Fq::from_montgomery_limbs([ + 15007113684212052093, + 95900555196155559, + 9807646841884583683, + 251554444378507936, + ]), + Fq::from_montgomery_limbs([ + 8094314597037982537, + 326195237272228919, + 9972406889128755860, + 563568079596439234, + ]), + Fq::from_montgomery_limbs([ + 12074057828954296990, + 17459062068677478655, + 2059156604363327430, + 860353551420485928, + ]), + Fq::from_montgomery_limbs([ + 13609943108532429528, + 16610915446730445558, + 9788093117338911219, + 1175759231734449357, + ]), + Fq::from_montgomery_limbs([ + 7485446014387007697, + 13102110362887743132, + 11648775823210990955, + 43349719308454144, + ]), + Fq::from_montgomery_limbs([ + 11902878575783530648, + 16441587368398080183, + 9321126611136841229, + 579191052426365547, + ]), + ]), + } +} From d9fffe540c4fe73fdbfbc854ee5bc30734dae50b Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 2 Apr 2024 17:10:37 -0400 Subject: [PATCH 44/54] poseidon377 compiling on thumbv8m.main-none-eabi --- poseidon377/Cargo.toml | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/poseidon377/Cargo.toml b/poseidon377/Cargo.toml index 9c422de..538d2d7 100644 --- a/poseidon377/Cargo.toml +++ b/poseidon377/Cargo.toml @@ -8,19 +8,17 @@ license = "MIT OR Apache-2.0" repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] +decaf377 = { git = "https://github.com/penumbra-zone/decaf377.git", branch="for-poseidon377", default-features = false } +poseidon-parameters = { version="1.0", path = "../poseidon-parameters", default-features = false } +poseidon-permutation = { version="1.0", path = "../poseidon-permutation", default-features = false } + ark-ff = { version = "0.4", default-features = false, optional=true } ark-groth16 = { version = "0.4", default-features = false, optional=true } ark-r1cs-std = {version = "0.4", default-features = false, optional=true } ark-relations = { version="0.4", default-features = false, optional=true } ark-snark = { version = "0.4", default-features = false, optional=true } -decaf377 = { git = "https://github.com/penumbra-zone/decaf377.git", branch="for-poseidon377", default-features = false } -poseidon-parameters = { version="1.0", path = "../poseidon-parameters", default-features = false } -poseidon-permutation = { version="1.0", path = "../poseidon-permutation", default-features = false } - -# Dependencies added for ark-sponge vendoring ark-ec = { version = "0.4", default_features = false, optional=true } ark-std = { version = "0.4", default-features = false, optional=true } -tracing = { version = "0.1", default-features = false, features = [ "attributes" ], optional = true } ark-serialize = { version = "0.4", default_features = false, optional=true } [dev-dependencies] @@ -58,7 +56,6 @@ r1cs = [ "poseidon-permutation/r1cs", "ark-std", "ark-ec", - "tracing", "ark-serialize", ] parallel = [ @@ -70,11 +67,6 @@ parallel = [ "ark-ec/parallel", ] -[build-dependencies] -poseidon-paramgen = { version="0.4", path = "../poseidon-paramgen" } -ark-ed-on-bls12-377 = "0.4" -ark-ff = "0.4" - [[test]] name = "r1cs" required-features = ["r1cs"] From 31ac64d71a3ebcc268dca64d97d1c204423a683d Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 2 Apr 2024 17:25:19 -0400 Subject: [PATCH 45/54] poseidon377: rate 2 --- poseidon377/src/hash.rs | 52 ++++++++++++++++---------------- poseidon377/src/lib.rs | 5 +-- poseidon377/src/params.rs | 27 +---------------- poseidon377/src/params/rate_2.rs | 32 ++++++++++++++++++++ 4 files changed, 62 insertions(+), 54 deletions(-) create mode 100644 poseidon377/src/params/rate_2.rs diff --git a/poseidon377/src/hash.rs b/poseidon377/src/hash.rs index 40bd9f9..eb2f932 100644 --- a/poseidon377/src/hash.rs +++ b/poseidon377/src/hash.rs @@ -7,12 +7,12 @@ pub fn hash_1(domain_separator: &Fq, value: Fq) -> Fq { state.n_to_1_fixed_hash(&[*domain_separator, value]) } -// /// Hash two [`Fq`] elements with the provided `domain_separator`. -// pub fn hash_2(domain_separator: &Fq, value: (Fq, Fq)) -> Fq { -// let params = &crate::RATE_2_PARAMS; -// let mut state = Instance::new(params); -// state.n_to_1_fixed_hash(vec![*domain_separator, value.0, value.1]) -// } +/// Hash two [`Fq`] elements with the provided `domain_separator`. +pub fn hash_2(domain_separator: &Fq, value: (Fq, Fq)) -> Fq { + let params = &crate::RATE_2_PARAMS; + let mut state = Instance::new(params); + state.n_to_1_fixed_hash(&[*domain_separator, value.0, value.1]) +} // /// Hash three [`Fq`] elements with the provided `domain_separator`. // pub fn hash_3(domain_separator: &Fq, value: (Fq, Fq, Fq)) -> Fq { @@ -97,30 +97,30 @@ mod test { assert_eq!(output, expected_output); } - // #[test] - // fn rate_2() { - // let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); + #[test] + fn rate_2() { + let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); - // let input = ( - // Fq::from_str( - // "7553885614632219548127688026174585776320152166623257619763178041781456016062", - // ) - // .unwrap(), - // Fq::from_str( - // "2337838243217876174544784248400816541933405738836087430664765452605435675740", - // ) - // .unwrap(), - // ); + let input = ( + Fq::from_str( + "7553885614632219548127688026174585776320152166623257619763178041781456016062", + ) + .unwrap(), + Fq::from_str( + "2337838243217876174544784248400816541933405738836087430664765452605435675740", + ) + .unwrap(), + ); - // let output = hash_2(&domain_sep, input); + let output = hash_2(&domain_sep, input); - // let expected_output = Fq::from_str( - // "4318449279293553393006719276941638490334729643330833590842693275258805886300", - // ) - // .unwrap(); + let expected_output = Fq::from_str( + "4318449279293553393006719276941638490334729643330833590842693275258805886300", + ) + .unwrap(); - // assert_eq!(output, expected_output); - // } + assert_eq!(output, expected_output); + } // #[test] // fn rate_3() { diff --git a/poseidon377/src/lib.rs b/poseidon377/src/lib.rs index 4a29e97..34a7796 100644 --- a/poseidon377/src/lib.rs +++ b/poseidon377/src/lib.rs @@ -5,13 +5,14 @@ mod hash; mod params; // pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5, hash_6, hash_7}; -pub use hash::hash_1; +pub use hash::{hash_1, hash_2}; /// Parameters for the rate-1 instance of Poseidon. pub const RATE_1_PARAMS: PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> = params::rate_1::rate_1(); /// Parameters for the rate-2 instance of Poseidon. -// pub static RATE_2_PARAMS: Lazy> = Lazy::new(params::rate_2); +pub static RATE_2_PARAMS: PoseidonParameters<3, 2, 9, 4, 39, 3, 117, 31> = params::rate_2::rate_2(); + // /// Parameters for the rate-3 instance of Poseidon. // pub static RATE_3_PARAMS: Lazy> = Lazy::new(params::rate_3); // /// Parameters for the rate-4 instance of Poseidon. diff --git a/poseidon377/src/params.rs b/poseidon377/src/params.rs index fd0c008..686bb1e 100644 --- a/poseidon377/src/params.rs +++ b/poseidon377/src/params.rs @@ -1,30 +1,5 @@ pub mod rate_1; - -// /// Parameters for the rate-2 instance of Poseidon. -// pub fn rate_2() -> PoseidonParameters { -// PoseidonParameters { -// M: 128, -// t: 3, -// arc: ArcMatrix::new(39, 3, vec![Fq::from_montgomery_limbs([13532052565085671856, 13175575834742130482, 14571043277169067394, 1128324334676141805]), Fq::from_montgomery_limbs([10586567975029405298, 5987505274649066590, 9663655893165983133, 381788629769180835]), Fq::from_montgomery_limbs([7404335995308317606, 10342209374602516054, 14679697400509748167, 1259991645283011647]), Fq::from_montgomery_limbs([12711294721892819516, 8412935995118692797, 7069737649526067295, 549549236990677487]), Fq::from_montgomery_limbs([128694122049037398, 15825223235256271389, 74647683628497806, 403759781237802093]), Fq::from_montgomery_limbs([3501552524290051296, 10688664658423588201, 8345653809557910120, 766292783896459938]), Fq::from_montgomery_limbs([13998055823902745235, 15535161481341849823, 9848874496394823215, 579121379437172744]), Fq::from_montgomery_limbs([16363263235454987811, 9117252686821547535, 4794867261658414781, 418411818796950741]), Fq::from_montgomery_limbs([3710344964675021293, 13957371261080223237, 15195218532629186765, 760708816844813378]), Fq::from_montgomery_limbs([16135673103471103205, 13943139040297964408, 12037506718934223099, 1187380734246932890]), Fq::from_montgomery_limbs([11326210002632211732, 2893415499386035614, 2949171194607212014, 568849018592141776]), Fq::from_montgomery_limbs([13925494990768706056, 13969996543019858204, 13457764640058086886, 114396439087701688]), Fq::from_montgomery_limbs([16351586607272228519, 6269966282891300082, 12490381894697744781, 834648274293416263]), Fq::from_montgomery_limbs([1437979443977545600, 14767193465362841311, 11074881595123675812, 1204201379421269428]), Fq::from_montgomery_limbs([5230240271406271908, 16847766581152362930, 1712847198165617791, 311937423231086981]), Fq::from_montgomery_limbs([3645836740283016323, 15685198898945208452, 1980971647688859029, 176967089015698342]), Fq::from_montgomery_limbs([7550143813701248311, 18291556615524985846, 8534400014086995148, 500430429779017952]), Fq::from_montgomery_limbs([596957473479108084, 6324092840533510915, 4811101589352947098, 76518932650696039]), Fq::from_montgomery_limbs([336812235439984799, 13522610888312181094, 10501405696980879642, 449669351326561391]), Fq::from_montgomery_limbs([12592523411743912820, 3924222765120111350, 5699458771760954386, 892267873608702453]), Fq::from_montgomery_limbs([12993017322389395630, 5952902593915102432, 5247111021983199097, 470467609253978097]), Fq::from_montgomery_limbs([7244663031809848522, 3071554415549245091, 2773295222867337766, 1090905641165090834]), Fq::from_montgomery_limbs([9981097535495148290, 12930981823992014491, 9629464214154256600, 308026108875661910]), Fq::from_montgomery_limbs([12850815434424207307, 8847171669624931211, 16288364336002865240, 954936779594025677]), Fq::from_montgomery_limbs([11236881576270168641, 15414742267201110956, 7825767860878753872, 721136380245447153]), Fq::from_montgomery_limbs([2832704701681877466, 7235621408572302496, 11812570847329545593, 792455748001887640]), Fq::from_montgomery_limbs([3432713492718273410, 6465506654245539380, 8827139003294513485, 992550877185604089]), Fq::from_montgomery_limbs([9728786934890323565, 10584002864733096791, 2293345482796697755, 180937419315601034]), Fq::from_montgomery_limbs([13822678097673121251, 4948809415032161320, 15691917123613077102, 683890210553461269]), Fq::from_montgomery_limbs([9002390647260096239, 10448673368926307125, 17815937281103619895, 1097505426950771788]), Fq::from_montgomery_limbs([13908365267431289868, 3370079770970658040, 15308027316557057295, 1308145822882463267]), Fq::from_montgomery_limbs([7831189882886479452, 4689238810753296883, 13159502922430301346, 27611585919074368]), Fq::from_montgomery_limbs([14912709676120752020, 10115204646384083757, 10138309295115926582, 223210301540489796]), Fq::from_montgomery_limbs([12627294687244820632, 2059848305109767326, 1888484742856066068, 1272834063475208138]), Fq::from_montgomery_limbs([6115210324513801758, 10929870666119062300, 11707806468269326656, 949025326858793021]), Fq::from_montgomery_limbs([7061826933729287205, 1126603583829494325, 5469143638052028670, 1033665004945948695]), Fq::from_montgomery_limbs([11008930476894918520, 11381807375074895164, 2844592577512486485, 1128817316316311928]), Fq::from_montgomery_limbs([5300558244079945539, 8283037415518590201, 11038807277807240648, 1178232107582202545]), Fq::from_montgomery_limbs([11862022433031293870, 8913994378642882666, 9450763413034135432, 77958396662445698]), Fq::from_montgomery_limbs([17688402066322086519, 524036851070457942, 14909117109897886121, 557290224371677333]), Fq::from_montgomery_limbs([1875815915909501089, 10678692213853973640, 15989623299920327105, 428879321377057641]), Fq::from_montgomery_limbs([1082841901890716129, 12068516826131602351, 7102481379375591007, 906616535867466859]), Fq::from_montgomery_limbs([17613918888580330287, 6204465427334198417, 9436344365449852604, 655489186886697]), Fq::from_montgomery_limbs([17585284967658841164, 80944379680805043, 2698615756683481750, 351188921018806563]), Fq::from_montgomery_limbs([15687615037958784071, 2186404284346347770, 5652967689160162635, 1056583988063876017]), Fq::from_montgomery_limbs([13107987562409563672, 3871322351409280978, 8803804680465229381, 1030040159656924298]), Fq::from_montgomery_limbs([16684869482081657339, 10281204171444660632, 1624958597982547757, 386745834466917047]), Fq::from_montgomery_limbs([6970896123209894127, 7830160530923913939, 17422861911349199859, 623374110284783712]), Fq::from_montgomery_limbs([4331844870617545742, 520046082233107649, 5594606953430693091, 249698853373994073]), Fq::from_montgomery_limbs([6680837442175120485, 6814766854525276712, 6556825746309967179, 570042050188335199]), Fq::from_montgomery_limbs([15436728868072851979, 10638387680273826288, 16379320772832534606, 822954407147775124]), Fq::from_montgomery_limbs([11837214986206518455, 596921394620411645, 13159256680099246054, 1277661308547494330]), Fq::from_montgomery_limbs([13679203667889812546, 11676386286470050129, 8357354920215222534, 456950010799870038]), Fq::from_montgomery_limbs([2229876009761017392, 13089694557765213339, 16529665410348556997, 1200161010593736391]), Fq::from_montgomery_limbs([16005321486742773520, 8650710416750881700, 12927174790925866955, 1318630719916273524]), Fq::from_montgomery_limbs([11180409359961118236, 7275623093671008389, 11439214005189014436, 975533040864102009]), Fq::from_montgomery_limbs([1493684412606064445, 1600586062110688441, 6392169949497859284, 320645276436957806]), Fq::from_montgomery_limbs([18076284763174743111, 15528272241931714086, 1987806618344857317, 81963683463344143]), Fq::from_montgomery_limbs([2380106604330211947, 13999809284604519871, 17117752833631344354, 928049684624129249]), Fq::from_montgomery_limbs([16709180677553116618, 15078892089982505559, 12839669848886637777, 1151522444646802538]), Fq::from_montgomery_limbs([1024922389916170464, 4633605473275241115, 8890730306179887903, 1145679956560153579]), Fq::from_montgomery_limbs([2689026397641652069, 13435392347048733438, 4613843849026450873, 644769297929746792]), Fq::from_montgomery_limbs([1477469845453362358, 8875949790662885201, 7478581831156986579, 67083263015332207]), Fq::from_montgomery_limbs([1506147123099314810, 6546355754774050650, 13235191534515389566, 573446483563428911]), Fq::from_montgomery_limbs([11592075759296992527, 11495396924055153811, 17020953547937729115, 326913902434578022]), Fq::from_montgomery_limbs([10523148363065643749, 13492540919508068783, 17386067260199896807, 528704601527288393]), Fq::from_montgomery_limbs([9127950768740932108, 15914409702651500773, 11784570023787002367, 340904789729663175]), Fq::from_montgomery_limbs([6245027322171754000, 15663478768566472378, 11402185558701422250, 36675236290199327]), Fq::from_montgomery_limbs([6063749964881818939, 10257461935793181106, 942936442940111744, 540037121922249544]), Fq::from_montgomery_limbs([12968659316148036261, 14899520595018177284, 3836336888070673001, 941781069635905693]), Fq::from_montgomery_limbs([126228530830236165, 5499407626081829044, 14133761497400979158, 1184006332035149871]), Fq::from_montgomery_limbs([5031808939874245057, 12620452215680194384, 1600289362926216464, 1200752349590914751]), Fq::from_montgomery_limbs([13105110393340809165, 7101636223400183860, 1455202496382111435, 1040366751489349639]), Fq::from_montgomery_limbs([2247493102747455874, 3444719793324110884, 17343476723736941016, 460423680466113922]), Fq::from_montgomery_limbs([18230610362649795022, 4850929477447852354, 2999970116929109994, 374491266534684371]), Fq::from_montgomery_limbs([205446930692894616, 10625340386042781881, 2267554848789579110, 805571592523062224]), Fq::from_montgomery_limbs([9554436490539537540, 3781982688039156286, 12732806211783679988, 207650560800307204]), Fq::from_montgomery_limbs([14608069410708161069, 15150367565152858757, 7976963546254869682, 1302080053778539832]), Fq::from_montgomery_limbs([5668581368285301758, 1481024316238442280, 14073619068562930813, 157011518856032932]), Fq::from_montgomery_limbs([10782685697581511660, 656395425526716484, 12429361742269361127, 1218629948585201369]), Fq::from_montgomery_limbs([9945724486634605933, 5559580130460001707, 4958363795583827901, 1086630389709013647]), Fq::from_montgomery_limbs([6214153618072836629, 6297284130475637236, 3341157682715609955, 687805559853576127]), Fq::from_montgomery_limbs([17561648631049166744, 4193461398377217711, 17499970945040917083, 352506169960283993]), Fq::from_montgomery_limbs([1122765646603573063, 1498611916106521677, 10924305234288949443, 728326887801130515]), Fq::from_montgomery_limbs([5800850628186966207, 4398317517906769115, 9597227115480831972, 526197039749009419]), Fq::from_montgomery_limbs([5159263173914965708, 8792786795115987428, 3124972989790777106, 1052873249848825660]), Fq::from_montgomery_limbs([1668691385020369393, 4311283499155522888, 13095876963782085960, 334904475460146335]), Fq::from_montgomery_limbs([14551884987824763154, 5459630410931408158, 838248742615457530, 355270342663742218]), Fq::from_montgomery_limbs([13811707083670026157, 17980420357872171335, 15680078942835361627, 508494405154027190]), Fq::from_montgomery_limbs([259245969673242010, 12143818002017916372, 9104957694955299615, 588078921942677607]), Fq::from_montgomery_limbs([1402823264425646775, 17394328405754534008, 8594536777296298084, 589743092826427286]), Fq::from_montgomery_limbs([17525191514318164285, 3032947818017798651, 8010733640330629183, 18263345896298111]), Fq::from_montgomery_limbs([2324591806430845335, 3802314283763375525, 5802980770825972296, 1172121386066784655]), Fq::from_montgomery_limbs([3481957081013606129, 7174433466077666272, 18298661318322644558, 779600890592950522]), Fq::from_montgomery_limbs([12191117132876429501, 13984916474435046850, 15993612081836470001, 982264150805006675]), Fq::from_montgomery_limbs([5832216401942411966, 14563514500329138886, 4063839581877579762, 988127094162723498]), Fq::from_montgomery_limbs([9980296771901734820, 8406919274419375318, 7382848308758481422, 288106649508594049]), Fq::from_montgomery_limbs([15311094169366877824, 8845543297515843004, 5111676196784685495, 854309633222289538]), Fq::from_montgomery_limbs([11805299538225612753, 2464747910811709980, 7821113581135412494, 698716086285897944]), Fq::from_montgomery_limbs([14453145658534747007, 17272254080461340124, 10230451546974640772, 626243697059407772]), Fq::from_montgomery_limbs([11287978532447653494, 18279346120194159177, 2333031913403775389, 200338723139384832]), Fq::from_montgomery_limbs([12366653650419860061, 16274230817774725784, 4516721510516055669, 75055982532212210]), Fq::from_montgomery_limbs([388555674032981681, 6567318722554709379, 2086741448191262667, 908777123569794972]), Fq::from_montgomery_limbs([9649589442582163437, 13541178269507352071, 14258536536571968121, 575215969686158075]), Fq::from_montgomery_limbs([597836451158842199, 1858657668022201800, 504852646431126025, 351889211223645499]), Fq::from_montgomery_limbs([8710335429210318089, 15939765460477572548, 13493874982974354172, 1195299757590572308]), Fq::from_montgomery_limbs([16720044796621311460, 6297107607479107816, 15666086360782481298, 946070823657072210]), Fq::from_montgomery_limbs([5216764590966106189, 18330556132248987975, 14778046174865524185, 601592383999400705]), Fq::from_montgomery_limbs([12284358746189003172, 15796822047553990474, 10249807758448272935, 1260540691182942177]), Fq::from_montgomery_limbs([14671741496053748797, 15956144823383552989, 8978105115308257315, 1129739098292337641]), Fq::from_montgomery_limbs([16528885559305010985, 14885472285663731653, 8692450371018254777, 875854298006252122]), Fq::from_montgomery_limbs([11216935928075429441, 7088545516130524118, 3510979311098449529, 980345967679074250]), Fq::from_montgomery_limbs([8480849792218315917, 11146529356407982510, 4204845623809735650, 554809226012522197]), Fq::from_montgomery_limbs([9465397404983425896, 1339596460298740670, 2695000812316794677, 164270174202044235]), Fq::from_montgomery_limbs([12807958353199166386, 2607509355362673632, 9510828759520576266, 306232379852697998]), Fq::from_montgomery_limbs([14216260065142834520, 8830790711865643815, 7264415235010871052, 905551093713836953]), Fq::from_montgomery_limbs([1392129315389772974, 3163495863255052347, 5961497987857813198, 47707649459794917])]), -// mds: MdsMatrix::from_elements(vec![Fq::from_montgomery_limbs([15302903146332116305, 8895355854553175376, 548696419140371791, 319366418254432479]), Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), -// alpha: Alpha::Exponent(17), -// rounds: RoundNumbers {r_P: 31, r_F: 8}, -// optimized_mds: OptimizedMdsMatrices { -// M_hat: SquareMatrix::new(2, 2, vec![Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), -// v: Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846])]), -// w: Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846])]), -// M_prime: SquareMatrix::new(3, 3, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), -// M_doubleprime: SquareMatrix::new(3, 3, vec![Fq::from_montgomery_limbs([15302903146332116305, 8895355854553175376, 548696419140371791, 319366418254432479]), Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([7147916296078753751, 11795755565450264533, 9448453213491875784, 183737022913545514]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10406805428937057924, 14160037477503257835, 7036231764655967476, 1082136417579874198]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), -// M_inverse: SquareMatrix::new(3, 3, vec![Fq::from_montgomery_limbs([4383832024780107759, 7223259317565124429, 5707462847421561422, 885057472408297272]), Fq::from_montgomery_limbs([6746251504312660021, 9699181025413837338, 15260914163925889303, 35388324151454979]), Fq::from_montgomery_limbs([5008847210566114882, 8801394942975925486, 18175922902442652272, 916924432575702892]), Fq::from_montgomery_limbs([6746251504312660021, 9699181025413837338, 15260914163925889303, 35388324151454979]), Fq::from_montgomery_limbs([15450583684112934333, 18216376800760520619, 4209613945072000948, 155813436852978744]), Fq::from_montgomery_limbs([9834172736316928124, 189466111752828136, 13335900722961176546, 530999546582786085]), Fq::from_montgomery_limbs([5008847210566114882, 8801394942975925486, 18175922902442652272, 916924432575702892]), Fq::from_montgomery_limbs([9834172736316928124, 189466111752828136, 13335900722961176546, 530999546582786085]), Fq::from_montgomery_limbs([11796616273943571364, 15542379905239984210, 1578039792447016471, 947030710751083834])]), -// M_hat_inverse: SquareMatrix::new(2, 2, vec![Fq::from_montgomery_limbs([17242594123341362780, 10420431729582929402, 13098868289430565627, 261978409307343683]), Fq::from_montgomery_limbs([4962966789362289472, 13671436036280945585, 17033622650389008176, 591212102933547967]), Fq::from_montgomery_limbs([4962966789362289472, 13671436036280945585, 17033622650389008176, 591212102933547967]), Fq::from_montgomery_limbs([2148639234720789121, 15880825911856067065, 16042722653708983750, 635825847167915836])]), -// M_00: Fq::from_montgomery_limbs([15302903146332116305, 8895355854553175376, 548696419140371791, 319366418254432479]), -// M_i: Matrix::new(3, 3, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16360065460916622652, 6825609680461496913, 5558627326231064465, 128471165991923814]), Fq::from_montgomery_limbs([7428548079683657885, 9054293525864294989, 16239738740266557642, 509891970840567989]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7428548079683657885, 9054293525864294989, 16239738740266557642, 509891970840567989]), Fq::from_montgomery_limbs([1051461353787812132, 3723993058108873740, 15567687070894540562, 722382702096971016])]), -// v_collection: vec![Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([3072474957567996411, 7632850653899625657, 6867324839353272651, 1129105644996777990])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([11749409346063797401, 13847779958722295463, 5230051856842938218, 809528761888529318]), Fq::from_montgomery_limbs([16538317435082867476, 140673227072662684, 4917458456429054520, 951347002169384040])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([8049501819868988169, 4640840621228515661, 5281323386686467274, 1217317166531385469]), Fq::from_montgomery_limbs([15861181624207003323, 10871450011713172103, 4492382029642778046, 495041570025076744])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([491531644685882947, 16236469504155238438, 13405996466460073108, 191442324574972544]), Fq::from_montgomery_limbs([14234832595612208455, 16711171142020806901, 9818085755212544560, 433758843793119660])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([8692243294689566788, 17131754811489911037, 16082421295010554115, 245109642615998458]), Fq::from_montgomery_limbs([12752747264486126419, 12936758402746978248, 7901753820298393242, 1086817638717069074])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([716899015486837574, 12929955716143301332, 6296181173922398814, 95630164573893864]), Fq::from_montgomery_limbs([10771615223994036552, 12477611863199363886, 5019464732542008653, 260172239809303582])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([2083749357590716775, 7802489018239475310, 4719252491703553508, 331544147020630716]), Fq::from_montgomery_limbs([11839081110669849836, 16458332811546812068, 4108523134706353886, 1014020374083768583])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([11143510974855252250, 1906425947937085984, 2407368748249553491, 504368299222388920]), Fq::from_montgomery_limbs([8041950831366606113, 14611771049638947187, 11221299042990583579, 744635656555856530])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([15987773674750471853, 7582780421302456968, 3513070142855093124, 449192997718482772]), Fq::from_montgomery_limbs([1698389311466971615, 4208825745762883192, 17737380562723619127, 1023230515994865951])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([15719775543772287808, 4711976878746234330, 9616083067266331949, 1291758636403773818]), Fq::from_montgomery_limbs([11511319411419341690, 4611804125723845050, 17905923766281011346, 701498562864789906])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([6775959117219461845, 7248217303083744152, 8323273847079805491, 1272121734883668680]), Fq::from_montgomery_limbs([15960231410259949054, 831075562495169556, 666337526106305827, 827994946738712632])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([3075648154561933440, 4787490504369527279, 2103456873768609578, 930535653041788534]), Fq::from_montgomery_limbs([13632064958207562507, 2403612539570381736, 9671114344743639907, 554518676653218341])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([16017511834618514656, 10675130055946071909, 4737919029540133580, 682111021257012783]), Fq::from_montgomery_limbs([4054052073615595653, 15900491953977945207, 9657244812600116702, 746793989576728670])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([11427159084253523216, 8137374149736453962, 493707633722255071, 574786622341431128]), Fq::from_montgomery_limbs([3016813624761290833, 9410383431703917657, 207322790806709582, 604735846059941483])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([13182715603850996122, 1385581621557644096, 15928797776098706943, 1247128249672542744]), Fq::from_montgomery_limbs([12343557143080639521, 10608577464123341465, 8700628699767163855, 822798305869360351])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([15640932130097417474, 2198144264546084253, 15157422365823566225, 162345305798039707]), Fq::from_montgomery_limbs([15379897571473551238, 13605062526804796454, 1262497433072300524, 325397323402951460])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([11985517729662602408, 11378058393967136140, 10784471266494716066, 355758022531067864]), Fq::from_montgomery_limbs([15749607349459966392, 10347221607350790242, 16868641356169832097, 9481912848277140])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([5070404887673962603, 7505346455783472838, 11581801124979799833, 162417281360137989]), Fq::from_montgomery_limbs([14359230556911256253, 4739001612305070282, 615167045189603842, 893440173159515387])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([6892861075705566142, 16405352091222855583, 9442037024015442096, 943715695188578421]), Fq::from_montgomery_limbs([2681738006276381668, 13590338127726729778, 9006319668283998389, 571100162557721724])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([7926076457258912989, 15568541251154450028, 15222738110907421829, 194241141418124411]), Fq::from_montgomery_limbs([3900695082401480226, 13241392216815987825, 6715445016875356020, 559176536870193173])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([4273472679882108688, 7043568940286842511, 9096453621609771899, 490785749945503317]), Fq::from_montgomery_limbs([2078179201499171590, 16327227019578678368, 17980150213785344661, 1297383831585962991])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([14728670056946621521, 17042639142917167694, 2971308019248556661, 314387788586761162]), Fq::from_montgomery_limbs([14126190491907727041, 8208403354023925517, 4660262216078686939, 971808842720812284])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([12606246547610594540, 9049616062023318605, 11742190485797839027, 90317661102003606]), Fq::from_montgomery_limbs([7135240500841828540, 8166637984141883895, 4762161495768731224, 1056050894881259133])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([11752411941768010421, 2371987101660996229, 7910923918069285785, 283757372746488803]), Fq::from_montgomery_limbs([14169661373594066352, 10756814747639910216, 4179402566370914468, 294039297137006515])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([12380990947758453459, 15919689303377847053, 4451172135381562238, 643870172347401539]), Fq::from_montgomery_limbs([16919934541410985772, 12894445305080351094, 3222976969400102992, 1274426454940711344])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([17739117012754232566, 7855016506876230601, 10199750748041585788, 610234517763900211]), Fq::from_montgomery_limbs([14969807057009266193, 9743543989422659962, 265344874800963549, 193281162476465682])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([9334899116745497567, 1443910720530394642, 15242704534506362012, 557844541838643008]), Fq::from_montgomery_limbs([12596150337841453197, 17941854592742713998, 9536226961205720981, 193378317632915294])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([2145847197367443746, 3494461491303192245, 8559536859052153255, 188641306996153597]), Fq::from_montgomery_limbs([6619736277081498517, 16354589870583930111, 5727794428272011445, 472934899434235719])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([15229354881950810050, 13117262548706587, 18434975406822541359, 430449497798843798]), Fq::from_montgomery_limbs([4585061371183060684, 14866599352008180181, 17851236730068556506, 483368166519918339])]), Matrix::new(1, 2, vec![Fq::from_montgomery_limbs([16121753970412208543, 9309799407998260359, 13316268079574695590, 1332560915242838761]), Fq::from_montgomery_limbs([5320180137128926885, 4585099896596608821, 4959026927695406777, 12672238118064834])])], -// w_hat_collection: vec![Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([7147916296078753751, 11795755565450264533, 9448453213491875784, 183737022913545514]), Fq::from_montgomery_limbs([10406805428937057924, 14160037477503257835, 7036231764655967476, 1082136417579874198])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([18050286569012579189, 12701735779500542307, 16028299840828156173, 889670182449753716]), Fq::from_montgomery_limbs([17537805078915517156, 3881567050914191905, 15320666583506005360, 34817918541568626])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([639651884569206475, 3208454571154516477, 5589814573911893755, 812188059462663385]), Fq::from_montgomery_limbs([6035414598134387451, 221157594769622514, 1246867853953039854, 865666459554075403])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([10986953500964328689, 4552354314624673085, 10130711827018722177, 726464205504256466]), Fq::from_montgomery_limbs([14592704253024955499, 4367720503141755092, 3264507028823567377, 503642346381621716])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([6929349916420721052, 7263465717590274222, 16428445137775857828, 783617578238482410]), Fq::from_montgomery_limbs([1105466080997706678, 15638892732603802885, 15163494631828844812, 1265995546038282468])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([12695614650926966465, 7645153902251269333, 15007858904354383754, 303173888887641556]), Fq::from_montgomery_limbs([13532111267254117566, 453207663850979705, 1118439931840184625, 1109223913114108441])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([1127605964966272093, 459071588792078574, 17569200668490318799, 556567547339769587]), Fq::from_montgomery_limbs([743383751775379478, 2152757563916176356, 18215266305796881375, 613050128242856475])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([7479292154348380014, 12505834466797528681, 7061175132070981799, 1037799745298480638]), Fq::from_montgomery_limbs([4733881782580367683, 13385554219210821909, 11595152338390400937, 1286877367267536722])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([10482398298648703137, 13154284141257785070, 12900892582326783232, 1312370380898727254]), Fq::from_montgomery_limbs([7694076120856540521, 15146007605344947747, 3193830018416013595, 78000754372621570])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([5244970134326960239, 15516929113764341255, 17564742414096943825, 565809721348112173]), Fq::from_montgomery_limbs([5301582977685139465, 1069505112975002608, 16894882112854195663, 1006960914609031286])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([933807009911564028, 17655717523721777752, 659854032695183391, 696948171193839726]), Fq::from_montgomery_limbs([14431054331145497962, 17304755953697263142, 1213662370814867240, 406071929554987935])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([12663120994246797343, 2294330459533986298, 12312665243517552316, 1162434858386655769]), Fq::from_montgomery_limbs([14926635415117511105, 17764138882091983380, 9845162467394310721, 365262529860339315])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([14453117806705169688, 15371763008771329739, 859830826361086373, 695666911485789237]), Fq::from_montgomery_limbs([4372294882149658880, 8953368466178039118, 7175551968845157174, 1296799522059563299])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([10743785724983518030, 11011793084410944909, 4710170432674399868, 872985210632843618]), Fq::from_montgomery_limbs([17034928244178709962, 7064630411064620365, 11395663509669588708, 435858474778976283])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([376125808430990068, 3949770427712474479, 1831829189608085506, 1033600417294508604]), Fq::from_montgomery_limbs([10474175416970714387, 7638666470072040137, 15323998975775188709, 499861799254400548])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([1311503503152331198, 10444356300795820152, 14006643509954394380, 360275028297029580]), Fq::from_montgomery_limbs([8848990081142010576, 3767709270230096287, 3203373808160299103, 388150987057922534])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([10527714796170242821, 10614707629823438759, 2166835449751899854, 826442630247846539]), Fq::from_montgomery_limbs([6013609006746740436, 17829255150171580013, 4865370498689675602, 631806865209492278])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([15407698184224138641, 13892993523782417432, 11074522626536989473, 1282147673049091223]), Fq::from_montgomery_limbs([13566156582579433121, 10666124267110644787, 17585510383615080517, 460461758314188289])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([242069913640544639, 8584725967717195423, 8673969491922319906, 906855204727712918]), Fq::from_montgomery_limbs([7507622872789915132, 8838834878197495556, 4143887577251148647, 147314013318059527])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([739343839918695474, 15137511284934501835, 8206744331706291412, 460517726754831566]), Fq::from_montgomery_limbs([5332098194526476884, 17462053065946204764, 17109918215020530224, 45500621783055396])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([7181843829067274762, 93170180385149654, 16601265500332534068, 692920224266685092]), Fq::from_montgomery_limbs([17373541931105532396, 11757401236546761356, 8986928677878657520, 855377794858428568])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([16770152912401058713, 7784323106136704842, 3166414142982631778, 252798645948426673]), Fq::from_montgomery_limbs([9867428128375842792, 6330871821464522409, 2509737650104409073, 87377932535113034])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([9620378538351684400, 16259903847898782084, 14224517332394904862, 248783024579596034]), Fq::from_montgomery_limbs([15289486933546124534, 5057961130890228616, 5618412873763815158, 1218252246195044797])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([18285461524892798097, 1312649631515945874, 2702563113361998981, 156990921411102370]), Fq::from_montgomery_limbs([16897672275046167563, 14631253948673542966, 7825433188494427672, 497140819371349325])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([5586425496410891559, 3860435103896432777, 15075562942840298887, 539774915240951994]), Fq::from_montgomery_limbs([18444236515588467614, 2138469830557977395, 8290712504743660259, 832327778452741186])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([15144610075012749322, 11801332079357554718, 11652842602527962385, 396912768209767018]), Fq::from_montgomery_limbs([10639969620247737667, 7334159324553590340, 15063492084884778567, 878961650630548788])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([18348264072788817511, 8009061068808737218, 6097418426121505352, 1211183153837556564]), Fq::from_montgomery_limbs([17198860156343170394, 2167538157704278478, 10949270097435223366, 928056824653534234])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([10634763804674129031, 9612181115928191305, 7893421171473086290, 251268211819044542]), Fq::from_montgomery_limbs([12969986235926373418, 712178654575523278, 3830673788986900912, 1046343437814522982])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([4298621992800380154, 4055578536241120435, 9617612244989535309, 382604375840733162]), Fq::from_montgomery_limbs([18067399474523304446, 12223555489918789755, 9993950631657703109, 1048484019905387459])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([13058818877006642653, 18414014235319212231, 14027764563566307518, 703825358964196766]), Fq::from_montgomery_limbs([9830948603405623404, 3341559968925646454, 12259602563968066179, 912923676012093495])]), Matrix::new(2, 1, vec![Fq::from_montgomery_limbs([8043127764066461437, 14803670394754936674, 15225608398783219441, 893330814736280447]), Fq::from_montgomery_limbs([4386126239109851849, 12096965878015338652, 13672154659709754401, 191338360587662586])])], -// }, -// optimized_arc: OptimizedArcMatrix::new(39, 3, vec![Fq::from_montgomery_limbs([13532052565085671856, 13175575834742130482, 14571043277169067394, 1128324334676141805]), Fq::from_montgomery_limbs([10586567975029405298, 5987505274649066590, 9663655893165983133, 381788629769180835]), Fq::from_montgomery_limbs([7404335995308317606, 10342209374602516054, 14679697400509748167, 1259991645283011647]), Fq::from_montgomery_limbs([12711294721892819516, 8412935995118692797, 7069737649526067295, 549549236990677487]), Fq::from_montgomery_limbs([128694122049037398, 15825223235256271389, 74647683628497806, 403759781237802093]), Fq::from_montgomery_limbs([3501552524290051296, 10688664658423588201, 8345653809557910120, 766292783896459938]), Fq::from_montgomery_limbs([13998055823902745235, 15535161481341849823, 9848874496394823215, 579121379437172744]), Fq::from_montgomery_limbs([16363263235454987811, 9117252686821547535, 4794867261658414781, 418411818796950741]), Fq::from_montgomery_limbs([3710344964675021293, 13957371261080223237, 15195218532629186765, 760708816844813378]), Fq::from_montgomery_limbs([16135673103471103205, 13943139040297964408, 12037506718934223099, 1187380734246932890]), Fq::from_montgomery_limbs([11326210002632211732, 2893415499386035614, 2949171194607212014, 568849018592141776]), Fq::from_montgomery_limbs([13925494990768706056, 13969996543019858204, 13457764640058086886, 114396439087701688]), Fq::from_montgomery_limbs([16351586607272228519, 6269966282891300082, 12490381894697744781, 834648274293416263]), Fq::from_montgomery_limbs([8699206025130866823, 13848489523222436720, 17766508449394109403, 431734376631208559]), Fq::from_montgomery_limbs([14700415236695759193, 989025675687828871, 13240672964496825486, 748003865243962980]), Fq::from_montgomery_limbs([9214232780783070449, 14602960282866682732, 11429301634278273897, 1184931746603958427]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16918226576727530642, 1752255981222787988, 8817230776216477202, 44114642545061535]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17686129245176609251, 9674361899119805900, 9621008306276981352, 1255623840056121919]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10364230610752960663, 23910044943574860, 13406278639865106346, 1187183151912921258]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([248381449107176191, 10056558558812610353, 2935304612801451247, 120643143760647643]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3742705574147487793, 4686024809709633429, 16670792739934718940, 963767567248511600]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13818431717487898976, 12602204397986520132, 12877538805399868553, 707732823673573212]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1195524900235019800, 10255957893776983045, 17449323294835632168, 1338958398006622846]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([561235443935255932, 15462505627668153377, 15246107413854263254, 504727735813765489]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5653045592293015958, 3671862246408432263, 7122935779684396291, 7330594669677847]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16480412187204912644, 2983094841853066492, 7734631524643537613, 311160218197782574]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6090779872384130856, 3292296244344624559, 14896131539665449347, 1294066060635586937]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4370576169448893808, 12445091387328652898, 4928931422125126888, 1290627573012356056]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12051840169477196739, 3885157525438683377, 15460563848822265709, 371728860504033938]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12236751112463919400, 10461860001193096708, 18252891305864475627, 422909291039524709]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18089753698150707757, 11984889148538027693, 14464882633247838012, 989393623597663020]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5947035363582041005, 10165882087299872929, 17463545041843069654, 661760845006520055]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12977803574308926045, 11603755933737030579, 13169368374394024728, 264871768182436351]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14419631251839461179, 11301211733526246620, 15903366283781829327, 773728645355215118]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8308101026985166387, 7726119298360373485, 10162441497855384077, 189302244249177174]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12797668472951431300, 13827763415857474023, 14698122219544096234, 1231082431746263546]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9036419769160652203, 14179415714825094519, 1197988233308979514, 1215761277179828327]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4698260184489833131, 10279668321438795791, 12410250074379293741, 1217500461705392747]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12177225652612451477, 6323252679960824348, 2982537087474808916, 1265097794155080401]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10936589967746372713, 1315336780394893005, 11802358065708482185, 926000082171380579]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9602562037821535541, 6086973874915377682, 14393911822211896593, 197271477318300291]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([702050427916060493, 13537318979711565901, 15026546140525067500, 581472194808990332]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16536035763574678680, 10430337823398608412, 14603639842087973366, 184743670576012836]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([703457789642747182, 14826807143913517966, 278957441362419559, 572670923489064055]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11986568387549799012, 17060314952512548206, 5848465513240015059, 844014096680008996]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8710335429210318089, 15939765460477572548, 13493874982974354172, 1195299757590572308]), Fq::from_montgomery_limbs([16720044796621311460, 6297107607479107816, 15666086360782481298, 946070823657072210]), Fq::from_montgomery_limbs([5216764590966106189, 18330556132248987975, 14778046174865524185, 601592383999400705]), Fq::from_montgomery_limbs([12284358746189003172, 15796822047553990474, 10249807758448272935, 1260540691182942177]), Fq::from_montgomery_limbs([14671741496053748797, 15956144823383552989, 8978105115308257315, 1129739098292337641]), Fq::from_montgomery_limbs([16528885559305010985, 14885472285663731653, 8692450371018254777, 875854298006252122]), Fq::from_montgomery_limbs([11216935928075429441, 7088545516130524118, 3510979311098449529, 980345967679074250]), Fq::from_montgomery_limbs([8480849792218315917, 11146529356407982510, 4204845623809735650, 554809226012522197]), Fq::from_montgomery_limbs([9465397404983425896, 1339596460298740670, 2695000812316794677, 164270174202044235]), Fq::from_montgomery_limbs([12807958353199166386, 2607509355362673632, 9510828759520576266, 306232379852697998]), Fq::from_montgomery_limbs([14216260065142834520, 8830790711865643815, 7264415235010871052, 905551093713836953]), Fq::from_montgomery_limbs([1392129315389772974, 3163495863255052347, 5961497987857813198, 47707649459794917])]), -// } -// } +pub mod rate_2; // /// Parameters for the rate-3 instance of Poseidon. // pub fn rate_3() -> PoseidonParameters { diff --git a/poseidon377/src/params/rate_2.rs b/poseidon377/src/params/rate_2.rs new file mode 100644 index 0000000..b94a4a2 --- /dev/null +++ b/poseidon377/src/params/rate_2.rs @@ -0,0 +1,32 @@ + + +use decaf377::Fq; +use poseidon_parameters::v1::{ + Alpha, ArcMatrix, Matrix, MdsMatrix, OptimizedArcMatrix, OptimizedMdsMatrices, + PoseidonParameters, RoundNumbers, SquareMatrix, +}; + +/// Parameters for the rate-2 instance of Poseidon. +pub const fn rate_2() -> PoseidonParameters<3, 2, 9, 4, 39, 3, 117, 31> { + PoseidonParameters { + M: 128, + arc: ArcMatrix::<39, 3, 117>::new_from_known([Fq::from_montgomery_limbs([13532052565085671856, 13175575834742130482, 14571043277169067394, 1128324334676141805]), Fq::from_montgomery_limbs([10586567975029405298, 5987505274649066590, 9663655893165983133, 381788629769180835]), Fq::from_montgomery_limbs([7404335995308317606, 10342209374602516054, 14679697400509748167, 1259991645283011647]), Fq::from_montgomery_limbs([12711294721892819516, 8412935995118692797, 7069737649526067295, 549549236990677487]), Fq::from_montgomery_limbs([128694122049037398, 15825223235256271389, 74647683628497806, 403759781237802093]), Fq::from_montgomery_limbs([3501552524290051296, 10688664658423588201, 8345653809557910120, 766292783896459938]), Fq::from_montgomery_limbs([13998055823902745235, 15535161481341849823, 9848874496394823215, 579121379437172744]), Fq::from_montgomery_limbs([16363263235454987811, 9117252686821547535, 4794867261658414781, 418411818796950741]), Fq::from_montgomery_limbs([3710344964675021293, 13957371261080223237, 15195218532629186765, 760708816844813378]), Fq::from_montgomery_limbs([16135673103471103205, 13943139040297964408, 12037506718934223099, 1187380734246932890]), Fq::from_montgomery_limbs([11326210002632211732, 2893415499386035614, 2949171194607212014, 568849018592141776]), Fq::from_montgomery_limbs([13925494990768706056, 13969996543019858204, 13457764640058086886, 114396439087701688]), Fq::from_montgomery_limbs([16351586607272228519, 6269966282891300082, 12490381894697744781, 834648274293416263]), Fq::from_montgomery_limbs([1437979443977545600, 14767193465362841311, 11074881595123675812, 1204201379421269428]), Fq::from_montgomery_limbs([5230240271406271908, 16847766581152362930, 1712847198165617791, 311937423231086981]), Fq::from_montgomery_limbs([3645836740283016323, 15685198898945208452, 1980971647688859029, 176967089015698342]), Fq::from_montgomery_limbs([7550143813701248311, 18291556615524985846, 8534400014086995148, 500430429779017952]), Fq::from_montgomery_limbs([596957473479108084, 6324092840533510915, 4811101589352947098, 76518932650696039]), Fq::from_montgomery_limbs([336812235439984799, 13522610888312181094, 10501405696980879642, 449669351326561391]), Fq::from_montgomery_limbs([12592523411743912820, 3924222765120111350, 5699458771760954386, 892267873608702453]), Fq::from_montgomery_limbs([12993017322389395630, 5952902593915102432, 5247111021983199097, 470467609253978097]), Fq::from_montgomery_limbs([7244663031809848522, 3071554415549245091, 2773295222867337766, 1090905641165090834]), Fq::from_montgomery_limbs([9981097535495148290, 12930981823992014491, 9629464214154256600, 308026108875661910]), Fq::from_montgomery_limbs([12850815434424207307, 8847171669624931211, 16288364336002865240, 954936779594025677]), Fq::from_montgomery_limbs([11236881576270168641, 15414742267201110956, 7825767860878753872, 721136380245447153]), Fq::from_montgomery_limbs([2832704701681877466, 7235621408572302496, 11812570847329545593, 792455748001887640]), Fq::from_montgomery_limbs([3432713492718273410, 6465506654245539380, 8827139003294513485, 992550877185604089]), Fq::from_montgomery_limbs([9728786934890323565, 10584002864733096791, 2293345482796697755, 180937419315601034]), Fq::from_montgomery_limbs([13822678097673121251, 4948809415032161320, 15691917123613077102, 683890210553461269]), Fq::from_montgomery_limbs([9002390647260096239, 10448673368926307125, 17815937281103619895, 1097505426950771788]), Fq::from_montgomery_limbs([13908365267431289868, 3370079770970658040, 15308027316557057295, 1308145822882463267]), Fq::from_montgomery_limbs([7831189882886479452, 4689238810753296883, 13159502922430301346, 27611585919074368]), Fq::from_montgomery_limbs([14912709676120752020, 10115204646384083757, 10138309295115926582, 223210301540489796]), Fq::from_montgomery_limbs([12627294687244820632, 2059848305109767326, 1888484742856066068, 1272834063475208138]), Fq::from_montgomery_limbs([6115210324513801758, 10929870666119062300, 11707806468269326656, 949025326858793021]), Fq::from_montgomery_limbs([7061826933729287205, 1126603583829494325, 5469143638052028670, 1033665004945948695]), Fq::from_montgomery_limbs([11008930476894918520, 11381807375074895164, 2844592577512486485, 1128817316316311928]), Fq::from_montgomery_limbs([5300558244079945539, 8283037415518590201, 11038807277807240648, 1178232107582202545]), Fq::from_montgomery_limbs([11862022433031293870, 8913994378642882666, 9450763413034135432, 77958396662445698]), Fq::from_montgomery_limbs([17688402066322086519, 524036851070457942, 14909117109897886121, 557290224371677333]), Fq::from_montgomery_limbs([1875815915909501089, 10678692213853973640, 15989623299920327105, 428879321377057641]), Fq::from_montgomery_limbs([1082841901890716129, 12068516826131602351, 7102481379375591007, 906616535867466859]), Fq::from_montgomery_limbs([17613918888580330287, 6204465427334198417, 9436344365449852604, 655489186886697]), Fq::from_montgomery_limbs([17585284967658841164, 80944379680805043, 2698615756683481750, 351188921018806563]), Fq::from_montgomery_limbs([15687615037958784071, 2186404284346347770, 5652967689160162635, 1056583988063876017]), Fq::from_montgomery_limbs([13107987562409563672, 3871322351409280978, 8803804680465229381, 1030040159656924298]), Fq::from_montgomery_limbs([16684869482081657339, 10281204171444660632, 1624958597982547757, 386745834466917047]), Fq::from_montgomery_limbs([6970896123209894127, 7830160530923913939, 17422861911349199859, 623374110284783712]), Fq::from_montgomery_limbs([4331844870617545742, 520046082233107649, 5594606953430693091, 249698853373994073]), Fq::from_montgomery_limbs([6680837442175120485, 6814766854525276712, 6556825746309967179, 570042050188335199]), Fq::from_montgomery_limbs([15436728868072851979, 10638387680273826288, 16379320772832534606, 822954407147775124]), Fq::from_montgomery_limbs([11837214986206518455, 596921394620411645, 13159256680099246054, 1277661308547494330]), Fq::from_montgomery_limbs([13679203667889812546, 11676386286470050129, 8357354920215222534, 456950010799870038]), Fq::from_montgomery_limbs([2229876009761017392, 13089694557765213339, 16529665410348556997, 1200161010593736391]), Fq::from_montgomery_limbs([16005321486742773520, 8650710416750881700, 12927174790925866955, 1318630719916273524]), Fq::from_montgomery_limbs([11180409359961118236, 7275623093671008389, 11439214005189014436, 975533040864102009]), Fq::from_montgomery_limbs([1493684412606064445, 1600586062110688441, 6392169949497859284, 320645276436957806]), Fq::from_montgomery_limbs([18076284763174743111, 15528272241931714086, 1987806618344857317, 81963683463344143]), Fq::from_montgomery_limbs([2380106604330211947, 13999809284604519871, 17117752833631344354, 928049684624129249]), Fq::from_montgomery_limbs([16709180677553116618, 15078892089982505559, 12839669848886637777, 1151522444646802538]), Fq::from_montgomery_limbs([1024922389916170464, 4633605473275241115, 8890730306179887903, 1145679956560153579]), Fq::from_montgomery_limbs([2689026397641652069, 13435392347048733438, 4613843849026450873, 644769297929746792]), Fq::from_montgomery_limbs([1477469845453362358, 8875949790662885201, 7478581831156986579, 67083263015332207]), Fq::from_montgomery_limbs([1506147123099314810, 6546355754774050650, 13235191534515389566, 573446483563428911]), Fq::from_montgomery_limbs([11592075759296992527, 11495396924055153811, 17020953547937729115, 326913902434578022]), Fq::from_montgomery_limbs([10523148363065643749, 13492540919508068783, 17386067260199896807, 528704601527288393]), Fq::from_montgomery_limbs([9127950768740932108, 15914409702651500773, 11784570023787002367, 340904789729663175]), Fq::from_montgomery_limbs([6245027322171754000, 15663478768566472378, 11402185558701422250, 36675236290199327]), Fq::from_montgomery_limbs([6063749964881818939, 10257461935793181106, 942936442940111744, 540037121922249544]), Fq::from_montgomery_limbs([12968659316148036261, 14899520595018177284, 3836336888070673001, 941781069635905693]), Fq::from_montgomery_limbs([126228530830236165, 5499407626081829044, 14133761497400979158, 1184006332035149871]), Fq::from_montgomery_limbs([5031808939874245057, 12620452215680194384, 1600289362926216464, 1200752349590914751]), Fq::from_montgomery_limbs([13105110393340809165, 7101636223400183860, 1455202496382111435, 1040366751489349639]), Fq::from_montgomery_limbs([2247493102747455874, 3444719793324110884, 17343476723736941016, 460423680466113922]), Fq::from_montgomery_limbs([18230610362649795022, 4850929477447852354, 2999970116929109994, 374491266534684371]), Fq::from_montgomery_limbs([205446930692894616, 10625340386042781881, 2267554848789579110, 805571592523062224]), Fq::from_montgomery_limbs([9554436490539537540, 3781982688039156286, 12732806211783679988, 207650560800307204]), Fq::from_montgomery_limbs([14608069410708161069, 15150367565152858757, 7976963546254869682, 1302080053778539832]), Fq::from_montgomery_limbs([5668581368285301758, 1481024316238442280, 14073619068562930813, 157011518856032932]), Fq::from_montgomery_limbs([10782685697581511660, 656395425526716484, 12429361742269361127, 1218629948585201369]), Fq::from_montgomery_limbs([9945724486634605933, 5559580130460001707, 4958363795583827901, 1086630389709013647]), Fq::from_montgomery_limbs([6214153618072836629, 6297284130475637236, 3341157682715609955, 687805559853576127]), Fq::from_montgomery_limbs([17561648631049166744, 4193461398377217711, 17499970945040917083, 352506169960283993]), Fq::from_montgomery_limbs([1122765646603573063, 1498611916106521677, 10924305234288949443, 728326887801130515]), Fq::from_montgomery_limbs([5800850628186966207, 4398317517906769115, 9597227115480831972, 526197039749009419]), Fq::from_montgomery_limbs([5159263173914965708, 8792786795115987428, 3124972989790777106, 1052873249848825660]), Fq::from_montgomery_limbs([1668691385020369393, 4311283499155522888, 13095876963782085960, 334904475460146335]), Fq::from_montgomery_limbs([14551884987824763154, 5459630410931408158, 838248742615457530, 355270342663742218]), Fq::from_montgomery_limbs([13811707083670026157, 17980420357872171335, 15680078942835361627, 508494405154027190]), Fq::from_montgomery_limbs([259245969673242010, 12143818002017916372, 9104957694955299615, 588078921942677607]), Fq::from_montgomery_limbs([1402823264425646775, 17394328405754534008, 8594536777296298084, 589743092826427286]), Fq::from_montgomery_limbs([17525191514318164285, 3032947818017798651, 8010733640330629183, 18263345896298111]), Fq::from_montgomery_limbs([2324591806430845335, 3802314283763375525, 5802980770825972296, 1172121386066784655]), Fq::from_montgomery_limbs([3481957081013606129, 7174433466077666272, 18298661318322644558, 779600890592950522]), Fq::from_montgomery_limbs([12191117132876429501, 13984916474435046850, 15993612081836470001, 982264150805006675]), Fq::from_montgomery_limbs([5832216401942411966, 14563514500329138886, 4063839581877579762, 988127094162723498]), Fq::from_montgomery_limbs([9980296771901734820, 8406919274419375318, 7382848308758481422, 288106649508594049]), Fq::from_montgomery_limbs([15311094169366877824, 8845543297515843004, 5111676196784685495, 854309633222289538]), Fq::from_montgomery_limbs([11805299538225612753, 2464747910811709980, 7821113581135412494, 698716086285897944]), Fq::from_montgomery_limbs([14453145658534747007, 17272254080461340124, 10230451546974640772, 626243697059407772]), Fq::from_montgomery_limbs([11287978532447653494, 18279346120194159177, 2333031913403775389, 200338723139384832]), Fq::from_montgomery_limbs([12366653650419860061, 16274230817774725784, 4516721510516055669, 75055982532212210]), Fq::from_montgomery_limbs([388555674032981681, 6567318722554709379, 2086741448191262667, 908777123569794972]), Fq::from_montgomery_limbs([9649589442582163437, 13541178269507352071, 14258536536571968121, 575215969686158075]), Fq::from_montgomery_limbs([597836451158842199, 1858657668022201800, 504852646431126025, 351889211223645499]), Fq::from_montgomery_limbs([8710335429210318089, 15939765460477572548, 13493874982974354172, 1195299757590572308]), Fq::from_montgomery_limbs([16720044796621311460, 6297107607479107816, 15666086360782481298, 946070823657072210]), Fq::from_montgomery_limbs([5216764590966106189, 18330556132248987975, 14778046174865524185, 601592383999400705]), Fq::from_montgomery_limbs([12284358746189003172, 15796822047553990474, 10249807758448272935, 1260540691182942177]), Fq::from_montgomery_limbs([14671741496053748797, 15956144823383552989, 8978105115308257315, 1129739098292337641]), Fq::from_montgomery_limbs([16528885559305010985, 14885472285663731653, 8692450371018254777, 875854298006252122]), Fq::from_montgomery_limbs([11216935928075429441, 7088545516130524118, 3510979311098449529, 980345967679074250]), Fq::from_montgomery_limbs([8480849792218315917, 11146529356407982510, 4204845623809735650, 554809226012522197]), Fq::from_montgomery_limbs([9465397404983425896, 1339596460298740670, 2695000812316794677, 164270174202044235]), Fq::from_montgomery_limbs([12807958353199166386, 2607509355362673632, 9510828759520576266, 306232379852697998]), Fq::from_montgomery_limbs([14216260065142834520, 8830790711865643815, 7264415235010871052, 905551093713836953]), Fq::from_montgomery_limbs([1392129315389772974, 3163495863255052347, 5961497987857813198, 47707649459794917])]), + mds: MdsMatrix::<3, 2, 9, 4>::new_from_known([Fq::from_montgomery_limbs([15302903146332116305, 8895355854553175376, 548696419140371791, 319366418254432479]), Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), + alpha: Alpha::Exponent(17), + rounds: RoundNumbers {r_P: 31, r_F: 8}, + optimized_mds: OptimizedMdsMatrices { + M_hat: SquareMatrix::<2, 4>::new_from_known([Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), + v: Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846])]), + w: Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846])]), + M_prime: SquareMatrix::<3, 9>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), + M_doubleprime: SquareMatrix::<3, 9>::new_from_known([Fq::from_montgomery_limbs([15302903146332116305, 8895355854553175376, 548696419140371791, 319366418254432479]), Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([7147916296078753751, 11795755565450264533, 9448453213491875784, 183737022913545514]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10406805428937057924, 14160037477503257835, 7036231764655967476, 1082136417579874198]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), + M_inverse: SquareMatrix::<3, 9>::new_from_known([Fq::from_montgomery_limbs([4383832024780107759, 7223259317565124429, 5707462847421561422, 885057472408297272]), Fq::from_montgomery_limbs([6746251504312660021, 9699181025413837338, 15260914163925889303, 35388324151454979]), Fq::from_montgomery_limbs([5008847210566114882, 8801394942975925486, 18175922902442652272, 916924432575702892]), Fq::from_montgomery_limbs([6746251504312660021, 9699181025413837338, 15260914163925889303, 35388324151454979]), Fq::from_montgomery_limbs([15450583684112934333, 18216376800760520619, 4209613945072000948, 155813436852978744]), Fq::from_montgomery_limbs([9834172736316928124, 189466111752828136, 13335900722961176546, 530999546582786085]), Fq::from_montgomery_limbs([5008847210566114882, 8801394942975925486, 18175922902442652272, 916924432575702892]), Fq::from_montgomery_limbs([9834172736316928124, 189466111752828136, 13335900722961176546, 530999546582786085]), Fq::from_montgomery_limbs([11796616273943571364, 15542379905239984210, 1578039792447016471, 947030710751083834])]), + M_hat_inverse: SquareMatrix::<2, 4>::new_from_known([Fq::from_montgomery_limbs([17242594123341362780, 10420431729582929402, 13098868289430565627, 261978409307343683]), Fq::from_montgomery_limbs([4962966789362289472, 13671436036280945585, 17033622650389008176, 591212102933547967]), Fq::from_montgomery_limbs([4962966789362289472, 13671436036280945585, 17033622650389008176, 591212102933547967]), Fq::from_montgomery_limbs([2148639234720789121, 15880825911856067065, 16042722653708983750, 635825847167915836])]), + M_00: Fq::from_montgomery_limbs([15302903146332116305, 8895355854553175376, 548696419140371791, 319366418254432479]), + M_i: Matrix::<3, 3, 9>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16360065460916622652, 6825609680461496913, 5558627326231064465, 128471165991923814]), Fq::from_montgomery_limbs([7428548079683657885, 9054293525864294989, 16239738740266557642, 509891970840567989]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7428548079683657885, 9054293525864294989, 16239738740266557642, 509891970840567989]), Fq::from_montgomery_limbs([1051461353787812132, 3723993058108873740, 15567687070894540562, 722382702096971016])]), + v_collection: [Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([3072474957567996411, 7632850653899625657, 6867324839353272651, 1129105644996777990])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([11749409346063797401, 13847779958722295463, 5230051856842938218, 809528761888529318]), Fq::from_montgomery_limbs([16538317435082867476, 140673227072662684, 4917458456429054520, 951347002169384040])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([8049501819868988169, 4640840621228515661, 5281323386686467274, 1217317166531385469]), Fq::from_montgomery_limbs([15861181624207003323, 10871450011713172103, 4492382029642778046, 495041570025076744])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([491531644685882947, 16236469504155238438, 13405996466460073108, 191442324574972544]), Fq::from_montgomery_limbs([14234832595612208455, 16711171142020806901, 9818085755212544560, 433758843793119660])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([8692243294689566788, 17131754811489911037, 16082421295010554115, 245109642615998458]), Fq::from_montgomery_limbs([12752747264486126419, 12936758402746978248, 7901753820298393242, 1086817638717069074])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([716899015486837574, 12929955716143301332, 6296181173922398814, 95630164573893864]), Fq::from_montgomery_limbs([10771615223994036552, 12477611863199363886, 5019464732542008653, 260172239809303582])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([2083749357590716775, 7802489018239475310, 4719252491703553508, 331544147020630716]), Fq::from_montgomery_limbs([11839081110669849836, 16458332811546812068, 4108523134706353886, 1014020374083768583])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([11143510974855252250, 1906425947937085984, 2407368748249553491, 504368299222388920]), Fq::from_montgomery_limbs([8041950831366606113, 14611771049638947187, 11221299042990583579, 744635656555856530])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([15987773674750471853, 7582780421302456968, 3513070142855093124, 449192997718482772]), Fq::from_montgomery_limbs([1698389311466971615, 4208825745762883192, 17737380562723619127, 1023230515994865951])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([15719775543772287808, 4711976878746234330, 9616083067266331949, 1291758636403773818]), Fq::from_montgomery_limbs([11511319411419341690, 4611804125723845050, 17905923766281011346, 701498562864789906])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([6775959117219461845, 7248217303083744152, 8323273847079805491, 1272121734883668680]), Fq::from_montgomery_limbs([15960231410259949054, 831075562495169556, 666337526106305827, 827994946738712632])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([3075648154561933440, 4787490504369527279, 2103456873768609578, 930535653041788534]), Fq::from_montgomery_limbs([13632064958207562507, 2403612539570381736, 9671114344743639907, 554518676653218341])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([16017511834618514656, 10675130055946071909, 4737919029540133580, 682111021257012783]), Fq::from_montgomery_limbs([4054052073615595653, 15900491953977945207, 9657244812600116702, 746793989576728670])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([11427159084253523216, 8137374149736453962, 493707633722255071, 574786622341431128]), Fq::from_montgomery_limbs([3016813624761290833, 9410383431703917657, 207322790806709582, 604735846059941483])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([13182715603850996122, 1385581621557644096, 15928797776098706943, 1247128249672542744]), Fq::from_montgomery_limbs([12343557143080639521, 10608577464123341465, 8700628699767163855, 822798305869360351])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([15640932130097417474, 2198144264546084253, 15157422365823566225, 162345305798039707]), Fq::from_montgomery_limbs([15379897571473551238, 13605062526804796454, 1262497433072300524, 325397323402951460])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([11985517729662602408, 11378058393967136140, 10784471266494716066, 355758022531067864]), Fq::from_montgomery_limbs([15749607349459966392, 10347221607350790242, 16868641356169832097, 9481912848277140])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([5070404887673962603, 7505346455783472838, 11581801124979799833, 162417281360137989]), Fq::from_montgomery_limbs([14359230556911256253, 4739001612305070282, 615167045189603842, 893440173159515387])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([6892861075705566142, 16405352091222855583, 9442037024015442096, 943715695188578421]), Fq::from_montgomery_limbs([2681738006276381668, 13590338127726729778, 9006319668283998389, 571100162557721724])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([7926076457258912989, 15568541251154450028, 15222738110907421829, 194241141418124411]), Fq::from_montgomery_limbs([3900695082401480226, 13241392216815987825, 6715445016875356020, 559176536870193173])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([4273472679882108688, 7043568940286842511, 9096453621609771899, 490785749945503317]), Fq::from_montgomery_limbs([2078179201499171590, 16327227019578678368, 17980150213785344661, 1297383831585962991])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([14728670056946621521, 17042639142917167694, 2971308019248556661, 314387788586761162]), Fq::from_montgomery_limbs([14126190491907727041, 8208403354023925517, 4660262216078686939, 971808842720812284])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([12606246547610594540, 9049616062023318605, 11742190485797839027, 90317661102003606]), Fq::from_montgomery_limbs([7135240500841828540, 8166637984141883895, 4762161495768731224, 1056050894881259133])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([11752411941768010421, 2371987101660996229, 7910923918069285785, 283757372746488803]), Fq::from_montgomery_limbs([14169661373594066352, 10756814747639910216, 4179402566370914468, 294039297137006515])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([12380990947758453459, 15919689303377847053, 4451172135381562238, 643870172347401539]), Fq::from_montgomery_limbs([16919934541410985772, 12894445305080351094, 3222976969400102992, 1274426454940711344])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([17739117012754232566, 7855016506876230601, 10199750748041585788, 610234517763900211]), Fq::from_montgomery_limbs([14969807057009266193, 9743543989422659962, 265344874800963549, 193281162476465682])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([9334899116745497567, 1443910720530394642, 15242704534506362012, 557844541838643008]), Fq::from_montgomery_limbs([12596150337841453197, 17941854592742713998, 9536226961205720981, 193378317632915294])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([2145847197367443746, 3494461491303192245, 8559536859052153255, 188641306996153597]), Fq::from_montgomery_limbs([6619736277081498517, 16354589870583930111, 5727794428272011445, 472934899434235719])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([15229354881950810050, 13117262548706587, 18434975406822541359, 430449497798843798]), Fq::from_montgomery_limbs([4585061371183060684, 14866599352008180181, 17851236730068556506, 483368166519918339])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([16121753970412208543, 9309799407998260359, 13316268079574695590, 1332560915242838761]), Fq::from_montgomery_limbs([5320180137128926885, 4585099896596608821, 4959026927695406777, 12672238118064834])])], + w_hat_collection: [Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([7147916296078753751, 11795755565450264533, 9448453213491875784, 183737022913545514]), Fq::from_montgomery_limbs([10406805428937057924, 14160037477503257835, 7036231764655967476, 1082136417579874198])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([18050286569012579189, 12701735779500542307, 16028299840828156173, 889670182449753716]), Fq::from_montgomery_limbs([17537805078915517156, 3881567050914191905, 15320666583506005360, 34817918541568626])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([639651884569206475, 3208454571154516477, 5589814573911893755, 812188059462663385]), Fq::from_montgomery_limbs([6035414598134387451, 221157594769622514, 1246867853953039854, 865666459554075403])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([10986953500964328689, 4552354314624673085, 10130711827018722177, 726464205504256466]), Fq::from_montgomery_limbs([14592704253024955499, 4367720503141755092, 3264507028823567377, 503642346381621716])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([6929349916420721052, 7263465717590274222, 16428445137775857828, 783617578238482410]), Fq::from_montgomery_limbs([1105466080997706678, 15638892732603802885, 15163494631828844812, 1265995546038282468])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([12695614650926966465, 7645153902251269333, 15007858904354383754, 303173888887641556]), Fq::from_montgomery_limbs([13532111267254117566, 453207663850979705, 1118439931840184625, 1109223913114108441])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([1127605964966272093, 459071588792078574, 17569200668490318799, 556567547339769587]), Fq::from_montgomery_limbs([743383751775379478, 2152757563916176356, 18215266305796881375, 613050128242856475])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([7479292154348380014, 12505834466797528681, 7061175132070981799, 1037799745298480638]), Fq::from_montgomery_limbs([4733881782580367683, 13385554219210821909, 11595152338390400937, 1286877367267536722])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([10482398298648703137, 13154284141257785070, 12900892582326783232, 1312370380898727254]), Fq::from_montgomery_limbs([7694076120856540521, 15146007605344947747, 3193830018416013595, 78000754372621570])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([5244970134326960239, 15516929113764341255, 17564742414096943825, 565809721348112173]), Fq::from_montgomery_limbs([5301582977685139465, 1069505112975002608, 16894882112854195663, 1006960914609031286])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([933807009911564028, 17655717523721777752, 659854032695183391, 696948171193839726]), Fq::from_montgomery_limbs([14431054331145497962, 17304755953697263142, 1213662370814867240, 406071929554987935])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([12663120994246797343, 2294330459533986298, 12312665243517552316, 1162434858386655769]), Fq::from_montgomery_limbs([14926635415117511105, 17764138882091983380, 9845162467394310721, 365262529860339315])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([14453117806705169688, 15371763008771329739, 859830826361086373, 695666911485789237]), Fq::from_montgomery_limbs([4372294882149658880, 8953368466178039118, 7175551968845157174, 1296799522059563299])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([10743785724983518030, 11011793084410944909, 4710170432674399868, 872985210632843618]), Fq::from_montgomery_limbs([17034928244178709962, 7064630411064620365, 11395663509669588708, 435858474778976283])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([376125808430990068, 3949770427712474479, 1831829189608085506, 1033600417294508604]), Fq::from_montgomery_limbs([10474175416970714387, 7638666470072040137, 15323998975775188709, 499861799254400548])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([1311503503152331198, 10444356300795820152, 14006643509954394380, 360275028297029580]), Fq::from_montgomery_limbs([8848990081142010576, 3767709270230096287, 3203373808160299103, 388150987057922534])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([10527714796170242821, 10614707629823438759, 2166835449751899854, 826442630247846539]), Fq::from_montgomery_limbs([6013609006746740436, 17829255150171580013, 4865370498689675602, 631806865209492278])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([15407698184224138641, 13892993523782417432, 11074522626536989473, 1282147673049091223]), Fq::from_montgomery_limbs([13566156582579433121, 10666124267110644787, 17585510383615080517, 460461758314188289])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([242069913640544639, 8584725967717195423, 8673969491922319906, 906855204727712918]), Fq::from_montgomery_limbs([7507622872789915132, 8838834878197495556, 4143887577251148647, 147314013318059527])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([739343839918695474, 15137511284934501835, 8206744331706291412, 460517726754831566]), Fq::from_montgomery_limbs([5332098194526476884, 17462053065946204764, 17109918215020530224, 45500621783055396])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([7181843829067274762, 93170180385149654, 16601265500332534068, 692920224266685092]), Fq::from_montgomery_limbs([17373541931105532396, 11757401236546761356, 8986928677878657520, 855377794858428568])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([16770152912401058713, 7784323106136704842, 3166414142982631778, 252798645948426673]), Fq::from_montgomery_limbs([9867428128375842792, 6330871821464522409, 2509737650104409073, 87377932535113034])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([9620378538351684400, 16259903847898782084, 14224517332394904862, 248783024579596034]), Fq::from_montgomery_limbs([15289486933546124534, 5057961130890228616, 5618412873763815158, 1218252246195044797])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([18285461524892798097, 1312649631515945874, 2702563113361998981, 156990921411102370]), Fq::from_montgomery_limbs([16897672275046167563, 14631253948673542966, 7825433188494427672, 497140819371349325])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([5586425496410891559, 3860435103896432777, 15075562942840298887, 539774915240951994]), Fq::from_montgomery_limbs([18444236515588467614, 2138469830557977395, 8290712504743660259, 832327778452741186])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([15144610075012749322, 11801332079357554718, 11652842602527962385, 396912768209767018]), Fq::from_montgomery_limbs([10639969620247737667, 7334159324553590340, 15063492084884778567, 878961650630548788])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([18348264072788817511, 8009061068808737218, 6097418426121505352, 1211183153837556564]), Fq::from_montgomery_limbs([17198860156343170394, 2167538157704278478, 10949270097435223366, 928056824653534234])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([10634763804674129031, 9612181115928191305, 7893421171473086290, 251268211819044542]), Fq::from_montgomery_limbs([12969986235926373418, 712178654575523278, 3830673788986900912, 1046343437814522982])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([4298621992800380154, 4055578536241120435, 9617612244989535309, 382604375840733162]), Fq::from_montgomery_limbs([18067399474523304446, 12223555489918789755, 9993950631657703109, 1048484019905387459])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([13058818877006642653, 18414014235319212231, 14027764563566307518, 703825358964196766]), Fq::from_montgomery_limbs([9830948603405623404, 3341559968925646454, 12259602563968066179, 912923676012093495])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([8043127764066461437, 14803670394754936674, 15225608398783219441, 893330814736280447]), Fq::from_montgomery_limbs([4386126239109851849, 12096965878015338652, 13672154659709754401, 191338360587662586])])], + }, + optimized_arc: OptimizedArcMatrix::<39, 3, 117>::new_from_known([Fq::from_montgomery_limbs([13532052565085671856, 13175575834742130482, 14571043277169067394, 1128324334676141805]), Fq::from_montgomery_limbs([10586567975029405298, 5987505274649066590, 9663655893165983133, 381788629769180835]), Fq::from_montgomery_limbs([7404335995308317606, 10342209374602516054, 14679697400509748167, 1259991645283011647]), Fq::from_montgomery_limbs([12711294721892819516, 8412935995118692797, 7069737649526067295, 549549236990677487]), Fq::from_montgomery_limbs([128694122049037398, 15825223235256271389, 74647683628497806, 403759781237802093]), Fq::from_montgomery_limbs([3501552524290051296, 10688664658423588201, 8345653809557910120, 766292783896459938]), Fq::from_montgomery_limbs([13998055823902745235, 15535161481341849823, 9848874496394823215, 579121379437172744]), Fq::from_montgomery_limbs([16363263235454987811, 9117252686821547535, 4794867261658414781, 418411818796950741]), Fq::from_montgomery_limbs([3710344964675021293, 13957371261080223237, 15195218532629186765, 760708816844813378]), Fq::from_montgomery_limbs([16135673103471103205, 13943139040297964408, 12037506718934223099, 1187380734246932890]), Fq::from_montgomery_limbs([11326210002632211732, 2893415499386035614, 2949171194607212014, 568849018592141776]), Fq::from_montgomery_limbs([13925494990768706056, 13969996543019858204, 13457764640058086886, 114396439087701688]), Fq::from_montgomery_limbs([16351586607272228519, 6269966282891300082, 12490381894697744781, 834648274293416263]), Fq::from_montgomery_limbs([8699206025130866823, 13848489523222436720, 17766508449394109403, 431734376631208559]), Fq::from_montgomery_limbs([14700415236695759193, 989025675687828871, 13240672964496825486, 748003865243962980]), Fq::from_montgomery_limbs([9214232780783070449, 14602960282866682732, 11429301634278273897, 1184931746603958427]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16918226576727530642, 1752255981222787988, 8817230776216477202, 44114642545061535]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17686129245176609251, 9674361899119805900, 9621008306276981352, 1255623840056121919]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10364230610752960663, 23910044943574860, 13406278639865106346, 1187183151912921258]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([248381449107176191, 10056558558812610353, 2935304612801451247, 120643143760647643]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3742705574147487793, 4686024809709633429, 16670792739934718940, 963767567248511600]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13818431717487898976, 12602204397986520132, 12877538805399868553, 707732823673573212]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1195524900235019800, 10255957893776983045, 17449323294835632168, 1338958398006622846]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([561235443935255932, 15462505627668153377, 15246107413854263254, 504727735813765489]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5653045592293015958, 3671862246408432263, 7122935779684396291, 7330594669677847]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16480412187204912644, 2983094841853066492, 7734631524643537613, 311160218197782574]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6090779872384130856, 3292296244344624559, 14896131539665449347, 1294066060635586937]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4370576169448893808, 12445091387328652898, 4928931422125126888, 1290627573012356056]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12051840169477196739, 3885157525438683377, 15460563848822265709, 371728860504033938]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12236751112463919400, 10461860001193096708, 18252891305864475627, 422909291039524709]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18089753698150707757, 11984889148538027693, 14464882633247838012, 989393623597663020]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5947035363582041005, 10165882087299872929, 17463545041843069654, 661760845006520055]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12977803574308926045, 11603755933737030579, 13169368374394024728, 264871768182436351]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14419631251839461179, 11301211733526246620, 15903366283781829327, 773728645355215118]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8308101026985166387, 7726119298360373485, 10162441497855384077, 189302244249177174]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12797668472951431300, 13827763415857474023, 14698122219544096234, 1231082431746263546]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9036419769160652203, 14179415714825094519, 1197988233308979514, 1215761277179828327]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4698260184489833131, 10279668321438795791, 12410250074379293741, 1217500461705392747]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12177225652612451477, 6323252679960824348, 2982537087474808916, 1265097794155080401]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10936589967746372713, 1315336780394893005, 11802358065708482185, 926000082171380579]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9602562037821535541, 6086973874915377682, 14393911822211896593, 197271477318300291]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([702050427916060493, 13537318979711565901, 15026546140525067500, 581472194808990332]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16536035763574678680, 10430337823398608412, 14603639842087973366, 184743670576012836]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([703457789642747182, 14826807143913517966, 278957441362419559, 572670923489064055]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11986568387549799012, 17060314952512548206, 5848465513240015059, 844014096680008996]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8710335429210318089, 15939765460477572548, 13493874982974354172, 1195299757590572308]), Fq::from_montgomery_limbs([16720044796621311460, 6297107607479107816, 15666086360782481298, 946070823657072210]), Fq::from_montgomery_limbs([5216764590966106189, 18330556132248987975, 14778046174865524185, 601592383999400705]), Fq::from_montgomery_limbs([12284358746189003172, 15796822047553990474, 10249807758448272935, 1260540691182942177]), Fq::from_montgomery_limbs([14671741496053748797, 15956144823383552989, 8978105115308257315, 1129739098292337641]), Fq::from_montgomery_limbs([16528885559305010985, 14885472285663731653, 8692450371018254777, 875854298006252122]), Fq::from_montgomery_limbs([11216935928075429441, 7088545516130524118, 3510979311098449529, 980345967679074250]), Fq::from_montgomery_limbs([8480849792218315917, 11146529356407982510, 4204845623809735650, 554809226012522197]), Fq::from_montgomery_limbs([9465397404983425896, 1339596460298740670, 2695000812316794677, 164270174202044235]), Fq::from_montgomery_limbs([12807958353199166386, 2607509355362673632, 9510828759520576266, 306232379852697998]), Fq::from_montgomery_limbs([14216260065142834520, 8830790711865643815, 7264415235010871052, 905551093713836953]), Fq::from_montgomery_limbs([1392129315389772974, 3163495863255052347, 5961497987857813198, 47707649459794917])]), + } +} From cef2d5e82f86f87d2dbc52f77ba2820bf441435e Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 2 Apr 2024 18:06:02 -0400 Subject: [PATCH 46/54] poseidon377: rate 3 --- poseidon377/src/hash.rs | 60 ++++++++++++++++---------------- poseidon377/src/lib.rs | 9 ++--- poseidon377/src/params.rs | 27 +------------- poseidon377/src/params/rate_2.rs | 2 -- poseidon377/src/params/rate_3.rs | 30 ++++++++++++++++ 5 files changed, 66 insertions(+), 62 deletions(-) create mode 100644 poseidon377/src/params/rate_3.rs diff --git a/poseidon377/src/hash.rs b/poseidon377/src/hash.rs index eb2f932..23a6059 100644 --- a/poseidon377/src/hash.rs +++ b/poseidon377/src/hash.rs @@ -14,12 +14,12 @@ pub fn hash_2(domain_separator: &Fq, value: (Fq, Fq)) -> Fq { state.n_to_1_fixed_hash(&[*domain_separator, value.0, value.1]) } -// /// Hash three [`Fq`] elements with the provided `domain_separator`. -// pub fn hash_3(domain_separator: &Fq, value: (Fq, Fq, Fq)) -> Fq { -// let params = &crate::RATE_3_PARAMS; -// let mut state = Instance::new(params); -// state.n_to_1_fixed_hash(vec![*domain_separator, value.0, value.1, value.2]) -// } +/// Hash three [`Fq`] elements with the provided `domain_separator`. +pub fn hash_3(domain_separator: &Fq, value: (Fq, Fq, Fq)) -> Fq { + let params = &crate::RATE_3_PARAMS; + let mut state = Instance::new(params); + state.n_to_1_fixed_hash(&[*domain_separator, value.0, value.1, value.2]) +} // /// Hash four [`Fq`] elements with the provided `domain_separator`. // pub fn hash_4(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq)) -> Fq { @@ -122,34 +122,34 @@ mod test { assert_eq!(output, expected_output); } - // #[test] - // fn rate_3() { - // let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); + #[test] + fn rate_3() { + let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); - // let input = ( - // Fq::from_str( - // "7553885614632219548127688026174585776320152166623257619763178041781456016062", - // ) - // .unwrap(), - // Fq::from_str( - // "2337838243217876174544784248400816541933405738836087430664765452605435675740", - // ) - // .unwrap(), - // Fq::from_str( - // "4318449279293553393006719276941638490334729643330833590842693275258805886300", - // ) - // .unwrap(), - // ); + let input = ( + Fq::from_str( + "7553885614632219548127688026174585776320152166623257619763178041781456016062", + ) + .unwrap(), + Fq::from_str( + "2337838243217876174544784248400816541933405738836087430664765452605435675740", + ) + .unwrap(), + Fq::from_str( + "4318449279293553393006719276941638490334729643330833590842693275258805886300", + ) + .unwrap(), + ); - // let output = hash_3(&domain_sep, input); + let output = hash_3(&domain_sep, input); - // let expected_output = Fq::from_str( - // "2884734248868891876687246055367204388444877057000108043377667455104051576315", - // ) - // .unwrap(); + let expected_output = Fq::from_str( + "2884734248868891876687246055367204388444877057000108043377667455104051576315", + ) + .unwrap(); - // assert_eq!(output, expected_output); - // } + assert_eq!(output, expected_output); + } // #[test] // fn rate_4() { diff --git a/poseidon377/src/lib.rs b/poseidon377/src/lib.rs index 34a7796..785871f 100644 --- a/poseidon377/src/lib.rs +++ b/poseidon377/src/lib.rs @@ -5,16 +5,17 @@ mod hash; mod params; // pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5, hash_6, hash_7}; -pub use hash::{hash_1, hash_2}; +pub use hash::{hash_1, hash_2, hash_3}; /// Parameters for the rate-1 instance of Poseidon. pub const RATE_1_PARAMS: PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> = params::rate_1::rate_1(); /// Parameters for the rate-2 instance of Poseidon. -pub static RATE_2_PARAMS: PoseidonParameters<3, 2, 9, 4, 39, 3, 117, 31> = params::rate_2::rate_2(); +pub const RATE_2_PARAMS: PoseidonParameters<3, 2, 9, 4, 39, 3, 117, 31> = params::rate_2::rate_2(); + +/// Parameters for the rate-3 instance of Poseidon. +pub const RATE_3_PARAMS: PoseidonParameters<4, 3, 16, 9, 39, 4, 156, 31> = params::rate_3::rate_3(); -// /// Parameters for the rate-3 instance of Poseidon. -// pub static RATE_3_PARAMS: Lazy> = Lazy::new(params::rate_3); // /// Parameters for the rate-4 instance of Poseidon. // pub static RATE_4_PARAMS: Lazy> = Lazy::new(params::rate_4); // /// Parameters for the rate-5 instance of Poseidon. diff --git a/poseidon377/src/params.rs b/poseidon377/src/params.rs index 686bb1e..a5c300a 100644 --- a/poseidon377/src/params.rs +++ b/poseidon377/src/params.rs @@ -1,31 +1,6 @@ pub mod rate_1; pub mod rate_2; - -// /// Parameters for the rate-3 instance of Poseidon. -// pub fn rate_3() -> PoseidonParameters { -// PoseidonParameters { -// M: 128, -// t: 4, -// arc: ArcMatrix::new(39, 4, vec![Fq::from_montgomery_limbs([15748480026335769443, 10026984616551622801, 2063724428730618452, 1110463257231131824]), Fq::from_montgomery_limbs([9405142820695944635, 11887146523697465657, 7764829263011233272, 10688178588086322]), Fq::from_montgomery_limbs([7160766575090090422, 13093321275956005400, 4459692368517809830, 1324823328343033307]), Fq::from_montgomery_limbs([8967803866417976527, 10882703683899587484, 12604355713142717837, 913362872025451921]), Fq::from_montgomery_limbs([15434913893282099231, 3277411989792281453, 17050922401305883749, 1246396795570595652]), Fq::from_montgomery_limbs([16287493285262395377, 5813955731335134269, 4301474317614585594, 257520225036445364]), Fq::from_montgomery_limbs([6906749939426292513, 6186370802689597769, 13121713652409052978, 974279291569484389]), Fq::from_montgomery_limbs([8879700369639612352, 13618625792929032624, 3907123048620659133, 13234475218016492]), Fq::from_montgomery_limbs([8645743306703223161, 2649437454338131787, 1563690154181407289, 1014186398941703531]), Fq::from_montgomery_limbs([3215833110701720679, 2309636887892103305, 8098930435412331037, 874663616929857835]), Fq::from_montgomery_limbs([12979468067887852608, 5086746922420764336, 15129738790560069297, 751939553752695744]), Fq::from_montgomery_limbs([2977455406847333432, 16814711076234176662, 2052393181081329017, 1025504667378050833]), Fq::from_montgomery_limbs([7769933776177646251, 18381610027802955757, 14883656026535111760, 810712025708758153]), Fq::from_montgomery_limbs([17772168373864941552, 6465821213265847266, 13630379320513469760, 377801609900980707]), Fq::from_montgomery_limbs([15796194027949120118, 344995813018918925, 1773993772309248477, 495371203446902105]), Fq::from_montgomery_limbs([2372367672613269254, 1881994507861568925, 12499063082888296383, 198183890354307133]), Fq::from_montgomery_limbs([8560339202466452135, 4674741842794783289, 2295938056459737653, 1305584587019963566]), Fq::from_montgomery_limbs([15461653997367792205, 5090711996373026875, 11075299042609757676, 357873227640910306]), Fq::from_montgomery_limbs([13214321932666947005, 16528230236252211216, 1734602115269476888, 818804650790090647]), Fq::from_montgomery_limbs([3074208048728389137, 15294693683882801473, 8267213793554472185, 939723642447579953]), Fq::from_montgomery_limbs([7608844071812963093, 3353589238160526207, 1067027003640137200, 792698467630664137]), Fq::from_montgomery_limbs([2391877978401333891, 3445084574946968197, 5867047100623880462, 384653842732542416]), Fq::from_montgomery_limbs([13914996210513565866, 8700856800201437460, 10425054275786134234, 541663540168055488]), Fq::from_montgomery_limbs([14596932606745167054, 16496367856477422743, 3083425729320663120, 1085256212719522319]), Fq::from_montgomery_limbs([2801764879250151374, 12953139825024524798, 4394381772409440172, 830313299202608738]), Fq::from_montgomery_limbs([13075739450270366768, 9659330049829153230, 12704212718639626523, 379597176451908972]), Fq::from_montgomery_limbs([9001536902225952463, 6674549463409581165, 3938882380056074877, 470816176925644781]), Fq::from_montgomery_limbs([5294884807833067443, 14704992853616613201, 11757098272470647345, 665189038743785081]), Fq::from_montgomery_limbs([18065518746286947233, 11431857512891870190, 7287431282350112106, 995640933596957099]), Fq::from_montgomery_limbs([15052981787521128144, 7858896385113452253, 5947479460571918718, 325110107616048024]), Fq::from_montgomery_limbs([8613576755313845653, 13985454223970503802, 5789054661699635475, 985740677230137068]), Fq::from_montgomery_limbs([3926674414459183479, 15125652309946021274, 7647466298927812509, 538639589943257540]), Fq::from_montgomery_limbs([13088032312231323780, 5311715134728782442, 9012071499019100799, 1330544433302886302]), Fq::from_montgomery_limbs([3664690074919872926, 1742673068665566813, 17290766138005523036, 1336141459748487725]), Fq::from_montgomery_limbs([16701892693656888438, 5154406097941234252, 2366974417176707806, 154891066872919950]), Fq::from_montgomery_limbs([8557542807233937796, 15959352071512430351, 4990793324727743483, 1293908698860086179]), Fq::from_montgomery_limbs([15073124381299855142, 16058294570821288175, 6075369664645776758, 87903751159999429]), Fq::from_montgomery_limbs([260728936241443673, 368587472503844932, 2223560135924572606, 805228060621005528]), Fq::from_montgomery_limbs([7269287363866321270, 2522156147731399548, 13054616534728649482, 931053562448615214]), Fq::from_montgomery_limbs([4160721187467010576, 15149513473553012866, 15656814560183579945, 1001129190706658794]), Fq::from_montgomery_limbs([14658651187247608250, 12880504629543941444, 10429384779372580470, 1161303852698833077]), Fq::from_montgomery_limbs([1235937067845588009, 7263495784070768735, 1030907402673138059, 112249256173393847]), Fq::from_montgomery_limbs([9458598589591766548, 11826210343318171415, 5267632108497983083, 878978097354051448]), Fq::from_montgomery_limbs([9349450799754247443, 5592311323302686001, 8710868002211880477, 339828983129180906]), Fq::from_montgomery_limbs([17187343190949067712, 4809921206309548539, 1654263325380555971, 1029486713709570633]), Fq::from_montgomery_limbs([7644765658684612346, 13218702097576502896, 16500195852294632749, 1306030386106155137]), Fq::from_montgomery_limbs([3505773913815738861, 4811121454898644532, 6220593478751174597, 617955371370962677]), Fq::from_montgomery_limbs([15743683183886237853, 5364535566544930778, 13962926219706156342, 279010990417402073]), Fq::from_montgomery_limbs([5534551911701805251, 16755407359921259948, 11104629150013572555, 814043341910345398]), Fq::from_montgomery_limbs([8944448190814835116, 15456464214992510712, 8458597289994495014, 1265792487860718358]), Fq::from_montgomery_limbs([3488692111583557919, 13331987553376721589, 18402338094634938868, 1065887348732752750]), Fq::from_montgomery_limbs([9073355603731228680, 14479691350704356281, 12891384335089494102, 794286481590472402]), Fq::from_montgomery_limbs([837263131188576340, 12622228587018704025, 17555140662019162595, 116065994774231082]), Fq::from_montgomery_limbs([14557259484417606169, 4562566277830260822, 4089084236598109790, 503526388329690921]), Fq::from_montgomery_limbs([4425139792333247996, 17192910803843537440, 6327001334305018300, 1189405791856364044]), Fq::from_montgomery_limbs([600163066110636331, 12319630319416791292, 4537854761219498244, 33425175842117417]), Fq::from_montgomery_limbs([6516037169436621352, 5864705901197391949, 9864817317342287359, 931460564657389579]), Fq::from_montgomery_limbs([11238491471364916474, 18217352394306774045, 8369866412509597036, 1044188737560722381]), Fq::from_montgomery_limbs([15194113841410138763, 9713698855149445572, 840830724179458009, 574399528344548482]), Fq::from_montgomery_limbs([10094044208972451177, 14820311408839650250, 832731916797264605, 1078999540214538853]), Fq::from_montgomery_limbs([16122314034306189535, 9724832477076262589, 15428406989180491409, 739923283713385548]), Fq::from_montgomery_limbs([990447045496888008, 3954312775585670686, 14414097128339264209, 1160784537044385327]), Fq::from_montgomery_limbs([12790567186406766562, 9540692660342267401, 12022170182251744455, 1252399210348847836]), Fq::from_montgomery_limbs([7494400281462281059, 13969110066704963391, 6054746240150948073, 950110029163098453]), Fq::from_montgomery_limbs([10519706033512544620, 1273243870837414124, 6743773117001565585, 464260752488464109]), Fq::from_montgomery_limbs([6644031355037466023, 1291805761807358108, 6551243450297799793, 489432277343575283]), Fq::from_montgomery_limbs([3733838584259262811, 7236713087991210405, 12126920741789203222, 522094252622775454]), Fq::from_montgomery_limbs([18303517822547932992, 2807195054210467784, 13159641576753772587, 855829353333514728]), Fq::from_montgomery_limbs([4449128923636887467, 13611412613163493515, 12025336169373281333, 1332896560863403205]), Fq::from_montgomery_limbs([1957451185913453258, 11039336564323764549, 12727456287856679131, 228326154778309814]), Fq::from_montgomery_limbs([11338427901906828980, 109935761989873387, 12048120310880045899, 1308994518812657297]), Fq::from_montgomery_limbs([4699060152260570516, 11811201865491436236, 16537310942924896508, 1030678137510996087]), Fq::from_montgomery_limbs([12646006819083654452, 12494391672709859571, 16266030119791019994, 719740245520971856]), Fq::from_montgomery_limbs([3201794059715843426, 7659470317574241049, 9031647908161946781, 363148928753677985]), Fq::from_montgomery_limbs([11915502048720601469, 5772846818657644116, 14815308031156385389, 35923403898725028]), Fq::from_montgomery_limbs([170799290955765955, 1257452554540755479, 154144376612152799, 1049253778390741684]), Fq::from_montgomery_limbs([12436956446014067805, 12495488261233549050, 15098105238157791389, 981323126540180488]), Fq::from_montgomery_limbs([17100349351086466568, 15199087629262610106, 2857850399247819097, 933629509856035794]), Fq::from_montgomery_limbs([4893555085527448580, 9471095916978593903, 15023640703244453163, 410519582864510926]), Fq::from_montgomery_limbs([17697020347608707279, 18087907458231569196, 3102461787435620980, 62537999126012536]), Fq::from_montgomery_limbs([362067899505874664, 14616460120599181344, 15083851369654439268, 631595353512390885]), Fq::from_montgomery_limbs([1608981123540692261, 8134210797420893342, 15670126385653615755, 1081728063194062498]), Fq::from_montgomery_limbs([4703704396738392227, 9402972062611023321, 6453958957721258724, 851572793112159638]), Fq::from_montgomery_limbs([14824233911337383260, 4597555368896294115, 13023979643520645931, 1222004100879652500]), Fq::from_montgomery_limbs([2891695900391958118, 5796773624231764530, 15491428749654748662, 1093937749145502896]), Fq::from_montgomery_limbs([10646550323399881070, 1003826136171019194, 8409333161078783785, 585473798721331047]), Fq::from_montgomery_limbs([10406448549383730564, 6135682111734731503, 11700407245549915604, 1085967648121639010]), Fq::from_montgomery_limbs([1292557270730948407, 18351657967081052852, 2678776828196945632, 959596399484615466]), Fq::from_montgomery_limbs([17438835186806351279, 5684764232294129700, 10157135796976222869, 221407997194324483]), Fq::from_montgomery_limbs([7271080368260971730, 12425374983903708199, 12363525356310613233, 1110769717996073345]), Fq::from_montgomery_limbs([8776284918006632977, 15535513105129775867, 4863301670678022317, 606408823553952292]), Fq::from_montgomery_limbs([5066052630199551249, 15751267872424382675, 13216457812319899775, 20357134061436216]), Fq::from_montgomery_limbs([13075702753995571952, 11742969640320942289, 17235366015989204124, 1150175744034062515]), Fq::from_montgomery_limbs([5797072079034365870, 17544469376997963633, 14801627417863273010, 1279229494278656541]), Fq::from_montgomery_limbs([7831938700179984096, 17180774215462038883, 4412793878621746257, 1256681412857074070]), Fq::from_montgomery_limbs([12968148811839764483, 16811480840776650012, 8602422769386693728, 382111204094941728]), Fq::from_montgomery_limbs([13318317749693537082, 3768328516420896241, 142206933916635569, 26627989124778159]), Fq::from_montgomery_limbs([11933334459503099726, 1065153861357867533, 11936439423614846055, 1149053547479723905]), Fq::from_montgomery_limbs([2631481992765688259, 16002912452516972398, 2790213850442440167, 971241800259043027]), Fq::from_montgomery_limbs([13004331011283795828, 14189721912689256843, 6652832565990539996, 452227668495405848]), Fq::from_montgomery_limbs([11639365468700302967, 13626754345549226066, 5122223316448852115, 1295194052532032537]), Fq::from_montgomery_limbs([12503775634034454216, 12484320064934540173, 6283031731499175779, 1142971827879478463]), Fq::from_montgomery_limbs([18442309574762645474, 16043706756922086064, 1203583357081319117, 289542689638807443]), Fq::from_montgomery_limbs([13599874590406072599, 12311290605935601867, 1953047606734609742, 893071755833526513]), Fq::from_montgomery_limbs([5038580414622442104, 7706592482679500096, 14281875320180208754, 1311692136942617770]), Fq::from_montgomery_limbs([9116924453968593592, 4695211437329644351, 122131672006113022, 460639526001551111]), Fq::from_montgomery_limbs([612695102453556953, 17430917114440300568, 3712227006774104749, 434565107124519036]), Fq::from_montgomery_limbs([2711460600386692082, 5084507891975000066, 8709631773769875914, 701012049286425866]), Fq::from_montgomery_limbs([11255000280507413421, 5698447525751632608, 12610021548558458685, 1327688989507972423]), Fq::from_montgomery_limbs([13754440516467115564, 4761751981327990235, 9432675603353781856, 1033668598466658556]), Fq::from_montgomery_limbs([2955363287632570334, 7600733227996025654, 12027057950170385287, 940571561931822742]), Fq::from_montgomery_limbs([9703552155773020694, 5742947530758499792, 15763297443315122579, 930801506499582622]), Fq::from_montgomery_limbs([12461619637026250391, 11019870465191278910, 15873529414143589982, 972447937818380498]), Fq::from_montgomery_limbs([14971502483088783044, 7994961046161658478, 1775531898359432051, 206771972563020622]), Fq::from_montgomery_limbs([4978085183441894637, 6786252161551953403, 1597833793868027214, 752497765450057609]), Fq::from_montgomery_limbs([8931448885295850487, 14900305553280237157, 2562728536608668150, 820070530770563815]), Fq::from_montgomery_limbs([11091196606428717904, 4420547532075463625, 6826607115289893546, 339509882889855264]), Fq::from_montgomery_limbs([17256856864641998223, 7372887677193499350, 3097849850460902989, 1011516479262752115]), Fq::from_montgomery_limbs([9808600647888735916, 8803141348520645434, 18015342816914135198, 7277772948085899]), Fq::from_montgomery_limbs([4255905157964142682, 17462645559877710531, 3560989839800268196, 1096116226462923784]), Fq::from_montgomery_limbs([4532426149332308403, 5237561599212546024, 9574446344492571337, 1288985425094911641]), Fq::from_montgomery_limbs([1967144278589690647, 13201768465226207499, 11675172852243609220, 79359524195858682]), Fq::from_montgomery_limbs([17074450551687194476, 16589227351082498259, 5830030722038791303, 89110035164054224]), Fq::from_montgomery_limbs([3452204926739135764, 5895291203558274423, 3429941105331217419, 412361227440985099]), Fq::from_montgomery_limbs([13210175262635268816, 10104864748580005346, 8240781084290164303, 168682271830987859]), Fq::from_montgomery_limbs([11525437706352653758, 15971301990722544967, 11793391563239286407, 916031980478624773]), Fq::from_montgomery_limbs([4389204516004340807, 12441134604525330513, 4580143368417059639, 517606274666844106]), Fq::from_montgomery_limbs([6072537589623190443, 14275421712964513977, 2053999455871445365, 139159162484497428]), Fq::from_montgomery_limbs([2238091790845791439, 11897799578864713665, 10598112979470640955, 1188516484791317810]), Fq::from_montgomery_limbs([13761995375578127219, 14445881686168874002, 8730842343343508106, 75023619749953264]), Fq::from_montgomery_limbs([1876841868458551114, 9237020881271725184, 16194471067922316805, 1271526124614314943]), Fq::from_montgomery_limbs([14877699808508013807, 12080680751297116426, 594057086705046692, 93241042719742539]), Fq::from_montgomery_limbs([12830970035552954850, 16724821255552997190, 6657724498740869088, 1006163239038875246]), Fq::from_montgomery_limbs([4789503842637643824, 15837144161010273010, 14535004913645399525, 386886467210416122]), Fq::from_montgomery_limbs([4113769938336656446, 12767551034851750890, 6208225444974425038, 384107338921112388]), Fq::from_montgomery_limbs([1457177616745477196, 5817007768895882090, 18403435531988633091, 233268311946882765]), Fq::from_montgomery_limbs([8504687346089992934, 12196813988838752019, 4423978201234255224, 103085384776574023]), Fq::from_montgomery_limbs([12001393905996299420, 7906247193177979514, 2548978637445902098, 508311140484542625]), Fq::from_montgomery_limbs([12545595986735188293, 5025452441931542801, 9681010628496985355, 969281160594328671]), Fq::from_montgomery_limbs([4476642231459795365, 10130322522288542164, 5504810838816131115, 942197574992353703]), Fq::from_montgomery_limbs([12725269033496721580, 6143157215985784613, 2563593607564735516, 641845243083026263]), Fq::from_montgomery_limbs([16567470293191015474, 17979338546951754349, 679740711221916675, 389452091580807800]), Fq::from_montgomery_limbs([11781729507075158888, 16614033708022660131, 8066891565891024775, 1321986181569835272]), Fq::from_montgomery_limbs([15263301520898366582, 5379961920461128458, 5298170819253721050, 871089269493660926]), Fq::from_montgomery_limbs([5741830111596365525, 11415264909554107470, 8692411149271156415, 108534814929374467]), Fq::from_montgomery_limbs([14889457972591320596, 4443631419689297602, 9576604194859673886, 55036543682599971]), Fq::from_montgomery_limbs([15281837068987139929, 16419105318903348956, 3445836523780143538, 1293417868939267170]), Fq::from_montgomery_limbs([17836346323317710151, 12227034928325499140, 2533213127903144227, 888374169811671044]), Fq::from_montgomery_limbs([17190507118724296154, 11902410769486810674, 1884965616619903297, 288715797041361057]), Fq::from_montgomery_limbs([3698781841092321912, 12743575315417669826, 2170730182690456487, 1222843211331174337]), Fq::from_montgomery_limbs([4016814140820935108, 7695810038153355283, 9484931309805354358, 1136167194218052037]), Fq::from_montgomery_limbs([14104529875826633218, 4636945317611530138, 9502367629041549061, 1255556235831136969]), Fq::from_montgomery_limbs([3761991760077630951, 15074729225518792210, 17745896690436879228, 1023440924724847735]), Fq::from_montgomery_limbs([15850125405934611308, 14029919305144561597, 18399969854542387983, 1223450657234113398]), Fq::from_montgomery_limbs([15153111831948502891, 17514853580286890635, 16559251203856754825, 921126073718956725]), Fq::from_montgomery_limbs([14464801899277986702, 11416622266096337177, 5506399331882969115, 210576422101801202])]), -// mds: MdsMatrix::from_elements(vec![Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122])]), -// alpha: Alpha::Exponent(17), -// rounds: RoundNumbers {r_P: 31, r_F: 8}, -// optimized_mds: OptimizedMdsMatrices { -// M_hat: SquareMatrix::new(3, 3, vec![Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122])]), -// v: Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), -// w: Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), -// M_prime: SquareMatrix::new(4, 4, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122])]), -// M_doubleprime: SquareMatrix::new(4, 4, vec![Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([3912868093747842187, 13891638599538547029, 10034520463596988736, 24923162524038143]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12940192809323646256, 10063211937356421632, 16102475073289099807, 635255441558029483]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13439545502292733320, 8210365196597573290, 10798232243990715182, 209985169044052016]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), -// M_inverse: SquareMatrix::new(4, 4, vec![Fq::from_montgomery_limbs([9007339992229280139, 10326424826243116856, 5092355938437508509, 1003135009120454797]), Fq::from_montgomery_limbs([3793860473594899407, 15568206114553404763, 16793548156181542160, 297017364836875886]), Fq::from_montgomery_limbs([13118704239553060426, 7548360664834135031, 15187305571267045479, 227114138088772868]), Fq::from_montgomery_limbs([2709900338282071005, 579150611132688193, 11995391540129672972, 212155260597768490]), Fq::from_montgomery_limbs([3793860473594899407, 15568206114553404763, 16793548156181542160, 297017364836875886]), Fq::from_montgomery_limbs([928445210678486263, 8868160626470841658, 3755794146411517614, 1205473917191967362]), Fq::from_montgomery_limbs([10094677827265099397, 10861765592258933950, 11901484874902647424, 945996443767726300]), Fq::from_montgomery_limbs([5126644488318323641, 9647529625230561771, 1074775780748510466, 567785345221932172]), Fq::from_montgomery_limbs([13118704239553060426, 7548360664834135031, 15187305571267045479, 227114138088772868]), Fq::from_montgomery_limbs([10094677827265099397, 10861765592258933950, 11901484874902647424, 945996443767726300]), Fq::from_montgomery_limbs([824862419246658903, 16129767034744593238, 2170701329025733649, 1301512370243790878]), Fq::from_montgomery_limbs([3590917015388128985, 13161152940282392610, 1559289252300983907, 436823818333081923]), Fq::from_montgomery_limbs([2709900338282071005, 579150611132688193, 11995391540129672972, 212155260597768490]), Fq::from_montgomery_limbs([5126644488318323641, 9647529625230561771, 1074775780748510466, 567785345221932172]), Fq::from_montgomery_limbs([3590917015388128985, 13161152940282392610, 1559289252300983907, 436823818333081923]), Fq::from_montgomery_limbs([7790664405396569236, 15096721329668270063, 11927867068824539342, 454228276177545737])]), -// M_hat_inverse: SquareMatrix::new(3, 3, vec![Fq::from_montgomery_limbs([3075677070517273610, 12935975526496926241, 5413643861495614409, 209652601170259502]), Fq::from_montgomery_limbs([5785577408799344615, 13515126137629614434, 17409035401625287381, 421807861768027992]), Fq::from_montgomery_limbs([17408664359600548624, 17034391550693366562, 14790887709711326522, 240850225403047528]), Fq::from_montgomery_limbs([5785577408799344615, 13515126137629614434, 17409035401625287381, 421807861768027992]), Fq::from_montgomery_limbs([6563011294473575235, 14911990801343518815, 5387840296410814352, 742514872555164941]), Fq::from_montgomery_limbs([3251880405938485206, 8073678362843046478, 14394469848155607566, 254586312717322188]), Fq::from_montgomery_limbs([17408664359600548624, 17034391550693366562, 14790887709711326522, 240850225403047528]), Fq::from_montgomery_limbs([3251880405938485206, 8073678362843046478, 14394469848155607566, 254586312717322188]), Fq::from_montgomery_limbs([13824643481143691730, 14179537619338997380, 15459123094703748781, 28520280494317649])]), -// M_00: Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), -// M_i: Matrix::new(4, 4, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15179341900948762797, 11777292160962496113, 5824707706538620273, 936937875498611239]), Fq::from_montgomery_limbs([1606954441813089504, 12826102157655983484, 14966661657048055395, 819162019713750967]), Fq::from_montgomery_limbs([18056108788388345532, 17234016165201706377, 6789576351003995708, 125032483782692849]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1606954441813089504, 12826102157655983484, 14966661657048055395, 819162019713750967]), Fq::from_montgomery_limbs([11752092954103863583, 5034202175795696722, 3707413120985258698, 30603057527914360]), Fq::from_montgomery_limbs([9883657716457256646, 10991555415607003281, 6328965851154270623, 1087433766327205373]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18056108788388345532, 17234016165201706377, 6789576351003995708, 125032483782692849]), Fq::from_montgomery_limbs([9883657716457256646, 10991555415607003281, 6328965851154270623, 1087433766327205373]), Fq::from_montgomery_limbs([9018019125940148120, 4443737769172605648, 9114883657740606330, 325721335091457982])]), -// v_collection: vec![Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([3544248464247567155, 2397127324301944422, 9674390580977628774, 1114449731390581691]), Fq::from_montgomery_limbs([10793968004403082763, 14776098320186757028, 3926381262294758649, 695945431440508002]), Fq::from_montgomery_limbs([2462384498404250202, 12590306298374345930, 11038784733069574134, 419995880141749771])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([13532986407775683895, 9476195915097473266, 1008114724683017572, 545860035442724601]), Fq::from_montgomery_limbs([16204216982352313226, 12925674836598514697, 6751896652466221822, 941483813900869065]), Fq::from_montgomery_limbs([17313019480228630806, 566130559971125633, 11091260944862748358, 830377232140527827])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([13653317352261633777, 10493929866956769626, 8396755137825041221, 1146048882209297127]), Fq::from_montgomery_limbs([4132278932442914408, 14861671218963566328, 7959790402925606057, 1318243553399078199]), Fq::from_montgomery_limbs([13456767915419596367, 17246911423899751971, 5711218416857391278, 35403035103928169])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([12907160498704673184, 12152379198293294711, 9252679699965582400, 1224554265731421992]), Fq::from_montgomery_limbs([13419199242664167498, 13891452473958728318, 13543072901518191311, 1037106053989502131]), Fq::from_montgomery_limbs([16666897222883125359, 12131730689573449836, 13003710399516055414, 648272461984720515])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([13991351580088989461, 17864339801785851041, 11695126599066872867, 921749339582652232]), Fq::from_montgomery_limbs([11906579800297278037, 11470441940361903448, 15097374289742739909, 275174984759910272]), Fq::from_montgomery_limbs([18232546040145726314, 14147307759659284922, 991776681097878315, 1065560959455072221])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([3117800866767190184, 1873664776760606669, 13118797281780700540, 918694694774008673]), Fq::from_montgomery_limbs([16198059297050513347, 8432506190058226772, 9370514214732897655, 212402421053033076]), Fq::from_montgomery_limbs([2518782581476945766, 6771388879653376635, 1394823901821599775, 786725020056686548])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([4999125751846201369, 9316583554979616827, 11717167420397718381, 1066546495878431233]), Fq::from_montgomery_limbs([1873871365393108203, 11936414467331150546, 11113449918732250015, 317274884289334993]), Fq::from_montgomery_limbs([5753682051272078512, 3471409429911499297, 5526758011092646462, 1323229023757477097])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([2662759502586109043, 1695416312126819095, 1012723056571339871, 933004606031207884]), Fq::from_montgomery_limbs([16642301735251917773, 1183412391970839036, 3358256470522122468, 496531810743047820]), Fq::from_montgomery_limbs([14229377213726726413, 17261160081985153069, 9576276288950416830, 700741200569462595])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([6784297665956970408, 11357803791388406129, 11332180445619439434, 1106781037719016960]), Fq::from_montgomery_limbs([73464770077821962, 229820375535861605, 4835258747884954879, 991229687813626051]), Fq::from_montgomery_limbs([10226838402609267711, 357277105338386461, 10898037771405216876, 738876256175427730])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([12081508766912259869, 15930347767913903841, 8853663281043083447, 10038595465753804]), Fq::from_montgomery_limbs([112737203409514332, 16114412090287437958, 6856032020202317595, 113207183629292293]), Fq::from_montgomery_limbs([16338645855580340203, 2107869018362076089, 12567383037519742350, 815641356564041922])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([12125233544299543001, 11893476647476625145, 15457331543628022009, 800448530217165123]), Fq::from_montgomery_limbs([16675745322148137368, 1493849644880660500, 8185984318393084462, 138242285432587533]), Fq::from_montgomery_limbs([17724307965454702231, 4807522038799077672, 8746642154843823745, 883881308868446414])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([5656989936467702279, 3451526239075705633, 12473714456419681817, 720076561380511801]), Fq::from_montgomery_limbs([2752710254647861908, 11030634120397179297, 7520710074325720708, 849095153678924863]), Fq::from_montgomery_limbs([15714192245785854425, 1934486269946887645, 249860026764225808, 1186606499687026685])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([1065442882426850105, 18187640339393109068, 8850384031746892082, 317569289072515041]), Fq::from_montgomery_limbs([1837681773828322091, 10850972211403707738, 336406577412961307, 885368386317519809]), Fq::from_montgomery_limbs([15758214746904074141, 11583431684684102838, 7662385228843486433, 217065657978291661])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([2532634061285367793, 4387885387692314654, 12158131981630891597, 230565483900354414]), Fq::from_montgomery_limbs([13346419382798549501, 18280976687063744023, 5606331118089126185, 273578743992252446]), Fq::from_montgomery_limbs([17577657789855982030, 9630457784692257422, 12902853055721181839, 36459624765202074])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([9935908372408102992, 14641284087709280054, 17684292083487177951, 1155088959507788459]), Fq::from_montgomery_limbs([541701721303367728, 3959174565794182274, 18151179085562458542, 340776254243440974]), Fq::from_montgomery_limbs([17690336527687088662, 10937885152973991052, 3836836874424836886, 1090509013794447238])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([12310573214022515884, 3043141462744167127, 7406092407251694082, 9160197655286166]), Fq::from_montgomery_limbs([5101804845510497503, 7081024525590050191, 11990249650950760548, 264716438448155623]), Fq::from_montgomery_limbs([14013782434072143361, 18031550597362521222, 4176916092795610844, 1008783913934215313])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([5197923006462389769, 10850213912970425984, 6236288807254229677, 381647096775612803]), Fq::from_montgomery_limbs([16904562081938006603, 1107639524721847015, 12857487247803522951, 271937989000148046]), Fq::from_montgomery_limbs([7013951325055848953, 17628406277137302222, 10293198099660764650, 1028289934164465192])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([9440252581760876632, 13906337780931242750, 7219961419517025615, 863594454449643923]), Fq::from_montgomery_limbs([12415229001429896965, 11797271759794076948, 1936084790537971337, 467019200964667988]), Fq::from_montgomery_limbs([13553333187067381210, 1913316352777824197, 2458517210763467943, 416174277494956025])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([7868885723930814728, 3969684852222006688, 847603129181085226, 823204710257787357]), Fq::from_montgomery_limbs([2624306993317474736, 1804999503475194353, 13323117091522537138, 113213718216814537]), Fq::from_montgomery_limbs([13028853788877299982, 16207030875451345887, 2928890708384561735, 948835740600760535])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([10332479856281518610, 5461907926022368118, 7566281008880752185, 864542613737871414]), Fq::from_montgomery_limbs([11550343341750412987, 1921332364560602185, 10690162369512005698, 600190744590186860]), Fq::from_montgomery_limbs([11343163367577472637, 7523233831279170268, 14378595658429552329, 120678106820511750])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([1497803481831246817, 7312638636652871954, 34925480233639111, 44726202564591048]), Fq::from_montgomery_limbs([6152756361006073958, 6090155380815116625, 6481578954979806710, 476190110671401465]), Fq::from_montgomery_limbs([18102241645952999143, 12827175776728527569, 10917946848969687318, 1031360619507992497])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([10479806376196948796, 1250933353292865403, 9714052636425979898, 724896984716198201]), Fq::from_montgomery_limbs([3536451958691514845, 3820878089540374661, 1602865878357815152, 303292371629072230]), Fq::from_montgomery_limbs([2647458017961703424, 14255003531541688237, 9264134941484745925, 1144438898154277748])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([14896674334234435047, 6601140327636410720, 11594733032791631077, 947808208377648736]), Fq::from_montgomery_limbs([93857753711709862, 17114219253807441153, 16571911382240086620, 644986335071170285]), Fq::from_montgomery_limbs([11491045973623638105, 5832623718891215316, 4637897368334583442, 1270136782835782403])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([12059760086965268413, 2104859632417338119, 3074047925029609319, 208685506241841351]), Fq::from_montgomery_limbs([507458650320731749, 9076652763882528689, 10828995108044982790, 52861166057592230]), Fq::from_montgomery_limbs([5221245564257429544, 602546441039285868, 15463515802777952068, 500262458682360187])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([7894603091209534363, 5963299443776147743, 13622917766282071553, 713444535504669723]), Fq::from_montgomery_limbs([4707822806056225947, 13008601324591260598, 6664196336989843628, 361594494120552721]), Fq::from_montgomery_limbs([7234555332968855468, 13223173585719696534, 305242624856210053, 317409461914184558])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([11052531972415731524, 6240249964832493008, 4690512975789608724, 274300931659090955]), Fq::from_montgomery_limbs([12865203614941348009, 13629535421935003532, 14381802801123693296, 1108602536075241162]), Fq::from_montgomery_limbs([5342089493189303187, 11299417329134660514, 10437815285599784456, 224625807758727328])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([9419019633707904193, 17287104400249488354, 2449834218878066498, 880784160362712225]), Fq::from_montgomery_limbs([1290387194510150606, 300217878573287348, 14712510331530271944, 675169241465258261]), Fq::from_montgomery_limbs([4319449301091482228, 6604997191961440301, 3677473832318302588, 1226257433999087430])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([9534885027294214845, 4233504142154122132, 671184154419538440, 588715198189399632]), Fq::from_montgomery_limbs([7834331777517711657, 12046762886677754640, 12085017871628461830, 1280695769450865349]), Fq::from_montgomery_limbs([17051048636914562332, 9931763496822042016, 812132922227142181, 1215806818267015733])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([10248407954863227910, 6765342538198222232, 3376905111922655053, 689295470605671650]), Fq::from_montgomery_limbs([852480703421168492, 12355793660799378618, 6731311636032405498, 552777249330804449]), Fq::from_montgomery_limbs([1991623127336121727, 6505031450361927139, 15924460190557187785, 1320271660125443798])]), Matrix::new(1, 3, vec![Fq::from_montgomery_limbs([17438135180680113454, 12154982230827864980, 10857096699189529725, 334861850663499479]), Fq::from_montgomery_limbs([12624059910780607141, 14938141535714956518, 10243410760322861612, 175466020402160466]), Fq::from_montgomery_limbs([11857086838875231849, 16760011700969259517, 8560727830203057188, 152554536976681898])])], -// w_hat_collection: vec![Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([3912868093747842187, 13891638599538547029, 10034520463596988736, 24923162524038143]), Fq::from_montgomery_limbs([12940192809323646256, 10063211937356421632, 16102475073289099807, 635255441558029483]), Fq::from_montgomery_limbs([13439545502292733320, 8210365196597573290, 10798232243990715182, 209985169044052016])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([5751631526606014397, 8462191803631620224, 10509863267471683158, 447861109114791478]), Fq::from_montgomery_limbs([1437717886047567450, 16559126213892176045, 11375302712551931442, 1010730393746897317]), Fq::from_montgomery_limbs([1032470319927068309, 9033645067614029358, 18086293033601348125, 304884835659797125])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([10030163671426435897, 10038896509362625400, 11411437429949289797, 606845429174704889]), Fq::from_montgomery_limbs([13498048305505589045, 14368156343173972859, 5751396272374329581, 1272023166617958572]), Fq::from_montgomery_limbs([9805803927184323301, 13425206131835998785, 13841345243897428245, 615350201809158017])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([14956193223177978026, 4328965669156513709, 1332264507148878686, 908612595539291972]), Fq::from_montgomery_limbs([15512085810689995447, 1278811290279093247, 9713635222980865549, 89918473543807263]), Fq::from_montgomery_limbs([10908982736163998884, 10522718116611575026, 15481410495350859749, 209345561210183580])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([11298966019883739719, 3737954136375979756, 15666428783954356951, 93322090349950905]), Fq::from_montgomery_limbs([10237667835076512281, 12325953953570405613, 12285254403281429040, 507107093264211690]), Fq::from_montgomery_limbs([14936641530723543297, 12684654093637137182, 6573648560098330931, 479128193670708215])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([4665624059074225901, 569773391663140707, 8039376161136700750, 305908263293765813]), Fq::from_montgomery_limbs([12181552876023559131, 7764448317943448064, 10288520924018884818, 1103852203169073095]), Fq::from_montgomery_limbs([15135999239214672948, 10790616626797062588, 17724896909590777918, 1127104704406195421])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([6486714260719829146, 11040751111500249834, 8958297661837625585, 504881187176923268]), Fq::from_montgomery_limbs([9943503409323924620, 9519655296534470798, 10031214880424175980, 880224541550113700]), Fq::from_montgomery_limbs([2137123775246483621, 14575781645937393202, 6082200831828333306, 319693495256136311])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([18213874187166503017, 7357620257182256357, 12753979462901781784, 653327632081049969]), Fq::from_montgomery_limbs([5648402480861501803, 1298801804080198935, 16361566576947818947, 92096317293783223]), Fq::from_montgomery_limbs([17945395108017238106, 3498558197841053284, 7092504945026653103, 372132312547601421])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([15622147422254947733, 250116726000401472, 8318204049018604061, 866935352572882912]), Fq::from_montgomery_limbs([18241804623807754966, 4053430455599371737, 4911593924672747195, 915087345052626509]), Fq::from_montgomery_limbs([4269143728338544596, 14357201884344458328, 903006646797065399, 462454343275509581])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([16493823488007719206, 14779329128742765495, 18378884619527915493, 360610956997885799]), Fq::from_montgomery_limbs([8231956009608211607, 2237272948977110346, 11234918376541957482, 211807215316292218]), Fq::from_montgomery_limbs([4694295422393950539, 494515799644279017, 16377559543581347883, 1023664249665260398])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([269632147881481827, 17676834172042717446, 13502391546248246285, 158178875674850167]), Fq::from_montgomery_limbs([854535799571654664, 4436276133137563398, 12250035363748361097, 569847052981690503]), Fq::from_montgomery_limbs([8356573900420286918, 3943111982741005596, 6690528014909196681, 100899612597296936])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([12053108327360532468, 2215278670095839574, 18310257358516903189, 507153778977982696]), Fq::from_montgomery_limbs([15548327836627863789, 11669395097045425760, 16626297677851084169, 692658363999722441]), Fq::from_montgomery_limbs([5590241427234064239, 15193192965574703365, 7643293374071077424, 502287078265137211])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([7121109350102790552, 3842989306298966953, 15442678426893498207, 43682019324253859]), Fq::from_montgomery_limbs([8543065120635606147, 17618464589270231617, 4296924638616724859, 409105874035239827]), Fq::from_montgomery_limbs([12676854185827013572, 13888077538347807744, 7139127667431143175, 1225243047885808896])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([4347759847866483265, 5855881520281836030, 5505541235252858831, 976243446170017999]), Fq::from_montgomery_limbs([1880808402247115426, 943890821775946445, 12000264441794154793, 12973763854532988]), Fq::from_montgomery_limbs([8496845738719301602, 11057791601996073401, 18430915991403133806, 442312408397388928])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([4597591998391646042, 17549544536524741100, 7632675978077243758, 789227364575351796]), Fq::from_montgomery_limbs([6247914330752058188, 17379927947827819186, 459262613159719376, 17669136651242999]), Fq::from_montgomery_limbs([4416622626270946808, 9011173931926497864, 2385315687804767815, 1100085754679242026])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([2858027675101851698, 15199707771225336894, 6912007903404713737, 1195736020550467109]), Fq::from_montgomery_limbs([16536374087395040861, 11905207237145903612, 6114638606661711198, 227197704829902271]), Fq::from_montgomery_limbs([3076102373056113184, 9532492163005512122, 6930666801042367372, 359947620632631939])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([9440427530838662463, 13085976282871216533, 11609820600896955445, 51192596107359503]), Fq::from_montgomery_limbs([17890235474475849352, 12861769158994967907, 17199388852287681020, 1318104728008794611]), Fq::from_montgomery_limbs([9609805589266211410, 1670962659820459283, 9562963939311936174, 688275382419503341])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([11167389070307520429, 13977359843749392350, 18441644755473839422, 290366407278115355]), Fq::from_montgomery_limbs([12443632002797775505, 4654520606670285598, 7306556664291017650, 1327633699432541153]), Fq::from_montgomery_limbs([8092706722129444827, 3658752323492067072, 4793508300996597563, 747223853807345138])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([2950573641865927995, 8127787636945490240, 13677031676353641065, 158618420355845681]), Fq::from_montgomery_limbs([11307462183326711698, 4564920402521666764, 14622180354087693631, 1336492508958389172]), Fq::from_montgomery_limbs([4173008676431506498, 17674916393358760276, 12680688896701595449, 968385841042257188])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([15472538886056214069, 16032473331676368569, 16841883688877890652, 857731186179030920]), Fq::from_montgomery_limbs([3288920438915728986, 5565335638237954732, 16168717028973711379, 557711450924669146]), Fq::from_montgomery_limbs([2265592654319698024, 3205443269480017209, 18001932803255029483, 256652906325487142])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([281001495283692254, 13790290956215242906, 864387281468051063, 1176693997057782923]), Fq::from_montgomery_limbs([5123560649935846987, 5199616350359672235, 1101436586367673740, 39975262197625469]), Fq::from_montgomery_limbs([6484555314181403346, 13702935644386089262, 1070288899201945043, 1275458004049976710])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([98165037936801382, 7473654891184825762, 349134079485996919, 938092578927267223]), Fq::from_montgomery_limbs([14188791834503488423, 18250342088521722141, 2040654749291153960, 926512896204558398]), Fq::from_montgomery_limbs([15224380743676270964, 10786962884449555555, 11361613959686699022, 1210280746834414029])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([11759988830619476554, 8373507443143532317, 3120367880452859596, 1169296147393250270]), Fq::from_montgomery_limbs([2846578710538047768, 1316160842247957353, 13088400622784413268, 408653118294756083]), Fq::from_montgomery_limbs([17205667740934035850, 3622944266683523375, 9638129797382886543, 994379064072552476])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([10882825922057764254, 14418568533897154353, 491214512167095700, 433897962559667772]), Fq::from_montgomery_limbs([35128611736586842, 16389786149729784671, 10083558142637806972, 137127276176467702]), Fq::from_montgomery_limbs([6798031404470581862, 17848651283256458296, 16222358536010933656, 803683331342998490])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([6972405454939855920, 4552281101007467397, 7264795943490057443, 864688899960148444]), Fq::from_montgomery_limbs([13927481061475209845, 15489762958527206567, 6189983331269957882, 547789234607264680]), Fq::from_montgomery_limbs([3562534859757502067, 1843985785467419577, 4386226263096503262, 1115671597351053159])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([12278022351526165705, 17770191387101388710, 10802565891039662934, 1075900781773362211]), Fq::from_montgomery_limbs([9958371080654925973, 11831887817395699647, 1304723427562418477, 354927743406208632]), Fq::from_montgomery_limbs([7902693975921282234, 10693029805943046522, 8006364623005626891, 336833334808426575])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([16076162621220796497, 11613654344612125103, 18364396485836487261, 865751367130059847]), Fq::from_montgomery_limbs([177169936881514673, 15617655321830945408, 2675644582344792450, 813774581927626127]), Fq::from_montgomery_limbs([10024256268223083204, 4626025808735980516, 15602381466554927909, 372989881235976309])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([15323355670275250642, 18066772602049731907, 11033816093504217490, 425723417069229499]), Fq::from_montgomery_limbs([13530227036238294143, 4726864651116558793, 11836084010804535503, 345580619383028526]), Fq::from_montgomery_limbs([9033276785296979553, 8015158493901738529, 7685612975844433499, 646369922266692941])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([6106858674192767659, 6489383503992760141, 15104627566688873842, 967007977448094027]), Fq::from_montgomery_limbs([15940025338744316838, 9550216566045214897, 11499601007486969156, 519967031225120334]), Fq::from_montgomery_limbs([4457318900167954816, 12351443184813817360, 14113262131954548168, 753463690543950206])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([1881864483835241252, 13219574080686529684, 10918646441166728772, 345526905812511168]), Fq::from_montgomery_limbs([16713317497695859602, 11594535032725047066, 8614425525972045100, 729458370408931167]), Fq::from_montgomery_limbs([2382365843901650484, 13640386342346411833, 2679421435014953531, 1060573086709931927])]), Matrix::new(3, 1, vec![Fq::from_montgomery_limbs([17434826777667612735, 2365065059007002287, 12113557410986701552, 486906253608904981]), Fq::from_montgomery_limbs([15422260981332801416, 11687068808662228912, 15340447593430286694, 1095477751721025581]), Fq::from_montgomery_limbs([3067136625363818837, 15414947239083578872, 4357451922062335136, 670849424861114413])])], -// }, -// optimized_arc: OptimizedArcMatrix::new(39, 4, vec![Fq::from_montgomery_limbs([15748480026335769443, 10026984616551622801, 2063724428730618452, 1110463257231131824]), Fq::from_montgomery_limbs([9405142820695944635, 11887146523697465657, 7764829263011233272, 10688178588086322]), Fq::from_montgomery_limbs([7160766575090090422, 13093321275956005400, 4459692368517809830, 1324823328343033307]), Fq::from_montgomery_limbs([8967803866417976527, 10882703683899587484, 12604355713142717837, 913362872025451921]), Fq::from_montgomery_limbs([15434913893282099231, 3277411989792281453, 17050922401305883749, 1246396795570595652]), Fq::from_montgomery_limbs([16287493285262395377, 5813955731335134269, 4301474317614585594, 257520225036445364]), Fq::from_montgomery_limbs([6906749939426292513, 6186370802689597769, 13121713652409052978, 974279291569484389]), Fq::from_montgomery_limbs([8879700369639612352, 13618625792929032624, 3907123048620659133, 13234475218016492]), Fq::from_montgomery_limbs([8645743306703223161, 2649437454338131787, 1563690154181407289, 1014186398941703531]), Fq::from_montgomery_limbs([3215833110701720679, 2309636887892103305, 8098930435412331037, 874663616929857835]), Fq::from_montgomery_limbs([12979468067887852608, 5086746922420764336, 15129738790560069297, 751939553752695744]), Fq::from_montgomery_limbs([2977455406847333432, 16814711076234176662, 2052393181081329017, 1025504667378050833]), Fq::from_montgomery_limbs([7769933776177646251, 18381610027802955757, 14883656026535111760, 810712025708758153]), Fq::from_montgomery_limbs([17772168373864941552, 6465821213265847266, 13630379320513469760, 377801609900980707]), Fq::from_montgomery_limbs([15796194027949120118, 344995813018918925, 1773993772309248477, 495371203446902105]), Fq::from_montgomery_limbs([2372367672613269254, 1881994507861568925, 12499063082888296383, 198183890354307133]), Fq::from_montgomery_limbs([8560339202466452135, 4674741842794783289, 2295938056459737653, 1305584587019963566]), Fq::from_montgomery_limbs([5894698623250752231, 11196686474075291940, 319786488005502847, 976772307367475705]), Fq::from_montgomery_limbs([9900044152758269451, 6382301581301578495, 486281876073250633, 71881436776511649]), Fq::from_montgomery_limbs([8858083304247561548, 5671107377399080192, 14186551763070529190, 1191940751561414494]), Fq::from_montgomery_limbs([11388935853995478114, 12687122290317818660, 14863371661788062147, 1158919028776138907]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10994187684158036079, 6365622770188053181, 9403760573784657161, 1146936259121378165]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10359734611031618397, 6788070320086383195, 6870540987465879902, 1154055204589981421]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6567270162376125909, 13203968161919606288, 7529228388954710988, 1019437133634541415]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17083543156205069093, 11374420946242035033, 18049715002122120090, 906131070047943878]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2206466804129196608, 7840059231658610949, 18148556368765089670, 985832054058842554]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15160443716672326145, 3977221634341810924, 11902494952164999188, 990146605314032630]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15193334268554411388, 16206854972517382356, 12905310888333022888, 513326483567402639]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5576504557462251248, 8125452713587662843, 16486629117159905898, 293174270601514481]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17062406856052799045, 4903125714753109748, 8990920239472029770, 936892459427742133]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6584002420364695129, 10284681536623141870, 7366280281192288180, 305633769889978939]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6566050072214065144, 10806265958907184854, 2902594108468871307, 927316604280713413]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9252557727477672981, 3306161630265918351, 179799263786823209, 104291884324148129]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16542259604895379638, 11861465458652059930, 2193746946143577162, 159871979033281704]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1973639865256742476, 12494642903985355205, 12678561251384262826, 1063132847474762378]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16335431452481000471, 3819468482480263699, 13079543972531520553, 161635515931478039]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6649676330206378374, 170192309920289600, 12660537932851201431, 875374125882958636]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18237532705140415183, 5538703501092204277, 12946255801995328124, 1087375767378395044]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1012766659404803227, 13885920911268862504, 11108883550523828802, 162298092776208930]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2714322473297105009, 249945166940002912, 12698583590562308965, 394261012891088761]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11185042895155911424, 15268539255422683750, 7532909772946377585, 463947154991508934]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2052933093431843614, 1295021459124440371, 8148559147565678653, 89295276853247542]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12899268934677529381, 16307080267150235665, 10898130171280001197, 518068384980908314]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([993244798968596356, 11096685116364920579, 8750430116109558950, 9308397748705116]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5953598583374622076, 16232619257237216458, 17798149940250628730, 654505929641861550]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11857053641605556992, 4354078495412090273, 4158908777158450718, 1170888300956232550]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12321182200541779000, 10436914785964154798, 4712843605747406852, 790686269705752315]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11380659121996065200, 7281347105742142276, 13205980178228421104, 804622887165645998]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5152043905886227057, 17756682668953288347, 10695990401739553448, 1061486419247893614]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13186025127373894323, 16210743521572602678, 17903754729019377882, 874061397244045546]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12725269033496721580, 6143157215985784613, 2563593607564735516, 641845243083026263]), Fq::from_montgomery_limbs([16567470293191015474, 17979338546951754349, 679740711221916675, 389452091580807800]), Fq::from_montgomery_limbs([11781729507075158888, 16614033708022660131, 8066891565891024775, 1321986181569835272]), Fq::from_montgomery_limbs([15263301520898366582, 5379961920461128458, 5298170819253721050, 871089269493660926]), Fq::from_montgomery_limbs([5741830111596365525, 11415264909554107470, 8692411149271156415, 108534814929374467]), Fq::from_montgomery_limbs([14889457972591320596, 4443631419689297602, 9576604194859673886, 55036543682599971]), Fq::from_montgomery_limbs([15281837068987139929, 16419105318903348956, 3445836523780143538, 1293417868939267170]), Fq::from_montgomery_limbs([17836346323317710151, 12227034928325499140, 2533213127903144227, 888374169811671044]), Fq::from_montgomery_limbs([17190507118724296154, 11902410769486810674, 1884965616619903297, 288715797041361057]), Fq::from_montgomery_limbs([3698781841092321912, 12743575315417669826, 2170730182690456487, 1222843211331174337]), Fq::from_montgomery_limbs([4016814140820935108, 7695810038153355283, 9484931309805354358, 1136167194218052037]), Fq::from_montgomery_limbs([14104529875826633218, 4636945317611530138, 9502367629041549061, 1255556235831136969]), Fq::from_montgomery_limbs([3761991760077630951, 15074729225518792210, 17745896690436879228, 1023440924724847735]), Fq::from_montgomery_limbs([15850125405934611308, 14029919305144561597, 18399969854542387983, 1223450657234113398]), Fq::from_montgomery_limbs([15153111831948502891, 17514853580286890635, 16559251203856754825, 921126073718956725]), Fq::from_montgomery_limbs([14464801899277986702, 11416622266096337177, 5506399331882969115, 210576422101801202])]), -// } -// } +pub mod rate_3; // /// Parameters for the rate-4 instance of Poseidon. // pub fn rate_4() -> PoseidonParameters { diff --git a/poseidon377/src/params/rate_2.rs b/poseidon377/src/params/rate_2.rs index b94a4a2..d871ac9 100644 --- a/poseidon377/src/params/rate_2.rs +++ b/poseidon377/src/params/rate_2.rs @@ -1,5 +1,3 @@ - - use decaf377::Fq; use poseidon_parameters::v1::{ Alpha, ArcMatrix, Matrix, MdsMatrix, OptimizedArcMatrix, OptimizedMdsMatrices, diff --git a/poseidon377/src/params/rate_3.rs b/poseidon377/src/params/rate_3.rs new file mode 100644 index 0000000..07ef28f --- /dev/null +++ b/poseidon377/src/params/rate_3.rs @@ -0,0 +1,30 @@ +use decaf377::Fq; +use poseidon_parameters::v1::{ + Alpha, ArcMatrix, Matrix, MdsMatrix, OptimizedArcMatrix, OptimizedMdsMatrices, + PoseidonParameters, RoundNumbers, SquareMatrix, +}; + +/// Parameters for the rate-3 instance of Poseidon. +pub const fn rate_3() -> PoseidonParameters<4, 3, 16, 9, 39, 4, 156, 31> { + PoseidonParameters { + M: 128, + arc: ArcMatrix::<39, 4, 156>::new_from_known([Fq::from_montgomery_limbs([15748480026335769443, 10026984616551622801, 2063724428730618452, 1110463257231131824]), Fq::from_montgomery_limbs([9405142820695944635, 11887146523697465657, 7764829263011233272, 10688178588086322]), Fq::from_montgomery_limbs([7160766575090090422, 13093321275956005400, 4459692368517809830, 1324823328343033307]), Fq::from_montgomery_limbs([8967803866417976527, 10882703683899587484, 12604355713142717837, 913362872025451921]), Fq::from_montgomery_limbs([15434913893282099231, 3277411989792281453, 17050922401305883749, 1246396795570595652]), Fq::from_montgomery_limbs([16287493285262395377, 5813955731335134269, 4301474317614585594, 257520225036445364]), Fq::from_montgomery_limbs([6906749939426292513, 6186370802689597769, 13121713652409052978, 974279291569484389]), Fq::from_montgomery_limbs([8879700369639612352, 13618625792929032624, 3907123048620659133, 13234475218016492]), Fq::from_montgomery_limbs([8645743306703223161, 2649437454338131787, 1563690154181407289, 1014186398941703531]), Fq::from_montgomery_limbs([3215833110701720679, 2309636887892103305, 8098930435412331037, 874663616929857835]), Fq::from_montgomery_limbs([12979468067887852608, 5086746922420764336, 15129738790560069297, 751939553752695744]), Fq::from_montgomery_limbs([2977455406847333432, 16814711076234176662, 2052393181081329017, 1025504667378050833]), Fq::from_montgomery_limbs([7769933776177646251, 18381610027802955757, 14883656026535111760, 810712025708758153]), Fq::from_montgomery_limbs([17772168373864941552, 6465821213265847266, 13630379320513469760, 377801609900980707]), Fq::from_montgomery_limbs([15796194027949120118, 344995813018918925, 1773993772309248477, 495371203446902105]), Fq::from_montgomery_limbs([2372367672613269254, 1881994507861568925, 12499063082888296383, 198183890354307133]), Fq::from_montgomery_limbs([8560339202466452135, 4674741842794783289, 2295938056459737653, 1305584587019963566]), Fq::from_montgomery_limbs([15461653997367792205, 5090711996373026875, 11075299042609757676, 357873227640910306]), Fq::from_montgomery_limbs([13214321932666947005, 16528230236252211216, 1734602115269476888, 818804650790090647]), Fq::from_montgomery_limbs([3074208048728389137, 15294693683882801473, 8267213793554472185, 939723642447579953]), Fq::from_montgomery_limbs([7608844071812963093, 3353589238160526207, 1067027003640137200, 792698467630664137]), Fq::from_montgomery_limbs([2391877978401333891, 3445084574946968197, 5867047100623880462, 384653842732542416]), Fq::from_montgomery_limbs([13914996210513565866, 8700856800201437460, 10425054275786134234, 541663540168055488]), Fq::from_montgomery_limbs([14596932606745167054, 16496367856477422743, 3083425729320663120, 1085256212719522319]), Fq::from_montgomery_limbs([2801764879250151374, 12953139825024524798, 4394381772409440172, 830313299202608738]), Fq::from_montgomery_limbs([13075739450270366768, 9659330049829153230, 12704212718639626523, 379597176451908972]), Fq::from_montgomery_limbs([9001536902225952463, 6674549463409581165, 3938882380056074877, 470816176925644781]), Fq::from_montgomery_limbs([5294884807833067443, 14704992853616613201, 11757098272470647345, 665189038743785081]), Fq::from_montgomery_limbs([18065518746286947233, 11431857512891870190, 7287431282350112106, 995640933596957099]), Fq::from_montgomery_limbs([15052981787521128144, 7858896385113452253, 5947479460571918718, 325110107616048024]), Fq::from_montgomery_limbs([8613576755313845653, 13985454223970503802, 5789054661699635475, 985740677230137068]), Fq::from_montgomery_limbs([3926674414459183479, 15125652309946021274, 7647466298927812509, 538639589943257540]), Fq::from_montgomery_limbs([13088032312231323780, 5311715134728782442, 9012071499019100799, 1330544433302886302]), Fq::from_montgomery_limbs([3664690074919872926, 1742673068665566813, 17290766138005523036, 1336141459748487725]), Fq::from_montgomery_limbs([16701892693656888438, 5154406097941234252, 2366974417176707806, 154891066872919950]), Fq::from_montgomery_limbs([8557542807233937796, 15959352071512430351, 4990793324727743483, 1293908698860086179]), Fq::from_montgomery_limbs([15073124381299855142, 16058294570821288175, 6075369664645776758, 87903751159999429]), Fq::from_montgomery_limbs([260728936241443673, 368587472503844932, 2223560135924572606, 805228060621005528]), Fq::from_montgomery_limbs([7269287363866321270, 2522156147731399548, 13054616534728649482, 931053562448615214]), Fq::from_montgomery_limbs([4160721187467010576, 15149513473553012866, 15656814560183579945, 1001129190706658794]), Fq::from_montgomery_limbs([14658651187247608250, 12880504629543941444, 10429384779372580470, 1161303852698833077]), Fq::from_montgomery_limbs([1235937067845588009, 7263495784070768735, 1030907402673138059, 112249256173393847]), Fq::from_montgomery_limbs([9458598589591766548, 11826210343318171415, 5267632108497983083, 878978097354051448]), Fq::from_montgomery_limbs([9349450799754247443, 5592311323302686001, 8710868002211880477, 339828983129180906]), Fq::from_montgomery_limbs([17187343190949067712, 4809921206309548539, 1654263325380555971, 1029486713709570633]), Fq::from_montgomery_limbs([7644765658684612346, 13218702097576502896, 16500195852294632749, 1306030386106155137]), Fq::from_montgomery_limbs([3505773913815738861, 4811121454898644532, 6220593478751174597, 617955371370962677]), Fq::from_montgomery_limbs([15743683183886237853, 5364535566544930778, 13962926219706156342, 279010990417402073]), Fq::from_montgomery_limbs([5534551911701805251, 16755407359921259948, 11104629150013572555, 814043341910345398]), Fq::from_montgomery_limbs([8944448190814835116, 15456464214992510712, 8458597289994495014, 1265792487860718358]), Fq::from_montgomery_limbs([3488692111583557919, 13331987553376721589, 18402338094634938868, 1065887348732752750]), Fq::from_montgomery_limbs([9073355603731228680, 14479691350704356281, 12891384335089494102, 794286481590472402]), Fq::from_montgomery_limbs([837263131188576340, 12622228587018704025, 17555140662019162595, 116065994774231082]), Fq::from_montgomery_limbs([14557259484417606169, 4562566277830260822, 4089084236598109790, 503526388329690921]), Fq::from_montgomery_limbs([4425139792333247996, 17192910803843537440, 6327001334305018300, 1189405791856364044]), Fq::from_montgomery_limbs([600163066110636331, 12319630319416791292, 4537854761219498244, 33425175842117417]), Fq::from_montgomery_limbs([6516037169436621352, 5864705901197391949, 9864817317342287359, 931460564657389579]), Fq::from_montgomery_limbs([11238491471364916474, 18217352394306774045, 8369866412509597036, 1044188737560722381]), Fq::from_montgomery_limbs([15194113841410138763, 9713698855149445572, 840830724179458009, 574399528344548482]), Fq::from_montgomery_limbs([10094044208972451177, 14820311408839650250, 832731916797264605, 1078999540214538853]), Fq::from_montgomery_limbs([16122314034306189535, 9724832477076262589, 15428406989180491409, 739923283713385548]), Fq::from_montgomery_limbs([990447045496888008, 3954312775585670686, 14414097128339264209, 1160784537044385327]), Fq::from_montgomery_limbs([12790567186406766562, 9540692660342267401, 12022170182251744455, 1252399210348847836]), Fq::from_montgomery_limbs([7494400281462281059, 13969110066704963391, 6054746240150948073, 950110029163098453]), Fq::from_montgomery_limbs([10519706033512544620, 1273243870837414124, 6743773117001565585, 464260752488464109]), Fq::from_montgomery_limbs([6644031355037466023, 1291805761807358108, 6551243450297799793, 489432277343575283]), Fq::from_montgomery_limbs([3733838584259262811, 7236713087991210405, 12126920741789203222, 522094252622775454]), Fq::from_montgomery_limbs([18303517822547932992, 2807195054210467784, 13159641576753772587, 855829353333514728]), Fq::from_montgomery_limbs([4449128923636887467, 13611412613163493515, 12025336169373281333, 1332896560863403205]), Fq::from_montgomery_limbs([1957451185913453258, 11039336564323764549, 12727456287856679131, 228326154778309814]), Fq::from_montgomery_limbs([11338427901906828980, 109935761989873387, 12048120310880045899, 1308994518812657297]), Fq::from_montgomery_limbs([4699060152260570516, 11811201865491436236, 16537310942924896508, 1030678137510996087]), Fq::from_montgomery_limbs([12646006819083654452, 12494391672709859571, 16266030119791019994, 719740245520971856]), Fq::from_montgomery_limbs([3201794059715843426, 7659470317574241049, 9031647908161946781, 363148928753677985]), Fq::from_montgomery_limbs([11915502048720601469, 5772846818657644116, 14815308031156385389, 35923403898725028]), Fq::from_montgomery_limbs([170799290955765955, 1257452554540755479, 154144376612152799, 1049253778390741684]), Fq::from_montgomery_limbs([12436956446014067805, 12495488261233549050, 15098105238157791389, 981323126540180488]), Fq::from_montgomery_limbs([17100349351086466568, 15199087629262610106, 2857850399247819097, 933629509856035794]), Fq::from_montgomery_limbs([4893555085527448580, 9471095916978593903, 15023640703244453163, 410519582864510926]), Fq::from_montgomery_limbs([17697020347608707279, 18087907458231569196, 3102461787435620980, 62537999126012536]), Fq::from_montgomery_limbs([362067899505874664, 14616460120599181344, 15083851369654439268, 631595353512390885]), Fq::from_montgomery_limbs([1608981123540692261, 8134210797420893342, 15670126385653615755, 1081728063194062498]), Fq::from_montgomery_limbs([4703704396738392227, 9402972062611023321, 6453958957721258724, 851572793112159638]), Fq::from_montgomery_limbs([14824233911337383260, 4597555368896294115, 13023979643520645931, 1222004100879652500]), Fq::from_montgomery_limbs([2891695900391958118, 5796773624231764530, 15491428749654748662, 1093937749145502896]), Fq::from_montgomery_limbs([10646550323399881070, 1003826136171019194, 8409333161078783785, 585473798721331047]), Fq::from_montgomery_limbs([10406448549383730564, 6135682111734731503, 11700407245549915604, 1085967648121639010]), Fq::from_montgomery_limbs([1292557270730948407, 18351657967081052852, 2678776828196945632, 959596399484615466]), Fq::from_montgomery_limbs([17438835186806351279, 5684764232294129700, 10157135796976222869, 221407997194324483]), Fq::from_montgomery_limbs([7271080368260971730, 12425374983903708199, 12363525356310613233, 1110769717996073345]), Fq::from_montgomery_limbs([8776284918006632977, 15535513105129775867, 4863301670678022317, 606408823553952292]), Fq::from_montgomery_limbs([5066052630199551249, 15751267872424382675, 13216457812319899775, 20357134061436216]), Fq::from_montgomery_limbs([13075702753995571952, 11742969640320942289, 17235366015989204124, 1150175744034062515]), Fq::from_montgomery_limbs([5797072079034365870, 17544469376997963633, 14801627417863273010, 1279229494278656541]), Fq::from_montgomery_limbs([7831938700179984096, 17180774215462038883, 4412793878621746257, 1256681412857074070]), Fq::from_montgomery_limbs([12968148811839764483, 16811480840776650012, 8602422769386693728, 382111204094941728]), Fq::from_montgomery_limbs([13318317749693537082, 3768328516420896241, 142206933916635569, 26627989124778159]), Fq::from_montgomery_limbs([11933334459503099726, 1065153861357867533, 11936439423614846055, 1149053547479723905]), Fq::from_montgomery_limbs([2631481992765688259, 16002912452516972398, 2790213850442440167, 971241800259043027]), Fq::from_montgomery_limbs([13004331011283795828, 14189721912689256843, 6652832565990539996, 452227668495405848]), Fq::from_montgomery_limbs([11639365468700302967, 13626754345549226066, 5122223316448852115, 1295194052532032537]), Fq::from_montgomery_limbs([12503775634034454216, 12484320064934540173, 6283031731499175779, 1142971827879478463]), Fq::from_montgomery_limbs([18442309574762645474, 16043706756922086064, 1203583357081319117, 289542689638807443]), Fq::from_montgomery_limbs([13599874590406072599, 12311290605935601867, 1953047606734609742, 893071755833526513]), Fq::from_montgomery_limbs([5038580414622442104, 7706592482679500096, 14281875320180208754, 1311692136942617770]), Fq::from_montgomery_limbs([9116924453968593592, 4695211437329644351, 122131672006113022, 460639526001551111]), Fq::from_montgomery_limbs([612695102453556953, 17430917114440300568, 3712227006774104749, 434565107124519036]), Fq::from_montgomery_limbs([2711460600386692082, 5084507891975000066, 8709631773769875914, 701012049286425866]), Fq::from_montgomery_limbs([11255000280507413421, 5698447525751632608, 12610021548558458685, 1327688989507972423]), Fq::from_montgomery_limbs([13754440516467115564, 4761751981327990235, 9432675603353781856, 1033668598466658556]), Fq::from_montgomery_limbs([2955363287632570334, 7600733227996025654, 12027057950170385287, 940571561931822742]), Fq::from_montgomery_limbs([9703552155773020694, 5742947530758499792, 15763297443315122579, 930801506499582622]), Fq::from_montgomery_limbs([12461619637026250391, 11019870465191278910, 15873529414143589982, 972447937818380498]), Fq::from_montgomery_limbs([14971502483088783044, 7994961046161658478, 1775531898359432051, 206771972563020622]), Fq::from_montgomery_limbs([4978085183441894637, 6786252161551953403, 1597833793868027214, 752497765450057609]), Fq::from_montgomery_limbs([8931448885295850487, 14900305553280237157, 2562728536608668150, 820070530770563815]), Fq::from_montgomery_limbs([11091196606428717904, 4420547532075463625, 6826607115289893546, 339509882889855264]), Fq::from_montgomery_limbs([17256856864641998223, 7372887677193499350, 3097849850460902989, 1011516479262752115]), Fq::from_montgomery_limbs([9808600647888735916, 8803141348520645434, 18015342816914135198, 7277772948085899]), Fq::from_montgomery_limbs([4255905157964142682, 17462645559877710531, 3560989839800268196, 1096116226462923784]), Fq::from_montgomery_limbs([4532426149332308403, 5237561599212546024, 9574446344492571337, 1288985425094911641]), Fq::from_montgomery_limbs([1967144278589690647, 13201768465226207499, 11675172852243609220, 79359524195858682]), Fq::from_montgomery_limbs([17074450551687194476, 16589227351082498259, 5830030722038791303, 89110035164054224]), Fq::from_montgomery_limbs([3452204926739135764, 5895291203558274423, 3429941105331217419, 412361227440985099]), Fq::from_montgomery_limbs([13210175262635268816, 10104864748580005346, 8240781084290164303, 168682271830987859]), Fq::from_montgomery_limbs([11525437706352653758, 15971301990722544967, 11793391563239286407, 916031980478624773]), Fq::from_montgomery_limbs([4389204516004340807, 12441134604525330513, 4580143368417059639, 517606274666844106]), Fq::from_montgomery_limbs([6072537589623190443, 14275421712964513977, 2053999455871445365, 139159162484497428]), Fq::from_montgomery_limbs([2238091790845791439, 11897799578864713665, 10598112979470640955, 1188516484791317810]), Fq::from_montgomery_limbs([13761995375578127219, 14445881686168874002, 8730842343343508106, 75023619749953264]), Fq::from_montgomery_limbs([1876841868458551114, 9237020881271725184, 16194471067922316805, 1271526124614314943]), Fq::from_montgomery_limbs([14877699808508013807, 12080680751297116426, 594057086705046692, 93241042719742539]), Fq::from_montgomery_limbs([12830970035552954850, 16724821255552997190, 6657724498740869088, 1006163239038875246]), Fq::from_montgomery_limbs([4789503842637643824, 15837144161010273010, 14535004913645399525, 386886467210416122]), Fq::from_montgomery_limbs([4113769938336656446, 12767551034851750890, 6208225444974425038, 384107338921112388]), Fq::from_montgomery_limbs([1457177616745477196, 5817007768895882090, 18403435531988633091, 233268311946882765]), Fq::from_montgomery_limbs([8504687346089992934, 12196813988838752019, 4423978201234255224, 103085384776574023]), Fq::from_montgomery_limbs([12001393905996299420, 7906247193177979514, 2548978637445902098, 508311140484542625]), Fq::from_montgomery_limbs([12545595986735188293, 5025452441931542801, 9681010628496985355, 969281160594328671]), Fq::from_montgomery_limbs([4476642231459795365, 10130322522288542164, 5504810838816131115, 942197574992353703]), Fq::from_montgomery_limbs([12725269033496721580, 6143157215985784613, 2563593607564735516, 641845243083026263]), Fq::from_montgomery_limbs([16567470293191015474, 17979338546951754349, 679740711221916675, 389452091580807800]), Fq::from_montgomery_limbs([11781729507075158888, 16614033708022660131, 8066891565891024775, 1321986181569835272]), Fq::from_montgomery_limbs([15263301520898366582, 5379961920461128458, 5298170819253721050, 871089269493660926]), Fq::from_montgomery_limbs([5741830111596365525, 11415264909554107470, 8692411149271156415, 108534814929374467]), Fq::from_montgomery_limbs([14889457972591320596, 4443631419689297602, 9576604194859673886, 55036543682599971]), Fq::from_montgomery_limbs([15281837068987139929, 16419105318903348956, 3445836523780143538, 1293417868939267170]), Fq::from_montgomery_limbs([17836346323317710151, 12227034928325499140, 2533213127903144227, 888374169811671044]), Fq::from_montgomery_limbs([17190507118724296154, 11902410769486810674, 1884965616619903297, 288715797041361057]), Fq::from_montgomery_limbs([3698781841092321912, 12743575315417669826, 2170730182690456487, 1222843211331174337]), Fq::from_montgomery_limbs([4016814140820935108, 7695810038153355283, 9484931309805354358, 1136167194218052037]), Fq::from_montgomery_limbs([14104529875826633218, 4636945317611530138, 9502367629041549061, 1255556235831136969]), Fq::from_montgomery_limbs([3761991760077630951, 15074729225518792210, 17745896690436879228, 1023440924724847735]), Fq::from_montgomery_limbs([15850125405934611308, 14029919305144561597, 18399969854542387983, 1223450657234113398]), Fq::from_montgomery_limbs([15153111831948502891, 17514853580286890635, 16559251203856754825, 921126073718956725]), Fq::from_montgomery_limbs([14464801899277986702, 11416622266096337177, 5506399331882969115, 210576422101801202])]), + mds: MdsMatrix::<4, 3, 16, 9>::new_from_known([Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122])]), + alpha: Alpha::Exponent(17), + rounds: RoundNumbers {r_P: 31, r_F: 8}, + optimized_mds: OptimizedMdsMatrices { + M_hat: SquareMatrix::<3, 9>::new_from_known([Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122])]), + v: Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), + w: Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), + M_prime: SquareMatrix::<4, 16>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122])]), + M_doubleprime: SquareMatrix::<4, 16>::new_from_known([Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([3912868093747842187, 13891638599538547029, 10034520463596988736, 24923162524038143]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12940192809323646256, 10063211937356421632, 16102475073289099807, 635255441558029483]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13439545502292733320, 8210365196597573290, 10798232243990715182, 209985169044052016]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), + M_inverse: SquareMatrix::<4, 16>::new_from_known([Fq::from_montgomery_limbs([9007339992229280139, 10326424826243116856, 5092355938437508509, 1003135009120454797]), Fq::from_montgomery_limbs([3793860473594899407, 15568206114553404763, 16793548156181542160, 297017364836875886]), Fq::from_montgomery_limbs([13118704239553060426, 7548360664834135031, 15187305571267045479, 227114138088772868]), Fq::from_montgomery_limbs([2709900338282071005, 579150611132688193, 11995391540129672972, 212155260597768490]), Fq::from_montgomery_limbs([3793860473594899407, 15568206114553404763, 16793548156181542160, 297017364836875886]), Fq::from_montgomery_limbs([928445210678486263, 8868160626470841658, 3755794146411517614, 1205473917191967362]), Fq::from_montgomery_limbs([10094677827265099397, 10861765592258933950, 11901484874902647424, 945996443767726300]), Fq::from_montgomery_limbs([5126644488318323641, 9647529625230561771, 1074775780748510466, 567785345221932172]), Fq::from_montgomery_limbs([13118704239553060426, 7548360664834135031, 15187305571267045479, 227114138088772868]), Fq::from_montgomery_limbs([10094677827265099397, 10861765592258933950, 11901484874902647424, 945996443767726300]), Fq::from_montgomery_limbs([824862419246658903, 16129767034744593238, 2170701329025733649, 1301512370243790878]), Fq::from_montgomery_limbs([3590917015388128985, 13161152940282392610, 1559289252300983907, 436823818333081923]), Fq::from_montgomery_limbs([2709900338282071005, 579150611132688193, 11995391540129672972, 212155260597768490]), Fq::from_montgomery_limbs([5126644488318323641, 9647529625230561771, 1074775780748510466, 567785345221932172]), Fq::from_montgomery_limbs([3590917015388128985, 13161152940282392610, 1559289252300983907, 436823818333081923]), Fq::from_montgomery_limbs([7790664405396569236, 15096721329668270063, 11927867068824539342, 454228276177545737])]), + M_hat_inverse: SquareMatrix::<3, 9>::new_from_known([Fq::from_montgomery_limbs([3075677070517273610, 12935975526496926241, 5413643861495614409, 209652601170259502]), Fq::from_montgomery_limbs([5785577408799344615, 13515126137629614434, 17409035401625287381, 421807861768027992]), Fq::from_montgomery_limbs([17408664359600548624, 17034391550693366562, 14790887709711326522, 240850225403047528]), Fq::from_montgomery_limbs([5785577408799344615, 13515126137629614434, 17409035401625287381, 421807861768027992]), Fq::from_montgomery_limbs([6563011294473575235, 14911990801343518815, 5387840296410814352, 742514872555164941]), Fq::from_montgomery_limbs([3251880405938485206, 8073678362843046478, 14394469848155607566, 254586312717322188]), Fq::from_montgomery_limbs([17408664359600548624, 17034391550693366562, 14790887709711326522, 240850225403047528]), Fq::from_montgomery_limbs([3251880405938485206, 8073678362843046478, 14394469848155607566, 254586312717322188]), Fq::from_montgomery_limbs([13824643481143691730, 14179537619338997380, 15459123094703748781, 28520280494317649])]), + M_00: Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), + M_i: Matrix::<4, 4, 16>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15179341900948762797, 11777292160962496113, 5824707706538620273, 936937875498611239]), Fq::from_montgomery_limbs([1606954441813089504, 12826102157655983484, 14966661657048055395, 819162019713750967]), Fq::from_montgomery_limbs([18056108788388345532, 17234016165201706377, 6789576351003995708, 125032483782692849]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1606954441813089504, 12826102157655983484, 14966661657048055395, 819162019713750967]), Fq::from_montgomery_limbs([11752092954103863583, 5034202175795696722, 3707413120985258698, 30603057527914360]), Fq::from_montgomery_limbs([9883657716457256646, 10991555415607003281, 6328965851154270623, 1087433766327205373]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18056108788388345532, 17234016165201706377, 6789576351003995708, 125032483782692849]), Fq::from_montgomery_limbs([9883657716457256646, 10991555415607003281, 6328965851154270623, 1087433766327205373]), Fq::from_montgomery_limbs([9018019125940148120, 4443737769172605648, 9114883657740606330, 325721335091457982])]), + v_collection: [Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([3544248464247567155, 2397127324301944422, 9674390580977628774, 1114449731390581691]), Fq::from_montgomery_limbs([10793968004403082763, 14776098320186757028, 3926381262294758649, 695945431440508002]), Fq::from_montgomery_limbs([2462384498404250202, 12590306298374345930, 11038784733069574134, 419995880141749771])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([13532986407775683895, 9476195915097473266, 1008114724683017572, 545860035442724601]), Fq::from_montgomery_limbs([16204216982352313226, 12925674836598514697, 6751896652466221822, 941483813900869065]), Fq::from_montgomery_limbs([17313019480228630806, 566130559971125633, 11091260944862748358, 830377232140527827])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([13653317352261633777, 10493929866956769626, 8396755137825041221, 1146048882209297127]), Fq::from_montgomery_limbs([4132278932442914408, 14861671218963566328, 7959790402925606057, 1318243553399078199]), Fq::from_montgomery_limbs([13456767915419596367, 17246911423899751971, 5711218416857391278, 35403035103928169])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([12907160498704673184, 12152379198293294711, 9252679699965582400, 1224554265731421992]), Fq::from_montgomery_limbs([13419199242664167498, 13891452473958728318, 13543072901518191311, 1037106053989502131]), Fq::from_montgomery_limbs([16666897222883125359, 12131730689573449836, 13003710399516055414, 648272461984720515])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([13991351580088989461, 17864339801785851041, 11695126599066872867, 921749339582652232]), Fq::from_montgomery_limbs([11906579800297278037, 11470441940361903448, 15097374289742739909, 275174984759910272]), Fq::from_montgomery_limbs([18232546040145726314, 14147307759659284922, 991776681097878315, 1065560959455072221])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([3117800866767190184, 1873664776760606669, 13118797281780700540, 918694694774008673]), Fq::from_montgomery_limbs([16198059297050513347, 8432506190058226772, 9370514214732897655, 212402421053033076]), Fq::from_montgomery_limbs([2518782581476945766, 6771388879653376635, 1394823901821599775, 786725020056686548])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([4999125751846201369, 9316583554979616827, 11717167420397718381, 1066546495878431233]), Fq::from_montgomery_limbs([1873871365393108203, 11936414467331150546, 11113449918732250015, 317274884289334993]), Fq::from_montgomery_limbs([5753682051272078512, 3471409429911499297, 5526758011092646462, 1323229023757477097])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([2662759502586109043, 1695416312126819095, 1012723056571339871, 933004606031207884]), Fq::from_montgomery_limbs([16642301735251917773, 1183412391970839036, 3358256470522122468, 496531810743047820]), Fq::from_montgomery_limbs([14229377213726726413, 17261160081985153069, 9576276288950416830, 700741200569462595])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([6784297665956970408, 11357803791388406129, 11332180445619439434, 1106781037719016960]), Fq::from_montgomery_limbs([73464770077821962, 229820375535861605, 4835258747884954879, 991229687813626051]), Fq::from_montgomery_limbs([10226838402609267711, 357277105338386461, 10898037771405216876, 738876256175427730])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([12081508766912259869, 15930347767913903841, 8853663281043083447, 10038595465753804]), Fq::from_montgomery_limbs([112737203409514332, 16114412090287437958, 6856032020202317595, 113207183629292293]), Fq::from_montgomery_limbs([16338645855580340203, 2107869018362076089, 12567383037519742350, 815641356564041922])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([12125233544299543001, 11893476647476625145, 15457331543628022009, 800448530217165123]), Fq::from_montgomery_limbs([16675745322148137368, 1493849644880660500, 8185984318393084462, 138242285432587533]), Fq::from_montgomery_limbs([17724307965454702231, 4807522038799077672, 8746642154843823745, 883881308868446414])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([5656989936467702279, 3451526239075705633, 12473714456419681817, 720076561380511801]), Fq::from_montgomery_limbs([2752710254647861908, 11030634120397179297, 7520710074325720708, 849095153678924863]), Fq::from_montgomery_limbs([15714192245785854425, 1934486269946887645, 249860026764225808, 1186606499687026685])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([1065442882426850105, 18187640339393109068, 8850384031746892082, 317569289072515041]), Fq::from_montgomery_limbs([1837681773828322091, 10850972211403707738, 336406577412961307, 885368386317519809]), Fq::from_montgomery_limbs([15758214746904074141, 11583431684684102838, 7662385228843486433, 217065657978291661])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([2532634061285367793, 4387885387692314654, 12158131981630891597, 230565483900354414]), Fq::from_montgomery_limbs([13346419382798549501, 18280976687063744023, 5606331118089126185, 273578743992252446]), Fq::from_montgomery_limbs([17577657789855982030, 9630457784692257422, 12902853055721181839, 36459624765202074])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([9935908372408102992, 14641284087709280054, 17684292083487177951, 1155088959507788459]), Fq::from_montgomery_limbs([541701721303367728, 3959174565794182274, 18151179085562458542, 340776254243440974]), Fq::from_montgomery_limbs([17690336527687088662, 10937885152973991052, 3836836874424836886, 1090509013794447238])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([12310573214022515884, 3043141462744167127, 7406092407251694082, 9160197655286166]), Fq::from_montgomery_limbs([5101804845510497503, 7081024525590050191, 11990249650950760548, 264716438448155623]), Fq::from_montgomery_limbs([14013782434072143361, 18031550597362521222, 4176916092795610844, 1008783913934215313])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([5197923006462389769, 10850213912970425984, 6236288807254229677, 381647096775612803]), Fq::from_montgomery_limbs([16904562081938006603, 1107639524721847015, 12857487247803522951, 271937989000148046]), Fq::from_montgomery_limbs([7013951325055848953, 17628406277137302222, 10293198099660764650, 1028289934164465192])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([9440252581760876632, 13906337780931242750, 7219961419517025615, 863594454449643923]), Fq::from_montgomery_limbs([12415229001429896965, 11797271759794076948, 1936084790537971337, 467019200964667988]), Fq::from_montgomery_limbs([13553333187067381210, 1913316352777824197, 2458517210763467943, 416174277494956025])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([7868885723930814728, 3969684852222006688, 847603129181085226, 823204710257787357]), Fq::from_montgomery_limbs([2624306993317474736, 1804999503475194353, 13323117091522537138, 113213718216814537]), Fq::from_montgomery_limbs([13028853788877299982, 16207030875451345887, 2928890708384561735, 948835740600760535])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([10332479856281518610, 5461907926022368118, 7566281008880752185, 864542613737871414]), Fq::from_montgomery_limbs([11550343341750412987, 1921332364560602185, 10690162369512005698, 600190744590186860]), Fq::from_montgomery_limbs([11343163367577472637, 7523233831279170268, 14378595658429552329, 120678106820511750])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([1497803481831246817, 7312638636652871954, 34925480233639111, 44726202564591048]), Fq::from_montgomery_limbs([6152756361006073958, 6090155380815116625, 6481578954979806710, 476190110671401465]), Fq::from_montgomery_limbs([18102241645952999143, 12827175776728527569, 10917946848969687318, 1031360619507992497])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([10479806376196948796, 1250933353292865403, 9714052636425979898, 724896984716198201]), Fq::from_montgomery_limbs([3536451958691514845, 3820878089540374661, 1602865878357815152, 303292371629072230]), Fq::from_montgomery_limbs([2647458017961703424, 14255003531541688237, 9264134941484745925, 1144438898154277748])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([14896674334234435047, 6601140327636410720, 11594733032791631077, 947808208377648736]), Fq::from_montgomery_limbs([93857753711709862, 17114219253807441153, 16571911382240086620, 644986335071170285]), Fq::from_montgomery_limbs([11491045973623638105, 5832623718891215316, 4637897368334583442, 1270136782835782403])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([12059760086965268413, 2104859632417338119, 3074047925029609319, 208685506241841351]), Fq::from_montgomery_limbs([507458650320731749, 9076652763882528689, 10828995108044982790, 52861166057592230]), Fq::from_montgomery_limbs([5221245564257429544, 602546441039285868, 15463515802777952068, 500262458682360187])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([7894603091209534363, 5963299443776147743, 13622917766282071553, 713444535504669723]), Fq::from_montgomery_limbs([4707822806056225947, 13008601324591260598, 6664196336989843628, 361594494120552721]), Fq::from_montgomery_limbs([7234555332968855468, 13223173585719696534, 305242624856210053, 317409461914184558])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([11052531972415731524, 6240249964832493008, 4690512975789608724, 274300931659090955]), Fq::from_montgomery_limbs([12865203614941348009, 13629535421935003532, 14381802801123693296, 1108602536075241162]), Fq::from_montgomery_limbs([5342089493189303187, 11299417329134660514, 10437815285599784456, 224625807758727328])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([9419019633707904193, 17287104400249488354, 2449834218878066498, 880784160362712225]), Fq::from_montgomery_limbs([1290387194510150606, 300217878573287348, 14712510331530271944, 675169241465258261]), Fq::from_montgomery_limbs([4319449301091482228, 6604997191961440301, 3677473832318302588, 1226257433999087430])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([9534885027294214845, 4233504142154122132, 671184154419538440, 588715198189399632]), Fq::from_montgomery_limbs([7834331777517711657, 12046762886677754640, 12085017871628461830, 1280695769450865349]), Fq::from_montgomery_limbs([17051048636914562332, 9931763496822042016, 812132922227142181, 1215806818267015733])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([10248407954863227910, 6765342538198222232, 3376905111922655053, 689295470605671650]), Fq::from_montgomery_limbs([852480703421168492, 12355793660799378618, 6731311636032405498, 552777249330804449]), Fq::from_montgomery_limbs([1991623127336121727, 6505031450361927139, 15924460190557187785, 1320271660125443798])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([17438135180680113454, 12154982230827864980, 10857096699189529725, 334861850663499479]), Fq::from_montgomery_limbs([12624059910780607141, 14938141535714956518, 10243410760322861612, 175466020402160466]), Fq::from_montgomery_limbs([11857086838875231849, 16760011700969259517, 8560727830203057188, 152554536976681898])])], + w_hat_collection: [Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([3912868093747842187, 13891638599538547029, 10034520463596988736, 24923162524038143]), Fq::from_montgomery_limbs([12940192809323646256, 10063211937356421632, 16102475073289099807, 635255441558029483]), Fq::from_montgomery_limbs([13439545502292733320, 8210365196597573290, 10798232243990715182, 209985169044052016])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([5751631526606014397, 8462191803631620224, 10509863267471683158, 447861109114791478]), Fq::from_montgomery_limbs([1437717886047567450, 16559126213892176045, 11375302712551931442, 1010730393746897317]), Fq::from_montgomery_limbs([1032470319927068309, 9033645067614029358, 18086293033601348125, 304884835659797125])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([10030163671426435897, 10038896509362625400, 11411437429949289797, 606845429174704889]), Fq::from_montgomery_limbs([13498048305505589045, 14368156343173972859, 5751396272374329581, 1272023166617958572]), Fq::from_montgomery_limbs([9805803927184323301, 13425206131835998785, 13841345243897428245, 615350201809158017])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([14956193223177978026, 4328965669156513709, 1332264507148878686, 908612595539291972]), Fq::from_montgomery_limbs([15512085810689995447, 1278811290279093247, 9713635222980865549, 89918473543807263]), Fq::from_montgomery_limbs([10908982736163998884, 10522718116611575026, 15481410495350859749, 209345561210183580])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([11298966019883739719, 3737954136375979756, 15666428783954356951, 93322090349950905]), Fq::from_montgomery_limbs([10237667835076512281, 12325953953570405613, 12285254403281429040, 507107093264211690]), Fq::from_montgomery_limbs([14936641530723543297, 12684654093637137182, 6573648560098330931, 479128193670708215])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([4665624059074225901, 569773391663140707, 8039376161136700750, 305908263293765813]), Fq::from_montgomery_limbs([12181552876023559131, 7764448317943448064, 10288520924018884818, 1103852203169073095]), Fq::from_montgomery_limbs([15135999239214672948, 10790616626797062588, 17724896909590777918, 1127104704406195421])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([6486714260719829146, 11040751111500249834, 8958297661837625585, 504881187176923268]), Fq::from_montgomery_limbs([9943503409323924620, 9519655296534470798, 10031214880424175980, 880224541550113700]), Fq::from_montgomery_limbs([2137123775246483621, 14575781645937393202, 6082200831828333306, 319693495256136311])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([18213874187166503017, 7357620257182256357, 12753979462901781784, 653327632081049969]), Fq::from_montgomery_limbs([5648402480861501803, 1298801804080198935, 16361566576947818947, 92096317293783223]), Fq::from_montgomery_limbs([17945395108017238106, 3498558197841053284, 7092504945026653103, 372132312547601421])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([15622147422254947733, 250116726000401472, 8318204049018604061, 866935352572882912]), Fq::from_montgomery_limbs([18241804623807754966, 4053430455599371737, 4911593924672747195, 915087345052626509]), Fq::from_montgomery_limbs([4269143728338544596, 14357201884344458328, 903006646797065399, 462454343275509581])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([16493823488007719206, 14779329128742765495, 18378884619527915493, 360610956997885799]), Fq::from_montgomery_limbs([8231956009608211607, 2237272948977110346, 11234918376541957482, 211807215316292218]), Fq::from_montgomery_limbs([4694295422393950539, 494515799644279017, 16377559543581347883, 1023664249665260398])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([269632147881481827, 17676834172042717446, 13502391546248246285, 158178875674850167]), Fq::from_montgomery_limbs([854535799571654664, 4436276133137563398, 12250035363748361097, 569847052981690503]), Fq::from_montgomery_limbs([8356573900420286918, 3943111982741005596, 6690528014909196681, 100899612597296936])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([12053108327360532468, 2215278670095839574, 18310257358516903189, 507153778977982696]), Fq::from_montgomery_limbs([15548327836627863789, 11669395097045425760, 16626297677851084169, 692658363999722441]), Fq::from_montgomery_limbs([5590241427234064239, 15193192965574703365, 7643293374071077424, 502287078265137211])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([7121109350102790552, 3842989306298966953, 15442678426893498207, 43682019324253859]), Fq::from_montgomery_limbs([8543065120635606147, 17618464589270231617, 4296924638616724859, 409105874035239827]), Fq::from_montgomery_limbs([12676854185827013572, 13888077538347807744, 7139127667431143175, 1225243047885808896])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([4347759847866483265, 5855881520281836030, 5505541235252858831, 976243446170017999]), Fq::from_montgomery_limbs([1880808402247115426, 943890821775946445, 12000264441794154793, 12973763854532988]), Fq::from_montgomery_limbs([8496845738719301602, 11057791601996073401, 18430915991403133806, 442312408397388928])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([4597591998391646042, 17549544536524741100, 7632675978077243758, 789227364575351796]), Fq::from_montgomery_limbs([6247914330752058188, 17379927947827819186, 459262613159719376, 17669136651242999]), Fq::from_montgomery_limbs([4416622626270946808, 9011173931926497864, 2385315687804767815, 1100085754679242026])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([2858027675101851698, 15199707771225336894, 6912007903404713737, 1195736020550467109]), Fq::from_montgomery_limbs([16536374087395040861, 11905207237145903612, 6114638606661711198, 227197704829902271]), Fq::from_montgomery_limbs([3076102373056113184, 9532492163005512122, 6930666801042367372, 359947620632631939])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([9440427530838662463, 13085976282871216533, 11609820600896955445, 51192596107359503]), Fq::from_montgomery_limbs([17890235474475849352, 12861769158994967907, 17199388852287681020, 1318104728008794611]), Fq::from_montgomery_limbs([9609805589266211410, 1670962659820459283, 9562963939311936174, 688275382419503341])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([11167389070307520429, 13977359843749392350, 18441644755473839422, 290366407278115355]), Fq::from_montgomery_limbs([12443632002797775505, 4654520606670285598, 7306556664291017650, 1327633699432541153]), Fq::from_montgomery_limbs([8092706722129444827, 3658752323492067072, 4793508300996597563, 747223853807345138])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([2950573641865927995, 8127787636945490240, 13677031676353641065, 158618420355845681]), Fq::from_montgomery_limbs([11307462183326711698, 4564920402521666764, 14622180354087693631, 1336492508958389172]), Fq::from_montgomery_limbs([4173008676431506498, 17674916393358760276, 12680688896701595449, 968385841042257188])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([15472538886056214069, 16032473331676368569, 16841883688877890652, 857731186179030920]), Fq::from_montgomery_limbs([3288920438915728986, 5565335638237954732, 16168717028973711379, 557711450924669146]), Fq::from_montgomery_limbs([2265592654319698024, 3205443269480017209, 18001932803255029483, 256652906325487142])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([281001495283692254, 13790290956215242906, 864387281468051063, 1176693997057782923]), Fq::from_montgomery_limbs([5123560649935846987, 5199616350359672235, 1101436586367673740, 39975262197625469]), Fq::from_montgomery_limbs([6484555314181403346, 13702935644386089262, 1070288899201945043, 1275458004049976710])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([98165037936801382, 7473654891184825762, 349134079485996919, 938092578927267223]), Fq::from_montgomery_limbs([14188791834503488423, 18250342088521722141, 2040654749291153960, 926512896204558398]), Fq::from_montgomery_limbs([15224380743676270964, 10786962884449555555, 11361613959686699022, 1210280746834414029])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([11759988830619476554, 8373507443143532317, 3120367880452859596, 1169296147393250270]), Fq::from_montgomery_limbs([2846578710538047768, 1316160842247957353, 13088400622784413268, 408653118294756083]), Fq::from_montgomery_limbs([17205667740934035850, 3622944266683523375, 9638129797382886543, 994379064072552476])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([10882825922057764254, 14418568533897154353, 491214512167095700, 433897962559667772]), Fq::from_montgomery_limbs([35128611736586842, 16389786149729784671, 10083558142637806972, 137127276176467702]), Fq::from_montgomery_limbs([6798031404470581862, 17848651283256458296, 16222358536010933656, 803683331342998490])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([6972405454939855920, 4552281101007467397, 7264795943490057443, 864688899960148444]), Fq::from_montgomery_limbs([13927481061475209845, 15489762958527206567, 6189983331269957882, 547789234607264680]), Fq::from_montgomery_limbs([3562534859757502067, 1843985785467419577, 4386226263096503262, 1115671597351053159])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([12278022351526165705, 17770191387101388710, 10802565891039662934, 1075900781773362211]), Fq::from_montgomery_limbs([9958371080654925973, 11831887817395699647, 1304723427562418477, 354927743406208632]), Fq::from_montgomery_limbs([7902693975921282234, 10693029805943046522, 8006364623005626891, 336833334808426575])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([16076162621220796497, 11613654344612125103, 18364396485836487261, 865751367130059847]), Fq::from_montgomery_limbs([177169936881514673, 15617655321830945408, 2675644582344792450, 813774581927626127]), Fq::from_montgomery_limbs([10024256268223083204, 4626025808735980516, 15602381466554927909, 372989881235976309])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([15323355670275250642, 18066772602049731907, 11033816093504217490, 425723417069229499]), Fq::from_montgomery_limbs([13530227036238294143, 4726864651116558793, 11836084010804535503, 345580619383028526]), Fq::from_montgomery_limbs([9033276785296979553, 8015158493901738529, 7685612975844433499, 646369922266692941])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([6106858674192767659, 6489383503992760141, 15104627566688873842, 967007977448094027]), Fq::from_montgomery_limbs([15940025338744316838, 9550216566045214897, 11499601007486969156, 519967031225120334]), Fq::from_montgomery_limbs([4457318900167954816, 12351443184813817360, 14113262131954548168, 753463690543950206])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([1881864483835241252, 13219574080686529684, 10918646441166728772, 345526905812511168]), Fq::from_montgomery_limbs([16713317497695859602, 11594535032725047066, 8614425525972045100, 729458370408931167]), Fq::from_montgomery_limbs([2382365843901650484, 13640386342346411833, 2679421435014953531, 1060573086709931927])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([17434826777667612735, 2365065059007002287, 12113557410986701552, 486906253608904981]), Fq::from_montgomery_limbs([15422260981332801416, 11687068808662228912, 15340447593430286694, 1095477751721025581]), Fq::from_montgomery_limbs([3067136625363818837, 15414947239083578872, 4357451922062335136, 670849424861114413])])], + }, + optimized_arc: OptimizedArcMatrix::<39, 4, 156>::new_from_known([Fq::from_montgomery_limbs([15748480026335769443, 10026984616551622801, 2063724428730618452, 1110463257231131824]), Fq::from_montgomery_limbs([9405142820695944635, 11887146523697465657, 7764829263011233272, 10688178588086322]), Fq::from_montgomery_limbs([7160766575090090422, 13093321275956005400, 4459692368517809830, 1324823328343033307]), Fq::from_montgomery_limbs([8967803866417976527, 10882703683899587484, 12604355713142717837, 913362872025451921]), Fq::from_montgomery_limbs([15434913893282099231, 3277411989792281453, 17050922401305883749, 1246396795570595652]), Fq::from_montgomery_limbs([16287493285262395377, 5813955731335134269, 4301474317614585594, 257520225036445364]), Fq::from_montgomery_limbs([6906749939426292513, 6186370802689597769, 13121713652409052978, 974279291569484389]), Fq::from_montgomery_limbs([8879700369639612352, 13618625792929032624, 3907123048620659133, 13234475218016492]), Fq::from_montgomery_limbs([8645743306703223161, 2649437454338131787, 1563690154181407289, 1014186398941703531]), Fq::from_montgomery_limbs([3215833110701720679, 2309636887892103305, 8098930435412331037, 874663616929857835]), Fq::from_montgomery_limbs([12979468067887852608, 5086746922420764336, 15129738790560069297, 751939553752695744]), Fq::from_montgomery_limbs([2977455406847333432, 16814711076234176662, 2052393181081329017, 1025504667378050833]), Fq::from_montgomery_limbs([7769933776177646251, 18381610027802955757, 14883656026535111760, 810712025708758153]), Fq::from_montgomery_limbs([17772168373864941552, 6465821213265847266, 13630379320513469760, 377801609900980707]), Fq::from_montgomery_limbs([15796194027949120118, 344995813018918925, 1773993772309248477, 495371203446902105]), Fq::from_montgomery_limbs([2372367672613269254, 1881994507861568925, 12499063082888296383, 198183890354307133]), Fq::from_montgomery_limbs([8560339202466452135, 4674741842794783289, 2295938056459737653, 1305584587019963566]), Fq::from_montgomery_limbs([5894698623250752231, 11196686474075291940, 319786488005502847, 976772307367475705]), Fq::from_montgomery_limbs([9900044152758269451, 6382301581301578495, 486281876073250633, 71881436776511649]), Fq::from_montgomery_limbs([8858083304247561548, 5671107377399080192, 14186551763070529190, 1191940751561414494]), Fq::from_montgomery_limbs([11388935853995478114, 12687122290317818660, 14863371661788062147, 1158919028776138907]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10994187684158036079, 6365622770188053181, 9403760573784657161, 1146936259121378165]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10359734611031618397, 6788070320086383195, 6870540987465879902, 1154055204589981421]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6567270162376125909, 13203968161919606288, 7529228388954710988, 1019437133634541415]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17083543156205069093, 11374420946242035033, 18049715002122120090, 906131070047943878]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2206466804129196608, 7840059231658610949, 18148556368765089670, 985832054058842554]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15160443716672326145, 3977221634341810924, 11902494952164999188, 990146605314032630]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15193334268554411388, 16206854972517382356, 12905310888333022888, 513326483567402639]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5576504557462251248, 8125452713587662843, 16486629117159905898, 293174270601514481]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17062406856052799045, 4903125714753109748, 8990920239472029770, 936892459427742133]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6584002420364695129, 10284681536623141870, 7366280281192288180, 305633769889978939]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6566050072214065144, 10806265958907184854, 2902594108468871307, 927316604280713413]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9252557727477672981, 3306161630265918351, 179799263786823209, 104291884324148129]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16542259604895379638, 11861465458652059930, 2193746946143577162, 159871979033281704]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1973639865256742476, 12494642903985355205, 12678561251384262826, 1063132847474762378]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16335431452481000471, 3819468482480263699, 13079543972531520553, 161635515931478039]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6649676330206378374, 170192309920289600, 12660537932851201431, 875374125882958636]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18237532705140415183, 5538703501092204277, 12946255801995328124, 1087375767378395044]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1012766659404803227, 13885920911268862504, 11108883550523828802, 162298092776208930]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2714322473297105009, 249945166940002912, 12698583590562308965, 394261012891088761]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11185042895155911424, 15268539255422683750, 7532909772946377585, 463947154991508934]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2052933093431843614, 1295021459124440371, 8148559147565678653, 89295276853247542]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12899268934677529381, 16307080267150235665, 10898130171280001197, 518068384980908314]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([993244798968596356, 11096685116364920579, 8750430116109558950, 9308397748705116]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5953598583374622076, 16232619257237216458, 17798149940250628730, 654505929641861550]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11857053641605556992, 4354078495412090273, 4158908777158450718, 1170888300956232550]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12321182200541779000, 10436914785964154798, 4712843605747406852, 790686269705752315]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11380659121996065200, 7281347105742142276, 13205980178228421104, 804622887165645998]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5152043905886227057, 17756682668953288347, 10695990401739553448, 1061486419247893614]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13186025127373894323, 16210743521572602678, 17903754729019377882, 874061397244045546]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12725269033496721580, 6143157215985784613, 2563593607564735516, 641845243083026263]), Fq::from_montgomery_limbs([16567470293191015474, 17979338546951754349, 679740711221916675, 389452091580807800]), Fq::from_montgomery_limbs([11781729507075158888, 16614033708022660131, 8066891565891024775, 1321986181569835272]), Fq::from_montgomery_limbs([15263301520898366582, 5379961920461128458, 5298170819253721050, 871089269493660926]), Fq::from_montgomery_limbs([5741830111596365525, 11415264909554107470, 8692411149271156415, 108534814929374467]), Fq::from_montgomery_limbs([14889457972591320596, 4443631419689297602, 9576604194859673886, 55036543682599971]), Fq::from_montgomery_limbs([15281837068987139929, 16419105318903348956, 3445836523780143538, 1293417868939267170]), Fq::from_montgomery_limbs([17836346323317710151, 12227034928325499140, 2533213127903144227, 888374169811671044]), Fq::from_montgomery_limbs([17190507118724296154, 11902410769486810674, 1884965616619903297, 288715797041361057]), Fq::from_montgomery_limbs([3698781841092321912, 12743575315417669826, 2170730182690456487, 1222843211331174337]), Fq::from_montgomery_limbs([4016814140820935108, 7695810038153355283, 9484931309805354358, 1136167194218052037]), Fq::from_montgomery_limbs([14104529875826633218, 4636945317611530138, 9502367629041549061, 1255556235831136969]), Fq::from_montgomery_limbs([3761991760077630951, 15074729225518792210, 17745896690436879228, 1023440924724847735]), Fq::from_montgomery_limbs([15850125405934611308, 14029919305144561597, 18399969854542387983, 1223450657234113398]), Fq::from_montgomery_limbs([15153111831948502891, 17514853580286890635, 16559251203856754825, 921126073718956725]), Fq::from_montgomery_limbs([14464801899277986702, 11416622266096337177, 5506399331882969115, 210576422101801202])]), + } +} From 5ec426bc7dc802c19f4594f740676d464c926104 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 2 Apr 2024 18:13:23 -0400 Subject: [PATCH 47/54] poseidon377: rate 4 --- poseidon377/src/hash.rs | 68 ++++++++++++++++---------------- poseidon377/src/lib.rs | 8 ++-- poseidon377/src/params.rs | 27 +------------ poseidon377/src/params/rate_4.rs | 30 ++++++++++++++ 4 files changed, 70 insertions(+), 63 deletions(-) create mode 100644 poseidon377/src/params/rate_4.rs diff --git a/poseidon377/src/hash.rs b/poseidon377/src/hash.rs index 23a6059..0e2a814 100644 --- a/poseidon377/src/hash.rs +++ b/poseidon377/src/hash.rs @@ -21,12 +21,12 @@ pub fn hash_3(domain_separator: &Fq, value: (Fq, Fq, Fq)) -> Fq { state.n_to_1_fixed_hash(&[*domain_separator, value.0, value.1, value.2]) } -// /// Hash four [`Fq`] elements with the provided `domain_separator`. -// pub fn hash_4(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq)) -> Fq { -// let params = &crate::RATE_4_PARAMS; -// let mut state = Instance::new(params); -// state.n_to_1_fixed_hash(vec![*domain_separator, value.0, value.1, value.2, value.3]) -// } +/// Hash four [`Fq`] elements with the provided `domain_separator`. +pub fn hash_4(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq)) -> Fq { + let params = &crate::RATE_4_PARAMS; + let mut state = Instance::new(params); + state.n_to_1_fixed_hash(&[*domain_separator, value.0, value.1, value.2, value.3]) +} // /// Hash five [`Fq`] elements with the provided `domain_separator`. // pub fn hash_5(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq)) -> Fq { @@ -151,38 +151,38 @@ mod test { assert_eq!(output, expected_output); } - // #[test] - // fn rate_4() { - // let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); + #[test] + fn rate_4() { + let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); - // let input = ( - // Fq::from_str( - // "7553885614632219548127688026174585776320152166623257619763178041781456016062", - // ) - // .unwrap(), - // Fq::from_str( - // "2337838243217876174544784248400816541933405738836087430664765452605435675740", - // ) - // .unwrap(), - // Fq::from_str( - // "4318449279293553393006719276941638490334729643330833590842693275258805886300", - // ) - // .unwrap(), - // Fq::from_str( - // "2884734248868891876687246055367204388444877057000108043377667455104051576315", - // ) - // .unwrap(), - // ); + let input = ( + Fq::from_str( + "7553885614632219548127688026174585776320152166623257619763178041781456016062", + ) + .unwrap(), + Fq::from_str( + "2337838243217876174544784248400816541933405738836087430664765452605435675740", + ) + .unwrap(), + Fq::from_str( + "4318449279293553393006719276941638490334729643330833590842693275258805886300", + ) + .unwrap(), + Fq::from_str( + "2884734248868891876687246055367204388444877057000108043377667455104051576315", + ) + .unwrap(), + ); - // let output = hash_4(&domain_sep, input); + let output = hash_4(&domain_sep, input); - // let expected_output = Fq::from_str( - // "5235431038142849831913898188189800916077016298531443239266169457588889298166", - // ) - // .unwrap(); + let expected_output = Fq::from_str( + "5235431038142849831913898188189800916077016298531443239266169457588889298166", + ) + .unwrap(); - // assert_eq!(output, expected_output); - // } + assert_eq!(output, expected_output); + } // #[test] // fn rate_5() { diff --git a/poseidon377/src/lib.rs b/poseidon377/src/lib.rs index 785871f..639c25f 100644 --- a/poseidon377/src/lib.rs +++ b/poseidon377/src/lib.rs @@ -5,7 +5,7 @@ mod hash; mod params; // pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5, hash_6, hash_7}; -pub use hash::{hash_1, hash_2, hash_3}; +pub use hash::{hash_1, hash_2, hash_3, hash_4}; /// Parameters for the rate-1 instance of Poseidon. pub const RATE_1_PARAMS: PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> = params::rate_1::rate_1(); @@ -16,8 +16,10 @@ pub const RATE_2_PARAMS: PoseidonParameters<3, 2, 9, 4, 39, 3, 117, 31> = params /// Parameters for the rate-3 instance of Poseidon. pub const RATE_3_PARAMS: PoseidonParameters<4, 3, 16, 9, 39, 4, 156, 31> = params::rate_3::rate_3(); -// /// Parameters for the rate-4 instance of Poseidon. -// pub static RATE_4_PARAMS: Lazy> = Lazy::new(params::rate_4); +/// Parameters for the rate-4 instance of Poseidon. +pub const RATE_4_PARAMS: PoseidonParameters<5, 4, 25, 16, 39, 5, 195, 31> = + params::rate_4::rate_4(); + // /// Parameters for the rate-5 instance of Poseidon. // pub static RATE_5_PARAMS: Lazy> = Lazy::new(params::rate_5); // /// Parameters for the rate-6 instance of Poseidon. diff --git a/poseidon377/src/params.rs b/poseidon377/src/params.rs index a5c300a..11feb55 100644 --- a/poseidon377/src/params.rs +++ b/poseidon377/src/params.rs @@ -1,32 +1,7 @@ pub mod rate_1; pub mod rate_2; pub mod rate_3; - -// /// Parameters for the rate-4 instance of Poseidon. -// pub fn rate_4() -> PoseidonParameters { -// PoseidonParameters { -// M: 128, -// t: 5, -// arc: ArcMatrix::new(39, 5, vec![Fq::from_montgomery_limbs([9886223877583555338, 2726526174642559934, 4587790518566470505, 576729411659255749]), Fq::from_montgomery_limbs([8635683872171027649, 6178568763530680712, 4049298017970875225, 1010899895527016760]), Fq::from_montgomery_limbs([4386287284362214114, 15794275297560972982, 13426231751965312445, 1202171528338027358]), Fq::from_montgomery_limbs([748088700594287215, 1472010505444622065, 17517940238534715767, 284646916897302179]), Fq::from_montgomery_limbs([10279507610927218934, 8427605231324569630, 5256766482183491681, 599767801296570400]), Fq::from_montgomery_limbs([5616532683870270019, 16714573776517987780, 2780158541662869274, 82005381951989400]), Fq::from_montgomery_limbs([628047193644056282, 3081927050412275131, 16607349608647881262, 723666033729227034]), Fq::from_montgomery_limbs([4014053105906402474, 8516064025130570203, 16439212471763340654, 1066408903228028504]), Fq::from_montgomery_limbs([3781775891997454435, 16784197273788891439, 15993490775706321548, 1246974369195687342]), Fq::from_montgomery_limbs([13315871439997102610, 1360174578976506509, 1935727712649190133, 888928512483410116]), Fq::from_montgomery_limbs([8976641770861237410, 6687451940339132521, 18044907108310696377, 1207869807557250559]), Fq::from_montgomery_limbs([4528878922761055500, 7463187218610955446, 4533754848507645556, 35071527712858390]), Fq::from_montgomery_limbs([2054133897613963099, 8179564031063470525, 1531556284029346638, 874298192527556148]), Fq::from_montgomery_limbs([18305580017782407596, 2150793914184610589, 17311607174845242499, 959373557899881125]), Fq::from_montgomery_limbs([11483900964553043288, 12487129025031613244, 15391908241276224492, 269335905993702128]), Fq::from_montgomery_limbs([8338971145620331245, 12372781419517678375, 2199283600481834995, 349132078387032325]), Fq::from_montgomery_limbs([16711498854962897180, 964757925282058102, 2534475787702313401, 879174178299686832]), Fq::from_montgomery_limbs([9948612635577575267, 10310004629375851550, 14569008704673249814, 698796675030817938]), Fq::from_montgomery_limbs([11983101385647491113, 6756494718617323834, 3986787822213493305, 810568397631777742]), Fq::from_montgomery_limbs([263703597816264419, 5391923373962277868, 8069762938958691329, 167001460324522424]), Fq::from_montgomery_limbs([12719698031922087137, 3635206538516773241, 14946573674542408006, 904022619675467349]), Fq::from_montgomery_limbs([7591285109719266048, 2608578391556572711, 6779676185899908036, 1086161713062740129]), Fq::from_montgomery_limbs([7176467193518589709, 1343509363976199891, 347002617743548581, 1018914054223433368]), Fq::from_montgomery_limbs([13908207388458176389, 2971345816230697916, 17116412495128514758, 1092556723789729092]), Fq::from_montgomery_limbs([10011741275583553910, 13515359725579218496, 16173962293465169995, 826500423001616558]), Fq::from_montgomery_limbs([11642763221775816104, 5316502523761667274, 6723960157854782715, 713280922101966669]), Fq::from_montgomery_limbs([881130788153084344, 5010739439291725858, 1147743103863894058, 177980102031055407]), Fq::from_montgomery_limbs([13975378739354834601, 8684941252608197282, 5694396386436962583, 439479504891747047]), Fq::from_montgomery_limbs([13363133397626440278, 8130502609775906914, 13414583350549819329, 524823840910770289]), Fq::from_montgomery_limbs([11945840925799863259, 8524159476864402062, 9210577373238759816, 710975425722615141]), Fq::from_montgomery_limbs([12814581100646910424, 15849784230008994303, 12637788340215337664, 597941999161438829]), Fq::from_montgomery_limbs([16525908361603394009, 2846177558600817179, 7575467056141022092, 437642443252490173]), Fq::from_montgomery_limbs([15329913684605210914, 12070525736245629573, 13074341668722432469, 1044151030746490873]), Fq::from_montgomery_limbs([3538323630603591241, 10279517124841541304, 5324030032202346672, 902072318757121155]), Fq::from_montgomery_limbs([13596574972337588658, 16541340016857780345, 8104153165370753035, 245861939922053923]), Fq::from_montgomery_limbs([5030454205469646742, 13132624601605397879, 14758125164075453800, 378384125390441388]), Fq::from_montgomery_limbs([8906593348835760654, 11904421032273004937, 14965461596408947669, 632859340380426495]), Fq::from_montgomery_limbs([7850130346408635539, 13532701351370547975, 3820560789332903656, 1092318130445796576]), Fq::from_montgomery_limbs([12997377171057711408, 4471729792070708333, 7305494049349150657, 1115063797383463496]), Fq::from_montgomery_limbs([15145625851690108440, 17698022295267189243, 9861950554713946731, 1205401165408515638]), Fq::from_montgomery_limbs([11309649707041239663, 667445592132876816, 943153015419280868, 1206714849836553688]), Fq::from_montgomery_limbs([9026152062944983955, 11204530926199479297, 6289885248657301247, 512955645767342309]), Fq::from_montgomery_limbs([11717849647660086747, 3612602895588115533, 9744929507384815356, 982549568060514738]), Fq::from_montgomery_limbs([6744201323279553111, 18111540114747698086, 11979166811283670034, 386105814260185338]), Fq::from_montgomery_limbs([13303196293759203285, 14344592278022456277, 4239798340739261853, 800405056318133701]), Fq::from_montgomery_limbs([6737138017975582894, 8531016178828592243, 13684944430980743706, 22255530611110264]), Fq::from_montgomery_limbs([1997271207334772541, 9079547000593471061, 16047065352656029242, 101416793857725065]), Fq::from_montgomery_limbs([17029188205686654069, 8951964272054585217, 15302569091334378903, 761854968911808356]), Fq::from_montgomery_limbs([2745767110751783932, 14853302747509920417, 1606999108376858338, 891318834157837360]), Fq::from_montgomery_limbs([3640580010003203721, 12123462912736402051, 18295135460895849345, 520752965734877132]), Fq::from_montgomery_limbs([83933521946714737, 17971579355265751841, 7352708691986307901, 183907669014565798]), Fq::from_montgomery_limbs([9276458973572472320, 1300682705964188558, 13756551032393705489, 645082867954998576]), Fq::from_montgomery_limbs([15074599786611123042, 8980910692416969440, 16790312992523154465, 44198431582091186]), Fq::from_montgomery_limbs([1480148269351616164, 5990826399027670160, 7437498150356539259, 427144700677710781]), Fq::from_montgomery_limbs([5507196835477653383, 7336613593633132046, 1280426316557546233, 958933701992800913]), Fq::from_montgomery_limbs([18241053245813744236, 10472459532627362617, 2012134575489914517, 1256037774783607417]), Fq::from_montgomery_limbs([14372359421802781886, 13729700187444703363, 17989800816636154572, 967621319286277758]), Fq::from_montgomery_limbs([90392410009690887, 14047860931061415491, 12494400053046916745, 1187807817979142164]), Fq::from_montgomery_limbs([7469394458896125080, 4994833117952945329, 5178970336138815548, 547357110341709620]), Fq::from_montgomery_limbs([14626262512784894880, 8498143648146630667, 14635776379295784646, 279017425979939457]), Fq::from_montgomery_limbs([2948938230818109264, 13256829255392710280, 3603261726988560613, 293293722534360282]), Fq::from_montgomery_limbs([14726913360355627661, 11044693867323537781, 7626109275678740243, 758908383357559345]), Fq::from_montgomery_limbs([12150373031774230138, 8891964881341264351, 4517018861706300919, 551820964652107008]), Fq::from_montgomery_limbs([16891048323407180721, 7536596905792994544, 3059846088325366943, 865178483316339067]), Fq::from_montgomery_limbs([2690083733968939863, 1769064765331202923, 999446336742885656, 164907716251699548]), Fq::from_montgomery_limbs([8580460058188302985, 3991751878635809753, 4547376216267480360, 560815723873147432]), Fq::from_montgomery_limbs([1883267897877590583, 9283747140977722829, 4336519897183919570, 1098112532343628461]), Fq::from_montgomery_limbs([18229193288997288391, 1416710191385219951, 786091488678520329, 897579186089258101]), Fq::from_montgomery_limbs([9679787806770955465, 13476526545223689774, 9613302347536604785, 1170985601196245246]), Fq::from_montgomery_limbs([11408485967127642435, 15775267434451831783, 5963102841687207642, 610143165002891320]), Fq::from_montgomery_limbs([2742110483607649666, 8238870973637978146, 8505321265665046273, 991146636847773959]), Fq::from_montgomery_limbs([2700417284944988347, 9333179215703947174, 17483497014148443293, 564598335909606701]), Fq::from_montgomery_limbs([10710073701127297870, 6322555675999590600, 11771028831440425797, 728539264888274353]), Fq::from_montgomery_limbs([5185688551847854621, 17136427433029749827, 13939786699270995224, 1198719082185444207]), Fq::from_montgomery_limbs([7749447179538401980, 4793600318555081413, 10327393242917365028, 25438094261901103]), Fq::from_montgomery_limbs([16840187061708384569, 10530669475422628524, 217939404244531614, 1125926086827923821]), Fq::from_montgomery_limbs([15218288013305045082, 5438912048142917445, 235470087288523129, 923231700809438641]), Fq::from_montgomery_limbs([2194576126536460830, 7891341442170590444, 6378643390383758255, 310989935666358535]), Fq::from_montgomery_limbs([2638919532368561416, 18196222360720320566, 6610525316889549022, 1047682654438730344]), Fq::from_montgomery_limbs([16494294820597583678, 4823636307697140628, 9839058803503271101, 362713889140891969]), Fq::from_montgomery_limbs([2973315077205527383, 16505948923072751536, 12726716204894385324, 760067983544631044]), Fq::from_montgomery_limbs([7041027454525309806, 14484049096926673324, 11711536155919984779, 830352844598884205]), Fq::from_montgomery_limbs([8226667178177935298, 16330330634634519739, 16819545565758577360, 929449491579086457]), Fq::from_montgomery_limbs([3366407172182263301, 16494428895759921285, 7731107796203549240, 987879550276572952]), Fq::from_montgomery_limbs([9958698182000492538, 15462783131464999925, 11113071922629363034, 701467612820830963]), Fq::from_montgomery_limbs([6144224708909855422, 10834457042169331467, 11287058958850316926, 1312825012143929910]), Fq::from_montgomery_limbs([17921397628564368555, 10985573093809787040, 14340644029187071972, 59000721534311183]), Fq::from_montgomery_limbs([1630018632512830166, 16311976715006973397, 18074431391508993129, 155692271434089392]), Fq::from_montgomery_limbs([2746677638438958053, 17878267615510669310, 1082275588904648896, 1184432411754581729]), Fq::from_montgomery_limbs([1202686691857012174, 2234596977877372457, 3307488575050929625, 1256758603403004831]), Fq::from_montgomery_limbs([7601867427459401741, 13070585820383544138, 11356438762852655489, 943118894834427377]), Fq::from_montgomery_limbs([8684748127362653242, 4743911555278887170, 11396974372791841950, 826700742908426413]), Fq::from_montgomery_limbs([17452888945877951639, 9839615283788288179, 12867459466655328363, 1007543359739410437]), Fq::from_montgomery_limbs([12264143824974096166, 14381191422662810752, 3641096965851024808, 480946059636473070]), Fq::from_montgomery_limbs([11435949141961302837, 710354890461232526, 7844293650067273203, 123004845212098500]), Fq::from_montgomery_limbs([11045998304335767176, 3942503358896124422, 12585149699076876402, 285027589169677300]), Fq::from_montgomery_limbs([15820797401199028229, 16962821466020830153, 8107747291692774042, 480489353941649738]), Fq::from_montgomery_limbs([9217962315784549500, 14370528537254478239, 11836250330534571325, 1139451976529383887]), Fq::from_montgomery_limbs([11835990522743135120, 10169548464484669696, 17221670999568737002, 533302488612773058]), Fq::from_montgomery_limbs([17879618715206022981, 10660797039341031940, 1930610719106570064, 964350742947937820]), Fq::from_montgomery_limbs([1169235639972562417, 17479840192056268380, 10586924611389711708, 103636186478545263]), Fq::from_montgomery_limbs([9864560133117702439, 12891182307324408638, 9236711602457989544, 490202994419177997]), Fq::from_montgomery_limbs([524004209204114745, 12014044939530800435, 17303597221467190420, 1259834854717402694]), Fq::from_montgomery_limbs([2041228093468029194, 5279491032753715877, 2237512127849739422, 1301989577140851954]), Fq::from_montgomery_limbs([13532558374939940477, 11861615008285507752, 15035422035697406898, 1142796203357719412]), Fq::from_montgomery_limbs([14953432173925601791, 10389362430177185816, 845064825159375048, 1172521244035119080]), Fq::from_montgomery_limbs([11975318177053547084, 3435333234872828662, 13963241498174514126, 286783134590930070]), Fq::from_montgomery_limbs([14455835521486462998, 2048669311632423555, 17279316794410156816, 50616703474729287]), Fq::from_montgomery_limbs([8193872068862108327, 3772516384619180657, 13641128299057093189, 905697595997810178]), Fq::from_montgomery_limbs([16454110340578030875, 2152604389456932301, 8465973362037387798, 833666687765914967]), Fq::from_montgomery_limbs([14250990663149816130, 10003002447016613703, 2580052265102394487, 760659830843235379]), Fq::from_montgomery_limbs([1290457731274356164, 2510039619580464600, 2426168528296515695, 1254551442283207078]), Fq::from_montgomery_limbs([16309488082193928736, 7601298284363534660, 5163919981174564632, 65819575671802258]), Fq::from_montgomery_limbs([12743534580838976593, 6143776853938743851, 13386193122986779929, 423668519394498160]), Fq::from_montgomery_limbs([3811484717633006447, 1349919791689722695, 10297821437600310682, 68521037802427679]), Fq::from_montgomery_limbs([1049969810634121052, 16728941075068531596, 16094121280131115468, 82606214892022031]), Fq::from_montgomery_limbs([5360234823572670745, 17757096254232659981, 5717208405019750556, 809486485814479609]), Fq::from_montgomery_limbs([1927630004992622799, 11649924430204711735, 14978212641988016519, 1108831164145357066]), Fq::from_montgomery_limbs([4587868477439641052, 4737040880169689015, 639327313806380645, 693944328643709356]), Fq::from_montgomery_limbs([11087993010676539653, 10020352685294943192, 10076106363570629377, 297641291282727232]), Fq::from_montgomery_limbs([3081981335203353498, 13021314745733708666, 5449753531105554695, 227963405559900828]), Fq::from_montgomery_limbs([15635794702109421502, 6527818235965294785, 7659508407838394834, 492292453862401661]), Fq::from_montgomery_limbs([3164777360703179827, 5768214351744839625, 7163272775096466422, 261059424264025774]), Fq::from_montgomery_limbs([8844860905568377954, 18132135522818541971, 6960467923389772345, 221535360909084069]), Fq::from_montgomery_limbs([17964326599819457995, 14751755360522114153, 15283771895792774696, 1271886438859126545]), Fq::from_montgomery_limbs([15437118549753387043, 3510619079633075969, 16603794516758219723, 756776079410359543]), Fq::from_montgomery_limbs([17209588410857048072, 16141684401935979017, 5301689933884631523, 38432519687640810]), Fq::from_montgomery_limbs([10547445465275366949, 16846768059763163090, 6977180887290525070, 405538698331204120]), Fq::from_montgomery_limbs([921006661797204039, 11021425780686556666, 5587777062950060423, 248159859513377465]), Fq::from_montgomery_limbs([13398830594908962848, 5602568332953722680, 3299388522313110637, 411509104649500576]), Fq::from_montgomery_limbs([10390204826472811537, 7554738663131013749, 7526120458731579280, 905519991871142014]), Fq::from_montgomery_limbs([10358091385270219586, 7049055062932694342, 17159322295344631236, 1074016100024519392]), Fq::from_montgomery_limbs([7057719272669022427, 6716307074733016448, 8792057977815871320, 862532343552836131]), Fq::from_montgomery_limbs([11368373309109150033, 7045990182385141009, 2025222109349847460, 387848901695703654]), Fq::from_montgomery_limbs([327056937244728359, 9704535108452812502, 5199220103603000900, 619215360838520470]), Fq::from_montgomery_limbs([5395528494255463572, 389959326360615418, 3978563775598752142, 991544641697560783]), Fq::from_montgomery_limbs([8458772479849525654, 10186585336117207122, 12880133936401676976, 1149756384964578292]), Fq::from_montgomery_limbs([17528423621923070034, 15935520090452344119, 11404975526251493884, 412409734887795934]), Fq::from_montgomery_limbs([14596531415737149993, 4946255316940312726, 12454931841173483338, 731911136838063220]), Fq::from_montgomery_limbs([6585417567105755410, 16822761287245263930, 2131635032458361338, 606343045824968234]), Fq::from_montgomery_limbs([10214561078664282874, 5025761289800218565, 12783805018122678662, 1311486665373386005]), Fq::from_montgomery_limbs([15901739284283459461, 11286837212400137496, 1712557444614142874, 121870715794602643]), Fq::from_montgomery_limbs([3911984102306673570, 648245110634922383, 15751439518857509618, 216258856571958927]), Fq::from_montgomery_limbs([4848434841412269574, 7349989464327588429, 9911978981083826344, 1211881330257404603]), Fq::from_montgomery_limbs([9800713739756815796, 10304754660712109617, 6380491042931330586, 362406823863024713]), Fq::from_montgomery_limbs([7720465361240795301, 12020672868813473796, 2701475003865340607, 1252909626545536881]), Fq::from_montgomery_limbs([9120215925903958009, 16370286948728342393, 8726225975134153794, 874972214722679027]), Fq::from_montgomery_limbs([13359293481675756526, 17413992610381724082, 17127717448613492326, 618162979844611485]), Fq::from_montgomery_limbs([4457989176113381477, 5428904048964818159, 12898272303960788094, 1093655686680753194]), Fq::from_montgomery_limbs([18405830374587328631, 6168069285842580322, 1496453003489992656, 1017841256875975398]), Fq::from_montgomery_limbs([12466116854493845937, 2160195132816359286, 1767040459956452231, 109568514856013791]), Fq::from_montgomery_limbs([100951306495757880, 114976701465995050, 15766758379995858204, 1057219425251474865]), Fq::from_montgomery_limbs([5298457659833054856, 7285306064847886866, 12795862070238100636, 261515234811290770]), Fq::from_montgomery_limbs([7319581837975344773, 15042040386610023107, 16457831289989790825, 154915683796793087]), Fq::from_montgomery_limbs([13545480776153695910, 13196378744888296667, 5616833430312197722, 463371887282511984]), Fq::from_montgomery_limbs([4373255717409396971, 7992661231611740992, 2555455907700438592, 419602657573298182]), Fq::from_montgomery_limbs([3838228082130987093, 16958961529135702054, 12819669670360648617, 359497681438954782]), Fq::from_montgomery_limbs([6515161084577348825, 3970441889569271383, 607156398571973799, 547713787201516126]), Fq::from_montgomery_limbs([1627146883145613872, 10573887756656254297, 13653780278064282619, 524933908746351261]), Fq::from_montgomery_limbs([10179158874602797540, 2320694878046972755, 13108212213196896821, 823608765090614102]), Fq::from_montgomery_limbs([10002922236139274212, 17696271073832748193, 8923379405797021551, 708982901731254704]), Fq::from_montgomery_limbs([5839866296962221086, 17583077663905506748, 12216298901080800460, 487361936596221908]), Fq::from_montgomery_limbs([14341245248157744737, 3199487087597809010, 1135767560538489843, 927313269278877142]), Fq::from_montgomery_limbs([16632797622220954476, 9703590888871525194, 1377123634707768418, 1246534655674358846]), Fq::from_montgomery_limbs([4754517168201404309, 2647290700202563552, 1690983820051979673, 7714150076274415]), Fq::from_montgomery_limbs([11569692557961925140, 10228174840463393187, 8150598622710748207, 513567317704368092]), Fq::from_montgomery_limbs([1881301196632560204, 6035626362054951305, 8515508636781928884, 523264698133540944]), Fq::from_montgomery_limbs([10026556150015580882, 12588661207673568544, 8778049799575991497, 1135429816709585919]), Fq::from_montgomery_limbs([15355804768759996831, 17109742989524070851, 18394344475321513045, 694458701321276154]), Fq::from_montgomery_limbs([13235216837990437070, 2617348320939314758, 13129875399290619987, 562279832760519450]), Fq::from_montgomery_limbs([10230390803193447564, 13314863672162400633, 17075894283494146616, 375924473565310089]), Fq::from_montgomery_limbs([12059482537459401199, 10372277014464995984, 13657463670572718949, 68415488536176259]), Fq::from_montgomery_limbs([4866792775300295481, 4662805139390376964, 1084624083313912193, 283924614466318758]), Fq::from_montgomery_limbs([682031803653902614, 2785175410597900576, 10466522391392735273, 982491227853418333]), Fq::from_montgomery_limbs([1657190274082326701, 15794239529824430696, 11562429870540813013, 30597476268276403]), Fq::from_montgomery_limbs([11433643047469980018, 1276670802646402384, 7225445039450827835, 1320607862737647658]), Fq::from_montgomery_limbs([9049650314779674715, 15332775679178116922, 10916059016321665268, 1115159218126791192]), Fq::from_montgomery_limbs([5320499112936763732, 11250539854586634824, 12063947087263213252, 710935487070228339]), Fq::from_montgomery_limbs([18379608258942880321, 15727113804916673274, 10498320535108511002, 845002076776323646]), Fq::from_montgomery_limbs([6828593483180812035, 1682481325156526923, 14049047336459608184, 1126148273021080778]), Fq::from_montgomery_limbs([3872917422679565944, 1271915972458656550, 1092693023912110895, 1298968277402891756]), Fq::from_montgomery_limbs([7814132502258843917, 8078742423972593556, 8536158594561933049, 191277843487617954]), Fq::from_montgomery_limbs([5652311561512870887, 16495461651672765449, 11098657231551158518, 493087321946801171]), Fq::from_montgomery_limbs([6368409936062697439, 792796763844864197, 5610460501625398581, 546867399856191995]), Fq::from_montgomery_limbs([3038217149528838505, 8627484827600343283, 7414393357134479493, 985381996389905690]), Fq::from_montgomery_limbs([14953970136252134871, 295452924685135549, 11287279099077480718, 617093465173114131]), Fq::from_montgomery_limbs([140435627222783551, 17855535656574994648, 5022512547318532764, 473386213985532003]), Fq::from_montgomery_limbs([7030554896034226352, 6441059691989760702, 581099786512472761, 1269259459863271622]), Fq::from_montgomery_limbs([6770052323275442396, 12901743183408121797, 13004549993560303547, 969914125748537569]), Fq::from_montgomery_limbs([11435239377991792553, 14044046789306606033, 11369816462011584822, 1239930404010674345]), Fq::from_montgomery_limbs([2621636762951244377, 7758290588105338214, 14625731574391580682, 7696703746211481]), Fq::from_montgomery_limbs([8270493924131469556, 15946263820341678216, 6122109191607485742, 1119062509985100783]), Fq::from_montgomery_limbs([11252124749266599346, 8413749501404755931, 9936257142296575431, 189818330075783365]), Fq::from_montgomery_limbs([1537275707366966513, 2232381660897701103, 2870196216416932989, 1271177660936312287]), Fq::from_montgomery_limbs([1398814984843324301, 15240858180305901997, 14386262707998656254, 1102388553837536368])]), -// mds: MdsMatrix::from_elements(vec![Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), -// alpha: Alpha::Exponent(17), -// rounds: RoundNumbers {r_P: 31, r_F: 8}, -// optimized_mds: OptimizedMdsMatrices { -// M_hat: SquareMatrix::new(4, 4, vec![Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), -// v: Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625])]), -// w: Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625])]), -// M_prime: SquareMatrix::new(5, 5, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), -// M_doubleprime: SquareMatrix::new(5, 5, vec![Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([8008150737402636880, 4488734692587776588, 1547555191554943536, 1006206882335955987]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4174856959927929341, 6956702737728349555, 11313218605335544685, 1279701926361717254]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14997388866253338116, 17951148788181031565, 14101804784614517907, 65578444326456143]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6853363902592985329, 4486369932351851910, 65610707319252285, 873172475563117547]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), -// M_inverse: SquareMatrix::new(5, 5, vec![Fq::from_montgomery_limbs([16044777359948080167, 6379307166694554861, 762089046052004585, 1183646996043825654]), Fq::from_montgomery_limbs([8310126474924308909, 16838376826344772735, 14456183264230470132, 629129040732927162]), Fq::from_montgomery_limbs([10591481161139814707, 3864831283854097767, 6360339012538312403, 727156441545813699]), Fq::from_montgomery_limbs([8580764665041452750, 2596276168345731737, 607940303702198574, 618123929142359699]), Fq::from_montgomery_limbs([18272933275584544879, 10491562475845979009, 9925929908400688531, 449428766487123474]), Fq::from_montgomery_limbs([8310126474924308909, 16838376826344772735, 14456183264230470132, 629129040732927162]), Fq::from_montgomery_limbs([11903154552578817451, 8808508453785624876, 14068444835231129096, 1259276684968074962]), Fq::from_montgomery_limbs([2548615176746366879, 17237354895530185263, 1797488250903408702, 291026391931997698]), Fq::from_montgomery_limbs([13620574122907011204, 15580574422211693049, 7152880373115697056, 985573542184802400]), Fq::from_montgomery_limbs([3137742302926509693, 15046605844466714305, 1991063102869025961, 261841845081961819]), Fq::from_montgomery_limbs([10591481161139814707, 3864831283854097767, 6360339012538312403, 727156441545813699]), Fq::from_montgomery_limbs([2548615176746366879, 17237354895530185263, 1797488250903408702, 291026391931997698]), Fq::from_montgomery_limbs([4501910777217553532, 15462242547553693695, 10499850527346203608, 185455733513899003]), Fq::from_montgomery_limbs([16090235568988980360, 8762996204253883831, 17672444665847082580, 116738187400143515]), Fq::from_montgomery_limbs([10965139192629135304, 2507527262352232221, 7729853937802466392, 18035572639182151]), Fq::from_montgomery_limbs([8580764665041452750, 2596276168345731737, 607940303702198574, 618123929142359699]), Fq::from_montgomery_limbs([13620574122907011204, 15580574422211693049, 7152880373115697056, 985573542184802400]), Fq::from_montgomery_limbs([16090235568988980360, 8762996204253883831, 17672444665847082580, 116738187400143515]), Fq::from_montgomery_limbs([10167016895964480411, 16734919608152084608, 17983964361753590390, 420319954536647974]), Fq::from_montgomery_limbs([15950905455332638974, 10638510376174954245, 6190824109415358469, 365471410765096812]), Fq::from_montgomery_limbs([18272933275584544879, 10491562475845979009, 9925929908400688531, 449428766487123474]), Fq::from_montgomery_limbs([3137742302926509693, 15046605844466714305, 1991063102869025961, 261841845081961819]), Fq::from_montgomery_limbs([10965139192629135304, 2507527262352232221, 7729853937802466392, 18035572639182151]), Fq::from_montgomery_limbs([15950905455332638974, 10638510376174954245, 6190824109415358469, 365471410765096812]), Fq::from_montgomery_limbs([1117314920009271201, 4543364499625431390, 17867254861738919934, 199268313635132044])]), -// M_hat_inverse: SquareMatrix::new(4, 4, vec![Fq::from_montgomery_limbs([2912843796488841427, 2986203785403700346, 8782906370300679609, 72348807101562454]), Fq::from_montgomery_limbs([9009169579583668122, 13163254771921611656, 12500476150373767268, 206041309714119899]), Fq::from_montgomery_limbs([7160019720069709961, 1207930472110715040, 14896636547354890107, 1070558624402680198]), Fq::from_montgomery_limbs([769834061306938378, 434866968268652066, 13507727459817144106, 1015899670515829318]), Fq::from_montgomery_limbs([9009169579583668122, 13163254771921611656, 12500476150373767268, 206041309714119899]), Fq::from_montgomery_limbs([18105737139400699747, 17092832644263385296, 11448292449964576346, 97503347880002371]), Fq::from_montgomery_limbs([2486409206805834145, 7132406107544192230, 16724002743228709842, 204690573034040147]), Fq::from_montgomery_limbs([15517856203532702535, 6456985507109804621, 5236564190669238024, 1219448662068878427]), Fq::from_montgomery_limbs([7160019720069709961, 1207930472110715040, 14896636547354890107, 1070558624402680198]), Fq::from_montgomery_limbs([2486409206805834145, 7132406107544192230, 16724002743228709842, 204690573034040147]), Fq::from_montgomery_limbs([5324099184438075010, 18365509704861776210, 485662210662411512, 332367568902751343]), Fq::from_montgomery_limbs([12123690196900787584, 13150159583617211350, 15652393172789097814, 509338692023573934]), Fq::from_montgomery_limbs([769834061306938378, 434866968268652066, 13507727459817144106, 1015899670515829318]), Fq::from_montgomery_limbs([15517856203532702535, 6456985507109804621, 5236564190669238024, 1219448662068878427]), Fq::from_montgomery_limbs([12123690196900787584, 13150159583617211350, 15652393172789097814, 509338692023573934]), Fq::from_montgomery_limbs([3535747919942277633, 17013697925000670341, 11660128334245281, 1118907618677696094])]), -// M_00: Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), -// M_i: Matrix::new(5, 5, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3550241294482541299, 4181806201361874488, 12479811686471816403, 855474765552047927]), Fq::from_montgomery_limbs([10733696657462375354, 9051038123237754612, 15768789564108221449, 598829465077611102]), Fq::from_montgomery_limbs([4780090151550846061, 8840309929769970773, 7282912445741669386, 1146189173642481065]), Fq::from_montgomery_limbs([4412170182102677248, 3666416784507971023, 16978031500730235082, 244755965167984938]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10733696657462375354, 9051038123237754612, 15768789564108221449, 598829465077611102]), Fq::from_montgomery_limbs([1513630470854066869, 4677614225413309486, 10111857031931978945, 500911903228030067]), Fq::from_montgomery_limbs([3055507272271008448, 8821455708710032658, 11214733806280933596, 435072795685184507]), Fq::from_montgomery_limbs([2339289121714728061, 16657308061121398565, 2111925237313832617, 572507462955239974]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4780090151550846061, 8840309929769970773, 7282912445741669386, 1146189173642481065]), Fq::from_montgomery_limbs([3055507272271008448, 8821455708710032658, 11214733806280933596, 435072795685184507]), Fq::from_montgomery_limbs([13866627529171609781, 9361176355530684294, 17598610984186907476, 148068116833355292]), Fq::from_montgomery_limbs([1636007787860515509, 13796006064476623473, 8087234008724486427, 424300075186376057]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4412170182102677248, 3666416784507971023, 16978031500730235082, 244755965167984938]), Fq::from_montgomery_limbs([2339289121714728061, 16657308061121398565, 2111925237313832617, 572507462955239974]), Fq::from_montgomery_limbs([1636007787860515509, 13796006064476623473, 8087234008724486427, 424300075186376057]), Fq::from_montgomery_limbs([17138718893438209806, 3832598667291101348, 16820316856178316520, 934255170445228361])]), -// v_collection: vec![Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([16333313215653526970, 2040802123570873567, 13606956490394234585, 551256550916377040]), Fq::from_montgomery_limbs([5062406009186596704, 16529967443609096569, 8069040895545372020, 1221611533051627754]), Fq::from_montgomery_limbs([8776932849639973133, 4157275033105063229, 5219893242165609753, 441476373599490172])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([11152363693389150632, 7168263193567282683, 1452700946751769356, 436217109073156792]), Fq::from_montgomery_limbs([13970337958464724119, 17109877554760172091, 12788764852517710407, 839284445089847973]), Fq::from_montgomery_limbs([15163746983822199844, 11654724925143124644, 9602216610999473293, 519210689768164370]), Fq::from_montgomery_limbs([10182434037205209725, 9621286367095233356, 8404025194304421834, 344727351078320731])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([16755358458570043164, 10280398262063275743, 17321778533676321974, 143546509776638006]), Fq::from_montgomery_limbs([9894685689427310276, 13317494114689924797, 8039678456153006986, 320726242987073750]), Fq::from_montgomery_limbs([10892251073208715123, 9975233878611449982, 11944979761650688031, 279665888955724801]), Fq::from_montgomery_limbs([2806869061497062911, 16847498917844641241, 12155099785802870367, 612418149303740633])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([1943262751829125522, 12763321846226199313, 6747770469779104151, 951539986961178929]), Fq::from_montgomery_limbs([16058796408745659861, 17170055100384124922, 1586157489739998203, 1036791847629253806]), Fq::from_montgomery_limbs([2170272984479571023, 39206051687503551, 73036971397233251, 323555571475294666]), Fq::from_montgomery_limbs([13939509715106692697, 9339647999495962035, 11925062741591314295, 1167415533183673898])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([6979434117673847033, 3048055255536618747, 13743910631909977125, 783906807780161297]), Fq::from_montgomery_limbs([17010292649383249624, 7578772047158193525, 1259524131029379452, 241494970118020102]), Fq::from_montgomery_limbs([8104232396866985927, 12510732557073130064, 9629433082008929246, 1035242752646990544]), Fq::from_montgomery_limbs([16796634656430258298, 14112008759289957096, 6452208208519466013, 1048584847398376572])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([15748961458778365618, 8601741670573679852, 9437158324168441506, 977044327661253334]), Fq::from_montgomery_limbs([5158908350016140691, 8596065138269817166, 4752647801985797199, 1176021914613979688]), Fq::from_montgomery_limbs([17831888852747325597, 9652101022265686283, 1555288054471442793, 65814168324416153]), Fq::from_montgomery_limbs([10495561656210166211, 10989451257550783972, 8015055214453272328, 409799830087238982])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([2331967402451752193, 2109682558241205572, 1825337663297053092, 878857572660922318]), Fq::from_montgomery_limbs([12336449333325242432, 5499382277476614407, 11404022977159740856, 478044609105512850]), Fq::from_montgomery_limbs([10790217870923516271, 10590091398034592831, 2798879849340254683, 1097244195350236928]), Fq::from_montgomery_limbs([13063047010146157876, 14542415641892323856, 17083019212457052807, 1089087010292700700])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([1931130401025711378, 11841912731002402383, 12257729010461348591, 475921619378996396]), Fq::from_montgomery_limbs([2043623821806520253, 6264756844797844292, 9140556588049529897, 357097751413650712]), Fq::from_montgomery_limbs([13748314028353391771, 7554401384369793136, 15484455053202687098, 1015396556130205108]), Fq::from_montgomery_limbs([12112322445843745250, 9643021818792026083, 7010640491952178418, 912560635387385014])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([15884856584565086050, 4328763398811725844, 2194324022836935036, 564940183680880064]), Fq::from_montgomery_limbs([10368325909078307315, 16258151264498137456, 12821855576160737507, 168843008052784532]), Fq::from_montgomery_limbs([6775860316590005410, 1587081089529470620, 12761600899048989463, 547743431636452378]), Fq::from_montgomery_limbs([5499459000866536496, 17225191771611977200, 15501710310620154491, 515684463452344496])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([12129682192729323843, 8486777067374758801, 1157895296096676184, 662132892983063060]), Fq::from_montgomery_limbs([174757932292384330, 3152593721116333206, 12164153154782094245, 1099436573600079710]), Fq::from_montgomery_limbs([615845028898507200, 4670618999889700824, 12443454676890805497, 518935605666369522]), Fq::from_montgomery_limbs([16912386391968429424, 5290244798379778177, 11209464492300379874, 586454799338251353])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([12080638299294159093, 1960331238298728784, 2898980097890331004, 921670658451130495]), Fq::from_montgomery_limbs([16215351708207141464, 7345269023494330137, 12994383926037492649, 224185396018231372]), Fq::from_montgomery_limbs([3554838652407488913, 6074835006636416927, 15656375499922407950, 15940578339816345]), Fq::from_montgomery_limbs([7221246958182853009, 6510601905224702473, 12824776152597435860, 725837117656279675])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([13527778764121271275, 1030490900095715048, 12857340760482021894, 936580603253300439]), Fq::from_montgomery_limbs([12930617827781800730, 3249690311936291363, 1303559984190780453, 990745867675858343]), Fq::from_montgomery_limbs([10347830123499261941, 14744724164671532382, 15017413323955480611, 865517056617574158]), Fq::from_montgomery_limbs([13222342262320869452, 930250546901263311, 6148846827329484586, 816792556508332788])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([270522433778958450, 9810558015885994375, 12801721076082256784, 428014500155741958]), Fq::from_montgomery_limbs([17216419355251603785, 16776182263454362660, 17464958086342114244, 1020854289329138282]), Fq::from_montgomery_limbs([14583513917939718723, 16464432348709798589, 5524662795591881534, 504799586387620122]), Fq::from_montgomery_limbs([9494047844709044490, 9514125194357777841, 9204079242382538181, 1326388421861125510])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([7051493540766021999, 14714874558861007051, 12179359128314955274, 431397382988804936]), Fq::from_montgomery_limbs([14285688927589864668, 8964657502437295762, 10607145890133654906, 644415764475289967]), Fq::from_montgomery_limbs([9070138432342296337, 17136148269824501435, 16709615536037568565, 1088774414904578634]), Fq::from_montgomery_limbs([9017804360060337869, 5120895363411029290, 14759539588564342239, 251323438509473927])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([614700763379600159, 12518761935375538118, 4440750989807847128, 10689910160914840]), Fq::from_montgomery_limbs([16233894446868518964, 232968488158620891, 3648936371760108401, 87053101363493664]), Fq::from_montgomery_limbs([4682437298124427841, 10048101470247329816, 5838396498674936533, 76707223622697042]), Fq::from_montgomery_limbs([4844729186655784101, 5073462805990634750, 369364776025047222, 1205067782666401609])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([11811297399794142233, 1367273165695851273, 9482096466685101348, 278101973543607386]), Fq::from_montgomery_limbs([700938287003557444, 10784390521545837670, 652198576027059045, 1257111617232546179]), Fq::from_montgomery_limbs([7023353639663907189, 844196405846330427, 3670187877020232969, 467197560404961638]), Fq::from_montgomery_limbs([3255328098459903221, 1373891119440715166, 9229957119786296543, 511813603491106053])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([7074698954249379124, 597938652890685454, 4893589759540026630, 13821006431840376]), Fq::from_montgomery_limbs([9050360858429500710, 712154751922466901, 2783564310815451475, 361791763218230554]), Fq::from_montgomery_limbs([2543657380738906130, 7730539901174656512, 9349888058233016421, 1105296308578399874]), Fq::from_montgomery_limbs([12462195693380123490, 9135340915133672169, 2529249849635714105, 1028662249374476992])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([3997059354097159592, 14396586541557506890, 15126937915868653526, 1190014880085637787]), Fq::from_montgomery_limbs([71730461663727489, 6481482986298961851, 2863781531983795764, 676732583839455648]), Fq::from_montgomery_limbs([11976979288710790629, 18385617837556037683, 2427331777175576996, 271478597561256238]), Fq::from_montgomery_limbs([14665157190813807512, 4593895870413934871, 17259515554442068841, 822957347764507743])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([7149525206288877270, 17921481572667347774, 2621958866898809461, 1253764315637746764]), Fq::from_montgomery_limbs([3409735133900390936, 136473863329815600, 15309385832522383920, 1169764220492589436]), Fq::from_montgomery_limbs([7033172430223502268, 240255878942338808, 6398794669496471317, 628797443576353581]), Fq::from_montgomery_limbs([7953065623402270259, 8501997013689665019, 5960083925037855492, 295456887863221215])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([15195370696120832657, 17781142206152991864, 2238407181422098285, 841138092128746233]), Fq::from_montgomery_limbs([12824831901012180308, 12167693598895623388, 11028443174628128031, 11577460208414501]), Fq::from_montgomery_limbs([3327689546198888048, 12391493112771759962, 307868198412140618, 1159504727071219081]), Fq::from_montgomery_limbs([3049104073000031564, 17357418971393386361, 996987970433781915, 116813261500484748])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([10884166330331702882, 17425353526410834453, 13326907998045201293, 413735914240279347]), Fq::from_montgomery_limbs([12473777284989231213, 17638157720713586222, 7280940291577634976, 165394770300217809]), Fq::from_montgomery_limbs([6075495009078142294, 15423443319709019929, 10104593150500616837, 356519351756886421]), Fq::from_montgomery_limbs([4453851468262956706, 17578058950978353938, 5693306616848551388, 65029682653071572])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([8478514957045721547, 1837595243779150041, 2731509554274646589, 1330775784497928083]), Fq::from_montgomery_limbs([5199974098799727027, 4404072971729349177, 9646912483549069990, 218329131799988219]), Fq::from_montgomery_limbs([660001227897806842, 8207988798347696530, 13044592656758679072, 480823461712968712]), Fq::from_montgomery_limbs([2124249976672750300, 16810194224873279051, 8413199247867349887, 252618070410064009])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([4556458494955145970, 14725473799943575915, 6762752380673415129, 1316259551723935370]), Fq::from_montgomery_limbs([16979681563871369563, 5158090131973535020, 2347846896725164220, 295285400051150767]), Fq::from_montgomery_limbs([13585313619033311504, 16684285379674594726, 6119191656194738492, 455955275887010759]), Fq::from_montgomery_limbs([3454774308783696473, 10535559679543981910, 15358478203203343679, 240649127531759812])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([16198893952998692648, 7621510146767446726, 5423085782991616007, 484917335576147571]), Fq::from_montgomery_limbs([12418560142694938034, 9630762732922483573, 11756502878189980458, 1064509096436490989]), Fq::from_montgomery_limbs([6432783853572915686, 8373421070941771076, 9999207991110274176, 227092656935087544]), Fq::from_montgomery_limbs([2481263986424351332, 5524660820856664127, 1844129905336978496, 940613905523784942])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([16138212250303786584, 7239588475022848974, 10699859199281641521, 591755207097992795]), Fq::from_montgomery_limbs([12068127359176715698, 9201897464239423846, 16468376872261041490, 4468311430440924]), Fq::from_montgomery_limbs([4076476707186060475, 17992082137333534347, 6815132661837439512, 278384059575851924]), Fq::from_montgomery_limbs([17018342029879137108, 15055574099156300093, 11677650203572471840, 144664137444733523])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([8317396731115292545, 18067636204720558118, 14890417508627474416, 793524012844400414]), Fq::from_montgomery_limbs([13379864138421857399, 362217527193745219, 15798919921502256623, 1097917902435666499]), Fq::from_montgomery_limbs([12810510919435274272, 14423646849331158587, 9841501271852473232, 725922426352114610]), Fq::from_montgomery_limbs([17018030548797472114, 14895024219584398144, 12492061782442092972, 762315198620019019])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([1701906145521012707, 10296626786628438399, 10754570760997467096, 336488969849416237]), Fq::from_montgomery_limbs([254576632745845475, 16526828097705762792, 14770819661184367983, 243834243852718897]), Fq::from_montgomery_limbs([4102931554245931369, 16027764780080619999, 8334572247339515265, 368246411244951631]), Fq::from_montgomery_limbs([4561744176382664009, 2911477542790161454, 3011707291091124269, 556376879137998058])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([3296358868716422366, 9039393853864308074, 17847711501823630457, 1005226492488439642]), Fq::from_montgomery_limbs([4031069363410182489, 7351394901266043534, 16764075333050932509, 1335716800346461455]), Fq::from_montgomery_limbs([7923744999493545562, 5624877492918299446, 1035450251487215992, 66195541204638202]), Fq::from_montgomery_limbs([10021219165650904780, 11526735379442916846, 15137554942549712865, 220711145305168309])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([17539749312900092691, 1394325220480450609, 8427780606119340085, 214541826368037298]), Fq::from_montgomery_limbs([14979072356738539172, 8588389061504370168, 17185566872280556497, 1119865054078041]), Fq::from_montgomery_limbs([13832855658344903569, 17699617991822202836, 12719246950037163765, 809144901785178492]), Fq::from_montgomery_limbs([5258746201047632203, 16795607952264798969, 12589457419107454073, 852487165526431816])]), Matrix::new(1, 4, vec![Fq::from_montgomery_limbs([18017611145361501469, 17582515812396321648, 2919031829448009162, 551871759286894908]), Fq::from_montgomery_limbs([15370904975677001433, 7214748906490449079, 16152167407980539558, 1171554702393986442]), Fq::from_montgomery_limbs([10634655764649983482, 15431077074812693397, 2552280196567255, 712776250826311075]), Fq::from_montgomery_limbs([13708388833019942700, 491334836724789600, 11731367761263890755, 1197388142335296709])])], -// w_hat_collection: vec![Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([8008150737402636880, 4488734692587776588, 1547555191554943536, 1006206882335955987]), Fq::from_montgomery_limbs([4174856959927929341, 6956702737728349555, 11313218605335544685, 1279701926361717254]), Fq::from_montgomery_limbs([14997388866253338116, 17951148788181031565, 14101804784614517907, 65578444326456143]), Fq::from_montgomery_limbs([6853363902592985329, 4486369932351851910, 65610707319252285, 873172475563117547])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([579603889306395083, 2560608140709899462, 18146698412336151881, 60258495702968472]), Fq::from_montgomery_limbs([9924506099485967285, 14841337095946012878, 6550473620052701980, 355439357201872457]), Fq::from_montgomery_limbs([12531688174264614033, 3629799128760975880, 14801960216155767350, 1064176756880888081]), Fq::from_montgomery_limbs([10680016211572180547, 7640186196594536338, 6573062001669273848, 464429714610594606])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([18417588127792957015, 16444529523188187364, 12084138139912705579, 16805794537696529]), Fq::from_montgomery_limbs([13339545413024956285, 12462761674569060732, 10134406054826483261, 583754886928078523]), Fq::from_montgomery_limbs([6246845195152016496, 16016738864936728009, 5667948898993596155, 948927193584489029]), Fq::from_montgomery_limbs([17388237537280169500, 14688406879934192659, 9909558203923179050, 70400508517387223])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([5474861045381340177, 7686087527544521306, 11338593297362199268, 1021856532337771510]), Fq::from_montgomery_limbs([8052444443922943850, 4009271504061137276, 5568866554849053281, 1340081542973701928]), Fq::from_montgomery_limbs([13718366036845239510, 18043008954918195926, 9743799172723723811, 242610881533123775]), Fq::from_montgomery_limbs([12288963833321771774, 11144465775025909714, 3141275767114171625, 895525891428781574])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([12404021506369929265, 14478431220710638983, 16528978820778867199, 1337150421852075847]), Fq::from_montgomery_limbs([14269177948606518010, 14317366494171555302, 17781066350959942798, 197359887673063489]), Fq::from_montgomery_limbs([12899528200685423645, 1817678529746564917, 2099502764987009011, 1116816677457497135]), Fq::from_montgomery_limbs([6364946926969012391, 15881033552478042103, 16127504872579347712, 382615667735657086])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([11058646051271038745, 6859926553724662452, 14087301393004364310, 933306102477549317]), Fq::from_montgomery_limbs([1055047094489815101, 4078033726602170946, 12892578489024905517, 1281158139572661976]), Fq::from_montgomery_limbs([5359943878923586203, 16376042868862104786, 5637680489769528437, 274508389146665774]), Fq::from_montgomery_limbs([9466887184987077213, 12707324624592417252, 5674722778664167831, 495915214907561344])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([5559270171112387908, 18090552370541844697, 4468532076227855438, 987685496358074261]), Fq::from_montgomery_limbs([10757975082173786027, 17106276533668884653, 16008494306379137448, 1236424776827918502]), Fq::from_montgomery_limbs([12651630831207509026, 9201507732813618723, 16271105479151831696, 1088028967768313039]), Fq::from_montgomery_limbs([1230449153550648107, 265047928608104139, 14808043482234569955, 325688046287390058])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([13141399420347535214, 10323718706655672545, 5271972852381490754, 698174654390126163]), Fq::from_montgomery_limbs([372444215127449162, 6596103022703759073, 1647706108480519163, 886941719362299906]), Fq::from_montgomery_limbs([5032445406852833227, 3216505841560606858, 6517925226383774397, 1070169747543143371]), Fq::from_montgomery_limbs([606117931900595268, 11653697130177906902, 16942600493441083920, 207641435432611378])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([10156513900929988871, 10530356278918523762, 14822893961039084664, 161451167716228232]), Fq::from_montgomery_limbs([5121741770267475287, 15513755736291034019, 15586246947451164544, 318686326614228424]), Fq::from_montgomery_limbs([10544893749060569045, 16634377462455718128, 15424965125419130088, 421312194245698247]), Fq::from_montgomery_limbs([11266056403263964991, 12568371609374858109, 3531321490936409191, 508836381468284493])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([14899630606893874181, 6378344959523143322, 5326343488656073582, 678256632460809235]), Fq::from_montgomery_limbs([8604354652434330145, 15276531567938090768, 4221676591098543719, 887292207042946940]), Fq::from_montgomery_limbs([10167720299639556674, 4032113283136195884, 15412529848138749452, 21416729784789829]), Fq::from_montgomery_limbs([1744850832220109759, 13008821337905939469, 11071631382001010551, 788542992044475498])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([2588487693831923600, 819162455518477850, 14502680861403887785, 203676022757604871]), Fq::from_montgomery_limbs([15050651530407319810, 5238818184223155551, 10359161461431902961, 163152244193461490]), Fq::from_montgomery_limbs([11621410489163276959, 8095296962816118406, 17382993292008629559, 830965834513277734]), Fq::from_montgomery_limbs([4679845673800762002, 11732742802677067267, 5456637834111887652, 399639723348579854])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([2687561395762377863, 2742745916341259698, 3044301131411393039, 723385064584425062]), Fq::from_montgomery_limbs([7499903664201677436, 10700255296173911735, 9370120751716629255, 519782401388716596]), Fq::from_montgomery_limbs([12815697858642806748, 3589518328364739416, 5217556848154698002, 1289540407776785865]), Fq::from_montgomery_limbs([5916520816310451970, 9082425633134247720, 12382542148805970812, 992107013138241122])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([6236639905261224386, 843729385509220216, 910784084401746031, 557709047224682096]), Fq::from_montgomery_limbs([15307210632392180298, 15607334968149180484, 9709374798094721055, 911705022776362835]), Fq::from_montgomery_limbs([565211768823822757, 4304458791623152845, 10249442774709061676, 1097659357675265239]), Fq::from_montgomery_limbs([12205146530944986348, 2116986434579909283, 4201175271170209969, 992267258612987371])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([12458858951338998496, 4060946816566081281, 4815111439256220560, 889585388579716031]), Fq::from_montgomery_limbs([13330737697681975741, 14306352519046153100, 6792373522794028640, 181857489562014553]), Fq::from_montgomery_limbs([9910876762206447536, 2419056950848665021, 5515306838952911504, 400668493068602121]), Fq::from_montgomery_limbs([4501996026292399474, 3944405189426212415, 2099089514371618361, 339943583855773594])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([2693369834887763486, 5226235063818719501, 1134958389215915674, 216164169472267996]), Fq::from_montgomery_limbs([11481921067854847814, 3619328605795306677, 1172215419425542958, 698824999301654900]), Fq::from_montgomery_limbs([5583148815732609314, 7533776866599928206, 4700764388317654893, 795419583657348713]), Fq::from_montgomery_limbs([17490171026965334038, 511945728425642245, 7365182481044577047, 220760401169961586])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([3475090391351524558, 14779509624823172685, 3424268588547377302, 807300922038386992]), Fq::from_montgomery_limbs([2661498283128546182, 8564296373141310570, 1331354831148546679, 288633548378759086]), Fq::from_montgomery_limbs([160646850906444279, 16524505359942069161, 907391002106299867, 559294066232203259]), Fq::from_montgomery_limbs([15868970648699916119, 4564623492190132505, 13103059063354872833, 100862674768271570])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([1221307603989354164, 12587043720970902174, 16895819776297027028, 145062209314500623]), Fq::from_montgomery_limbs([16353516398818965607, 14353195469809830563, 6413743319392341778, 328149786789847495]), Fq::from_montgomery_limbs([18408500173092127083, 15531422165208984882, 15085140826729156921, 838526002683321237]), Fq::from_montgomery_limbs([17044208833349483673, 4186851180160463186, 18439292304841373891, 635623871921935831])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([12010244824104902831, 7094652480399574006, 4750126738460582225, 989637526032941486]), Fq::from_montgomery_limbs([4441078329722014290, 13429060628884043553, 17809157578144273686, 434244385592794118]), Fq::from_montgomery_limbs([6991808242812880086, 9244601469821298803, 240701800791269362, 709808634005480046]), Fq::from_montgomery_limbs([13857085282532288295, 308678407453354502, 15922558612862651645, 851414952912951519])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([5101399957442677481, 2142578709995607628, 15743510483605305349, 666733543413083275]), Fq::from_montgomery_limbs([4873022314864281149, 13307090161474032822, 14158291996867903752, 938052837538358985]), Fq::from_montgomery_limbs([1546160817298626130, 10540049778787005713, 3368713709127751691, 363188968017269367]), Fq::from_montgomery_limbs([672262991009706902, 12218048109997218244, 13699765194488826580, 1084475947638507828])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([18346923840081698634, 12943712128874619670, 4019790911633783753, 1100400008744250128]), Fq::from_montgomery_limbs([17812255713702828327, 18006780541970109111, 15638439909761933062, 607605721282836799]), Fq::from_montgomery_limbs([2146046584044097439, 13101190276266477217, 13417007043729135623, 306909505181101092]), Fq::from_montgomery_limbs([5881505764977051707, 9027582737682954755, 13113110745761042063, 498156427767794980])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([18445494826303215741, 1922640032275348520, 18401753303151108255, 413700892364628288]), Fq::from_montgomery_limbs([5713551333083111944, 13466982107671483604, 18052718879288026086, 606241695332365536]), Fq::from_montgomery_limbs([5341312667566345417, 15999363884279236272, 3859963172427206256, 137512694474664211]), Fq::from_montgomery_limbs([17490177364963826654, 14543044352686070271, 16150001646614169348, 704698259553703393])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([9727568846190657427, 14417114472564400058, 9365197390786121627, 794983300027476088]), Fq::from_montgomery_limbs([12997373201110860726, 14246380874068335614, 13296665919577048738, 1098745640843188596]), Fq::from_montgomery_limbs([7228530868527339586, 15583029622716990094, 8861208517089803667, 82901497917931480]), Fq::from_montgomery_limbs([13638279809916295410, 128790733739477632, 8417886451161888027, 991255423238702330])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([11087968183222739640, 2587511469422769048, 14523312587696220059, 192146587408207716]), Fq::from_montgomery_limbs([8412996681904903641, 11887442821301638447, 3370639369565289246, 53949002610311715]), Fq::from_montgomery_limbs([14762391536874926895, 10740959434718252074, 1226825919833891779, 365160723178298573]), Fq::from_montgomery_limbs([1555330760834900970, 1518370310210703133, 1735267998098714592, 1025622291285303779])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([1334503499975428364, 10717052295534688524, 7361984650156075053, 844791857359624202]), Fq::from_montgomery_limbs([16941837112843173147, 2487213732723210497, 6266342779648955295, 833823163972637517]), Fq::from_montgomery_limbs([17244221202450562885, 9683927217285200288, 17625214279845872049, 72929072308819687]), Fq::from_montgomery_limbs([17322021997939023067, 12230087119796208396, 18396814271884812695, 813805950829206789])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([15948063285113474855, 10770603797800150235, 6677092062918475126, 1088103102296276139]), Fq::from_montgomery_limbs([7711244693099635983, 3166785488663936361, 4922456695483615993, 430831973502880121]), Fq::from_montgomery_limbs([3809367189852072520, 9855677685061821074, 945495584216248446, 909359350460583709]), Fq::from_montgomery_limbs([8110395815872458853, 1514592973182402061, 790829722054948037, 353129076761034824])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([4490522698778351596, 14224519981854920216, 17099540428194228219, 339422077308612769]), Fq::from_montgomery_limbs([5639095254854416487, 1620715418926540453, 2533378178940440961, 1219281352481947332]), Fq::from_montgomery_limbs([10638608741850236276, 6613656335866104958, 7688920349526656377, 267050381048915175]), Fq::from_montgomery_limbs([3036522849970263675, 6507669881427436695, 17574949570571358776, 1277705835314573728])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([2222484869463773519, 6808168746395796147, 4421285536548949511, 221502296849107896]), Fq::from_montgomery_limbs([13864906390918380841, 14542080963104347726, 4946615231209518707, 410716390051665697]), Fq::from_montgomery_limbs([17342164341678591250, 2157153117836804364, 17774122463652037556, 1045677158150316262]), Fq::from_montgomery_limbs([1897195111902571201, 7441808212794130262, 14230292566113962566, 158679422354435267])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([12385311968994581122, 13994070371431075240, 8808495601965357849, 1021378877363492133]), Fq::from_montgomery_limbs([6493128916407973417, 7997830985039481850, 7096965712368312908, 1047173662891619916]), Fq::from_montgomery_limbs([4284147259360490869, 16041408471489150031, 7607939514063442430, 829626684549401311]), Fq::from_montgomery_limbs([1856817747001420784, 16357946393175270201, 9210719327832581050, 1018175197760234391])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([5500145050367041469, 3840984581227276122, 3431832361289319237, 260564656886891183]), Fq::from_montgomery_limbs([14712945504944782403, 15039214861617765141, 11103751083365574273, 113689317515455733]), Fq::from_montgomery_limbs([701726807475653267, 14140055316542680948, 3011442975075019770, 584361997905323533]), Fq::from_montgomery_limbs([17748483580890358752, 10604246296825603311, 13033470142003819820, 599441163676514743])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([5299230594859812716, 16638780731660150925, 952927811712562861, 498189305785932392]), Fq::from_montgomery_limbs([4432890524542841769, 1996216122820571178, 12192741690714508643, 764076413945664713]), Fq::from_montgomery_limbs([13089352217465064175, 15801731950730062998, 16367845731547800506, 315925055121715682]), Fq::from_montgomery_limbs([4079387977856382544, 9219169523776319636, 17133435751310074522, 1287156460338158966])]), Matrix::new(4, 1, vec![Fq::from_montgomery_limbs([14473285560728073066, 3618147328828088415, 4933194636388348895, 391722132844625282]), Fq::from_montgomery_limbs([13555572770500462469, 12796156150384677031, 16297295557264104694, 523410635806816263]), Fq::from_montgomery_limbs([6170968086362616849, 306706920248086968, 4382856058195592988, 1226950348108880303]), Fq::from_montgomery_limbs([3093606516563139647, 4131257826299546810, 10588085520003095457, 1310373646887997506])])], -// }, -// optimized_arc: OptimizedArcMatrix::new(39, 5, vec![Fq::from_montgomery_limbs([9886223877583555338, 2726526174642559934, 4587790518566470505, 576729411659255749]), Fq::from_montgomery_limbs([8635683872171027649, 6178568763530680712, 4049298017970875225, 1010899895527016760]), Fq::from_montgomery_limbs([4386287284362214114, 15794275297560972982, 13426231751965312445, 1202171528338027358]), Fq::from_montgomery_limbs([748088700594287215, 1472010505444622065, 17517940238534715767, 284646916897302179]), Fq::from_montgomery_limbs([10279507610927218934, 8427605231324569630, 5256766482183491681, 599767801296570400]), Fq::from_montgomery_limbs([5616532683870270019, 16714573776517987780, 2780158541662869274, 82005381951989400]), Fq::from_montgomery_limbs([628047193644056282, 3081927050412275131, 16607349608647881262, 723666033729227034]), Fq::from_montgomery_limbs([4014053105906402474, 8516064025130570203, 16439212471763340654, 1066408903228028504]), Fq::from_montgomery_limbs([3781775891997454435, 16784197273788891439, 15993490775706321548, 1246974369195687342]), Fq::from_montgomery_limbs([13315871439997102610, 1360174578976506509, 1935727712649190133, 888928512483410116]), Fq::from_montgomery_limbs([8976641770861237410, 6687451940339132521, 18044907108310696377, 1207869807557250559]), Fq::from_montgomery_limbs([4528878922761055500, 7463187218610955446, 4533754848507645556, 35071527712858390]), Fq::from_montgomery_limbs([2054133897613963099, 8179564031063470525, 1531556284029346638, 874298192527556148]), Fq::from_montgomery_limbs([18305580017782407596, 2150793914184610589, 17311607174845242499, 959373557899881125]), Fq::from_montgomery_limbs([11483900964553043288, 12487129025031613244, 15391908241276224492, 269335905993702128]), Fq::from_montgomery_limbs([8338971145620331245, 12372781419517678375, 2199283600481834995, 349132078387032325]), Fq::from_montgomery_limbs([16711498854962897180, 964757925282058102, 2534475787702313401, 879174178299686832]), Fq::from_montgomery_limbs([9948612635577575267, 10310004629375851550, 14569008704673249814, 698796675030817938]), Fq::from_montgomery_limbs([11983101385647491113, 6756494718617323834, 3986787822213493305, 810568397631777742]), Fq::from_montgomery_limbs([263703597816264419, 5391923373962277868, 8069762938958691329, 167001460324522424]), Fq::from_montgomery_limbs([12719698031922087137, 3635206538516773241, 14946573674542408006, 904022619675467349]), Fq::from_montgomery_limbs([6762216158719169172, 9642199571024567935, 5142823812984968700, 1291046148927292666]), Fq::from_montgomery_limbs([16680204203505507730, 8087548591244649631, 15438619206653090081, 1223574451283768225]), Fq::from_montgomery_limbs([15843265781989514164, 11764842050278291695, 5504272762074655066, 1332848573377839351]), Fq::from_montgomery_limbs([14629863041087566865, 13982939885426451475, 4404573463578858817, 228759527459751766]), Fq::from_montgomery_limbs([5809286761889033537, 11277370821793444978, 3107117479578979614, 305735955848689987]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13948409934814415504, 9820154694698383592, 15339478710638889187, 228350902630534490]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9065604528638698957, 3194171905752976735, 3352166936878863002, 1231275645191263862]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8579200991377095094, 9015821969914095981, 3670786722209097686, 925402881763579823]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11761775895269121220, 12572917397999688032, 10698111778021992718, 739030648247632040]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1406476064536236033, 9641904169359584691, 209897974740814668, 1004730517253795328]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18342895263686664503, 17441455493733274041, 5057199659823690304, 1191886919996393979]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18290582194527069827, 6852353546873280582, 14232314971261025505, 754530050701193486]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6721150425319195661, 13696483494608803551, 14639895569983779179, 190432279900459470]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2285783420521743219, 14591994399938496304, 12535886408060618378, 501101710489306684]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7822724896156552074, 7689777522145170361, 9730977649721376401, 311055255784537528]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1834958024306476590, 16605000872934730848, 8734772715942251355, 1026168817960127241]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5790287081621506475, 18067297368696384877, 1971894623462079455, 497112957651892314]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8621725523835646269, 12965774417410118256, 14706095127353190822, 1142857683996139025]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15741284293667530319, 12915384592541106208, 10337602748724507139, 621400944646732378]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10418600921631639086, 13969232505211882397, 6670084530256782375, 589250133235990401]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13301798549602548743, 5096901969148881844, 14446280392699573069, 437782466408137787]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14260778386751756941, 15721044723566323721, 9992114336939362025, 1127453549788190537]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9374740633145639151, 2749992728162535287, 324605534042342541, 875415928381457928]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([267437928690707389, 15443945850723586497, 12627722626447870588, 76078095185201612]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10923993363806369263, 18267784178840739395, 14630481450219570438, 378947118067140053]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11403976482284459978, 16272983986590444793, 3765503922077751896, 79364539722273290]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11448721382876703681, 14847931759131246244, 7128092965784075415, 180922588002186450]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12703693405537318683, 17809616441104653297, 1356025434738010042, 678042696111256776]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1581134933636608728, 8974334562566747609, 13981094886159927949, 879338632538017255]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13448202253461902078, 6113850066861673560, 8363760165130703945, 430895863395699323]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11364646780735898548, 18310352822657651209, 1715448934469054774, 373623735103410086]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5160483194403952864, 5269789810582188597, 7949343741254368028, 648244985265401351]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2578613260896705768, 16973829270463026541, 1007269524128147481, 588832280601996335]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18113257874564708980, 4260053189158561988, 17013073166096369676, 79169829782754517]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11433643047469980018, 1276670802646402384, 7225445039450827835, 1320607862737647658]), Fq::from_montgomery_limbs([9049650314779674715, 15332775679178116922, 10916059016321665268, 1115159218126791192]), Fq::from_montgomery_limbs([5320499112936763732, 11250539854586634824, 12063947087263213252, 710935487070228339]), Fq::from_montgomery_limbs([18379608258942880321, 15727113804916673274, 10498320535108511002, 845002076776323646]), Fq::from_montgomery_limbs([6828593483180812035, 1682481325156526923, 14049047336459608184, 1126148273021080778]), Fq::from_montgomery_limbs([3872917422679565944, 1271915972458656550, 1092693023912110895, 1298968277402891756]), Fq::from_montgomery_limbs([7814132502258843917, 8078742423972593556, 8536158594561933049, 191277843487617954]), Fq::from_montgomery_limbs([5652311561512870887, 16495461651672765449, 11098657231551158518, 493087321946801171]), Fq::from_montgomery_limbs([6368409936062697439, 792796763844864197, 5610460501625398581, 546867399856191995]), Fq::from_montgomery_limbs([3038217149528838505, 8627484827600343283, 7414393357134479493, 985381996389905690]), Fq::from_montgomery_limbs([14953970136252134871, 295452924685135549, 11287279099077480718, 617093465173114131]), Fq::from_montgomery_limbs([140435627222783551, 17855535656574994648, 5022512547318532764, 473386213985532003]), Fq::from_montgomery_limbs([7030554896034226352, 6441059691989760702, 581099786512472761, 1269259459863271622]), Fq::from_montgomery_limbs([6770052323275442396, 12901743183408121797, 13004549993560303547, 969914125748537569]), Fq::from_montgomery_limbs([11435239377991792553, 14044046789306606033, 11369816462011584822, 1239930404010674345]), Fq::from_montgomery_limbs([2621636762951244377, 7758290588105338214, 14625731574391580682, 7696703746211481]), Fq::from_montgomery_limbs([8270493924131469556, 15946263820341678216, 6122109191607485742, 1119062509985100783]), Fq::from_montgomery_limbs([11252124749266599346, 8413749501404755931, 9936257142296575431, 189818330075783365]), Fq::from_montgomery_limbs([1537275707366966513, 2232381660897701103, 2870196216416932989, 1271177660936312287]), Fq::from_montgomery_limbs([1398814984843324301, 15240858180305901997, 14386262707998656254, 1102388553837536368])]), -// } -// } +pub mod rate_4; // /// Parameters for the rate-5 instance of Poseidon. // pub fn rate_5() -> PoseidonParameters { diff --git a/poseidon377/src/params/rate_4.rs b/poseidon377/src/params/rate_4.rs new file mode 100644 index 0000000..b2dd725 --- /dev/null +++ b/poseidon377/src/params/rate_4.rs @@ -0,0 +1,30 @@ +use decaf377::Fq; +use poseidon_parameters::v1::{ + Alpha, ArcMatrix, Matrix, MdsMatrix, OptimizedArcMatrix, OptimizedMdsMatrices, + PoseidonParameters, RoundNumbers, SquareMatrix, +}; + +/// Parameters for the rate-4 instance of Poseidon. +pub const fn rate_4() -> PoseidonParameters<5, 4, 25, 16, 39, 5, 195, 31> { + PoseidonParameters { + M: 128, + arc: ArcMatrix::<39, 5, 195>::new_from_known([Fq::from_montgomery_limbs([9886223877583555338, 2726526174642559934, 4587790518566470505, 576729411659255749]), Fq::from_montgomery_limbs([8635683872171027649, 6178568763530680712, 4049298017970875225, 1010899895527016760]), Fq::from_montgomery_limbs([4386287284362214114, 15794275297560972982, 13426231751965312445, 1202171528338027358]), Fq::from_montgomery_limbs([748088700594287215, 1472010505444622065, 17517940238534715767, 284646916897302179]), Fq::from_montgomery_limbs([10279507610927218934, 8427605231324569630, 5256766482183491681, 599767801296570400]), Fq::from_montgomery_limbs([5616532683870270019, 16714573776517987780, 2780158541662869274, 82005381951989400]), Fq::from_montgomery_limbs([628047193644056282, 3081927050412275131, 16607349608647881262, 723666033729227034]), Fq::from_montgomery_limbs([4014053105906402474, 8516064025130570203, 16439212471763340654, 1066408903228028504]), Fq::from_montgomery_limbs([3781775891997454435, 16784197273788891439, 15993490775706321548, 1246974369195687342]), Fq::from_montgomery_limbs([13315871439997102610, 1360174578976506509, 1935727712649190133, 888928512483410116]), Fq::from_montgomery_limbs([8976641770861237410, 6687451940339132521, 18044907108310696377, 1207869807557250559]), Fq::from_montgomery_limbs([4528878922761055500, 7463187218610955446, 4533754848507645556, 35071527712858390]), Fq::from_montgomery_limbs([2054133897613963099, 8179564031063470525, 1531556284029346638, 874298192527556148]), Fq::from_montgomery_limbs([18305580017782407596, 2150793914184610589, 17311607174845242499, 959373557899881125]), Fq::from_montgomery_limbs([11483900964553043288, 12487129025031613244, 15391908241276224492, 269335905993702128]), Fq::from_montgomery_limbs([8338971145620331245, 12372781419517678375, 2199283600481834995, 349132078387032325]), Fq::from_montgomery_limbs([16711498854962897180, 964757925282058102, 2534475787702313401, 879174178299686832]), Fq::from_montgomery_limbs([9948612635577575267, 10310004629375851550, 14569008704673249814, 698796675030817938]), Fq::from_montgomery_limbs([11983101385647491113, 6756494718617323834, 3986787822213493305, 810568397631777742]), Fq::from_montgomery_limbs([263703597816264419, 5391923373962277868, 8069762938958691329, 167001460324522424]), Fq::from_montgomery_limbs([12719698031922087137, 3635206538516773241, 14946573674542408006, 904022619675467349]), Fq::from_montgomery_limbs([7591285109719266048, 2608578391556572711, 6779676185899908036, 1086161713062740129]), Fq::from_montgomery_limbs([7176467193518589709, 1343509363976199891, 347002617743548581, 1018914054223433368]), Fq::from_montgomery_limbs([13908207388458176389, 2971345816230697916, 17116412495128514758, 1092556723789729092]), Fq::from_montgomery_limbs([10011741275583553910, 13515359725579218496, 16173962293465169995, 826500423001616558]), Fq::from_montgomery_limbs([11642763221775816104, 5316502523761667274, 6723960157854782715, 713280922101966669]), Fq::from_montgomery_limbs([881130788153084344, 5010739439291725858, 1147743103863894058, 177980102031055407]), Fq::from_montgomery_limbs([13975378739354834601, 8684941252608197282, 5694396386436962583, 439479504891747047]), Fq::from_montgomery_limbs([13363133397626440278, 8130502609775906914, 13414583350549819329, 524823840910770289]), Fq::from_montgomery_limbs([11945840925799863259, 8524159476864402062, 9210577373238759816, 710975425722615141]), Fq::from_montgomery_limbs([12814581100646910424, 15849784230008994303, 12637788340215337664, 597941999161438829]), Fq::from_montgomery_limbs([16525908361603394009, 2846177558600817179, 7575467056141022092, 437642443252490173]), Fq::from_montgomery_limbs([15329913684605210914, 12070525736245629573, 13074341668722432469, 1044151030746490873]), Fq::from_montgomery_limbs([3538323630603591241, 10279517124841541304, 5324030032202346672, 902072318757121155]), Fq::from_montgomery_limbs([13596574972337588658, 16541340016857780345, 8104153165370753035, 245861939922053923]), Fq::from_montgomery_limbs([5030454205469646742, 13132624601605397879, 14758125164075453800, 378384125390441388]), Fq::from_montgomery_limbs([8906593348835760654, 11904421032273004937, 14965461596408947669, 632859340380426495]), Fq::from_montgomery_limbs([7850130346408635539, 13532701351370547975, 3820560789332903656, 1092318130445796576]), Fq::from_montgomery_limbs([12997377171057711408, 4471729792070708333, 7305494049349150657, 1115063797383463496]), Fq::from_montgomery_limbs([15145625851690108440, 17698022295267189243, 9861950554713946731, 1205401165408515638]), Fq::from_montgomery_limbs([11309649707041239663, 667445592132876816, 943153015419280868, 1206714849836553688]), Fq::from_montgomery_limbs([9026152062944983955, 11204530926199479297, 6289885248657301247, 512955645767342309]), Fq::from_montgomery_limbs([11717849647660086747, 3612602895588115533, 9744929507384815356, 982549568060514738]), Fq::from_montgomery_limbs([6744201323279553111, 18111540114747698086, 11979166811283670034, 386105814260185338]), Fq::from_montgomery_limbs([13303196293759203285, 14344592278022456277, 4239798340739261853, 800405056318133701]), Fq::from_montgomery_limbs([6737138017975582894, 8531016178828592243, 13684944430980743706, 22255530611110264]), Fq::from_montgomery_limbs([1997271207334772541, 9079547000593471061, 16047065352656029242, 101416793857725065]), Fq::from_montgomery_limbs([17029188205686654069, 8951964272054585217, 15302569091334378903, 761854968911808356]), Fq::from_montgomery_limbs([2745767110751783932, 14853302747509920417, 1606999108376858338, 891318834157837360]), Fq::from_montgomery_limbs([3640580010003203721, 12123462912736402051, 18295135460895849345, 520752965734877132]), Fq::from_montgomery_limbs([83933521946714737, 17971579355265751841, 7352708691986307901, 183907669014565798]), Fq::from_montgomery_limbs([9276458973572472320, 1300682705964188558, 13756551032393705489, 645082867954998576]), Fq::from_montgomery_limbs([15074599786611123042, 8980910692416969440, 16790312992523154465, 44198431582091186]), Fq::from_montgomery_limbs([1480148269351616164, 5990826399027670160, 7437498150356539259, 427144700677710781]), Fq::from_montgomery_limbs([5507196835477653383, 7336613593633132046, 1280426316557546233, 958933701992800913]), Fq::from_montgomery_limbs([18241053245813744236, 10472459532627362617, 2012134575489914517, 1256037774783607417]), Fq::from_montgomery_limbs([14372359421802781886, 13729700187444703363, 17989800816636154572, 967621319286277758]), Fq::from_montgomery_limbs([90392410009690887, 14047860931061415491, 12494400053046916745, 1187807817979142164]), Fq::from_montgomery_limbs([7469394458896125080, 4994833117952945329, 5178970336138815548, 547357110341709620]), Fq::from_montgomery_limbs([14626262512784894880, 8498143648146630667, 14635776379295784646, 279017425979939457]), Fq::from_montgomery_limbs([2948938230818109264, 13256829255392710280, 3603261726988560613, 293293722534360282]), Fq::from_montgomery_limbs([14726913360355627661, 11044693867323537781, 7626109275678740243, 758908383357559345]), Fq::from_montgomery_limbs([12150373031774230138, 8891964881341264351, 4517018861706300919, 551820964652107008]), Fq::from_montgomery_limbs([16891048323407180721, 7536596905792994544, 3059846088325366943, 865178483316339067]), Fq::from_montgomery_limbs([2690083733968939863, 1769064765331202923, 999446336742885656, 164907716251699548]), Fq::from_montgomery_limbs([8580460058188302985, 3991751878635809753, 4547376216267480360, 560815723873147432]), Fq::from_montgomery_limbs([1883267897877590583, 9283747140977722829, 4336519897183919570, 1098112532343628461]), Fq::from_montgomery_limbs([18229193288997288391, 1416710191385219951, 786091488678520329, 897579186089258101]), Fq::from_montgomery_limbs([9679787806770955465, 13476526545223689774, 9613302347536604785, 1170985601196245246]), Fq::from_montgomery_limbs([11408485967127642435, 15775267434451831783, 5963102841687207642, 610143165002891320]), Fq::from_montgomery_limbs([2742110483607649666, 8238870973637978146, 8505321265665046273, 991146636847773959]), Fq::from_montgomery_limbs([2700417284944988347, 9333179215703947174, 17483497014148443293, 564598335909606701]), Fq::from_montgomery_limbs([10710073701127297870, 6322555675999590600, 11771028831440425797, 728539264888274353]), Fq::from_montgomery_limbs([5185688551847854621, 17136427433029749827, 13939786699270995224, 1198719082185444207]), Fq::from_montgomery_limbs([7749447179538401980, 4793600318555081413, 10327393242917365028, 25438094261901103]), Fq::from_montgomery_limbs([16840187061708384569, 10530669475422628524, 217939404244531614, 1125926086827923821]), Fq::from_montgomery_limbs([15218288013305045082, 5438912048142917445, 235470087288523129, 923231700809438641]), Fq::from_montgomery_limbs([2194576126536460830, 7891341442170590444, 6378643390383758255, 310989935666358535]), Fq::from_montgomery_limbs([2638919532368561416, 18196222360720320566, 6610525316889549022, 1047682654438730344]), Fq::from_montgomery_limbs([16494294820597583678, 4823636307697140628, 9839058803503271101, 362713889140891969]), Fq::from_montgomery_limbs([2973315077205527383, 16505948923072751536, 12726716204894385324, 760067983544631044]), Fq::from_montgomery_limbs([7041027454525309806, 14484049096926673324, 11711536155919984779, 830352844598884205]), Fq::from_montgomery_limbs([8226667178177935298, 16330330634634519739, 16819545565758577360, 929449491579086457]), Fq::from_montgomery_limbs([3366407172182263301, 16494428895759921285, 7731107796203549240, 987879550276572952]), Fq::from_montgomery_limbs([9958698182000492538, 15462783131464999925, 11113071922629363034, 701467612820830963]), Fq::from_montgomery_limbs([6144224708909855422, 10834457042169331467, 11287058958850316926, 1312825012143929910]), Fq::from_montgomery_limbs([17921397628564368555, 10985573093809787040, 14340644029187071972, 59000721534311183]), Fq::from_montgomery_limbs([1630018632512830166, 16311976715006973397, 18074431391508993129, 155692271434089392]), Fq::from_montgomery_limbs([2746677638438958053, 17878267615510669310, 1082275588904648896, 1184432411754581729]), Fq::from_montgomery_limbs([1202686691857012174, 2234596977877372457, 3307488575050929625, 1256758603403004831]), Fq::from_montgomery_limbs([7601867427459401741, 13070585820383544138, 11356438762852655489, 943118894834427377]), Fq::from_montgomery_limbs([8684748127362653242, 4743911555278887170, 11396974372791841950, 826700742908426413]), Fq::from_montgomery_limbs([17452888945877951639, 9839615283788288179, 12867459466655328363, 1007543359739410437]), Fq::from_montgomery_limbs([12264143824974096166, 14381191422662810752, 3641096965851024808, 480946059636473070]), Fq::from_montgomery_limbs([11435949141961302837, 710354890461232526, 7844293650067273203, 123004845212098500]), Fq::from_montgomery_limbs([11045998304335767176, 3942503358896124422, 12585149699076876402, 285027589169677300]), Fq::from_montgomery_limbs([15820797401199028229, 16962821466020830153, 8107747291692774042, 480489353941649738]), Fq::from_montgomery_limbs([9217962315784549500, 14370528537254478239, 11836250330534571325, 1139451976529383887]), Fq::from_montgomery_limbs([11835990522743135120, 10169548464484669696, 17221670999568737002, 533302488612773058]), Fq::from_montgomery_limbs([17879618715206022981, 10660797039341031940, 1930610719106570064, 964350742947937820]), Fq::from_montgomery_limbs([1169235639972562417, 17479840192056268380, 10586924611389711708, 103636186478545263]), Fq::from_montgomery_limbs([9864560133117702439, 12891182307324408638, 9236711602457989544, 490202994419177997]), Fq::from_montgomery_limbs([524004209204114745, 12014044939530800435, 17303597221467190420, 1259834854717402694]), Fq::from_montgomery_limbs([2041228093468029194, 5279491032753715877, 2237512127849739422, 1301989577140851954]), Fq::from_montgomery_limbs([13532558374939940477, 11861615008285507752, 15035422035697406898, 1142796203357719412]), Fq::from_montgomery_limbs([14953432173925601791, 10389362430177185816, 845064825159375048, 1172521244035119080]), Fq::from_montgomery_limbs([11975318177053547084, 3435333234872828662, 13963241498174514126, 286783134590930070]), Fq::from_montgomery_limbs([14455835521486462998, 2048669311632423555, 17279316794410156816, 50616703474729287]), Fq::from_montgomery_limbs([8193872068862108327, 3772516384619180657, 13641128299057093189, 905697595997810178]), Fq::from_montgomery_limbs([16454110340578030875, 2152604389456932301, 8465973362037387798, 833666687765914967]), Fq::from_montgomery_limbs([14250990663149816130, 10003002447016613703, 2580052265102394487, 760659830843235379]), Fq::from_montgomery_limbs([1290457731274356164, 2510039619580464600, 2426168528296515695, 1254551442283207078]), Fq::from_montgomery_limbs([16309488082193928736, 7601298284363534660, 5163919981174564632, 65819575671802258]), Fq::from_montgomery_limbs([12743534580838976593, 6143776853938743851, 13386193122986779929, 423668519394498160]), Fq::from_montgomery_limbs([3811484717633006447, 1349919791689722695, 10297821437600310682, 68521037802427679]), Fq::from_montgomery_limbs([1049969810634121052, 16728941075068531596, 16094121280131115468, 82606214892022031]), Fq::from_montgomery_limbs([5360234823572670745, 17757096254232659981, 5717208405019750556, 809486485814479609]), Fq::from_montgomery_limbs([1927630004992622799, 11649924430204711735, 14978212641988016519, 1108831164145357066]), Fq::from_montgomery_limbs([4587868477439641052, 4737040880169689015, 639327313806380645, 693944328643709356]), Fq::from_montgomery_limbs([11087993010676539653, 10020352685294943192, 10076106363570629377, 297641291282727232]), Fq::from_montgomery_limbs([3081981335203353498, 13021314745733708666, 5449753531105554695, 227963405559900828]), Fq::from_montgomery_limbs([15635794702109421502, 6527818235965294785, 7659508407838394834, 492292453862401661]), Fq::from_montgomery_limbs([3164777360703179827, 5768214351744839625, 7163272775096466422, 261059424264025774]), Fq::from_montgomery_limbs([8844860905568377954, 18132135522818541971, 6960467923389772345, 221535360909084069]), Fq::from_montgomery_limbs([17964326599819457995, 14751755360522114153, 15283771895792774696, 1271886438859126545]), Fq::from_montgomery_limbs([15437118549753387043, 3510619079633075969, 16603794516758219723, 756776079410359543]), Fq::from_montgomery_limbs([17209588410857048072, 16141684401935979017, 5301689933884631523, 38432519687640810]), Fq::from_montgomery_limbs([10547445465275366949, 16846768059763163090, 6977180887290525070, 405538698331204120]), Fq::from_montgomery_limbs([921006661797204039, 11021425780686556666, 5587777062950060423, 248159859513377465]), Fq::from_montgomery_limbs([13398830594908962848, 5602568332953722680, 3299388522313110637, 411509104649500576]), Fq::from_montgomery_limbs([10390204826472811537, 7554738663131013749, 7526120458731579280, 905519991871142014]), Fq::from_montgomery_limbs([10358091385270219586, 7049055062932694342, 17159322295344631236, 1074016100024519392]), Fq::from_montgomery_limbs([7057719272669022427, 6716307074733016448, 8792057977815871320, 862532343552836131]), Fq::from_montgomery_limbs([11368373309109150033, 7045990182385141009, 2025222109349847460, 387848901695703654]), Fq::from_montgomery_limbs([327056937244728359, 9704535108452812502, 5199220103603000900, 619215360838520470]), Fq::from_montgomery_limbs([5395528494255463572, 389959326360615418, 3978563775598752142, 991544641697560783]), Fq::from_montgomery_limbs([8458772479849525654, 10186585336117207122, 12880133936401676976, 1149756384964578292]), Fq::from_montgomery_limbs([17528423621923070034, 15935520090452344119, 11404975526251493884, 412409734887795934]), Fq::from_montgomery_limbs([14596531415737149993, 4946255316940312726, 12454931841173483338, 731911136838063220]), Fq::from_montgomery_limbs([6585417567105755410, 16822761287245263930, 2131635032458361338, 606343045824968234]), Fq::from_montgomery_limbs([10214561078664282874, 5025761289800218565, 12783805018122678662, 1311486665373386005]), Fq::from_montgomery_limbs([15901739284283459461, 11286837212400137496, 1712557444614142874, 121870715794602643]), Fq::from_montgomery_limbs([3911984102306673570, 648245110634922383, 15751439518857509618, 216258856571958927]), Fq::from_montgomery_limbs([4848434841412269574, 7349989464327588429, 9911978981083826344, 1211881330257404603]), Fq::from_montgomery_limbs([9800713739756815796, 10304754660712109617, 6380491042931330586, 362406823863024713]), Fq::from_montgomery_limbs([7720465361240795301, 12020672868813473796, 2701475003865340607, 1252909626545536881]), Fq::from_montgomery_limbs([9120215925903958009, 16370286948728342393, 8726225975134153794, 874972214722679027]), Fq::from_montgomery_limbs([13359293481675756526, 17413992610381724082, 17127717448613492326, 618162979844611485]), Fq::from_montgomery_limbs([4457989176113381477, 5428904048964818159, 12898272303960788094, 1093655686680753194]), Fq::from_montgomery_limbs([18405830374587328631, 6168069285842580322, 1496453003489992656, 1017841256875975398]), Fq::from_montgomery_limbs([12466116854493845937, 2160195132816359286, 1767040459956452231, 109568514856013791]), Fq::from_montgomery_limbs([100951306495757880, 114976701465995050, 15766758379995858204, 1057219425251474865]), Fq::from_montgomery_limbs([5298457659833054856, 7285306064847886866, 12795862070238100636, 261515234811290770]), Fq::from_montgomery_limbs([7319581837975344773, 15042040386610023107, 16457831289989790825, 154915683796793087]), Fq::from_montgomery_limbs([13545480776153695910, 13196378744888296667, 5616833430312197722, 463371887282511984]), Fq::from_montgomery_limbs([4373255717409396971, 7992661231611740992, 2555455907700438592, 419602657573298182]), Fq::from_montgomery_limbs([3838228082130987093, 16958961529135702054, 12819669670360648617, 359497681438954782]), Fq::from_montgomery_limbs([6515161084577348825, 3970441889569271383, 607156398571973799, 547713787201516126]), Fq::from_montgomery_limbs([1627146883145613872, 10573887756656254297, 13653780278064282619, 524933908746351261]), Fq::from_montgomery_limbs([10179158874602797540, 2320694878046972755, 13108212213196896821, 823608765090614102]), Fq::from_montgomery_limbs([10002922236139274212, 17696271073832748193, 8923379405797021551, 708982901731254704]), Fq::from_montgomery_limbs([5839866296962221086, 17583077663905506748, 12216298901080800460, 487361936596221908]), Fq::from_montgomery_limbs([14341245248157744737, 3199487087597809010, 1135767560538489843, 927313269278877142]), Fq::from_montgomery_limbs([16632797622220954476, 9703590888871525194, 1377123634707768418, 1246534655674358846]), Fq::from_montgomery_limbs([4754517168201404309, 2647290700202563552, 1690983820051979673, 7714150076274415]), Fq::from_montgomery_limbs([11569692557961925140, 10228174840463393187, 8150598622710748207, 513567317704368092]), Fq::from_montgomery_limbs([1881301196632560204, 6035626362054951305, 8515508636781928884, 523264698133540944]), Fq::from_montgomery_limbs([10026556150015580882, 12588661207673568544, 8778049799575991497, 1135429816709585919]), Fq::from_montgomery_limbs([15355804768759996831, 17109742989524070851, 18394344475321513045, 694458701321276154]), Fq::from_montgomery_limbs([13235216837990437070, 2617348320939314758, 13129875399290619987, 562279832760519450]), Fq::from_montgomery_limbs([10230390803193447564, 13314863672162400633, 17075894283494146616, 375924473565310089]), Fq::from_montgomery_limbs([12059482537459401199, 10372277014464995984, 13657463670572718949, 68415488536176259]), Fq::from_montgomery_limbs([4866792775300295481, 4662805139390376964, 1084624083313912193, 283924614466318758]), Fq::from_montgomery_limbs([682031803653902614, 2785175410597900576, 10466522391392735273, 982491227853418333]), Fq::from_montgomery_limbs([1657190274082326701, 15794239529824430696, 11562429870540813013, 30597476268276403]), Fq::from_montgomery_limbs([11433643047469980018, 1276670802646402384, 7225445039450827835, 1320607862737647658]), Fq::from_montgomery_limbs([9049650314779674715, 15332775679178116922, 10916059016321665268, 1115159218126791192]), Fq::from_montgomery_limbs([5320499112936763732, 11250539854586634824, 12063947087263213252, 710935487070228339]), Fq::from_montgomery_limbs([18379608258942880321, 15727113804916673274, 10498320535108511002, 845002076776323646]), Fq::from_montgomery_limbs([6828593483180812035, 1682481325156526923, 14049047336459608184, 1126148273021080778]), Fq::from_montgomery_limbs([3872917422679565944, 1271915972458656550, 1092693023912110895, 1298968277402891756]), Fq::from_montgomery_limbs([7814132502258843917, 8078742423972593556, 8536158594561933049, 191277843487617954]), Fq::from_montgomery_limbs([5652311561512870887, 16495461651672765449, 11098657231551158518, 493087321946801171]), Fq::from_montgomery_limbs([6368409936062697439, 792796763844864197, 5610460501625398581, 546867399856191995]), Fq::from_montgomery_limbs([3038217149528838505, 8627484827600343283, 7414393357134479493, 985381996389905690]), Fq::from_montgomery_limbs([14953970136252134871, 295452924685135549, 11287279099077480718, 617093465173114131]), Fq::from_montgomery_limbs([140435627222783551, 17855535656574994648, 5022512547318532764, 473386213985532003]), Fq::from_montgomery_limbs([7030554896034226352, 6441059691989760702, 581099786512472761, 1269259459863271622]), Fq::from_montgomery_limbs([6770052323275442396, 12901743183408121797, 13004549993560303547, 969914125748537569]), Fq::from_montgomery_limbs([11435239377991792553, 14044046789306606033, 11369816462011584822, 1239930404010674345]), Fq::from_montgomery_limbs([2621636762951244377, 7758290588105338214, 14625731574391580682, 7696703746211481]), Fq::from_montgomery_limbs([8270493924131469556, 15946263820341678216, 6122109191607485742, 1119062509985100783]), Fq::from_montgomery_limbs([11252124749266599346, 8413749501404755931, 9936257142296575431, 189818330075783365]), Fq::from_montgomery_limbs([1537275707366966513, 2232381660897701103, 2870196216416932989, 1271177660936312287]), Fq::from_montgomery_limbs([1398814984843324301, 15240858180305901997, 14386262707998656254, 1102388553837536368])]), + mds: MdsMatrix::<5, 4, 25, 16>::new_from_known([Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), + alpha: Alpha::Exponent(17), + rounds: RoundNumbers {r_P: 31, r_F: 8}, + optimized_mds: OptimizedMdsMatrices { + M_hat: SquareMatrix::<4, 16>::new_from_known([Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), + v: Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625])]), + w: Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625])]), + M_prime: SquareMatrix::<5, 25>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), + M_doubleprime: SquareMatrix::<5, 25>::new_from_known([Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([8008150737402636880, 4488734692587776588, 1547555191554943536, 1006206882335955987]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4174856959927929341, 6956702737728349555, 11313218605335544685, 1279701926361717254]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14997388866253338116, 17951148788181031565, 14101804784614517907, 65578444326456143]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6853363902592985329, 4486369932351851910, 65610707319252285, 873172475563117547]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), + M_inverse: SquareMatrix::<5, 25>::new_from_known([Fq::from_montgomery_limbs([16044777359948080167, 6379307166694554861, 762089046052004585, 1183646996043825654]), Fq::from_montgomery_limbs([8310126474924308909, 16838376826344772735, 14456183264230470132, 629129040732927162]), Fq::from_montgomery_limbs([10591481161139814707, 3864831283854097767, 6360339012538312403, 727156441545813699]), Fq::from_montgomery_limbs([8580764665041452750, 2596276168345731737, 607940303702198574, 618123929142359699]), Fq::from_montgomery_limbs([18272933275584544879, 10491562475845979009, 9925929908400688531, 449428766487123474]), Fq::from_montgomery_limbs([8310126474924308909, 16838376826344772735, 14456183264230470132, 629129040732927162]), Fq::from_montgomery_limbs([11903154552578817451, 8808508453785624876, 14068444835231129096, 1259276684968074962]), Fq::from_montgomery_limbs([2548615176746366879, 17237354895530185263, 1797488250903408702, 291026391931997698]), Fq::from_montgomery_limbs([13620574122907011204, 15580574422211693049, 7152880373115697056, 985573542184802400]), Fq::from_montgomery_limbs([3137742302926509693, 15046605844466714305, 1991063102869025961, 261841845081961819]), Fq::from_montgomery_limbs([10591481161139814707, 3864831283854097767, 6360339012538312403, 727156441545813699]), Fq::from_montgomery_limbs([2548615176746366879, 17237354895530185263, 1797488250903408702, 291026391931997698]), Fq::from_montgomery_limbs([4501910777217553532, 15462242547553693695, 10499850527346203608, 185455733513899003]), Fq::from_montgomery_limbs([16090235568988980360, 8762996204253883831, 17672444665847082580, 116738187400143515]), Fq::from_montgomery_limbs([10965139192629135304, 2507527262352232221, 7729853937802466392, 18035572639182151]), Fq::from_montgomery_limbs([8580764665041452750, 2596276168345731737, 607940303702198574, 618123929142359699]), Fq::from_montgomery_limbs([13620574122907011204, 15580574422211693049, 7152880373115697056, 985573542184802400]), Fq::from_montgomery_limbs([16090235568988980360, 8762996204253883831, 17672444665847082580, 116738187400143515]), Fq::from_montgomery_limbs([10167016895964480411, 16734919608152084608, 17983964361753590390, 420319954536647974]), Fq::from_montgomery_limbs([15950905455332638974, 10638510376174954245, 6190824109415358469, 365471410765096812]), Fq::from_montgomery_limbs([18272933275584544879, 10491562475845979009, 9925929908400688531, 449428766487123474]), Fq::from_montgomery_limbs([3137742302926509693, 15046605844466714305, 1991063102869025961, 261841845081961819]), Fq::from_montgomery_limbs([10965139192629135304, 2507527262352232221, 7729853937802466392, 18035572639182151]), Fq::from_montgomery_limbs([15950905455332638974, 10638510376174954245, 6190824109415358469, 365471410765096812]), Fq::from_montgomery_limbs([1117314920009271201, 4543364499625431390, 17867254861738919934, 199268313635132044])]), + M_hat_inverse: SquareMatrix::<4, 16>::new_from_known([Fq::from_montgomery_limbs([2912843796488841427, 2986203785403700346, 8782906370300679609, 72348807101562454]), Fq::from_montgomery_limbs([9009169579583668122, 13163254771921611656, 12500476150373767268, 206041309714119899]), Fq::from_montgomery_limbs([7160019720069709961, 1207930472110715040, 14896636547354890107, 1070558624402680198]), Fq::from_montgomery_limbs([769834061306938378, 434866968268652066, 13507727459817144106, 1015899670515829318]), Fq::from_montgomery_limbs([9009169579583668122, 13163254771921611656, 12500476150373767268, 206041309714119899]), Fq::from_montgomery_limbs([18105737139400699747, 17092832644263385296, 11448292449964576346, 97503347880002371]), Fq::from_montgomery_limbs([2486409206805834145, 7132406107544192230, 16724002743228709842, 204690573034040147]), Fq::from_montgomery_limbs([15517856203532702535, 6456985507109804621, 5236564190669238024, 1219448662068878427]), Fq::from_montgomery_limbs([7160019720069709961, 1207930472110715040, 14896636547354890107, 1070558624402680198]), Fq::from_montgomery_limbs([2486409206805834145, 7132406107544192230, 16724002743228709842, 204690573034040147]), Fq::from_montgomery_limbs([5324099184438075010, 18365509704861776210, 485662210662411512, 332367568902751343]), Fq::from_montgomery_limbs([12123690196900787584, 13150159583617211350, 15652393172789097814, 509338692023573934]), Fq::from_montgomery_limbs([769834061306938378, 434866968268652066, 13507727459817144106, 1015899670515829318]), Fq::from_montgomery_limbs([15517856203532702535, 6456985507109804621, 5236564190669238024, 1219448662068878427]), Fq::from_montgomery_limbs([12123690196900787584, 13150159583617211350, 15652393172789097814, 509338692023573934]), Fq::from_montgomery_limbs([3535747919942277633, 17013697925000670341, 11660128334245281, 1118907618677696094])]), + M_00: Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), + M_i: Matrix::<5, 5, 25>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3550241294482541299, 4181806201361874488, 12479811686471816403, 855474765552047927]), Fq::from_montgomery_limbs([10733696657462375354, 9051038123237754612, 15768789564108221449, 598829465077611102]), Fq::from_montgomery_limbs([4780090151550846061, 8840309929769970773, 7282912445741669386, 1146189173642481065]), Fq::from_montgomery_limbs([4412170182102677248, 3666416784507971023, 16978031500730235082, 244755965167984938]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10733696657462375354, 9051038123237754612, 15768789564108221449, 598829465077611102]), Fq::from_montgomery_limbs([1513630470854066869, 4677614225413309486, 10111857031931978945, 500911903228030067]), Fq::from_montgomery_limbs([3055507272271008448, 8821455708710032658, 11214733806280933596, 435072795685184507]), Fq::from_montgomery_limbs([2339289121714728061, 16657308061121398565, 2111925237313832617, 572507462955239974]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4780090151550846061, 8840309929769970773, 7282912445741669386, 1146189173642481065]), Fq::from_montgomery_limbs([3055507272271008448, 8821455708710032658, 11214733806280933596, 435072795685184507]), Fq::from_montgomery_limbs([13866627529171609781, 9361176355530684294, 17598610984186907476, 148068116833355292]), Fq::from_montgomery_limbs([1636007787860515509, 13796006064476623473, 8087234008724486427, 424300075186376057]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4412170182102677248, 3666416784507971023, 16978031500730235082, 244755965167984938]), Fq::from_montgomery_limbs([2339289121714728061, 16657308061121398565, 2111925237313832617, 572507462955239974]), Fq::from_montgomery_limbs([1636007787860515509, 13796006064476623473, 8087234008724486427, 424300075186376057]), Fq::from_montgomery_limbs([17138718893438209806, 3832598667291101348, 16820316856178316520, 934255170445228361])]), + v_collection: [Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([16333313215653526970, 2040802123570873567, 13606956490394234585, 551256550916377040]), Fq::from_montgomery_limbs([5062406009186596704, 16529967443609096569, 8069040895545372020, 1221611533051627754]), Fq::from_montgomery_limbs([8776932849639973133, 4157275033105063229, 5219893242165609753, 441476373599490172])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([11152363693389150632, 7168263193567282683, 1452700946751769356, 436217109073156792]), Fq::from_montgomery_limbs([13970337958464724119, 17109877554760172091, 12788764852517710407, 839284445089847973]), Fq::from_montgomery_limbs([15163746983822199844, 11654724925143124644, 9602216610999473293, 519210689768164370]), Fq::from_montgomery_limbs([10182434037205209725, 9621286367095233356, 8404025194304421834, 344727351078320731])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([16755358458570043164, 10280398262063275743, 17321778533676321974, 143546509776638006]), Fq::from_montgomery_limbs([9894685689427310276, 13317494114689924797, 8039678456153006986, 320726242987073750]), Fq::from_montgomery_limbs([10892251073208715123, 9975233878611449982, 11944979761650688031, 279665888955724801]), Fq::from_montgomery_limbs([2806869061497062911, 16847498917844641241, 12155099785802870367, 612418149303740633])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([1943262751829125522, 12763321846226199313, 6747770469779104151, 951539986961178929]), Fq::from_montgomery_limbs([16058796408745659861, 17170055100384124922, 1586157489739998203, 1036791847629253806]), Fq::from_montgomery_limbs([2170272984479571023, 39206051687503551, 73036971397233251, 323555571475294666]), Fq::from_montgomery_limbs([13939509715106692697, 9339647999495962035, 11925062741591314295, 1167415533183673898])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([6979434117673847033, 3048055255536618747, 13743910631909977125, 783906807780161297]), Fq::from_montgomery_limbs([17010292649383249624, 7578772047158193525, 1259524131029379452, 241494970118020102]), Fq::from_montgomery_limbs([8104232396866985927, 12510732557073130064, 9629433082008929246, 1035242752646990544]), Fq::from_montgomery_limbs([16796634656430258298, 14112008759289957096, 6452208208519466013, 1048584847398376572])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([15748961458778365618, 8601741670573679852, 9437158324168441506, 977044327661253334]), Fq::from_montgomery_limbs([5158908350016140691, 8596065138269817166, 4752647801985797199, 1176021914613979688]), Fq::from_montgomery_limbs([17831888852747325597, 9652101022265686283, 1555288054471442793, 65814168324416153]), Fq::from_montgomery_limbs([10495561656210166211, 10989451257550783972, 8015055214453272328, 409799830087238982])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([2331967402451752193, 2109682558241205572, 1825337663297053092, 878857572660922318]), Fq::from_montgomery_limbs([12336449333325242432, 5499382277476614407, 11404022977159740856, 478044609105512850]), Fq::from_montgomery_limbs([10790217870923516271, 10590091398034592831, 2798879849340254683, 1097244195350236928]), Fq::from_montgomery_limbs([13063047010146157876, 14542415641892323856, 17083019212457052807, 1089087010292700700])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([1931130401025711378, 11841912731002402383, 12257729010461348591, 475921619378996396]), Fq::from_montgomery_limbs([2043623821806520253, 6264756844797844292, 9140556588049529897, 357097751413650712]), Fq::from_montgomery_limbs([13748314028353391771, 7554401384369793136, 15484455053202687098, 1015396556130205108]), Fq::from_montgomery_limbs([12112322445843745250, 9643021818792026083, 7010640491952178418, 912560635387385014])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([15884856584565086050, 4328763398811725844, 2194324022836935036, 564940183680880064]), Fq::from_montgomery_limbs([10368325909078307315, 16258151264498137456, 12821855576160737507, 168843008052784532]), Fq::from_montgomery_limbs([6775860316590005410, 1587081089529470620, 12761600899048989463, 547743431636452378]), Fq::from_montgomery_limbs([5499459000866536496, 17225191771611977200, 15501710310620154491, 515684463452344496])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([12129682192729323843, 8486777067374758801, 1157895296096676184, 662132892983063060]), Fq::from_montgomery_limbs([174757932292384330, 3152593721116333206, 12164153154782094245, 1099436573600079710]), Fq::from_montgomery_limbs([615845028898507200, 4670618999889700824, 12443454676890805497, 518935605666369522]), Fq::from_montgomery_limbs([16912386391968429424, 5290244798379778177, 11209464492300379874, 586454799338251353])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([12080638299294159093, 1960331238298728784, 2898980097890331004, 921670658451130495]), Fq::from_montgomery_limbs([16215351708207141464, 7345269023494330137, 12994383926037492649, 224185396018231372]), Fq::from_montgomery_limbs([3554838652407488913, 6074835006636416927, 15656375499922407950, 15940578339816345]), Fq::from_montgomery_limbs([7221246958182853009, 6510601905224702473, 12824776152597435860, 725837117656279675])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([13527778764121271275, 1030490900095715048, 12857340760482021894, 936580603253300439]), Fq::from_montgomery_limbs([12930617827781800730, 3249690311936291363, 1303559984190780453, 990745867675858343]), Fq::from_montgomery_limbs([10347830123499261941, 14744724164671532382, 15017413323955480611, 865517056617574158]), Fq::from_montgomery_limbs([13222342262320869452, 930250546901263311, 6148846827329484586, 816792556508332788])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([270522433778958450, 9810558015885994375, 12801721076082256784, 428014500155741958]), Fq::from_montgomery_limbs([17216419355251603785, 16776182263454362660, 17464958086342114244, 1020854289329138282]), Fq::from_montgomery_limbs([14583513917939718723, 16464432348709798589, 5524662795591881534, 504799586387620122]), Fq::from_montgomery_limbs([9494047844709044490, 9514125194357777841, 9204079242382538181, 1326388421861125510])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([7051493540766021999, 14714874558861007051, 12179359128314955274, 431397382988804936]), Fq::from_montgomery_limbs([14285688927589864668, 8964657502437295762, 10607145890133654906, 644415764475289967]), Fq::from_montgomery_limbs([9070138432342296337, 17136148269824501435, 16709615536037568565, 1088774414904578634]), Fq::from_montgomery_limbs([9017804360060337869, 5120895363411029290, 14759539588564342239, 251323438509473927])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([614700763379600159, 12518761935375538118, 4440750989807847128, 10689910160914840]), Fq::from_montgomery_limbs([16233894446868518964, 232968488158620891, 3648936371760108401, 87053101363493664]), Fq::from_montgomery_limbs([4682437298124427841, 10048101470247329816, 5838396498674936533, 76707223622697042]), Fq::from_montgomery_limbs([4844729186655784101, 5073462805990634750, 369364776025047222, 1205067782666401609])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([11811297399794142233, 1367273165695851273, 9482096466685101348, 278101973543607386]), Fq::from_montgomery_limbs([700938287003557444, 10784390521545837670, 652198576027059045, 1257111617232546179]), Fq::from_montgomery_limbs([7023353639663907189, 844196405846330427, 3670187877020232969, 467197560404961638]), Fq::from_montgomery_limbs([3255328098459903221, 1373891119440715166, 9229957119786296543, 511813603491106053])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([7074698954249379124, 597938652890685454, 4893589759540026630, 13821006431840376]), Fq::from_montgomery_limbs([9050360858429500710, 712154751922466901, 2783564310815451475, 361791763218230554]), Fq::from_montgomery_limbs([2543657380738906130, 7730539901174656512, 9349888058233016421, 1105296308578399874]), Fq::from_montgomery_limbs([12462195693380123490, 9135340915133672169, 2529249849635714105, 1028662249374476992])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([3997059354097159592, 14396586541557506890, 15126937915868653526, 1190014880085637787]), Fq::from_montgomery_limbs([71730461663727489, 6481482986298961851, 2863781531983795764, 676732583839455648]), Fq::from_montgomery_limbs([11976979288710790629, 18385617837556037683, 2427331777175576996, 271478597561256238]), Fq::from_montgomery_limbs([14665157190813807512, 4593895870413934871, 17259515554442068841, 822957347764507743])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([7149525206288877270, 17921481572667347774, 2621958866898809461, 1253764315637746764]), Fq::from_montgomery_limbs([3409735133900390936, 136473863329815600, 15309385832522383920, 1169764220492589436]), Fq::from_montgomery_limbs([7033172430223502268, 240255878942338808, 6398794669496471317, 628797443576353581]), Fq::from_montgomery_limbs([7953065623402270259, 8501997013689665019, 5960083925037855492, 295456887863221215])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([15195370696120832657, 17781142206152991864, 2238407181422098285, 841138092128746233]), Fq::from_montgomery_limbs([12824831901012180308, 12167693598895623388, 11028443174628128031, 11577460208414501]), Fq::from_montgomery_limbs([3327689546198888048, 12391493112771759962, 307868198412140618, 1159504727071219081]), Fq::from_montgomery_limbs([3049104073000031564, 17357418971393386361, 996987970433781915, 116813261500484748])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([10884166330331702882, 17425353526410834453, 13326907998045201293, 413735914240279347]), Fq::from_montgomery_limbs([12473777284989231213, 17638157720713586222, 7280940291577634976, 165394770300217809]), Fq::from_montgomery_limbs([6075495009078142294, 15423443319709019929, 10104593150500616837, 356519351756886421]), Fq::from_montgomery_limbs([4453851468262956706, 17578058950978353938, 5693306616848551388, 65029682653071572])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([8478514957045721547, 1837595243779150041, 2731509554274646589, 1330775784497928083]), Fq::from_montgomery_limbs([5199974098799727027, 4404072971729349177, 9646912483549069990, 218329131799988219]), Fq::from_montgomery_limbs([660001227897806842, 8207988798347696530, 13044592656758679072, 480823461712968712]), Fq::from_montgomery_limbs([2124249976672750300, 16810194224873279051, 8413199247867349887, 252618070410064009])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([4556458494955145970, 14725473799943575915, 6762752380673415129, 1316259551723935370]), Fq::from_montgomery_limbs([16979681563871369563, 5158090131973535020, 2347846896725164220, 295285400051150767]), Fq::from_montgomery_limbs([13585313619033311504, 16684285379674594726, 6119191656194738492, 455955275887010759]), Fq::from_montgomery_limbs([3454774308783696473, 10535559679543981910, 15358478203203343679, 240649127531759812])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([16198893952998692648, 7621510146767446726, 5423085782991616007, 484917335576147571]), Fq::from_montgomery_limbs([12418560142694938034, 9630762732922483573, 11756502878189980458, 1064509096436490989]), Fq::from_montgomery_limbs([6432783853572915686, 8373421070941771076, 9999207991110274176, 227092656935087544]), Fq::from_montgomery_limbs([2481263986424351332, 5524660820856664127, 1844129905336978496, 940613905523784942])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([16138212250303786584, 7239588475022848974, 10699859199281641521, 591755207097992795]), Fq::from_montgomery_limbs([12068127359176715698, 9201897464239423846, 16468376872261041490, 4468311430440924]), Fq::from_montgomery_limbs([4076476707186060475, 17992082137333534347, 6815132661837439512, 278384059575851924]), Fq::from_montgomery_limbs([17018342029879137108, 15055574099156300093, 11677650203572471840, 144664137444733523])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([8317396731115292545, 18067636204720558118, 14890417508627474416, 793524012844400414]), Fq::from_montgomery_limbs([13379864138421857399, 362217527193745219, 15798919921502256623, 1097917902435666499]), Fq::from_montgomery_limbs([12810510919435274272, 14423646849331158587, 9841501271852473232, 725922426352114610]), Fq::from_montgomery_limbs([17018030548797472114, 14895024219584398144, 12492061782442092972, 762315198620019019])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([1701906145521012707, 10296626786628438399, 10754570760997467096, 336488969849416237]), Fq::from_montgomery_limbs([254576632745845475, 16526828097705762792, 14770819661184367983, 243834243852718897]), Fq::from_montgomery_limbs([4102931554245931369, 16027764780080619999, 8334572247339515265, 368246411244951631]), Fq::from_montgomery_limbs([4561744176382664009, 2911477542790161454, 3011707291091124269, 556376879137998058])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([3296358868716422366, 9039393853864308074, 17847711501823630457, 1005226492488439642]), Fq::from_montgomery_limbs([4031069363410182489, 7351394901266043534, 16764075333050932509, 1335716800346461455]), Fq::from_montgomery_limbs([7923744999493545562, 5624877492918299446, 1035450251487215992, 66195541204638202]), Fq::from_montgomery_limbs([10021219165650904780, 11526735379442916846, 15137554942549712865, 220711145305168309])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([17539749312900092691, 1394325220480450609, 8427780606119340085, 214541826368037298]), Fq::from_montgomery_limbs([14979072356738539172, 8588389061504370168, 17185566872280556497, 1119865054078041]), Fq::from_montgomery_limbs([13832855658344903569, 17699617991822202836, 12719246950037163765, 809144901785178492]), Fq::from_montgomery_limbs([5258746201047632203, 16795607952264798969, 12589457419107454073, 852487165526431816])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([18017611145361501469, 17582515812396321648, 2919031829448009162, 551871759286894908]), Fq::from_montgomery_limbs([15370904975677001433, 7214748906490449079, 16152167407980539558, 1171554702393986442]), Fq::from_montgomery_limbs([10634655764649983482, 15431077074812693397, 2552280196567255, 712776250826311075]), Fq::from_montgomery_limbs([13708388833019942700, 491334836724789600, 11731367761263890755, 1197388142335296709])])], + w_hat_collection: [Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([8008150737402636880, 4488734692587776588, 1547555191554943536, 1006206882335955987]), Fq::from_montgomery_limbs([4174856959927929341, 6956702737728349555, 11313218605335544685, 1279701926361717254]), Fq::from_montgomery_limbs([14997388866253338116, 17951148788181031565, 14101804784614517907, 65578444326456143]), Fq::from_montgomery_limbs([6853363902592985329, 4486369932351851910, 65610707319252285, 873172475563117547])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([579603889306395083, 2560608140709899462, 18146698412336151881, 60258495702968472]), Fq::from_montgomery_limbs([9924506099485967285, 14841337095946012878, 6550473620052701980, 355439357201872457]), Fq::from_montgomery_limbs([12531688174264614033, 3629799128760975880, 14801960216155767350, 1064176756880888081]), Fq::from_montgomery_limbs([10680016211572180547, 7640186196594536338, 6573062001669273848, 464429714610594606])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([18417588127792957015, 16444529523188187364, 12084138139912705579, 16805794537696529]), Fq::from_montgomery_limbs([13339545413024956285, 12462761674569060732, 10134406054826483261, 583754886928078523]), Fq::from_montgomery_limbs([6246845195152016496, 16016738864936728009, 5667948898993596155, 948927193584489029]), Fq::from_montgomery_limbs([17388237537280169500, 14688406879934192659, 9909558203923179050, 70400508517387223])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([5474861045381340177, 7686087527544521306, 11338593297362199268, 1021856532337771510]), Fq::from_montgomery_limbs([8052444443922943850, 4009271504061137276, 5568866554849053281, 1340081542973701928]), Fq::from_montgomery_limbs([13718366036845239510, 18043008954918195926, 9743799172723723811, 242610881533123775]), Fq::from_montgomery_limbs([12288963833321771774, 11144465775025909714, 3141275767114171625, 895525891428781574])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([12404021506369929265, 14478431220710638983, 16528978820778867199, 1337150421852075847]), Fq::from_montgomery_limbs([14269177948606518010, 14317366494171555302, 17781066350959942798, 197359887673063489]), Fq::from_montgomery_limbs([12899528200685423645, 1817678529746564917, 2099502764987009011, 1116816677457497135]), Fq::from_montgomery_limbs([6364946926969012391, 15881033552478042103, 16127504872579347712, 382615667735657086])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([11058646051271038745, 6859926553724662452, 14087301393004364310, 933306102477549317]), Fq::from_montgomery_limbs([1055047094489815101, 4078033726602170946, 12892578489024905517, 1281158139572661976]), Fq::from_montgomery_limbs([5359943878923586203, 16376042868862104786, 5637680489769528437, 274508389146665774]), Fq::from_montgomery_limbs([9466887184987077213, 12707324624592417252, 5674722778664167831, 495915214907561344])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([5559270171112387908, 18090552370541844697, 4468532076227855438, 987685496358074261]), Fq::from_montgomery_limbs([10757975082173786027, 17106276533668884653, 16008494306379137448, 1236424776827918502]), Fq::from_montgomery_limbs([12651630831207509026, 9201507732813618723, 16271105479151831696, 1088028967768313039]), Fq::from_montgomery_limbs([1230449153550648107, 265047928608104139, 14808043482234569955, 325688046287390058])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([13141399420347535214, 10323718706655672545, 5271972852381490754, 698174654390126163]), Fq::from_montgomery_limbs([372444215127449162, 6596103022703759073, 1647706108480519163, 886941719362299906]), Fq::from_montgomery_limbs([5032445406852833227, 3216505841560606858, 6517925226383774397, 1070169747543143371]), Fq::from_montgomery_limbs([606117931900595268, 11653697130177906902, 16942600493441083920, 207641435432611378])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([10156513900929988871, 10530356278918523762, 14822893961039084664, 161451167716228232]), Fq::from_montgomery_limbs([5121741770267475287, 15513755736291034019, 15586246947451164544, 318686326614228424]), Fq::from_montgomery_limbs([10544893749060569045, 16634377462455718128, 15424965125419130088, 421312194245698247]), Fq::from_montgomery_limbs([11266056403263964991, 12568371609374858109, 3531321490936409191, 508836381468284493])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([14899630606893874181, 6378344959523143322, 5326343488656073582, 678256632460809235]), Fq::from_montgomery_limbs([8604354652434330145, 15276531567938090768, 4221676591098543719, 887292207042946940]), Fq::from_montgomery_limbs([10167720299639556674, 4032113283136195884, 15412529848138749452, 21416729784789829]), Fq::from_montgomery_limbs([1744850832220109759, 13008821337905939469, 11071631382001010551, 788542992044475498])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([2588487693831923600, 819162455518477850, 14502680861403887785, 203676022757604871]), Fq::from_montgomery_limbs([15050651530407319810, 5238818184223155551, 10359161461431902961, 163152244193461490]), Fq::from_montgomery_limbs([11621410489163276959, 8095296962816118406, 17382993292008629559, 830965834513277734]), Fq::from_montgomery_limbs([4679845673800762002, 11732742802677067267, 5456637834111887652, 399639723348579854])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([2687561395762377863, 2742745916341259698, 3044301131411393039, 723385064584425062]), Fq::from_montgomery_limbs([7499903664201677436, 10700255296173911735, 9370120751716629255, 519782401388716596]), Fq::from_montgomery_limbs([12815697858642806748, 3589518328364739416, 5217556848154698002, 1289540407776785865]), Fq::from_montgomery_limbs([5916520816310451970, 9082425633134247720, 12382542148805970812, 992107013138241122])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([6236639905261224386, 843729385509220216, 910784084401746031, 557709047224682096]), Fq::from_montgomery_limbs([15307210632392180298, 15607334968149180484, 9709374798094721055, 911705022776362835]), Fq::from_montgomery_limbs([565211768823822757, 4304458791623152845, 10249442774709061676, 1097659357675265239]), Fq::from_montgomery_limbs([12205146530944986348, 2116986434579909283, 4201175271170209969, 992267258612987371])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([12458858951338998496, 4060946816566081281, 4815111439256220560, 889585388579716031]), Fq::from_montgomery_limbs([13330737697681975741, 14306352519046153100, 6792373522794028640, 181857489562014553]), Fq::from_montgomery_limbs([9910876762206447536, 2419056950848665021, 5515306838952911504, 400668493068602121]), Fq::from_montgomery_limbs([4501996026292399474, 3944405189426212415, 2099089514371618361, 339943583855773594])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([2693369834887763486, 5226235063818719501, 1134958389215915674, 216164169472267996]), Fq::from_montgomery_limbs([11481921067854847814, 3619328605795306677, 1172215419425542958, 698824999301654900]), Fq::from_montgomery_limbs([5583148815732609314, 7533776866599928206, 4700764388317654893, 795419583657348713]), Fq::from_montgomery_limbs([17490171026965334038, 511945728425642245, 7365182481044577047, 220760401169961586])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([3475090391351524558, 14779509624823172685, 3424268588547377302, 807300922038386992]), Fq::from_montgomery_limbs([2661498283128546182, 8564296373141310570, 1331354831148546679, 288633548378759086]), Fq::from_montgomery_limbs([160646850906444279, 16524505359942069161, 907391002106299867, 559294066232203259]), Fq::from_montgomery_limbs([15868970648699916119, 4564623492190132505, 13103059063354872833, 100862674768271570])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([1221307603989354164, 12587043720970902174, 16895819776297027028, 145062209314500623]), Fq::from_montgomery_limbs([16353516398818965607, 14353195469809830563, 6413743319392341778, 328149786789847495]), Fq::from_montgomery_limbs([18408500173092127083, 15531422165208984882, 15085140826729156921, 838526002683321237]), Fq::from_montgomery_limbs([17044208833349483673, 4186851180160463186, 18439292304841373891, 635623871921935831])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([12010244824104902831, 7094652480399574006, 4750126738460582225, 989637526032941486]), Fq::from_montgomery_limbs([4441078329722014290, 13429060628884043553, 17809157578144273686, 434244385592794118]), Fq::from_montgomery_limbs([6991808242812880086, 9244601469821298803, 240701800791269362, 709808634005480046]), Fq::from_montgomery_limbs([13857085282532288295, 308678407453354502, 15922558612862651645, 851414952912951519])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([5101399957442677481, 2142578709995607628, 15743510483605305349, 666733543413083275]), Fq::from_montgomery_limbs([4873022314864281149, 13307090161474032822, 14158291996867903752, 938052837538358985]), Fq::from_montgomery_limbs([1546160817298626130, 10540049778787005713, 3368713709127751691, 363188968017269367]), Fq::from_montgomery_limbs([672262991009706902, 12218048109997218244, 13699765194488826580, 1084475947638507828])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([18346923840081698634, 12943712128874619670, 4019790911633783753, 1100400008744250128]), Fq::from_montgomery_limbs([17812255713702828327, 18006780541970109111, 15638439909761933062, 607605721282836799]), Fq::from_montgomery_limbs([2146046584044097439, 13101190276266477217, 13417007043729135623, 306909505181101092]), Fq::from_montgomery_limbs([5881505764977051707, 9027582737682954755, 13113110745761042063, 498156427767794980])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([18445494826303215741, 1922640032275348520, 18401753303151108255, 413700892364628288]), Fq::from_montgomery_limbs([5713551333083111944, 13466982107671483604, 18052718879288026086, 606241695332365536]), Fq::from_montgomery_limbs([5341312667566345417, 15999363884279236272, 3859963172427206256, 137512694474664211]), Fq::from_montgomery_limbs([17490177364963826654, 14543044352686070271, 16150001646614169348, 704698259553703393])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([9727568846190657427, 14417114472564400058, 9365197390786121627, 794983300027476088]), Fq::from_montgomery_limbs([12997373201110860726, 14246380874068335614, 13296665919577048738, 1098745640843188596]), Fq::from_montgomery_limbs([7228530868527339586, 15583029622716990094, 8861208517089803667, 82901497917931480]), Fq::from_montgomery_limbs([13638279809916295410, 128790733739477632, 8417886451161888027, 991255423238702330])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([11087968183222739640, 2587511469422769048, 14523312587696220059, 192146587408207716]), Fq::from_montgomery_limbs([8412996681904903641, 11887442821301638447, 3370639369565289246, 53949002610311715]), Fq::from_montgomery_limbs([14762391536874926895, 10740959434718252074, 1226825919833891779, 365160723178298573]), Fq::from_montgomery_limbs([1555330760834900970, 1518370310210703133, 1735267998098714592, 1025622291285303779])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([1334503499975428364, 10717052295534688524, 7361984650156075053, 844791857359624202]), Fq::from_montgomery_limbs([16941837112843173147, 2487213732723210497, 6266342779648955295, 833823163972637517]), Fq::from_montgomery_limbs([17244221202450562885, 9683927217285200288, 17625214279845872049, 72929072308819687]), Fq::from_montgomery_limbs([17322021997939023067, 12230087119796208396, 18396814271884812695, 813805950829206789])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([15948063285113474855, 10770603797800150235, 6677092062918475126, 1088103102296276139]), Fq::from_montgomery_limbs([7711244693099635983, 3166785488663936361, 4922456695483615993, 430831973502880121]), Fq::from_montgomery_limbs([3809367189852072520, 9855677685061821074, 945495584216248446, 909359350460583709]), Fq::from_montgomery_limbs([8110395815872458853, 1514592973182402061, 790829722054948037, 353129076761034824])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([4490522698778351596, 14224519981854920216, 17099540428194228219, 339422077308612769]), Fq::from_montgomery_limbs([5639095254854416487, 1620715418926540453, 2533378178940440961, 1219281352481947332]), Fq::from_montgomery_limbs([10638608741850236276, 6613656335866104958, 7688920349526656377, 267050381048915175]), Fq::from_montgomery_limbs([3036522849970263675, 6507669881427436695, 17574949570571358776, 1277705835314573728])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([2222484869463773519, 6808168746395796147, 4421285536548949511, 221502296849107896]), Fq::from_montgomery_limbs([13864906390918380841, 14542080963104347726, 4946615231209518707, 410716390051665697]), Fq::from_montgomery_limbs([17342164341678591250, 2157153117836804364, 17774122463652037556, 1045677158150316262]), Fq::from_montgomery_limbs([1897195111902571201, 7441808212794130262, 14230292566113962566, 158679422354435267])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([12385311968994581122, 13994070371431075240, 8808495601965357849, 1021378877363492133]), Fq::from_montgomery_limbs([6493128916407973417, 7997830985039481850, 7096965712368312908, 1047173662891619916]), Fq::from_montgomery_limbs([4284147259360490869, 16041408471489150031, 7607939514063442430, 829626684549401311]), Fq::from_montgomery_limbs([1856817747001420784, 16357946393175270201, 9210719327832581050, 1018175197760234391])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([5500145050367041469, 3840984581227276122, 3431832361289319237, 260564656886891183]), Fq::from_montgomery_limbs([14712945504944782403, 15039214861617765141, 11103751083365574273, 113689317515455733]), Fq::from_montgomery_limbs([701726807475653267, 14140055316542680948, 3011442975075019770, 584361997905323533]), Fq::from_montgomery_limbs([17748483580890358752, 10604246296825603311, 13033470142003819820, 599441163676514743])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([5299230594859812716, 16638780731660150925, 952927811712562861, 498189305785932392]), Fq::from_montgomery_limbs([4432890524542841769, 1996216122820571178, 12192741690714508643, 764076413945664713]), Fq::from_montgomery_limbs([13089352217465064175, 15801731950730062998, 16367845731547800506, 315925055121715682]), Fq::from_montgomery_limbs([4079387977856382544, 9219169523776319636, 17133435751310074522, 1287156460338158966])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([14473285560728073066, 3618147328828088415, 4933194636388348895, 391722132844625282]), Fq::from_montgomery_limbs([13555572770500462469, 12796156150384677031, 16297295557264104694, 523410635806816263]), Fq::from_montgomery_limbs([6170968086362616849, 306706920248086968, 4382856058195592988, 1226950348108880303]), Fq::from_montgomery_limbs([3093606516563139647, 4131257826299546810, 10588085520003095457, 1310373646887997506])])], + }, + optimized_arc: OptimizedArcMatrix::<39, 5, 195>::new_from_known([Fq::from_montgomery_limbs([9886223877583555338, 2726526174642559934, 4587790518566470505, 576729411659255749]), Fq::from_montgomery_limbs([8635683872171027649, 6178568763530680712, 4049298017970875225, 1010899895527016760]), Fq::from_montgomery_limbs([4386287284362214114, 15794275297560972982, 13426231751965312445, 1202171528338027358]), Fq::from_montgomery_limbs([748088700594287215, 1472010505444622065, 17517940238534715767, 284646916897302179]), Fq::from_montgomery_limbs([10279507610927218934, 8427605231324569630, 5256766482183491681, 599767801296570400]), Fq::from_montgomery_limbs([5616532683870270019, 16714573776517987780, 2780158541662869274, 82005381951989400]), Fq::from_montgomery_limbs([628047193644056282, 3081927050412275131, 16607349608647881262, 723666033729227034]), Fq::from_montgomery_limbs([4014053105906402474, 8516064025130570203, 16439212471763340654, 1066408903228028504]), Fq::from_montgomery_limbs([3781775891997454435, 16784197273788891439, 15993490775706321548, 1246974369195687342]), Fq::from_montgomery_limbs([13315871439997102610, 1360174578976506509, 1935727712649190133, 888928512483410116]), Fq::from_montgomery_limbs([8976641770861237410, 6687451940339132521, 18044907108310696377, 1207869807557250559]), Fq::from_montgomery_limbs([4528878922761055500, 7463187218610955446, 4533754848507645556, 35071527712858390]), Fq::from_montgomery_limbs([2054133897613963099, 8179564031063470525, 1531556284029346638, 874298192527556148]), Fq::from_montgomery_limbs([18305580017782407596, 2150793914184610589, 17311607174845242499, 959373557899881125]), Fq::from_montgomery_limbs([11483900964553043288, 12487129025031613244, 15391908241276224492, 269335905993702128]), Fq::from_montgomery_limbs([8338971145620331245, 12372781419517678375, 2199283600481834995, 349132078387032325]), Fq::from_montgomery_limbs([16711498854962897180, 964757925282058102, 2534475787702313401, 879174178299686832]), Fq::from_montgomery_limbs([9948612635577575267, 10310004629375851550, 14569008704673249814, 698796675030817938]), Fq::from_montgomery_limbs([11983101385647491113, 6756494718617323834, 3986787822213493305, 810568397631777742]), Fq::from_montgomery_limbs([263703597816264419, 5391923373962277868, 8069762938958691329, 167001460324522424]), Fq::from_montgomery_limbs([12719698031922087137, 3635206538516773241, 14946573674542408006, 904022619675467349]), Fq::from_montgomery_limbs([6762216158719169172, 9642199571024567935, 5142823812984968700, 1291046148927292666]), Fq::from_montgomery_limbs([16680204203505507730, 8087548591244649631, 15438619206653090081, 1223574451283768225]), Fq::from_montgomery_limbs([15843265781989514164, 11764842050278291695, 5504272762074655066, 1332848573377839351]), Fq::from_montgomery_limbs([14629863041087566865, 13982939885426451475, 4404573463578858817, 228759527459751766]), Fq::from_montgomery_limbs([5809286761889033537, 11277370821793444978, 3107117479578979614, 305735955848689987]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13948409934814415504, 9820154694698383592, 15339478710638889187, 228350902630534490]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9065604528638698957, 3194171905752976735, 3352166936878863002, 1231275645191263862]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8579200991377095094, 9015821969914095981, 3670786722209097686, 925402881763579823]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11761775895269121220, 12572917397999688032, 10698111778021992718, 739030648247632040]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1406476064536236033, 9641904169359584691, 209897974740814668, 1004730517253795328]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18342895263686664503, 17441455493733274041, 5057199659823690304, 1191886919996393979]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18290582194527069827, 6852353546873280582, 14232314971261025505, 754530050701193486]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6721150425319195661, 13696483494608803551, 14639895569983779179, 190432279900459470]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2285783420521743219, 14591994399938496304, 12535886408060618378, 501101710489306684]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7822724896156552074, 7689777522145170361, 9730977649721376401, 311055255784537528]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1834958024306476590, 16605000872934730848, 8734772715942251355, 1026168817960127241]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5790287081621506475, 18067297368696384877, 1971894623462079455, 497112957651892314]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8621725523835646269, 12965774417410118256, 14706095127353190822, 1142857683996139025]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15741284293667530319, 12915384592541106208, 10337602748724507139, 621400944646732378]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10418600921631639086, 13969232505211882397, 6670084530256782375, 589250133235990401]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13301798549602548743, 5096901969148881844, 14446280392699573069, 437782466408137787]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14260778386751756941, 15721044723566323721, 9992114336939362025, 1127453549788190537]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9374740633145639151, 2749992728162535287, 324605534042342541, 875415928381457928]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([267437928690707389, 15443945850723586497, 12627722626447870588, 76078095185201612]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10923993363806369263, 18267784178840739395, 14630481450219570438, 378947118067140053]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11403976482284459978, 16272983986590444793, 3765503922077751896, 79364539722273290]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11448721382876703681, 14847931759131246244, 7128092965784075415, 180922588002186450]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12703693405537318683, 17809616441104653297, 1356025434738010042, 678042696111256776]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1581134933636608728, 8974334562566747609, 13981094886159927949, 879338632538017255]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13448202253461902078, 6113850066861673560, 8363760165130703945, 430895863395699323]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11364646780735898548, 18310352822657651209, 1715448934469054774, 373623735103410086]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5160483194403952864, 5269789810582188597, 7949343741254368028, 648244985265401351]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2578613260896705768, 16973829270463026541, 1007269524128147481, 588832280601996335]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18113257874564708980, 4260053189158561988, 17013073166096369676, 79169829782754517]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11433643047469980018, 1276670802646402384, 7225445039450827835, 1320607862737647658]), Fq::from_montgomery_limbs([9049650314779674715, 15332775679178116922, 10916059016321665268, 1115159218126791192]), Fq::from_montgomery_limbs([5320499112936763732, 11250539854586634824, 12063947087263213252, 710935487070228339]), Fq::from_montgomery_limbs([18379608258942880321, 15727113804916673274, 10498320535108511002, 845002076776323646]), Fq::from_montgomery_limbs([6828593483180812035, 1682481325156526923, 14049047336459608184, 1126148273021080778]), Fq::from_montgomery_limbs([3872917422679565944, 1271915972458656550, 1092693023912110895, 1298968277402891756]), Fq::from_montgomery_limbs([7814132502258843917, 8078742423972593556, 8536158594561933049, 191277843487617954]), Fq::from_montgomery_limbs([5652311561512870887, 16495461651672765449, 11098657231551158518, 493087321946801171]), Fq::from_montgomery_limbs([6368409936062697439, 792796763844864197, 5610460501625398581, 546867399856191995]), Fq::from_montgomery_limbs([3038217149528838505, 8627484827600343283, 7414393357134479493, 985381996389905690]), Fq::from_montgomery_limbs([14953970136252134871, 295452924685135549, 11287279099077480718, 617093465173114131]), Fq::from_montgomery_limbs([140435627222783551, 17855535656574994648, 5022512547318532764, 473386213985532003]), Fq::from_montgomery_limbs([7030554896034226352, 6441059691989760702, 581099786512472761, 1269259459863271622]), Fq::from_montgomery_limbs([6770052323275442396, 12901743183408121797, 13004549993560303547, 969914125748537569]), Fq::from_montgomery_limbs([11435239377991792553, 14044046789306606033, 11369816462011584822, 1239930404010674345]), Fq::from_montgomery_limbs([2621636762951244377, 7758290588105338214, 14625731574391580682, 7696703746211481]), Fq::from_montgomery_limbs([8270493924131469556, 15946263820341678216, 6122109191607485742, 1119062509985100783]), Fq::from_montgomery_limbs([11252124749266599346, 8413749501404755931, 9936257142296575431, 189818330075783365]), Fq::from_montgomery_limbs([1537275707366966513, 2232381660897701103, 2870196216416932989, 1271177660936312287]), Fq::from_montgomery_limbs([1398814984843324301, 15240858180305901997, 14386262707998656254, 1102388553837536368])]), + } +} From 33d972c6c0b4783da4d68974a6cd20e9e561246e Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 2 Apr 2024 18:24:00 -0400 Subject: [PATCH 48/54] poseidon377: rate 5 --- poseidon377/src/hash.rs | 90 ++++++++++++++++---------------- poseidon377/src/lib.rs | 8 +-- poseidon377/src/params.rs | 27 +--------- poseidon377/src/params/rate_5.rs | 30 +++++++++++ 4 files changed, 81 insertions(+), 74 deletions(-) create mode 100644 poseidon377/src/params/rate_5.rs diff --git a/poseidon377/src/hash.rs b/poseidon377/src/hash.rs index 0e2a814..319c9f2 100644 --- a/poseidon377/src/hash.rs +++ b/poseidon377/src/hash.rs @@ -28,19 +28,19 @@ pub fn hash_4(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq)) -> Fq { state.n_to_1_fixed_hash(&[*domain_separator, value.0, value.1, value.2, value.3]) } -// /// Hash five [`Fq`] elements with the provided `domain_separator`. -// pub fn hash_5(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq)) -> Fq { -// let params = &crate::RATE_5_PARAMS; -// let mut state = Instance::new(params); -// state.n_to_1_fixed_hash(vec![ -// *domain_separator, -// value.0, -// value.1, -// value.2, -// value.3, -// value.4, -// ]) -// } +/// Hash five [`Fq`] elements with the provided `domain_separator`. +pub fn hash_5(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq)) -> Fq { + let params = &crate::RATE_5_PARAMS; + let mut state = Instance::new(params); + state.n_to_1_fixed_hash(&[ + *domain_separator, + value.0, + value.1, + value.2, + value.3, + value.4, + ]) +} // /// Hash six [`Fq`] elements with the provided `domain_separator`. // pub fn hash_6(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq, Fq)) -> Fq { @@ -184,42 +184,42 @@ mod test { assert_eq!(output, expected_output); } - // #[test] - // fn rate_5() { - // let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); + #[test] + fn rate_5() { + let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); - // let input = ( - // Fq::from_str( - // "7553885614632219548127688026174585776320152166623257619763178041781456016062", - // ) - // .unwrap(), - // Fq::from_str( - // "2337838243217876174544784248400816541933405738836087430664765452605435675740", - // ) - // .unwrap(), - // Fq::from_str( - // "4318449279293553393006719276941638490334729643330833590842693275258805886300", - // ) - // .unwrap(), - // Fq::from_str( - // "2884734248868891876687246055367204388444877057000108043377667455104051576315", - // ) - // .unwrap(), - // Fq::from_str( - // "5235431038142849831913898188189800916077016298531443239266169457588889298166", - // ) - // .unwrap(), - // ); + let input = ( + Fq::from_str( + "7553885614632219548127688026174585776320152166623257619763178041781456016062", + ) + .unwrap(), + Fq::from_str( + "2337838243217876174544784248400816541933405738836087430664765452605435675740", + ) + .unwrap(), + Fq::from_str( + "4318449279293553393006719276941638490334729643330833590842693275258805886300", + ) + .unwrap(), + Fq::from_str( + "2884734248868891876687246055367204388444877057000108043377667455104051576315", + ) + .unwrap(), + Fq::from_str( + "5235431038142849831913898188189800916077016298531443239266169457588889298166", + ) + .unwrap(), + ); - // let output = hash_5(&domain_sep, input); + let output = hash_5(&domain_sep, input); - // let expected_output = Fq::from_str( - // "66948599770858083122195578203282720327054804952637730715402418442993895152", - // ) - // .unwrap(); + let expected_output = Fq::from_str( + "66948599770858083122195578203282720327054804952637730715402418442993895152", + ) + .unwrap(); - // assert_eq!(output, expected_output); - // } + assert_eq!(output, expected_output); + } // #[test] // fn rate_6() { diff --git a/poseidon377/src/lib.rs b/poseidon377/src/lib.rs index 639c25f..d26d479 100644 --- a/poseidon377/src/lib.rs +++ b/poseidon377/src/lib.rs @@ -5,7 +5,7 @@ mod hash; mod params; // pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5, hash_6, hash_7}; -pub use hash::{hash_1, hash_2, hash_3, hash_4}; +pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5}; /// Parameters for the rate-1 instance of Poseidon. pub const RATE_1_PARAMS: PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> = params::rate_1::rate_1(); @@ -20,8 +20,10 @@ pub const RATE_3_PARAMS: PoseidonParameters<4, 3, 16, 9, 39, 4, 156, 31> = param pub const RATE_4_PARAMS: PoseidonParameters<5, 4, 25, 16, 39, 5, 195, 31> = params::rate_4::rate_4(); -// /// Parameters for the rate-5 instance of Poseidon. -// pub static RATE_5_PARAMS: Lazy> = Lazy::new(params::rate_5); +/// Parameters for the rate-5 instance of Poseidon. +pub static RATE_5_PARAMS: PoseidonParameters<6, 5, 36, 25, 39, 6, 234, 31> = +params::rate_5::rate_5(); + // /// Parameters for the rate-6 instance of Poseidon. // pub static RATE_6_PARAMS: Lazy> = Lazy::new(params::rate_6); // /// Parameters for the rate-7 instance of Poseidon. diff --git a/poseidon377/src/params.rs b/poseidon377/src/params.rs index 11feb55..635e28c 100644 --- a/poseidon377/src/params.rs +++ b/poseidon377/src/params.rs @@ -2,32 +2,7 @@ pub mod rate_1; pub mod rate_2; pub mod rate_3; pub mod rate_4; - -// /// Parameters for the rate-5 instance of Poseidon. -// pub fn rate_5() -> PoseidonParameters { -// PoseidonParameters { -// M: 128, -// t: 6, -// arc: ArcMatrix::new(39, 6, vec![Fq::from_montgomery_limbs([11114527869315019992, 204777424233041404, 11091912519069240090, 121969426625488706]), Fq::from_montgomery_limbs([11602548353808217299, 6197238791893869094, 15622579320964543388, 1298930792120594487]), Fq::from_montgomery_limbs([838896996119702820, 9307552859605174720, 8035142733069793771, 274230695041989171]), Fq::from_montgomery_limbs([3026923182969617970, 17802669379857452552, 12317599963821296502, 1025681681724348483]), Fq::from_montgomery_limbs([5608950751956253759, 13524340746668180438, 15318090696011006995, 777019565914500344]), Fq::from_montgomery_limbs([1158035626778037273, 17664260243497899213, 16296355254226759288, 950557495952381678]), Fq::from_montgomery_limbs([11235491782021601934, 3148198093287396523, 17540068057551648414, 246938399961631601]), Fq::from_montgomery_limbs([17389082769676787279, 4715116371725704005, 680633748837086801, 1023507596971258305]), Fq::from_montgomery_limbs([7398967334233665984, 13695483063991186800, 18171031240540141567, 1071188377250033509]), Fq::from_montgomery_limbs([8901013324099486427, 14221538804433703579, 421845258270117661, 1118364576196477055]), Fq::from_montgomery_limbs([3792995620986947754, 8295286409031689804, 7023787899825757992, 899023674461718667]), Fq::from_montgomery_limbs([8793784762096018942, 15222981485936247095, 17829285903963587033, 104381350073974926]), Fq::from_montgomery_limbs([11268502072074030331, 4494658873172678747, 10565307326465463378, 784696444351308107]), Fq::from_montgomery_limbs([13330824150800116849, 4890131204868069348, 16795432331983276560, 678123243378284364]), Fq::from_montgomery_limbs([16154775053781645033, 5239747136963640569, 16611876759537507645, 759623577554638126]), Fq::from_montgomery_limbs([8392188723943358220, 16791142993973140668, 13297749232586734563, 426701908934618073]), Fq::from_montgomery_limbs([17606532937509352288, 2853753027669231277, 1878611917293492305, 643977045852461225]), Fq::from_montgomery_limbs([5784332265294899224, 10677876800438676900, 18301919197560353192, 1242300655560067148]), Fq::from_montgomery_limbs([11412543805884713089, 4404535555399600518, 4605611364617586616, 706261397170793623]), Fq::from_montgomery_limbs([2724614443579353257, 12190950292326203757, 12944786940879400957, 90707148364678769]), Fq::from_montgomery_limbs([16664686769040599810, 7492639236725157146, 1787480043672337070, 1043615315016757716]), Fq::from_montgomery_limbs([4392261116480034202, 16508253691140740970, 1257682754845069496, 1301148167322522764]), Fq::from_montgomery_limbs([139213556258184346, 16303671450556136664, 10342805884525342231, 508792166529776861]), Fq::from_montgomery_limbs([14643711485787161846, 5395142180975966192, 12467589421402803020, 144762579288366866]), Fq::from_montgomery_limbs([15255437222491521014, 14721462158275437977, 2057221655333534074, 1325734657361576891]), Fq::from_montgomery_limbs([10286355773254745653, 8339495471482876116, 7453999146298511805, 300469360378533737]), Fq::from_montgomery_limbs([2229249064542236808, 3252881241602061127, 17948673955112458282, 251981777265729122]), Fq::from_montgomery_limbs([1422075247142054873, 8352700063552546507, 3488191142699771311, 539185901306414217]), Fq::from_montgomery_limbs([12740149804027925426, 5586599109404648568, 8527372678942371978, 115816006301850856]), Fq::from_montgomery_limbs([6406078249694103685, 13837513268450501788, 17900428335249812847, 459347554819743617]), Fq::from_montgomery_limbs([456851906250247004, 7370389193990924655, 1807458787636143704, 398667578735753852]), Fq::from_montgomery_limbs([9788417460696232352, 5540502179845655224, 11753539559261255021, 1240756247017913507]), Fq::from_montgomery_limbs([14537927489871028819, 8847897852622601733, 7522585085117894620, 375913426199509068]), Fq::from_montgomery_limbs([14308316144026398062, 8381587303995226137, 14032256210407832529, 689401812725544360]), Fq::from_montgomery_limbs([13627669936560791680, 15960253582647842471, 10281350312743054371, 150904336199250478]), Fq::from_montgomery_limbs([5265938544355635125, 14011142295917522514, 3457190839889849022, 965417711506858707]), Fq::from_montgomery_limbs([16926111367909514992, 15173362371822436547, 14933443732208301060, 434526341180358604]), Fq::from_montgomery_limbs([14967648454927618569, 3291387031545538855, 8588581828915048287, 792649357850563702]), Fq::from_montgomery_limbs([15353334048989602273, 17774561716206146119, 15636104655753091025, 1121698680267776671]), Fq::from_montgomery_limbs([7352303644457020849, 11873784571663633568, 14627146015402136109, 1299084319993956489]), Fq::from_montgomery_limbs([16915421385818843283, 6574617383150910264, 11422646729677132251, 929867690867770500]), Fq::from_montgomery_limbs([2727877432502627942, 15580341544991113874, 3099990664581009583, 1240423234600344359]), Fq::from_montgomery_limbs([14109846450233510521, 14674455181378475527, 1052605710857317529, 1170659366228378647]), Fq::from_montgomery_limbs([1487646680354896463, 4928492219250082356, 5905478662916155907, 544460360269702126]), Fq::from_montgomery_limbs([6341346323512196011, 5734973448691058326, 7525099077854354763, 538464447227753960]), Fq::from_montgomery_limbs([2970148736135554232, 8050550381279637505, 12092286293721047612, 120114654914049590]), Fq::from_montgomery_limbs([17316363606963256567, 5533183240747888359, 585663312963257979, 139248346646491863]), Fq::from_montgomery_limbs([10174847279006068180, 2997987744513078474, 10464913671214968471, 524965683820736700]), Fq::from_montgomery_limbs([54341264868687362, 5421004392946502713, 747264896093234142, 211411280351915374]), Fq::from_montgomery_limbs([5185489921536036071, 4704724361069451071, 4676129525140851232, 1120503850587310053]), Fq::from_montgomery_limbs([5188148333232019565, 9844624880738531087, 11083931443628660795, 48712959222331590]), Fq::from_montgomery_limbs([18132794403501755308, 4996277675320572821, 8426233139227882210, 1136120772510480448]), Fq::from_montgomery_limbs([6688066783162319874, 16812397130378746446, 1563788939072390863, 94078802559039860]), Fq::from_montgomery_limbs([7277685347797685095, 16873547601164190596, 14751852483076367538, 14675244398420571]), Fq::from_montgomery_limbs([10079144247912409743, 8202707283781100239, 14357029383013329671, 1339785338742424059]), Fq::from_montgomery_limbs([9634622379571234742, 10124148039561860757, 12959569757638734172, 595623221777036788]), Fq::from_montgomery_limbs([12438115909232101952, 6692144523221973376, 98330004458373230, 1289698894538748039]), Fq::from_montgomery_limbs([12584838405775095951, 2233721579825914515, 4679507125597853910, 1005456515702813230]), Fq::from_montgomery_limbs([3938302556839502700, 9759499277811028830, 3296175630346274937, 981342338929693494]), Fq::from_montgomery_limbs([13584588304331907697, 14901744669564308257, 10189694356059299380, 146229118527659864]), Fq::from_montgomery_limbs([7977203115766932089, 5348595991272040666, 7916441407055787565, 414015970121354410]), Fq::from_montgomery_limbs([6344869167182666748, 87274177081813667, 3736796951764034882, 288116208326542090]), Fq::from_montgomery_limbs([6782489206655080598, 619325409304332178, 17888946015733998246, 1225153807687734600]), Fq::from_montgomery_limbs([2843050123299780857, 1857078695470833828, 13790121543731752592, 415443237864035468]), Fq::from_montgomery_limbs([8596983925472337433, 7326755327579826593, 12756860599564365858, 584181157037447809]), Fq::from_montgomery_limbs([6624979411473108702, 17481608711835432073, 9326170883700217913, 284274034447147537]), Fq::from_montgomery_limbs([13805074074198365820, 16654885628813400888, 11514371967468509966, 343666476001683468]), Fq::from_montgomery_limbs([13412135478858616067, 17972587362145489837, 3471900644097496495, 1303815283631151979]), Fq::from_montgomery_limbs([5393982013204945472, 2134584020773499203, 673466067189783026, 383197328076308992]), Fq::from_montgomery_limbs([12690627402887821729, 10714862615705492405, 1068799421694466319, 1005549471897715563]), Fq::from_montgomery_limbs([2794121834599689269, 9403898257934234871, 15645249730625359588, 717133247159915483]), Fq::from_montgomery_limbs([3750258937835721096, 2056713754904073328, 13343956241265388204, 978687562686928642]), Fq::from_montgomery_limbs([6693505246665395198, 321305738310940343, 8242276846147342531, 437988437080106004]), Fq::from_montgomery_limbs([13067453044702788796, 16549020754244348848, 14781963588087090141, 661082564029228628]), Fq::from_montgomery_limbs([17540644026388671794, 8922891784689421140, 9379310092907018870, 765574007581740165]), Fq::from_montgomery_limbs([17168415590631158212, 4967864494403905256, 8557026071391060461, 1317676192546642661]), Fq::from_montgomery_limbs([15849602569050873376, 937817756067670930, 9256527416398591608, 860235003543784933]), Fq::from_montgomery_limbs([7543632918105704930, 12541439592576801019, 13144951089707956772, 41901740621632050]), Fq::from_montgomery_limbs([6730944509314595369, 6308132304102632805, 9824188815073657306, 947447793188743941]), Fq::from_montgomery_limbs([8027042707746962490, 11823228291757902961, 13058185285098764358, 336308269362966457]), Fq::from_montgomery_limbs([17668761980666590381, 916900473222809342, 9032902696647999656, 1206798077709834757]), Fq::from_montgomery_limbs([2575943430919555647, 6982422138755698722, 17906452816315642240, 1040285465480518609]), Fq::from_montgomery_limbs([4676245288580428747, 1286234536026906032, 15834455733024512963, 173462824491942276]), Fq::from_montgomery_limbs([14308731880491479014, 10228826088867441356, 15499426016798380851, 1315964678542897961]), Fq::from_montgomery_limbs([6124462188383628200, 13994025204959010105, 2282493343669790508, 1065454428927664041]), Fq::from_montgomery_limbs([988926009518969200, 15417015929087482085, 5998393954402084482, 540400810650613669]), Fq::from_montgomery_limbs([5764104729040907699, 2863356645440240472, 9968438238837920675, 633210980814249702]), Fq::from_montgomery_limbs([10763147411954484876, 4870204607771977448, 6480512614473978867, 683494642222622007]), Fq::from_montgomery_limbs([4440852407455748277, 8762659822349541955, 18263541095190090147, 585043470445066748]), Fq::from_montgomery_limbs([16911785709988001751, 3581411532501811046, 1478440133608885243, 1164133149174128766]), Fq::from_montgomery_limbs([1426558755494224529, 12516949196047728033, 17132752269246428290, 356208126695477134]), Fq::from_montgomery_limbs([14896569372479444141, 1449669928198367982, 12457553693255423792, 902793672204828469]), Fq::from_montgomery_limbs([3369226999454999348, 11158810537103910265, 2808006375302756684, 719861372102939033]), Fq::from_montgomery_limbs([3246518112410208054, 13944200025301723446, 764003656536121000, 81035000333546312]), Fq::from_montgomery_limbs([480604143483617458, 15146610571181935768, 10342031106972296681, 321939937748541484]), Fq::from_montgomery_limbs([3823315055653922623, 1544133407778019995, 8339678284115967093, 340405582859069416]), Fq::from_montgomery_limbs([14521487749042353090, 2741200029829353725, 15404416537140680175, 224317571319525964]), Fq::from_montgomery_limbs([9111107875572394601, 14812080039988879021, 11740909323457275498, 1142849951174245079]), Fq::from_montgomery_limbs([6315394863492521922, 15290263181571711160, 8361458214310627912, 1120819345406699978]), Fq::from_montgomery_limbs([7541199882669497715, 686266139368081655, 3486408502495110410, 305571836806477895]), Fq::from_montgomery_limbs([11194602393992127889, 4823164490358819269, 2963098888089596977, 127467430759375185]), Fq::from_montgomery_limbs([13401323458715176749, 7526519102807969052, 11500838828688844175, 593796521014294359]), Fq::from_montgomery_limbs([11177320531756391055, 4080502600305034702, 2571892269998531885, 231632967099830080]), Fq::from_montgomery_limbs([6149939798770351609, 18287517033582086432, 5338242308958263460, 328048786757923732]), Fq::from_montgomery_limbs([15458540156643766751, 1400997897599319292, 7413209173172832967, 100478538984542434]), Fq::from_montgomery_limbs([15303231637131188474, 12210183127521607378, 16044977891049973821, 772905068623323043]), Fq::from_montgomery_limbs([10785654084122827601, 2211259386857104245, 16649012282872525368, 102071913196144291]), Fq::from_montgomery_limbs([2881174213450719659, 12014311740982782554, 12475890147035428875, 1060652822280359969]), Fq::from_montgomery_limbs([5168530618588372608, 12645871097945809310, 12679814118712019422, 757227039744328626]), Fq::from_montgomery_limbs([16723583453861051889, 13217434832318564597, 17167491729232777306, 750899259017645156]), Fq::from_montgomery_limbs([11975166328753770827, 5021170043599009847, 8130600622535160737, 1210833522054518385]), Fq::from_montgomery_limbs([11828331664533985829, 5744074093878888180, 13572294236110601484, 741336438516605705]), Fq::from_montgomery_limbs([9092803352234031294, 16991861971006998540, 12590210254184326397, 163020812219371078]), Fq::from_montgomery_limbs([15150825267514654715, 7582420113892720781, 11021538006069969553, 514128026898157287]), Fq::from_montgomery_limbs([257730274965307694, 15941247979209339081, 12550718099618824836, 926747662553501853]), Fq::from_montgomery_limbs([16021060490791077863, 18399937961097236925, 12479381244109581994, 958161696800711416]), Fq::from_montgomery_limbs([5656070927198127166, 13673864766172609613, 7854541344260335717, 433926247460842256]), Fq::from_montgomery_limbs([3081498096075015625, 5114063565662711844, 6016747140135578647, 200080044486646757]), Fq::from_montgomery_limbs([8668474263754820542, 5150418979667712870, 671591932121595684, 387641243292135089]), Fq::from_montgomery_limbs([9867452618101888436, 9573741750129271560, 11870983264768155164, 672361345937806490]), Fq::from_montgomery_limbs([2794280237383234509, 8511976920647235700, 12240900835121281355, 5009064961478580]), Fq::from_montgomery_limbs([12481235113884027566, 5693342786405429686, 2966752082111199656, 878902670166036876]), Fq::from_montgomery_limbs([14240267055971916647, 10396848562787560462, 5518035894864045572, 1179757559875500073]), Fq::from_montgomery_limbs([14962737666094847614, 10739908350874416157, 4895620174233055664, 321666060863471221]), Fq::from_montgomery_limbs([13445218619283341504, 5092610038400904148, 2968853296034188758, 835336201072079364]), Fq::from_montgomery_limbs([10233520240960919680, 5959452117994239475, 16491909337703133675, 891169556062643417]), Fq::from_montgomery_limbs([2834888386861055650, 7604409413887743592, 13030269578665703653, 401509353262871810]), Fq::from_montgomery_limbs([2704145273060684739, 1774123728738332116, 4451847378072935255, 539946861082459083]), Fq::from_montgomery_limbs([10338036189104724495, 5463305924257293228, 7871975511799681863, 487399285329040504]), Fq::from_montgomery_limbs([10282365810457753854, 4875136836869467005, 8167065600132017137, 612538811597081600]), Fq::from_montgomery_limbs([11956552275263932784, 2910596066147194639, 1653383919024312564, 917094813414419045]), Fq::from_montgomery_limbs([7847733681848392968, 17061053188234229069, 4327647852405514270, 201342973946798656]), Fq::from_montgomery_limbs([12402208752860149978, 5942639276189211897, 8650838259976493487, 93208955821879002]), Fq::from_montgomery_limbs([4359686047010863164, 1740657266406964854, 14400992892832573055, 600962517221943370]), Fq::from_montgomery_limbs([7871068409103488505, 12092947390480615881, 15236005069504836910, 1219304791403246439]), Fq::from_montgomery_limbs([2331767746054493290, 15439688574017229593, 2624671321035938496, 196664992671490503]), Fq::from_montgomery_limbs([6984766032236094336, 4199333161186836907, 6966733218962904660, 828131141266688191]), Fq::from_montgomery_limbs([18198492961367884206, 4075548382228621731, 7120869279096377960, 1112174665656009203]), Fq::from_montgomery_limbs([15188354035011941657, 1528404887014191153, 7644022124588184416, 656794906545005738]), Fq::from_montgomery_limbs([3703805022276205448, 11543145569483730813, 2304402099650902209, 823592775762696951]), Fq::from_montgomery_limbs([5142351354334489771, 10763765166551123043, 17450746794319983955, 960731944967042935]), Fq::from_montgomery_limbs([9913254528380233461, 6379270468481813387, 4130926869587487310, 610795545512520772]), Fq::from_montgomery_limbs([17898556710819263490, 7911122569140186326, 5516730092468208963, 664379227085230598]), Fq::from_montgomery_limbs([10616973143833638020, 17471880607893344822, 1128145204777244976, 337394536883295972]), Fq::from_montgomery_limbs([6661544590953239315, 15146532782491929291, 4755596764817736061, 545820584329603194]), Fq::from_montgomery_limbs([60806500798869004, 15736128091162195183, 5715198746929749021, 446174552562569645]), Fq::from_montgomery_limbs([5425873532207787318, 7464087132630945791, 5476589627464471901, 457480423296188143]), Fq::from_montgomery_limbs([9013993650827414321, 2350031823838640206, 11034300868488958302, 388596567345343643]), Fq::from_montgomery_limbs([6468567377966650967, 13590648265578243490, 15927509019046836214, 1009388599057851509]), Fq::from_montgomery_limbs([172016905197246847, 4035387207966104057, 211325131413472824, 1280387199047629664]), Fq::from_montgomery_limbs([7689408096630419675, 14584961804097092641, 1127508416484176885, 171502318968879609]), Fq::from_montgomery_limbs([9294855872887423209, 2005827460175726472, 16783720225277999740, 1082009637379471203]), Fq::from_montgomery_limbs([17016200436476421122, 12639043105124250806, 6582000444620236323, 508699111294885791]), Fq::from_montgomery_limbs([14725203266650011970, 13877962155717739891, 9513649462380557047, 642461852581041542]), Fq::from_montgomery_limbs([9787931489031096184, 7902836596315130785, 78997879637635390, 694120778750553576]), Fq::from_montgomery_limbs([17889392554162858882, 342322215215622448, 4493824746279576258, 312168636607671093]), Fq::from_montgomery_limbs([8140513347694048696, 12902641943590609873, 14714848264461122064, 1334963605704347157]), Fq::from_montgomery_limbs([13240131887967600078, 4407633827305492594, 15540185952445554130, 68037993503280515]), Fq::from_montgomery_limbs([10497793217508245191, 888682325286928065, 15370448865727419266, 733754751125624627]), Fq::from_montgomery_limbs([7740533852108866287, 17937493023745474932, 7773801956856873664, 504241230363210440]), Fq::from_montgomery_limbs([11961891551527755983, 17934542229987203026, 1103543868067501932, 687591834971622190]), Fq::from_montgomery_limbs([4127100989690868033, 8900195718942322911, 8226770865992890280, 985029699319544839]), Fq::from_montgomery_limbs([8227296419732771358, 16053490579720323354, 3654951897271203554, 1041079676339451632]), Fq::from_montgomery_limbs([8010548121403948512, 1275465025143581354, 2160211023041782235, 1189169285314754196]), Fq::from_montgomery_limbs([7530207327455925553, 5703304996823784226, 6548643313601850639, 827356749854490373]), Fq::from_montgomery_limbs([8316601172635772109, 12370440707468203196, 2939769182126754327, 753180078630191546]), Fq::from_montgomery_limbs([1143377137813871993, 17312593164165222318, 13705553886161524318, 941885898262021576]), Fq::from_montgomery_limbs([2112728878057216642, 3892761102962286658, 11417348492657537819, 735668726979811860]), Fq::from_montgomery_limbs([16782576336846005593, 3624413749987727914, 17968976872659530354, 487897895994872800]), Fq::from_montgomery_limbs([2484948819702640096, 5387963240223549977, 12687920099134049563, 883350989149367893]), Fq::from_montgomery_limbs([2858482485641078244, 2714093515401288033, 10455809282530923083, 751664744246651868]), Fq::from_montgomery_limbs([13617000549064485510, 4455000600207656914, 12777124443685982279, 512862262303044909]), Fq::from_montgomery_limbs([10570187078077272513, 15758514759732880612, 10690894638211880846, 465609433405901497]), Fq::from_montgomery_limbs([13236383050663721729, 12125155130370039041, 17253356752093433548, 232625893933277711]), Fq::from_montgomery_limbs([757191121931270989, 9786533229648281558, 7506322761488798421, 219466670969587686]), Fq::from_montgomery_limbs([11502539180279016827, 10976808592365411679, 14518853469755275814, 189651093510465237]), Fq::from_montgomery_limbs([7406145050063996705, 5433107506103268286, 4579059832807850831, 292839512595959393]), Fq::from_montgomery_limbs([242050570766254477, 16090627413832777930, 8503088905690880687, 844834299854905528]), Fq::from_montgomery_limbs([15972066311454464627, 12186767479971029668, 2392334865506711034, 617078040284954179]), Fq::from_montgomery_limbs([6210271142236644282, 6562036542656589429, 8025274330376993547, 762526438011303745]), Fq::from_montgomery_limbs([14753366313850022795, 5437791126426953356, 14245062222537079752, 150913805242227000]), Fq::from_montgomery_limbs([4807021976023523388, 16710746776370779475, 7473038774703206777, 172363022129389231]), Fq::from_montgomery_limbs([7874676450184753436, 2949898094916075783, 630009569754295782, 934898795281709342]), Fq::from_montgomery_limbs([2596733933911644291, 18211864913609597189, 669972403590796856, 1007790356294249019]), Fq::from_montgomery_limbs([8847285884406092349, 15810443671218046899, 781303087795509610, 175334333513747495]), Fq::from_montgomery_limbs([5611124786858759575, 7741270494085822523, 1204252626273700461, 831434023402198326]), Fq::from_montgomery_limbs([17024841864111709876, 10953422139928438, 7108870425049447348, 867000474059877218]), Fq::from_montgomery_limbs([17254710881283625253, 13619503273421245826, 16524833801283537459, 867017638279036320]), Fq::from_montgomery_limbs([3047689304468185211, 4544400348474807371, 3340017855267764578, 1089932391947236624]), Fq::from_montgomery_limbs([944987404414691783, 7324130194857674958, 14960179948619727115, 970290030783854962]), Fq::from_montgomery_limbs([8156639230679108247, 17055081218862987306, 3045209940380371184, 1025132464373554760]), Fq::from_montgomery_limbs([18254963138764984051, 12469634773213013819, 6758329371646179128, 349904494647494862]), Fq::from_montgomery_limbs([6795371985529952899, 17895939878048277876, 16632557265478858928, 387059669716455908]), Fq::from_montgomery_limbs([1318357771340990990, 12994552359569230566, 16705716531436318589, 763697275022015004]), Fq::from_montgomery_limbs([16465052430714272962, 13602787326604775722, 15751371050932720313, 138014004592597966]), Fq::from_montgomery_limbs([15825638165970940054, 9332212474670848079, 7882594046477316711, 290829412130665018]), Fq::from_montgomery_limbs([6362195239856311490, 4780237228875137807, 14782630189115640960, 704272740049173340]), Fq::from_montgomery_limbs([6559278659646672166, 6801036849757997540, 8000231443027455180, 656562251428831486]), Fq::from_montgomery_limbs([913435484006780831, 4148347286870754245, 15429895160407091360, 481581552746677021]), Fq::from_montgomery_limbs([3201617625256301842, 17959683725889804366, 12477328746136434592, 804751930331318023]), Fq::from_montgomery_limbs([8260268643263772682, 564990144864143113, 3819503561945572420, 589166794945624703]), Fq::from_montgomery_limbs([1468345889510338758, 12133722777278260983, 2225753638037198615, 983608944845547502]), Fq::from_montgomery_limbs([16667974706419349718, 12656033986103589392, 16476477987437165475, 328446031568129583]), Fq::from_montgomery_limbs([10832018960089362233, 15872202042944916671, 1542413852742137668, 856769655034004351]), Fq::from_montgomery_limbs([1248584674224513873, 10955885710253485131, 690903013823109733, 586986955236732406]), Fq::from_montgomery_limbs([7801056996972321718, 10731441130229109668, 1309104763613854723, 168690751356355485]), Fq::from_montgomery_limbs([863448993500386948, 12860067037622976516, 4075953973254780281, 1092718826088125370]), Fq::from_montgomery_limbs([4083664853681447299, 16294486273605038844, 13502684468641213280, 1231917587532627983]), Fq::from_montgomery_limbs([17640823880561253607, 17906844028095875120, 16598825086926066591, 1259468978780670799]), Fq::from_montgomery_limbs([3915912471832963150, 2878160052333009121, 5137491367309860490, 525959498882725072]), Fq::from_montgomery_limbs([624108744920628033, 7222337173749652537, 6177234009439253836, 1305879330650409183]), Fq::from_montgomery_limbs([4047186108818890838, 8293278676301284463, 45421248765572143, 11849077013826147]), Fq::from_montgomery_limbs([13734838437817111564, 14067107962177066014, 6283538344938866018, 943068615468766850]), Fq::from_montgomery_limbs([9459753653362225504, 13412221550119657532, 11719554885145159458, 1038210702444171410]), Fq::from_montgomery_limbs([17258590752825572441, 4422385439615665045, 10963985232294213328, 673097344483052623]), Fq::from_montgomery_limbs([4350910935437581306, 17071656780821887075, 17526744607642225290, 489524084357985818]), Fq::from_montgomery_limbs([8703107470067448452, 734592437454660319, 6370216058631913860, 984849913832896286]), Fq::from_montgomery_limbs([15847437253128917127, 13204151715277535095, 13151742340803361913, 492775982398767260]), Fq::from_montgomery_limbs([13378140148769271177, 11023068523390522139, 1729259508144916727, 998491139322015796]), Fq::from_montgomery_limbs([15868115462640964898, 5808184910810487816, 17891106563868657547, 1273423536878729280]), Fq::from_montgomery_limbs([17498572932499506726, 4915375148198704347, 16526318329827242193, 172885368041045335]), Fq::from_montgomery_limbs([12175858961476635194, 8395097384299796850, 16561947957716644135, 118811035529307344]), Fq::from_montgomery_limbs([1364632949773972783, 5616500288305274826, 2744828291285230257, 1337220218752536168]), Fq::from_montgomery_limbs([7125704632582034340, 2413935880315792634, 16253134495760827214, 1013353907442898755]), Fq::from_montgomery_limbs([9926413936648370716, 9286244748248440505, 5620697470790885637, 1050126432920929832]), Fq::from_montgomery_limbs([2286190222160729638, 1205027650655862007, 284571302335235840, 754838472987631454]), Fq::from_montgomery_limbs([18032942241472576701, 12877723516371231014, 5304401947346162660, 638292803799023432]), Fq::from_montgomery_limbs([1301734909908791963, 3999021096443686109, 8224194566860360743, 975889756225576945]), Fq::from_montgomery_limbs([13137758236377688944, 15164889622744579310, 9510882901247182860, 507443416341514201]), Fq::from_montgomery_limbs([7442629497476523514, 15402336932582436695, 12267702252685663951, 406181490859224216]), Fq::from_montgomery_limbs([3020913173034234370, 7615906519537783167, 14373843007930618441, 268952515824125262]), Fq::from_montgomery_limbs([8510711668693637739, 16478737597936355688, 4962621450185609628, 274948738817040348]), Fq::from_montgomery_limbs([175794307933344111, 2355200265651483892, 17868773626579092521, 52492857067069690]), Fq::from_montgomery_limbs([13918504549178190575, 13563258972352289042, 5310731325887509548, 465559440844068311])]), -// mds: MdsMatrix::from_elements(vec![Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976])]), -// alpha: Alpha::Exponent(17), -// rounds: RoundNumbers {r_P: 31, r_F: 8}, -// optimized_mds: OptimizedMdsMatrices { -// M_hat: SquareMatrix::new(5, 5, vec![Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976])]), -// v: Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565])]), -// w: Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565])]), -// M_prime: SquareMatrix::new(6, 6, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976])]), -// M_doubleprime: SquareMatrix::new(6, 6, vec![Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([15152119682022281684, 2079168917784381610, 8548836536267236340, 524962922610130041]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16770218796354446865, 6164915921600418774, 18434642018604219177, 984431242893424161]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12257484635811173124, 3332345693021229804, 9856107590709416500, 1159223252431020322]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9979132349322887614, 3961848182433907151, 8799570660063224410, 475862931364908156]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3872788615927669352, 15152509537124089722, 5205890896288656861, 1231307161030894178]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), -// M_inverse: SquareMatrix::new(6, 6, vec![Fq::from_montgomery_limbs([9423078532813425529, 2444734831186772378, 13312700987643289865, 1248785285043953466]), Fq::from_montgomery_limbs([17268489821349265988, 4381498102126941915, 18059594369778317098, 58369093700071757]), Fq::from_montgomery_limbs([4554828072642644132, 1444610657142044086, 17449887890871798968, 1155580816162940184]), Fq::from_montgomery_limbs([14700875084405105752, 9239241115023183874, 7789802599827561984, 594039389414401309]), Fq::from_montgomery_limbs([17369961549732213951, 17978420689641993214, 5737613384797227392, 899750828627372416]), Fq::from_montgomery_limbs([11810971497921864966, 13993073307646756902, 8362406159543098387, 1156913604397747244]), Fq::from_montgomery_limbs([17268489821349265988, 4381498102126941915, 18059594369778317098, 58369093700071757]), Fq::from_montgomery_limbs([11035226460624215086, 14239859242862966780, 1132467188784037199, 834550800812545516]), Fq::from_montgomery_limbs([16880054357686407084, 4825991163227954043, 6215044494445833070, 1088315875473995942]), Fq::from_montgomery_limbs([18168083839917324524, 16478236068428869610, 13105126087642640896, 34766978023081808]), Fq::from_montgomery_limbs([17825669542785881313, 12421462367159336603, 2878814310510077253, 503620314193006332]), Fq::from_montgomery_limbs([8217239731080607569, 6429369295863013371, 9835418190294938624, 157201591859370779]), Fq::from_montgomery_limbs([4554828072642644132, 1444610657142044086, 17449887890871798968, 1155580816162940184]), Fq::from_montgomery_limbs([16880054357686407084, 4825991163227954043, 6215044494445833070, 1088315875473995942]), Fq::from_montgomery_limbs([11485023460188927874, 2485551665474920570, 6640923664201453737, 128700539913813365]), Fq::from_montgomery_limbs([8823818330539404675, 14326485851202631671, 17961953298539513959, 284442003114632699]), Fq::from_montgomery_limbs([9085308543112959065, 2317720835922103388, 3188272186429413269, 623518145967541728]), Fq::from_montgomery_limbs([1228919753536764212, 8001001063597501895, 1883429940342590902, 229754754018256412]), Fq::from_montgomery_limbs([14700875084405105752, 9239241115023183874, 7789802599827561984, 594039389414401309]), Fq::from_montgomery_limbs([18168083839917324524, 16478236068428869610, 13105126087642640896, 34766978023081808]), Fq::from_montgomery_limbs([8823818330539404675, 14326485851202631671, 17961953298539513959, 284442003114632699]), Fq::from_montgomery_limbs([9493025027446580308, 5326008844078412686, 17968627192349153669, 636747921187750929]), Fq::from_montgomery_limbs([4719209488067015380, 3286149619947952216, 5381059733444658429, 751991172029274729]), Fq::from_montgomery_limbs([671599285952310028, 4063985053036137885, 9646938041918321080, 299288710064420029]), Fq::from_montgomery_limbs([17369961549732213951, 17978420689641993214, 5737613384797227392, 899750828627372416]), Fq::from_montgomery_limbs([17825669542785881313, 12421462367159336603, 2878814310510077253, 503620314193006332]), Fq::from_montgomery_limbs([9085308543112959065, 2317720835922103388, 3188272186429413269, 623518145967541728]), Fq::from_montgomery_limbs([4719209488067015380, 3286149619947952216, 5381059733444658429, 751991172029274729]), Fq::from_montgomery_limbs([6563574222345881967, 1281874181852671859, 11466642440831414650, 443077589787383810]), Fq::from_montgomery_limbs([2252784982698758221, 17647697801612484629, 3564381744461717162, 1112500262860291153]), Fq::from_montgomery_limbs([11810971497921864966, 13993073307646756902, 8362406159543098387, 1156913604397747244]), Fq::from_montgomery_limbs([8217239731080607569, 6429369295863013371, 9835418190294938624, 157201591859370779]), Fq::from_montgomery_limbs([1228919753536764212, 8001001063597501895, 1883429940342590902, 229754754018256412]), Fq::from_montgomery_limbs([671599285952310028, 4063985053036137885, 9646938041918321080, 299288710064420029]), Fq::from_montgomery_limbs([2252784982698758221, 17647697801612484629, 3564381744461717162, 1112500262860291153]), Fq::from_montgomery_limbs([14444310640393871747, 7159616422470945171, 4259499542152695501, 338890106485999353])]), -// M_hat_inverse: SquareMatrix::new(5, 5, vec![Fq::from_montgomery_limbs([13904863849479527760, 2515041799497956331, 1093602514364610087, 950491498045111042]), Fq::from_montgomery_limbs([2579295949243395069, 12030978017499995826, 12080587065043491505, 38868424124071283]), Fq::from_montgomery_limbs([15092547513410891885, 17256115361070971171, 15459413513070879524, 321960420545902323]), Fq::from_montgomery_limbs([2229704028309941057, 12072197468400244658, 10950994247046669419, 1297185510317020994]), Fq::from_montgomery_limbs([12038262541350864619, 6432253836569655322, 13293017510951151922, 464458410353108600]), Fq::from_montgomery_limbs([2579295949243395069, 12030978017499995826, 12080587065043491505, 38868424124071283]), Fq::from_montgomery_limbs([10576000036529335161, 13879266532014962184, 16888595672184660747, 1185164108096765058]), Fq::from_montgomery_limbs([1279444508565403937, 6039704410083424768, 14409182292770989236, 1032663778275682773]), Fq::from_montgomery_limbs([10494653767401929635, 7151674624434035414, 113618062021286492, 734991999940840872]), Fq::from_montgomery_limbs([3733906304148166273, 17683287484600659811, 14933709177852827861, 1249090649945868590]), Fq::from_montgomery_limbs([15092547513410891885, 17256115361070971171, 15459413513070879524, 321960420545902323]), Fq::from_montgomery_limbs([1279444508565403937, 6039704410083424768, 14409182292770989236, 1032663778275682773]), Fq::from_montgomery_limbs([17854942931053508049, 12379835822212862963, 7917418649695695574, 818127752736513102]), Fq::from_montgomery_limbs([16713139695953442230, 14827246597006708747, 6565710292947236351, 279636205695659750]), Fq::from_montgomery_limbs([6021453437997963755, 2434637845477546326, 15808901861436069769, 656837851837718215]), Fq::from_montgomery_limbs([2229704028309941057, 12072197468400244658, 10950994247046669419, 1297185510317020994]), Fq::from_montgomery_limbs([10494653767401929635, 7151674624434035414, 113618062021286492, 734991999940840872]), Fq::from_montgomery_limbs([16713139695953442230, 14827246597006708747, 6565710292947236351, 279636205695659750]), Fq::from_montgomery_limbs([1817061708622591813, 7842241796668241324, 11705700881511613623, 124703629193508345]), Fq::from_montgomery_limbs([7645141843637222694, 11261613033476609866, 684978708883533390, 1180658499202360863]), Fq::from_montgomery_limbs([12038262541350864619, 6432253836569655322, 13293017510951151922, 464458410353108600]), Fq::from_montgomery_limbs([3733906304148166273, 17683287484600659811, 14933709177852827861, 1249090649945868590]), Fq::from_montgomery_limbs([6021453437997963755, 2434637845477546326, 15808901861436069769, 656837851837718215]), Fq::from_montgomery_limbs([7645141843637222694, 11261613033476609866, 684978708883533390, 1180658499202360863]), Fq::from_montgomery_limbs([6471109714169199028, 651257754441033744, 967849492968733845, 881634047292451586])]), -// M_00: Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), -// M_i: Matrix::new(6, 6, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([525395534966640354, 4649108525155679700, 5611566907608735139, 1157162242601075454]), Fq::from_montgomery_limbs([4270514995051619857, 9080682450539254193, 11764444330152623833, 1296452142209921646]), Fq::from_montgomery_limbs([13085423902825236141, 4106908764311471538, 2111632228314415714, 345239388869093745]), Fq::from_montgomery_limbs([4739016182142013260, 12433567496673952941, 16956579312525014509, 596646251662680532]), Fq::from_montgomery_limbs([15744576121486695479, 10597769634158624533, 14136093497735719287, 512698864094506675]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4270514995051619857, 9080682450539254193, 11764444330152623833, 1296452142209921646]), Fq::from_montgomery_limbs([14428417055342911695, 8272271618979314579, 5027159236098050530, 724167566789085063]), Fq::from_montgomery_limbs([3709734358196874918, 11929487831132379323, 16830563350788980501, 398518023243913541]), Fq::from_montgomery_limbs([899835313390383283, 10922138075185035991, 10399061813978257330, 1225969452739805970]), Fq::from_montgomery_limbs([6368857132124103246, 3738999983005063047, 6786228693787372954, 743414762217018339]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13085423902825236141, 4106908764311471538, 2111632228314415714, 345239388869093745]), Fq::from_montgomery_limbs([3709734358196874918, 11929487831132379323, 16830563350788980501, 398518023243913541]), Fq::from_montgomery_limbs([9860604545813959634, 6023137071889763432, 18357541439838773826, 267782511194587624]), Fq::from_montgomery_limbs([5425553862160636710, 10155674884481011840, 8882505056945541629, 629430891711291823]), Fq::from_montgomery_limbs([5693655221984583188, 5078045342146247458, 8593703977821442979, 40108457599127726]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4739016182142013260, 12433567496673952941, 16956579312525014509, 596646251662680532]), Fq::from_montgomery_limbs([899835313390383283, 10922138075185035991, 10399061813978257330, 1225969452739805970]), Fq::from_montgomery_limbs([5425553862160636710, 10155674884481011840, 8882505056945541629, 629430891711291823]), Fq::from_montgomery_limbs([1974709593969888668, 3838580677334353595, 4105349786837999128, 16966368926604082]), Fq::from_montgomery_limbs([16299857180872679507, 9990704222165585528, 17839066130443287287, 1300929190020977365]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15744576121486695479, 10597769634158624533, 14136093497735719287, 512698864094506675]), Fq::from_montgomery_limbs([6368857132124103246, 3738999983005063047, 6786228693787372954, 743414762217018339]), Fq::from_montgomery_limbs([5693655221984583188, 5078045342146247458, 8593703977821442979, 40108457599127726]), Fq::from_montgomery_limbs([16299857180872679507, 9990704222165585528, 17839066130443287287, 1300929190020977365]), Fq::from_montgomery_limbs([14268832143359565128, 14009303067203234749, 1311318265344615584, 224271541899878138])]), -// v_collection: vec![Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([15846042622821125949, 5578170090212244723, 14386484975980635087, 1162081450610719662]), Fq::from_montgomery_limbs([9425713365442649542, 17724400577059603932, 10835235343511845981, 1179696731387397906]), Fq::from_montgomery_limbs([15470398571621834328, 8748455436620348445, 11923882037413103894, 147851229490754041]), Fq::from_montgomery_limbs([3205030528550848740, 11233883805951482885, 4631904539047675327, 85240573307222008]), Fq::from_montgomery_limbs([4306955861584430579, 2866573513612242948, 5009794262667624955, 295301720036234004])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([7251188616661835801, 8810908530742177026, 5438752491170217053, 624809552915168399]), Fq::from_montgomery_limbs([8041373032028091555, 15486500451885216694, 2640515848525906572, 1101280997644118799]), Fq::from_montgomery_limbs([1028894706146998760, 13234395603487812099, 310927904286248029, 1284009513603315703]), Fq::from_montgomery_limbs([15907405187752122338, 7460014754810790101, 3112115084952575259, 1176166567473148345]), Fq::from_montgomery_limbs([6667915961879815626, 11892868641826580977, 17153671363694122316, 1080025318281387536])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([5168631598983031118, 1709031240629846937, 12176717122174422876, 1133547231698905845]), Fq::from_montgomery_limbs([6505284181050366169, 6621303409684149204, 14721846886395529985, 756463071795143691]), Fq::from_montgomery_limbs([10252599865552606113, 8719458131520431579, 4094128546015477610, 154229004185959046]), Fq::from_montgomery_limbs([5962216050578461567, 1852471921743211935, 14625008624739847061, 402573870144144998]), Fq::from_montgomery_limbs([2504232889257023710, 6382931252528192024, 946087668070181732, 39444081019304469])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([8935875040282017923, 9359087371918622751, 4377160640113921337, 438001764693096006]), Fq::from_montgomery_limbs([5964768355342862060, 12844248228508214834, 217390320027003427, 519739213235621144]), Fq::from_montgomery_limbs([13476869152223212245, 14360104411032897136, 16239873007321200914, 3853403215029221]), Fq::from_montgomery_limbs([14270258435530476850, 16224741710497622821, 15034723833298150364, 1105854585395665472]), Fq::from_montgomery_limbs([3034628514738856022, 14677362698363483188, 10612467457981582049, 621317746892157952])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([12356435149313176789, 14997081370594107955, 2318538420922195008, 27051273329381197]), Fq::from_montgomery_limbs([14179669150985422172, 1587784931571575237, 15544226047094276906, 265503486564006544]), Fq::from_montgomery_limbs([15848703335457516734, 12988350955449684774, 10747751923255963574, 192884410298894891]), Fq::from_montgomery_limbs([13283753749608228542, 15731192032524989112, 10134977648663526427, 1011453356572734072]), Fq::from_montgomery_limbs([8372393423324448788, 2642634076467295974, 2238857053734841195, 713995311234362151])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([6650896784315049976, 8618299026172959087, 4613782712309215097, 1194575414958458214]), Fq::from_montgomery_limbs([8401059625843059611, 9360504521211886317, 9752588986385800578, 35467022242567223]), Fq::from_montgomery_limbs([14549311442558804272, 14851474988790195550, 17243272363514665510, 556891460284998050]), Fq::from_montgomery_limbs([8839260009215695166, 5332337195891362342, 10215113273837828390, 53276328504747705]), Fq::from_montgomery_limbs([4743214023748331668, 16150812970442549102, 3607008032772749996, 71636842460588166])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([7745993606763106157, 400962028791523193, 14448679365436054364, 127361796442057001]), Fq::from_montgomery_limbs([4881557665307853374, 16503843953516371036, 2631138906021440407, 1145135568670602972]), Fq::from_montgomery_limbs([3748730199472583624, 1701168955512052480, 1204298795241125154, 919171892692993894]), Fq::from_montgomery_limbs([16293341788272558865, 17325870627390234246, 16387125646971798797, 1009137174300676172]), Fq::from_montgomery_limbs([2499133372428019558, 15739123510404573354, 10677356306660504584, 958976143899963938])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([14252792066102246657, 15864171804698265189, 11911247415967054910, 961487415285183784]), Fq::from_montgomery_limbs([9957038734178160162, 250039500043978770, 375263104710602935, 35544998893003180]), Fq::from_montgomery_limbs([831877114936420076, 2002790044227393828, 11129740988708533905, 746550053534881799]), Fq::from_montgomery_limbs([4734226494958051881, 18003010652169239318, 16569731595317548852, 109984045623665701]), Fq::from_montgomery_limbs([10630025490758573206, 12380598183142825838, 1493124485160554052, 492990263362994025])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([9005167414234319760, 16535434979210366835, 5819620234707341946, 602158252276980823]), Fq::from_montgomery_limbs([9119416898454972043, 8049431789793640151, 13607373929564011639, 761938773322253558]), Fq::from_montgomery_limbs([11646529739221266743, 15631506041020749904, 7526925524884509569, 797718489067789891]), Fq::from_montgomery_limbs([14242496370333104920, 8841581893310155090, 1684451748824201839, 293704403017488420]), Fq::from_montgomery_limbs([12068414265588270249, 7748413288237551533, 18041956849707733339, 1127727052880210045])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([16896144613183838177, 12574347096617734902, 8321293894060275613, 1181815496381441993]), Fq::from_montgomery_limbs([11490675786236053006, 9698599818026366787, 5948732065795477184, 425414085344036431]), Fq::from_montgomery_limbs([13535638352040032845, 11010719926202516879, 10750188616385991719, 450767332534563092]), Fq::from_montgomery_limbs([3178227411283526947, 463456667345831080, 14382176159228633426, 829036438269219798]), Fq::from_montgomery_limbs([15205960183032177355, 12047942859395994973, 5508647109209154207, 409271998288939244])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([5842441710461865655, 14354544144458273887, 16159087842820577493, 1102018593492537867]), Fq::from_montgomery_limbs([10259604216221740521, 2737735964532783652, 1934594841398453131, 915029026536998488]), Fq::from_montgomery_limbs([5389086520584317977, 2729523047482171967, 12492070423980987131, 339278797072716184]), Fq::from_montgomery_limbs([11961359983369405646, 8872285219479794351, 11590963834161858363, 847871031745582321]), Fq::from_montgomery_limbs([15708428924964800383, 9689329403735339585, 876235638671718277, 1293191834696859659])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([10926323662882715805, 6357617649943251603, 3882295273855196975, 302265041875854273]), Fq::from_montgomery_limbs([11884492353389440282, 10865891220420186719, 1506391581950765997, 1273730401079532625]), Fq::from_montgomery_limbs([6062018478948078733, 2238300480159412589, 4475922925472998435, 427700151782713553]), Fq::from_montgomery_limbs([14998626184060509521, 8084520935552429366, 16157620168154649636, 936139145933018848]), Fq::from_montgomery_limbs([5424440642649697210, 11030005216981850100, 3736937858414725236, 353926131228082038])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([6991010538111487096, 3208699080691172022, 15674148293257243198, 528616403431683993]), Fq::from_montgomery_limbs([5895680427204256637, 15308092775755115835, 5725537177674079322, 624044939296156178]), Fq::from_montgomery_limbs([15682781481863573356, 12524037328552645708, 13137829315048512550, 453866324724543378]), Fq::from_montgomery_limbs([5999454803832491786, 11757829240759186672, 16786792833686808980, 1008783050525293123]), Fq::from_montgomery_limbs([4965854579231858650, 4470286827276633884, 18255756957602409470, 1257925856629374202])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([6756792567489648436, 9174065877200954316, 14588982300344994878, 495558322589948188]), Fq::from_montgomery_limbs([16407708660026263913, 17259087838077364390, 13625416430514248811, 207969270690764399]), Fq::from_montgomery_limbs([11870501170821012713, 18047340589874750756, 93512878936056238, 478288405689674144]), Fq::from_montgomery_limbs([873793291822892867, 17836937206243952238, 5128543094009831337, 132104142075103351]), Fq::from_montgomery_limbs([930043501771119768, 15613823438280495150, 6464828430156696004, 359908580296612711])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([18438521383060368690, 14476395006954860191, 3425945854098388541, 944003065485357481]), Fq::from_montgomery_limbs([3311768994809575814, 10503690422660653146, 10526674813249312919, 864802385440313737]), Fq::from_montgomery_limbs([8810438360452481727, 12680118392135545157, 13641246557527810849, 1252645481585559515]), Fq::from_montgomery_limbs([14299022666252422420, 14841944407301251201, 15136912555606442873, 856379827147710042]), Fq::from_montgomery_limbs([2062956481566651544, 12093197892291904316, 11631702561466346010, 144441024184915083])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([7993143086113878189, 3624434478267440806, 13278019726447600986, 654136378501676754]), Fq::from_montgomery_limbs([7992479798903963387, 7895372341947686019, 4334209577850630153, 1180883581857163505]), Fq::from_montgomery_limbs([3027910113375733204, 4485846847893599917, 15294205594975595333, 100423190749786506]), Fq::from_montgomery_limbs([4120333963287836783, 11671291525241561103, 9901986613770683621, 651573815597675240]), Fq::from_montgomery_limbs([11428233072419105889, 2944089198827741952, 5214300364587140869, 1189260788971714219])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([4551784723657471230, 11207660824801473415, 13918603200560666189, 909618049825337324]), Fq::from_montgomery_limbs([2675501742361862254, 5250455330270200426, 12586684907650118989, 1330284139416672144]), Fq::from_montgomery_limbs([12040165191610290428, 16503275216221829144, 5260280485839874467, 1227840433161545716]), Fq::from_montgomery_limbs([7679795588389348013, 15191087003013740641, 15555116922073130768, 344262909715092301]), Fq::from_montgomery_limbs([6169211658344078831, 531166906056818046, 1322277761354587680, 210108348638141620])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([2248963634255452368, 15563761402233708045, 3393738612726595863, 270037018221350140]), Fq::from_montgomery_limbs([11601309892240246141, 3638465656527027416, 1395756619190043331, 138813074475309167]), Fq::from_montgomery_limbs([5291125713635089368, 14819398438069773983, 13114950161797142217, 25590678184791818]), Fq::from_montgomery_limbs([5534877013314393609, 1759072288627502628, 16181954987325767733, 134682133959402637]), Fq::from_montgomery_limbs([4161482061465148858, 16683675972158421075, 3099920947049254669, 957124783703318342])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([4510595409768553239, 4974517727576987266, 15978837518179150731, 335342136683204977]), Fq::from_montgomery_limbs([6636059739397131000, 9640261418262971507, 18005427333200225259, 755356145676404050]), Fq::from_montgomery_limbs([15131021729179035121, 3322699383837917438, 16694361960801514505, 921109580640113983]), Fq::from_montgomery_limbs([7634123202466598220, 810298720516221902, 840599007384281843, 656905365051140366]), Fq::from_montgomery_limbs([11303104649441347181, 12152859936809161042, 8157805368560172079, 226879006121087093])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([4222768071479979923, 6221868890067618237, 6706788302094795072, 470857396285528184]), Fq::from_montgomery_limbs([837480829798517493, 2139750872442256742, 5213024737969853757, 586284678362031355]), Fq::from_montgomery_limbs([18413923626929455705, 12351565965899756217, 17706788027426014962, 396824563157594134]), Fq::from_montgomery_limbs([11865172518676463006, 15009302994533156097, 16026973397263722566, 1243693536982901909]), Fq::from_montgomery_limbs([7252462303444002809, 9549080656602382200, 6400682688095758738, 206059245034621582])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([8375555895564253468, 7925422648691473256, 16821885625729885556, 985921094928817309]), Fq::from_montgomery_limbs([2046299323863281369, 13882781361146929705, 15448488877161513887, 490830679341871217]), Fq::from_montgomery_limbs([7429671875567937801, 10229990955659579326, 17998819479213658262, 468703275856634003]), Fq::from_montgomery_limbs([935091299463462187, 8817490257427535584, 4201099561438792936, 308509415209580254]), Fq::from_montgomery_limbs([15175273292104113428, 15547411926550064745, 18326735472470278187, 46288025765161350])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([2376775726955536549, 7198072882321834778, 5820986721223000167, 1305597767879405697]), Fq::from_montgomery_limbs([11562318758115257029, 422264710018175990, 4674708296176782956, 321605471576378125]), Fq::from_montgomery_limbs([14422446717346283559, 4522943560525804925, 12524200552641302343, 992174839589322314]), Fq::from_montgomery_limbs([2660063348396745477, 3046452749899310106, 12556614243413712855, 292167348848223777]), Fq::from_montgomery_limbs([6669133378666467376, 16135058416591179983, 5627772722389914612, 379140231019033687])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([5810827329069058342, 9466338503926448033, 13219994636736965707, 1133919653888422832]), Fq::from_montgomery_limbs([11390689618371396272, 9685029449622007826, 13242820419679967997, 1063349475949275121]), Fq::from_montgomery_limbs([17763514783930037833, 4809121417820211582, 2875494172038972593, 296043141357624455]), Fq::from_montgomery_limbs([11611692421411999894, 15220040608516358932, 282037844166434278, 281687965959955676]), Fq::from_montgomery_limbs([4438433961554370400, 12877811549841781756, 15741991214229698793, 280844842261162310])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([17169851287016280826, 10822471821114911500, 1491721488328495957, 216887165418048275]), Fq::from_montgomery_limbs([10994016828848236257, 13445735015422423625, 5018165562796963731, 602535974428869013]), Fq::from_montgomery_limbs([15126102334199024880, 12867057351876414370, 11159159194149946143, 115881007342718723]), Fq::from_montgomery_limbs([2794226167942571109, 1548538606305510804, 18291849409425428450, 1340198361306759329]), Fq::from_montgomery_limbs([4267162633414624824, 10477712998553375282, 6267269603855607198, 982787929756500753])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([17381305832731585223, 9268492096935184370, 5234949576450927455, 21981840360160805]), Fq::from_montgomery_limbs([4087927870940191769, 13753414599816622073, 13058329164603291227, 834131236566284313]), Fq::from_montgomery_limbs([2546006251271733188, 17600491598884247746, 14062949050289708021, 821447001112770449]), Fq::from_montgomery_limbs([11557892681183640983, 3553808879521780009, 5828391499760976335, 706816644254127358]), Fq::from_montgomery_limbs([87239843232890664, 15700472350663595467, 174519885711847558, 1123281110015984026])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([2827103361153395332, 9771223936028754360, 17019668270000185744, 250846897334218988]), Fq::from_montgomery_limbs([5119814427033781946, 2081312228775851068, 14150656259150135415, 412824983197785589]), Fq::from_montgomery_limbs([8649749569221526485, 520969763542437761, 18397072919079815484, 473314797287595707]), Fq::from_montgomery_limbs([8194315404853463748, 15060811055660635178, 11318868018104656047, 759678196288305769]), Fq::from_montgomery_limbs([10987085614436524099, 8214999842286961244, 5709575456336614864, 1056310210546073817])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([6532789592575228069, 3265438887018026818, 17111525378271668948, 1320499686924692082]), Fq::from_montgomery_limbs([2197318288869911886, 307033351054159068, 14033422988641489555, 689909787061505964]), Fq::from_montgomery_limbs([3507717375223769090, 10033023697975699121, 15321810854570355253, 890016110699860569]), Fq::from_montgomery_limbs([6897743854949081968, 10158161465287387801, 9179072886178700686, 620001185095628667]), Fq::from_montgomery_limbs([17448998618237282714, 2553852017375909, 1793419264718581373, 725044591608116521])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([16012268534560097932, 13416075297285506301, 16493211465851903420, 1091948493998105984]), Fq::from_montgomery_limbs([14392369108156989804, 10617956576365144165, 11809714324716728769, 1188444181516740870]), Fq::from_montgomery_limbs([15466384892561009653, 10941962222512674624, 1913904384440848129, 606922266921522145]), Fq::from_montgomery_limbs([14584618083984398210, 14186299915288736440, 17757535025721844034, 1063945284694781692]), Fq::from_montgomery_limbs([6792570643359499560, 4535097730077924957, 12073011546773881134, 1137378726981169881])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([15102847980540220978, 5520326730982346297, 2698729817022762322, 1194738055539544118]), Fq::from_montgomery_limbs([6147044654176302920, 2364057582092333147, 11540841437940787480, 556063025467036658]), Fq::from_montgomery_limbs([1647311829762859720, 13415217341886740242, 16485335404491864284, 491439704095662519]), Fq::from_montgomery_limbs([12141727361360860468, 9821467392353266448, 11166495178510190210, 245664677516946430]), Fq::from_montgomery_limbs([5360382176507266601, 768193387830048410, 3996566068451735831, 795512106745688059])]), Matrix::new(1, 5, vec![Fq::from_montgomery_limbs([2189128173409064762, 11499748369225599949, 13499847782281945694, 1340871250773004273]), Fq::from_montgomery_limbs([1159278411248794850, 6701355601329876701, 10476550252580870928, 490304301636428667]), Fq::from_montgomery_limbs([4466317563581149355, 15128213745330326318, 5257941398512314848, 1111650855813054172]), Fq::from_montgomery_limbs([8839577424282800883, 7949855030699078116, 2996553645008704135, 85398623640375889]), Fq::from_montgomery_limbs([9514362250339879637, 13706294199150347872, 11853022932563321890, 818790762833572114])])], -// w_hat_collection: vec![Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([15152119682022281684, 2079168917784381610, 8548836536267236340, 524962922610130041]), Fq::from_montgomery_limbs([16770218796354446865, 6164915921600418774, 18434642018604219177, 984431242893424161]), Fq::from_montgomery_limbs([12257484635811173124, 3332345693021229804, 9856107590709416500, 1159223252431020322]), Fq::from_montgomery_limbs([9979132349322887614, 3961848182433907151, 8799570660063224410, 475862931364908156]), Fq::from_montgomery_limbs([3872788615927669352, 15152509537124089722, 5205890896288656861, 1231307161030894178])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([311271084272320082, 5284197557048869863, 14669222562574339674, 571307699885408030]), Fq::from_montgomery_limbs([11625781241601592791, 14885568706820662540, 17941376171308792723, 783918507477975660]), Fq::from_montgomery_limbs([226868460330872644, 12734244079593541616, 10451890082278586850, 32508669310149618]), Fq::from_montgomery_limbs([6020187144675607048, 11405887127978088053, 4712122969940341979, 1080334010198437810]), Fq::from_montgomery_limbs([5933505187504807441, 3473057270652036730, 6105009132686901569, 114203646444743763])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([1120856672192884245, 16247214934320106390, 15323677081999960076, 62404200512763570]), Fq::from_montgomery_limbs([8831161875549232238, 6077491870312206017, 14081883006003626391, 1154651324772984368]), Fq::from_montgomery_limbs([5661890842653089732, 13320534556163866242, 9035321631852285107, 903630770886300483]), Fq::from_montgomery_limbs([15889657237181390432, 15162271575679238159, 1491114731026258819, 287846816690944321]), Fq::from_montgomery_limbs([7238626723934307483, 13278275328632196610, 8627741857269318907, 925711656222055996])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([16274331391150039806, 1623594389399151027, 11932333738554132870, 706372249166702105]), Fq::from_montgomery_limbs([732452989467352943, 1044771601653765712, 7295501005775861284, 241383337916425122]), Fq::from_montgomery_limbs([1055111559926828336, 436063422223614235, 8237830476387497674, 486023893828905207]), Fq::from_montgomery_limbs([11846198484218265818, 8058524634853844099, 813566309310159764, 1342803580678902586]), Fq::from_montgomery_limbs([13415802809644488728, 14511002260322793565, 4157389022600774011, 262652662563663469])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([6280812441180517055, 6148355053508262675, 10298538567830482124, 549753875811636329]), Fq::from_montgomery_limbs([824304312279887084, 5198474444698315745, 4090895165493551175, 1217302205153655151]), Fq::from_montgomery_limbs([4735542953263469139, 612014805877448122, 12832372076520494984, 750953222849642269]), Fq::from_montgomery_limbs([147828622890240493, 128044761765714597, 12093927754417303852, 132385902652165260]), Fq::from_montgomery_limbs([18171144465445367562, 4015656370081309510, 15930285771575041073, 1269412572744267545])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([14398639038380864956, 6619595958723804843, 12719064233121758133, 406442443563323199]), Fq::from_montgomery_limbs([10762946454330918789, 5528361687335835568, 3991418360765486778, 286492429663333048]), Fq::from_montgomery_limbs([11742168906901241463, 15503883602330266637, 15831515237753512854, 1044066191448484616]), Fq::from_montgomery_limbs([10525155675978585492, 4670730111394235591, 5961373269656674720, 95271963105126236]), Fq::from_montgomery_limbs([584627878861922239, 7921433855087631798, 7615313333543717641, 1109592926172816575])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([15091688909514107804, 654570390524891199, 16494576826680457410, 30762953858016498]), Fq::from_montgomery_limbs([2761325807027693284, 11935489432137753301, 3489012309486987802, 239715377721177782]), Fq::from_montgomery_limbs([10454593178969047515, 1040128098662881642, 5632035830401774632, 554859180328868399]), Fq::from_montgomery_limbs([5107303737176549426, 15727856129637397988, 6051568784602114728, 873492972237083876]), Fq::from_montgomery_limbs([12130743148391729861, 11271998017451462639, 10929122930592304172, 194097991947183661])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([14867630937298531794, 9612402140924249048, 15791934086459495277, 701876161263964392]), Fq::from_montgomery_limbs([4800492369986485195, 837798357520426667, 11678651630838500929, 1197393486814847593]), Fq::from_montgomery_limbs([7361531118817265902, 10654842008121782114, 11329661993953094409, 53031172666072441]), Fq::from_montgomery_limbs([13678736880795169285, 11579896750305940195, 16427828830934341434, 373548996986898141]), Fq::from_montgomery_limbs([3113965972245214273, 3618222426215928202, 14280489027814430075, 1227439762891391632])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([1519481477607620457, 10318567135550122014, 263846661207466096, 640929643224454153]), Fq::from_montgomery_limbs([14263939264430200097, 8800960240049783032, 10525864428412568060, 1229598433830944803]), Fq::from_montgomery_limbs([4737100860592755646, 3405741585209394827, 3774719897330733186, 1001424607855656625]), Fq::from_montgomery_limbs([4527327887926361650, 5195716198788998780, 2452454045651672598, 1114842100489228591]), Fq::from_montgomery_limbs([12639481132070877116, 6184431555458882642, 13833172896014011365, 138391625804209902])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([3025469591916962139, 1116358649574420645, 10697299179333984962, 1100828152488463516]), Fq::from_montgomery_limbs([17596104129549385707, 117028884523868090, 6843789980420923220, 394144012237385792]), Fq::from_montgomery_limbs([76569421022187354, 7618174529699040891, 14258607882742494097, 325795777168928125]), Fq::from_montgomery_limbs([9488688453300333348, 6023458951346117124, 8882873536266522192, 1011335963622574163]), Fq::from_montgomery_limbs([10273078691683312131, 14951774310795138631, 5056574235010407582, 216683108447003755])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([16270690847183812253, 8396384187123364284, 15973135291934403644, 337754294626036574]), Fq::from_montgomery_limbs([11537970389959600601, 15344885270945805038, 16062179622496264928, 634770789960495300]), Fq::from_montgomery_limbs([16629897675960611498, 9857864935176241914, 16649516829790580187, 879077994781187974]), Fq::from_montgomery_limbs([15757760830891963153, 1980968732617718233, 363417887657441819, 1245373320221094018]), Fq::from_montgomery_limbs([1369140419065411691, 114665172743829173, 16025067317418460214, 772519184136728441])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([5166287970903668709, 13178607088194812953, 13394943015525495010, 1136891698590635716]), Fq::from_montgomery_limbs([6786739958142009449, 3712291089779086337, 11114170296176591543, 412243655343207746]), Fq::from_montgomery_limbs([2483986099773441215, 6355297372287593359, 12546131765129037338, 850333435641268865]), Fq::from_montgomery_limbs([4129060137994461513, 15810046888600142778, 14959377549727103485, 983509352989716443]), Fq::from_montgomery_limbs([5375190994774345144, 6642323264045992752, 697489999924152538, 711658337986264203])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([10789013922038705474, 15907427163103262467, 6211828439721814286, 821662973636748389]), Fq::from_montgomery_limbs([1245892911222176515, 1760690499003421411, 7411938278280460519, 996198333836410116]), Fq::from_montgomery_limbs([14902739397227121611, 9677074799597948924, 16338232095647494428, 107475751267019502]), Fq::from_montgomery_limbs([14751552868296217802, 10957219946410361892, 2609386566023075942, 795435587890350748]), Fq::from_montgomery_limbs([14228026094996696402, 2826584103258174948, 1310186622837843420, 912856498151667865])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([632309018718566470, 8852208976226519541, 5569100181556353071, 984010564169166433]), Fq::from_montgomery_limbs([6992820576439012611, 9698447268226822027, 17633082455161111009, 90244636707781414]), Fq::from_montgomery_limbs([6543679712083684758, 10736979596575357883, 4698076992795071575, 1270787674212113]), Fq::from_montgomery_limbs([16044338327666607926, 3960206126744122590, 4858706793602461066, 561666947698425720]), Fq::from_montgomery_limbs([3368306314740365965, 9177942911310203166, 18367144956945019416, 653903203015259414])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([12874723854177830125, 5100681384941725656, 9285950066462290781, 858148062800653733]), Fq::from_montgomery_limbs([4768366185853611631, 14842169834008972704, 16645218449281418514, 817503519482950628]), Fq::from_montgomery_limbs([3007496102230569523, 11399958112043651698, 15787521760129406401, 826416774444573023]), Fq::from_montgomery_limbs([10890936042157055266, 8565215756042961896, 1054057862367192487, 202049359204983814]), Fq::from_montgomery_limbs([2425581217694278079, 12792279644970276082, 4689036727185422224, 1064336763331781201])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([2764179143636297935, 18061233587720561716, 12411254568157467507, 427402914001475058]), Fq::from_montgomery_limbs([2924816478430507635, 9786303437156946185, 13021435082088378496, 78702703698317598]), Fq::from_montgomery_limbs([8200525868229314140, 16881303073057711951, 4187547714670888467, 455617381392152389]), Fq::from_montgomery_limbs([8310666736636434815, 16453325372394262716, 13511049246920939341, 416209098687774975]), Fq::from_montgomery_limbs([7508636928089493550, 1778929466519171040, 9865075252470321631, 222439820478088778])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([26427962923262805, 13400472629512916744, 3808805306352074297, 128699596583089680]), Fq::from_montgomery_limbs([18283636998376248321, 5779768391741799708, 8993926161412908836, 272788598277303242]), Fq::from_montgomery_limbs([385260822800957491, 7888556288710245505, 12785711973091118063, 1290081227789032623]), Fq::from_montgomery_limbs([7370461305656006315, 8097104282146432375, 3693139275053762963, 1200841519361465892]), Fq::from_montgomery_limbs([12067130442173286908, 2170379854767453652, 13201336336736961495, 927175852053928205])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([11214687023235424600, 5560314158648804455, 17670625093449035024, 1242366510949799159]), Fq::from_montgomery_limbs([8409895882379798325, 14471144258274119497, 5245528502428581668, 869805265859067382]), Fq::from_montgomery_limbs([2802161834127193832, 181192611793840022, 1581405763136818654, 674326086636803499]), Fq::from_montgomery_limbs([5748156006252401196, 9530968273316544473, 1373075747037319701, 478917773953068122]), Fq::from_montgomery_limbs([10550634859635316442, 11115297058518078301, 15167740297739703393, 499663014055796942])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([8737679817842057617, 14335003891544767889, 5806471893265243804, 1199697546794663346]), Fq::from_montgomery_limbs([18312746592170672376, 2468171777169034619, 11588707770047473860, 1167607620745843361]), Fq::from_montgomery_limbs([8991056605371192176, 9683166706953599777, 3207279773035228554, 1036594322405142084]), Fq::from_montgomery_limbs([10715958137830220707, 13790797151438523296, 3814352367403212083, 338399526865285980]), Fq::from_montgomery_limbs([7602766395993095249, 15421116878917379598, 9842919232591540089, 811441858348229638])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([11240616276279859335, 18168970638218441074, 12681307963217316671, 529653072592394540]), Fq::from_montgomery_limbs([15804354330800222400, 2664362506755913571, 15220567525462081033, 415854075276634564]), Fq::from_montgomery_limbs([6499893156022247982, 5370094427775939872, 12693314181999023046, 334522766633278821]), Fq::from_montgomery_limbs([2043116979793859192, 5901796972056645976, 14393765505679755827, 861233648011975692]), Fq::from_montgomery_limbs([15324644517910983402, 7402962800234459251, 15501703598689014650, 866765414305968533])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([12865534582606617484, 5710240921655628764, 10047828149580190691, 1035217630777023330]), Fq::from_montgomery_limbs([7623115266181592594, 15654093656542240609, 17584343833694408578, 965948623120670646]), Fq::from_montgomery_limbs([12322860754126106334, 5704375241169042821, 5005598195199710337, 599456016816833315]), Fq::from_montgomery_limbs([3114048235662948861, 3186724356925890101, 12603030351469960653, 784880135590304822]), Fq::from_montgomery_limbs([10542157016978853051, 375232718281833036, 8419637174785911645, 480073460241875582])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([4619753066505217513, 16240034683968173295, 101722798642334078, 1093802332804170111]), Fq::from_montgomery_limbs([11772483107625265757, 10206667679119141509, 18114554164862022458, 1023031741792146569]), Fq::from_montgomery_limbs([13246284581489263787, 14406389897239052674, 3455768173607702603, 1053480392953200960]), Fq::from_montgomery_limbs([6494604848840235336, 6851286908738110852, 6952092093989720037, 528933354597117664]), Fq::from_montgomery_limbs([625815039158913101, 3482039923172880345, 11185655673758240856, 30871173764135737])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([11116836871987577766, 8109541581819717708, 14249648100460872066, 228964235140475035]), Fq::from_montgomery_limbs([10850735048215572309, 4250918544830268539, 1159262399998108531, 597017478561992605]), Fq::from_montgomery_limbs([2429928267440692097, 1037103561750764536, 14249565405637869240, 238948313464233222]), Fq::from_montgomery_limbs([15908449453336200948, 14778706528145004443, 1518131124404071948, 342204757203960757]), Fq::from_montgomery_limbs([10343358798246302148, 4716916005406799178, 1280891908040278925, 33904180033936995])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([13657049778223062917, 16159025960783232211, 4256662595768243763, 769690080070442279]), Fq::from_montgomery_limbs([8630441296206546010, 15101393911422801574, 15765903519913875666, 1059019903719527397]), Fq::from_montgomery_limbs([17353580961907941474, 11690315434040365887, 1919970450761622105, 1284644920565762622]), Fq::from_montgomery_limbs([9142190750578974954, 7982580406830591641, 139105874244767315, 1037725609814647069]), Fq::from_montgomery_limbs([8274397077677504305, 7550323696121525646, 13342176390347462405, 495524022793746412])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([1300654639607007076, 5418426225271078814, 17799220415649590999, 578082611305900028]), Fq::from_montgomery_limbs([15087651230680029653, 14061399273111500513, 13990992483413246139, 217274859442961675]), Fq::from_montgomery_limbs([17409038465662970942, 16739652419107899003, 1728243859263530675, 1005030425295937500]), Fq::from_montgomery_limbs([9881137796190779983, 3738513419678193257, 6908712468714119492, 128170763609761066]), Fq::from_montgomery_limbs([5980808904168005021, 6535637039411031048, 4353709569732736105, 985581940426054692])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([9266459364560412147, 1675941305082716910, 2644496138354097667, 593111726451400001]), Fq::from_montgomery_limbs([11923296558184512186, 14335481794247232343, 1756296816003311831, 1337227067587852298]), Fq::from_montgomery_limbs([15213177739061556154, 5962926969279075759, 9583168463456919751, 1345102811307691605]), Fq::from_montgomery_limbs([7236531265332214668, 11730813784468030291, 3260041626130793112, 413423911331686730]), Fq::from_montgomery_limbs([9992377390528540244, 10251294356867851146, 15408569698061863503, 686801780474850525])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([12551312954021730815, 8771782951882110027, 8266520452918776358, 585025591233977219]), Fq::from_montgomery_limbs([5063400267728024015, 14290329839247601111, 12614604995283750144, 230714106990743170]), Fq::from_montgomery_limbs([14919127087277880180, 1233913841901824423, 2945855199399696462, 1124234888120832064]), Fq::from_montgomery_limbs([6630767633426865082, 4134529385803270273, 547558622173751939, 1276870556955963960]), Fq::from_montgomery_limbs([6194800795402001302, 7453146289235044346, 1846631670011345424, 373216392925072559])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([8530038482194296425, 1186609470593087346, 1550686771111894200, 918591303091561115]), Fq::from_montgomery_limbs([5499603817197150545, 6278523764748797546, 9492893478468221078, 76690422627606484]), Fq::from_montgomery_limbs([7172281043633854180, 9586248386574401986, 4695159959373826247, 291013948190359675]), Fq::from_montgomery_limbs([1958470378825944596, 13429774428855320394, 14915732503423284573, 675396101420063305]), Fq::from_montgomery_limbs([11013259379518244436, 12321083210650373617, 18169826561711333453, 1123565689252234229])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([8538081673660833158, 9406736474943528419, 1248182586638760682, 566915522520784434]), Fq::from_montgomery_limbs([871762597826126451, 16952899443646083570, 9760070688515351533, 1153171851787119216]), Fq::from_montgomery_limbs([17099176922694092192, 828730151529195508, 4040300595746784683, 896316263468400176]), Fq::from_montgomery_limbs([17895859754552623107, 12372008340476127191, 15869904838348331177, 775743200601290861]), Fq::from_montgomery_limbs([7009270681870686791, 2613922803678169165, 14616132396476908383, 1266967860663970985])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([2842431186863606520, 5016515943888671695, 1025755096788745830, 118497541762157376]), Fq::from_montgomery_limbs([15651700296535015112, 8569612184315077364, 15451942282818992185, 541946385718467129]), Fq::from_montgomery_limbs([17425453868458867672, 13259317954798539165, 14653762240483553886, 1289545541558928924]), Fq::from_montgomery_limbs([10182995923953810379, 1555053058248744878, 14233166151877877681, 1314025239224831524]), Fq::from_montgomery_limbs([5382307905322995124, 14222432758856306145, 3195810595195159237, 932323741878209391])]), Matrix::new(5, 1, vec![Fq::from_montgomery_limbs([4093215837977364819, 1786552664558589683, 15811959916460894504, 1122605521342489905]), Fq::from_montgomery_limbs([6757580137997166235, 13857613907011413182, 729793288849614944, 140426125151203814]), Fq::from_montgomery_limbs([18248567113979980306, 15307246736403175565, 7970334653691291978, 817641900996362744]), Fq::from_montgomery_limbs([13209637935471398448, 10485350831767594057, 18120173774880047238, 981942705210324429]), Fq::from_montgomery_limbs([13041861333642835240, 17156211741149643971, 4775992643478887474, 160471371624793379])])], -// }, -// optimized_arc: OptimizedArcMatrix::new(39, 6, vec![Fq::from_montgomery_limbs([11114527869315019992, 204777424233041404, 11091912519069240090, 121969426625488706]), Fq::from_montgomery_limbs([11602548353808217299, 6197238791893869094, 15622579320964543388, 1298930792120594487]), Fq::from_montgomery_limbs([838896996119702820, 9307552859605174720, 8035142733069793771, 274230695041989171]), Fq::from_montgomery_limbs([3026923182969617970, 17802669379857452552, 12317599963821296502, 1025681681724348483]), Fq::from_montgomery_limbs([5608950751956253759, 13524340746668180438, 15318090696011006995, 777019565914500344]), Fq::from_montgomery_limbs([1158035626778037273, 17664260243497899213, 16296355254226759288, 950557495952381678]), Fq::from_montgomery_limbs([11235491782021601934, 3148198093287396523, 17540068057551648414, 246938399961631601]), Fq::from_montgomery_limbs([17389082769676787279, 4715116371725704005, 680633748837086801, 1023507596971258305]), Fq::from_montgomery_limbs([7398967334233665984, 13695483063991186800, 18171031240540141567, 1071188377250033509]), Fq::from_montgomery_limbs([8901013324099486427, 14221538804433703579, 421845258270117661, 1118364576196477055]), Fq::from_montgomery_limbs([3792995620986947754, 8295286409031689804, 7023787899825757992, 899023674461718667]), Fq::from_montgomery_limbs([8793784762096018942, 15222981485936247095, 17829285903963587033, 104381350073974926]), Fq::from_montgomery_limbs([11268502072074030331, 4494658873172678747, 10565307326465463378, 784696444351308107]), Fq::from_montgomery_limbs([13330824150800116849, 4890131204868069348, 16795432331983276560, 678123243378284364]), Fq::from_montgomery_limbs([16154775053781645033, 5239747136963640569, 16611876759537507645, 759623577554638126]), Fq::from_montgomery_limbs([8392188723943358220, 16791142993973140668, 13297749232586734563, 426701908934618073]), Fq::from_montgomery_limbs([17606532937509352288, 2853753027669231277, 1878611917293492305, 643977045852461225]), Fq::from_montgomery_limbs([5784332265294899224, 10677876800438676900, 18301919197560353192, 1242300655560067148]), Fq::from_montgomery_limbs([11412543805884713089, 4404535555399600518, 4605611364617586616, 706261397170793623]), Fq::from_montgomery_limbs([2724614443579353257, 12190950292326203757, 12944786940879400957, 90707148364678769]), Fq::from_montgomery_limbs([16664686769040599810, 7492639236725157146, 1787480043672337070, 1043615315016757716]), Fq::from_montgomery_limbs([4392261116480034202, 16508253691140740970, 1257682754845069496, 1301148167322522764]), Fq::from_montgomery_limbs([139213556258184346, 16303671450556136664, 10342805884525342231, 508792166529776861]), Fq::from_montgomery_limbs([14643711485787161846, 5395142180975966192, 12467589421402803020, 144762579288366866]), Fq::from_montgomery_limbs([15255437222491521014, 14721462158275437977, 2057221655333534074, 1325734657361576891]), Fq::from_montgomery_limbs([15414140179948612967, 18192784700743189854, 9643806020156298087, 376775047158942797]), Fq::from_montgomery_limbs([18092841461306760003, 2807423972236024481, 7922348787325395480, 1212285078601209657]), Fq::from_montgomery_limbs([16708900869096362927, 2122564142804905834, 13890195487457233383, 126050338062319781]), Fq::from_montgomery_limbs([13016765056631510317, 775825654612492872, 1519488323304929971, 511775234197862995]), Fq::from_montgomery_limbs([10798249763854349440, 8782377489797979147, 12405352952342825868, 1275110544094341666]), Fq::from_montgomery_limbs([9330052657446344303, 4964707063063280466, 2747936433058978798, 1286324345607159919]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13438421980365571751, 13764047089799136418, 6549510980996449235, 89638406717638204]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3120082900215749818, 2506463968951363665, 5751682941173719701, 1183280915899386044]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3889637240168755614, 14778096222179630956, 16885419836575361353, 250222614360102585]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8994135098656528858, 6054905993385110489, 15955209030417792186, 417192650490068388]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10542836021159102202, 3922552091508743640, 15499449205954987041, 257248375734524697]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18307747395340188800, 7047747805490525925, 11242708609504355532, 793276497114397997]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16022663073357324949, 3551519053939817423, 3374093457075448733, 95641413276534082]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16611512242802281767, 13417278867724672960, 12339427782843337847, 1029453794287724677]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9587606159882976610, 13065183120609796571, 5134588985846741978, 1052742636206989263]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5120379400595969817, 4824276514479560160, 15209383162223813538, 98360897446496767]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7633930096380799602, 2831233200869503763, 6933925156133583675, 45431990866667491]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4063032547170944262, 2228607997293084806, 376103209766462421, 748529159788109811]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8393715434195231445, 15247401046663606451, 1655959932549342287, 101776028083387641]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15008767674909606325, 531227893384812653, 7210523396658562084, 437386864972028358]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16809071159722694272, 6830450328296125348, 6475300827542698627, 399257887526004612]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([82825596177761974, 11317217432462243029, 6642795994570466536, 54497338514902862]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6850975607505382161, 14495312419830721473, 12467132244094124841, 869971081325966252]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6776972065809629900, 14404993916899429083, 14745271791343793348, 1281731922471929435]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12167414230777830458, 3579196606687723355, 14118801611883897825, 1188804452360844569]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7553145712183260477, 18113523762458916439, 13422344310762339471, 121199852036910351]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6210598847695513673, 10694250862598493782, 1063552736172580723, 859901328112942851]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10747937872207229763, 13786226828072394952, 274364464850991752, 1218823234058712778]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2520693279910212484, 15286253593138229505, 9531050394238581262, 329181833527084527]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3226526077625644436, 2588404341480318661, 9070433711166827508, 1188235207132643549]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16703563760445846403, 8620998770380437284, 8858436416497897390, 1102236124390324251]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5630089007465765576, 6410026402258852609, 17160884434802874754, 420357023452589124]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12644008863026136496, 11315917635237722843, 12364361333201119848, 946242401908845264]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9089855529735912751, 11711947227707110137, 12189800517249432550, 1037376283079163315]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2642673912191614581, 8420261709120249882, 7567649328018501241, 1090882039889692225]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([624108744920628033, 7222337173749652537, 6177234009439253836, 1305879330650409183]), Fq::from_montgomery_limbs([4047186108818890838, 8293278676301284463, 45421248765572143, 11849077013826147]), Fq::from_montgomery_limbs([13734838437817111564, 14067107962177066014, 6283538344938866018, 943068615468766850]), Fq::from_montgomery_limbs([9459753653362225504, 13412221550119657532, 11719554885145159458, 1038210702444171410]), Fq::from_montgomery_limbs([17258590752825572441, 4422385439615665045, 10963985232294213328, 673097344483052623]), Fq::from_montgomery_limbs([4350910935437581306, 17071656780821887075, 17526744607642225290, 489524084357985818]), Fq::from_montgomery_limbs([8703107470067448452, 734592437454660319, 6370216058631913860, 984849913832896286]), Fq::from_montgomery_limbs([15847437253128917127, 13204151715277535095, 13151742340803361913, 492775982398767260]), Fq::from_montgomery_limbs([13378140148769271177, 11023068523390522139, 1729259508144916727, 998491139322015796]), Fq::from_montgomery_limbs([15868115462640964898, 5808184910810487816, 17891106563868657547, 1273423536878729280]), Fq::from_montgomery_limbs([17498572932499506726, 4915375148198704347, 16526318329827242193, 172885368041045335]), Fq::from_montgomery_limbs([12175858961476635194, 8395097384299796850, 16561947957716644135, 118811035529307344]), Fq::from_montgomery_limbs([1364632949773972783, 5616500288305274826, 2744828291285230257, 1337220218752536168]), Fq::from_montgomery_limbs([7125704632582034340, 2413935880315792634, 16253134495760827214, 1013353907442898755]), Fq::from_montgomery_limbs([9926413936648370716, 9286244748248440505, 5620697470790885637, 1050126432920929832]), Fq::from_montgomery_limbs([2286190222160729638, 1205027650655862007, 284571302335235840, 754838472987631454]), Fq::from_montgomery_limbs([18032942241472576701, 12877723516371231014, 5304401947346162660, 638292803799023432]), Fq::from_montgomery_limbs([1301734909908791963, 3999021096443686109, 8224194566860360743, 975889756225576945]), Fq::from_montgomery_limbs([13137758236377688944, 15164889622744579310, 9510882901247182860, 507443416341514201]), Fq::from_montgomery_limbs([7442629497476523514, 15402336932582436695, 12267702252685663951, 406181490859224216]), Fq::from_montgomery_limbs([3020913173034234370, 7615906519537783167, 14373843007930618441, 268952515824125262]), Fq::from_montgomery_limbs([8510711668693637739, 16478737597936355688, 4962621450185609628, 274948738817040348]), Fq::from_montgomery_limbs([175794307933344111, 2355200265651483892, 17868773626579092521, 52492857067069690]), Fq::from_montgomery_limbs([13918504549178190575, 13563258972352289042, 5310731325887509548, 465559440844068311])]), -// } -// } +pub mod rate_5; // /// Parameters for the rate-6 instance of Poseidon. // pub fn rate_6() -> PoseidonParameters { diff --git a/poseidon377/src/params/rate_5.rs b/poseidon377/src/params/rate_5.rs new file mode 100644 index 0000000..cab8fbe --- /dev/null +++ b/poseidon377/src/params/rate_5.rs @@ -0,0 +1,30 @@ +use decaf377::Fq; +use poseidon_parameters::v1::{ + Alpha, ArcMatrix, Matrix, MdsMatrix, OptimizedArcMatrix, OptimizedMdsMatrices, + PoseidonParameters, RoundNumbers, SquareMatrix, +}; + +/// Parameters for the rate-5 instance of Poseidon. +pub const fn rate_5() -> PoseidonParameters<6, 5, 36, 25, 39, 6, 234, 31> { + PoseidonParameters { + M: 128, + arc: ArcMatrix::<39, 6, 234>::new_from_known([Fq::from_montgomery_limbs([11114527869315019992, 204777424233041404, 11091912519069240090, 121969426625488706]), Fq::from_montgomery_limbs([11602548353808217299, 6197238791893869094, 15622579320964543388, 1298930792120594487]), Fq::from_montgomery_limbs([838896996119702820, 9307552859605174720, 8035142733069793771, 274230695041989171]), Fq::from_montgomery_limbs([3026923182969617970, 17802669379857452552, 12317599963821296502, 1025681681724348483]), Fq::from_montgomery_limbs([5608950751956253759, 13524340746668180438, 15318090696011006995, 777019565914500344]), Fq::from_montgomery_limbs([1158035626778037273, 17664260243497899213, 16296355254226759288, 950557495952381678]), Fq::from_montgomery_limbs([11235491782021601934, 3148198093287396523, 17540068057551648414, 246938399961631601]), Fq::from_montgomery_limbs([17389082769676787279, 4715116371725704005, 680633748837086801, 1023507596971258305]), Fq::from_montgomery_limbs([7398967334233665984, 13695483063991186800, 18171031240540141567, 1071188377250033509]), Fq::from_montgomery_limbs([8901013324099486427, 14221538804433703579, 421845258270117661, 1118364576196477055]), Fq::from_montgomery_limbs([3792995620986947754, 8295286409031689804, 7023787899825757992, 899023674461718667]), Fq::from_montgomery_limbs([8793784762096018942, 15222981485936247095, 17829285903963587033, 104381350073974926]), Fq::from_montgomery_limbs([11268502072074030331, 4494658873172678747, 10565307326465463378, 784696444351308107]), Fq::from_montgomery_limbs([13330824150800116849, 4890131204868069348, 16795432331983276560, 678123243378284364]), Fq::from_montgomery_limbs([16154775053781645033, 5239747136963640569, 16611876759537507645, 759623577554638126]), Fq::from_montgomery_limbs([8392188723943358220, 16791142993973140668, 13297749232586734563, 426701908934618073]), Fq::from_montgomery_limbs([17606532937509352288, 2853753027669231277, 1878611917293492305, 643977045852461225]), Fq::from_montgomery_limbs([5784332265294899224, 10677876800438676900, 18301919197560353192, 1242300655560067148]), Fq::from_montgomery_limbs([11412543805884713089, 4404535555399600518, 4605611364617586616, 706261397170793623]), Fq::from_montgomery_limbs([2724614443579353257, 12190950292326203757, 12944786940879400957, 90707148364678769]), Fq::from_montgomery_limbs([16664686769040599810, 7492639236725157146, 1787480043672337070, 1043615315016757716]), Fq::from_montgomery_limbs([4392261116480034202, 16508253691140740970, 1257682754845069496, 1301148167322522764]), Fq::from_montgomery_limbs([139213556258184346, 16303671450556136664, 10342805884525342231, 508792166529776861]), Fq::from_montgomery_limbs([14643711485787161846, 5395142180975966192, 12467589421402803020, 144762579288366866]), Fq::from_montgomery_limbs([15255437222491521014, 14721462158275437977, 2057221655333534074, 1325734657361576891]), Fq::from_montgomery_limbs([10286355773254745653, 8339495471482876116, 7453999146298511805, 300469360378533737]), Fq::from_montgomery_limbs([2229249064542236808, 3252881241602061127, 17948673955112458282, 251981777265729122]), Fq::from_montgomery_limbs([1422075247142054873, 8352700063552546507, 3488191142699771311, 539185901306414217]), Fq::from_montgomery_limbs([12740149804027925426, 5586599109404648568, 8527372678942371978, 115816006301850856]), Fq::from_montgomery_limbs([6406078249694103685, 13837513268450501788, 17900428335249812847, 459347554819743617]), Fq::from_montgomery_limbs([456851906250247004, 7370389193990924655, 1807458787636143704, 398667578735753852]), Fq::from_montgomery_limbs([9788417460696232352, 5540502179845655224, 11753539559261255021, 1240756247017913507]), Fq::from_montgomery_limbs([14537927489871028819, 8847897852622601733, 7522585085117894620, 375913426199509068]), Fq::from_montgomery_limbs([14308316144026398062, 8381587303995226137, 14032256210407832529, 689401812725544360]), Fq::from_montgomery_limbs([13627669936560791680, 15960253582647842471, 10281350312743054371, 150904336199250478]), Fq::from_montgomery_limbs([5265938544355635125, 14011142295917522514, 3457190839889849022, 965417711506858707]), Fq::from_montgomery_limbs([16926111367909514992, 15173362371822436547, 14933443732208301060, 434526341180358604]), Fq::from_montgomery_limbs([14967648454927618569, 3291387031545538855, 8588581828915048287, 792649357850563702]), Fq::from_montgomery_limbs([15353334048989602273, 17774561716206146119, 15636104655753091025, 1121698680267776671]), Fq::from_montgomery_limbs([7352303644457020849, 11873784571663633568, 14627146015402136109, 1299084319993956489]), Fq::from_montgomery_limbs([16915421385818843283, 6574617383150910264, 11422646729677132251, 929867690867770500]), Fq::from_montgomery_limbs([2727877432502627942, 15580341544991113874, 3099990664581009583, 1240423234600344359]), Fq::from_montgomery_limbs([14109846450233510521, 14674455181378475527, 1052605710857317529, 1170659366228378647]), Fq::from_montgomery_limbs([1487646680354896463, 4928492219250082356, 5905478662916155907, 544460360269702126]), Fq::from_montgomery_limbs([6341346323512196011, 5734973448691058326, 7525099077854354763, 538464447227753960]), Fq::from_montgomery_limbs([2970148736135554232, 8050550381279637505, 12092286293721047612, 120114654914049590]), Fq::from_montgomery_limbs([17316363606963256567, 5533183240747888359, 585663312963257979, 139248346646491863]), Fq::from_montgomery_limbs([10174847279006068180, 2997987744513078474, 10464913671214968471, 524965683820736700]), Fq::from_montgomery_limbs([54341264868687362, 5421004392946502713, 747264896093234142, 211411280351915374]), Fq::from_montgomery_limbs([5185489921536036071, 4704724361069451071, 4676129525140851232, 1120503850587310053]), Fq::from_montgomery_limbs([5188148333232019565, 9844624880738531087, 11083931443628660795, 48712959222331590]), Fq::from_montgomery_limbs([18132794403501755308, 4996277675320572821, 8426233139227882210, 1136120772510480448]), Fq::from_montgomery_limbs([6688066783162319874, 16812397130378746446, 1563788939072390863, 94078802559039860]), Fq::from_montgomery_limbs([7277685347797685095, 16873547601164190596, 14751852483076367538, 14675244398420571]), Fq::from_montgomery_limbs([10079144247912409743, 8202707283781100239, 14357029383013329671, 1339785338742424059]), Fq::from_montgomery_limbs([9634622379571234742, 10124148039561860757, 12959569757638734172, 595623221777036788]), Fq::from_montgomery_limbs([12438115909232101952, 6692144523221973376, 98330004458373230, 1289698894538748039]), Fq::from_montgomery_limbs([12584838405775095951, 2233721579825914515, 4679507125597853910, 1005456515702813230]), Fq::from_montgomery_limbs([3938302556839502700, 9759499277811028830, 3296175630346274937, 981342338929693494]), Fq::from_montgomery_limbs([13584588304331907697, 14901744669564308257, 10189694356059299380, 146229118527659864]), Fq::from_montgomery_limbs([7977203115766932089, 5348595991272040666, 7916441407055787565, 414015970121354410]), Fq::from_montgomery_limbs([6344869167182666748, 87274177081813667, 3736796951764034882, 288116208326542090]), Fq::from_montgomery_limbs([6782489206655080598, 619325409304332178, 17888946015733998246, 1225153807687734600]), Fq::from_montgomery_limbs([2843050123299780857, 1857078695470833828, 13790121543731752592, 415443237864035468]), Fq::from_montgomery_limbs([8596983925472337433, 7326755327579826593, 12756860599564365858, 584181157037447809]), Fq::from_montgomery_limbs([6624979411473108702, 17481608711835432073, 9326170883700217913, 284274034447147537]), Fq::from_montgomery_limbs([13805074074198365820, 16654885628813400888, 11514371967468509966, 343666476001683468]), Fq::from_montgomery_limbs([13412135478858616067, 17972587362145489837, 3471900644097496495, 1303815283631151979]), Fq::from_montgomery_limbs([5393982013204945472, 2134584020773499203, 673466067189783026, 383197328076308992]), Fq::from_montgomery_limbs([12690627402887821729, 10714862615705492405, 1068799421694466319, 1005549471897715563]), Fq::from_montgomery_limbs([2794121834599689269, 9403898257934234871, 15645249730625359588, 717133247159915483]), Fq::from_montgomery_limbs([3750258937835721096, 2056713754904073328, 13343956241265388204, 978687562686928642]), Fq::from_montgomery_limbs([6693505246665395198, 321305738310940343, 8242276846147342531, 437988437080106004]), Fq::from_montgomery_limbs([13067453044702788796, 16549020754244348848, 14781963588087090141, 661082564029228628]), Fq::from_montgomery_limbs([17540644026388671794, 8922891784689421140, 9379310092907018870, 765574007581740165]), Fq::from_montgomery_limbs([17168415590631158212, 4967864494403905256, 8557026071391060461, 1317676192546642661]), Fq::from_montgomery_limbs([15849602569050873376, 937817756067670930, 9256527416398591608, 860235003543784933]), Fq::from_montgomery_limbs([7543632918105704930, 12541439592576801019, 13144951089707956772, 41901740621632050]), Fq::from_montgomery_limbs([6730944509314595369, 6308132304102632805, 9824188815073657306, 947447793188743941]), Fq::from_montgomery_limbs([8027042707746962490, 11823228291757902961, 13058185285098764358, 336308269362966457]), Fq::from_montgomery_limbs([17668761980666590381, 916900473222809342, 9032902696647999656, 1206798077709834757]), Fq::from_montgomery_limbs([2575943430919555647, 6982422138755698722, 17906452816315642240, 1040285465480518609]), Fq::from_montgomery_limbs([4676245288580428747, 1286234536026906032, 15834455733024512963, 173462824491942276]), Fq::from_montgomery_limbs([14308731880491479014, 10228826088867441356, 15499426016798380851, 1315964678542897961]), Fq::from_montgomery_limbs([6124462188383628200, 13994025204959010105, 2282493343669790508, 1065454428927664041]), Fq::from_montgomery_limbs([988926009518969200, 15417015929087482085, 5998393954402084482, 540400810650613669]), Fq::from_montgomery_limbs([5764104729040907699, 2863356645440240472, 9968438238837920675, 633210980814249702]), Fq::from_montgomery_limbs([10763147411954484876, 4870204607771977448, 6480512614473978867, 683494642222622007]), Fq::from_montgomery_limbs([4440852407455748277, 8762659822349541955, 18263541095190090147, 585043470445066748]), Fq::from_montgomery_limbs([16911785709988001751, 3581411532501811046, 1478440133608885243, 1164133149174128766]), Fq::from_montgomery_limbs([1426558755494224529, 12516949196047728033, 17132752269246428290, 356208126695477134]), Fq::from_montgomery_limbs([14896569372479444141, 1449669928198367982, 12457553693255423792, 902793672204828469]), Fq::from_montgomery_limbs([3369226999454999348, 11158810537103910265, 2808006375302756684, 719861372102939033]), Fq::from_montgomery_limbs([3246518112410208054, 13944200025301723446, 764003656536121000, 81035000333546312]), Fq::from_montgomery_limbs([480604143483617458, 15146610571181935768, 10342031106972296681, 321939937748541484]), Fq::from_montgomery_limbs([3823315055653922623, 1544133407778019995, 8339678284115967093, 340405582859069416]), Fq::from_montgomery_limbs([14521487749042353090, 2741200029829353725, 15404416537140680175, 224317571319525964]), Fq::from_montgomery_limbs([9111107875572394601, 14812080039988879021, 11740909323457275498, 1142849951174245079]), Fq::from_montgomery_limbs([6315394863492521922, 15290263181571711160, 8361458214310627912, 1120819345406699978]), Fq::from_montgomery_limbs([7541199882669497715, 686266139368081655, 3486408502495110410, 305571836806477895]), Fq::from_montgomery_limbs([11194602393992127889, 4823164490358819269, 2963098888089596977, 127467430759375185]), Fq::from_montgomery_limbs([13401323458715176749, 7526519102807969052, 11500838828688844175, 593796521014294359]), Fq::from_montgomery_limbs([11177320531756391055, 4080502600305034702, 2571892269998531885, 231632967099830080]), Fq::from_montgomery_limbs([6149939798770351609, 18287517033582086432, 5338242308958263460, 328048786757923732]), Fq::from_montgomery_limbs([15458540156643766751, 1400997897599319292, 7413209173172832967, 100478538984542434]), Fq::from_montgomery_limbs([15303231637131188474, 12210183127521607378, 16044977891049973821, 772905068623323043]), Fq::from_montgomery_limbs([10785654084122827601, 2211259386857104245, 16649012282872525368, 102071913196144291]), Fq::from_montgomery_limbs([2881174213450719659, 12014311740982782554, 12475890147035428875, 1060652822280359969]), Fq::from_montgomery_limbs([5168530618588372608, 12645871097945809310, 12679814118712019422, 757227039744328626]), Fq::from_montgomery_limbs([16723583453861051889, 13217434832318564597, 17167491729232777306, 750899259017645156]), Fq::from_montgomery_limbs([11975166328753770827, 5021170043599009847, 8130600622535160737, 1210833522054518385]), Fq::from_montgomery_limbs([11828331664533985829, 5744074093878888180, 13572294236110601484, 741336438516605705]), Fq::from_montgomery_limbs([9092803352234031294, 16991861971006998540, 12590210254184326397, 163020812219371078]), Fq::from_montgomery_limbs([15150825267514654715, 7582420113892720781, 11021538006069969553, 514128026898157287]), Fq::from_montgomery_limbs([257730274965307694, 15941247979209339081, 12550718099618824836, 926747662553501853]), Fq::from_montgomery_limbs([16021060490791077863, 18399937961097236925, 12479381244109581994, 958161696800711416]), Fq::from_montgomery_limbs([5656070927198127166, 13673864766172609613, 7854541344260335717, 433926247460842256]), Fq::from_montgomery_limbs([3081498096075015625, 5114063565662711844, 6016747140135578647, 200080044486646757]), Fq::from_montgomery_limbs([8668474263754820542, 5150418979667712870, 671591932121595684, 387641243292135089]), Fq::from_montgomery_limbs([9867452618101888436, 9573741750129271560, 11870983264768155164, 672361345937806490]), Fq::from_montgomery_limbs([2794280237383234509, 8511976920647235700, 12240900835121281355, 5009064961478580]), Fq::from_montgomery_limbs([12481235113884027566, 5693342786405429686, 2966752082111199656, 878902670166036876]), Fq::from_montgomery_limbs([14240267055971916647, 10396848562787560462, 5518035894864045572, 1179757559875500073]), Fq::from_montgomery_limbs([14962737666094847614, 10739908350874416157, 4895620174233055664, 321666060863471221]), Fq::from_montgomery_limbs([13445218619283341504, 5092610038400904148, 2968853296034188758, 835336201072079364]), Fq::from_montgomery_limbs([10233520240960919680, 5959452117994239475, 16491909337703133675, 891169556062643417]), Fq::from_montgomery_limbs([2834888386861055650, 7604409413887743592, 13030269578665703653, 401509353262871810]), Fq::from_montgomery_limbs([2704145273060684739, 1774123728738332116, 4451847378072935255, 539946861082459083]), Fq::from_montgomery_limbs([10338036189104724495, 5463305924257293228, 7871975511799681863, 487399285329040504]), Fq::from_montgomery_limbs([10282365810457753854, 4875136836869467005, 8167065600132017137, 612538811597081600]), Fq::from_montgomery_limbs([11956552275263932784, 2910596066147194639, 1653383919024312564, 917094813414419045]), Fq::from_montgomery_limbs([7847733681848392968, 17061053188234229069, 4327647852405514270, 201342973946798656]), Fq::from_montgomery_limbs([12402208752860149978, 5942639276189211897, 8650838259976493487, 93208955821879002]), Fq::from_montgomery_limbs([4359686047010863164, 1740657266406964854, 14400992892832573055, 600962517221943370]), Fq::from_montgomery_limbs([7871068409103488505, 12092947390480615881, 15236005069504836910, 1219304791403246439]), Fq::from_montgomery_limbs([2331767746054493290, 15439688574017229593, 2624671321035938496, 196664992671490503]), Fq::from_montgomery_limbs([6984766032236094336, 4199333161186836907, 6966733218962904660, 828131141266688191]), Fq::from_montgomery_limbs([18198492961367884206, 4075548382228621731, 7120869279096377960, 1112174665656009203]), Fq::from_montgomery_limbs([15188354035011941657, 1528404887014191153, 7644022124588184416, 656794906545005738]), Fq::from_montgomery_limbs([3703805022276205448, 11543145569483730813, 2304402099650902209, 823592775762696951]), Fq::from_montgomery_limbs([5142351354334489771, 10763765166551123043, 17450746794319983955, 960731944967042935]), Fq::from_montgomery_limbs([9913254528380233461, 6379270468481813387, 4130926869587487310, 610795545512520772]), Fq::from_montgomery_limbs([17898556710819263490, 7911122569140186326, 5516730092468208963, 664379227085230598]), Fq::from_montgomery_limbs([10616973143833638020, 17471880607893344822, 1128145204777244976, 337394536883295972]), Fq::from_montgomery_limbs([6661544590953239315, 15146532782491929291, 4755596764817736061, 545820584329603194]), Fq::from_montgomery_limbs([60806500798869004, 15736128091162195183, 5715198746929749021, 446174552562569645]), Fq::from_montgomery_limbs([5425873532207787318, 7464087132630945791, 5476589627464471901, 457480423296188143]), Fq::from_montgomery_limbs([9013993650827414321, 2350031823838640206, 11034300868488958302, 388596567345343643]), Fq::from_montgomery_limbs([6468567377966650967, 13590648265578243490, 15927509019046836214, 1009388599057851509]), Fq::from_montgomery_limbs([172016905197246847, 4035387207966104057, 211325131413472824, 1280387199047629664]), Fq::from_montgomery_limbs([7689408096630419675, 14584961804097092641, 1127508416484176885, 171502318968879609]), Fq::from_montgomery_limbs([9294855872887423209, 2005827460175726472, 16783720225277999740, 1082009637379471203]), Fq::from_montgomery_limbs([17016200436476421122, 12639043105124250806, 6582000444620236323, 508699111294885791]), Fq::from_montgomery_limbs([14725203266650011970, 13877962155717739891, 9513649462380557047, 642461852581041542]), Fq::from_montgomery_limbs([9787931489031096184, 7902836596315130785, 78997879637635390, 694120778750553576]), Fq::from_montgomery_limbs([17889392554162858882, 342322215215622448, 4493824746279576258, 312168636607671093]), Fq::from_montgomery_limbs([8140513347694048696, 12902641943590609873, 14714848264461122064, 1334963605704347157]), Fq::from_montgomery_limbs([13240131887967600078, 4407633827305492594, 15540185952445554130, 68037993503280515]), Fq::from_montgomery_limbs([10497793217508245191, 888682325286928065, 15370448865727419266, 733754751125624627]), Fq::from_montgomery_limbs([7740533852108866287, 17937493023745474932, 7773801956856873664, 504241230363210440]), Fq::from_montgomery_limbs([11961891551527755983, 17934542229987203026, 1103543868067501932, 687591834971622190]), Fq::from_montgomery_limbs([4127100989690868033, 8900195718942322911, 8226770865992890280, 985029699319544839]), Fq::from_montgomery_limbs([8227296419732771358, 16053490579720323354, 3654951897271203554, 1041079676339451632]), Fq::from_montgomery_limbs([8010548121403948512, 1275465025143581354, 2160211023041782235, 1189169285314754196]), Fq::from_montgomery_limbs([7530207327455925553, 5703304996823784226, 6548643313601850639, 827356749854490373]), Fq::from_montgomery_limbs([8316601172635772109, 12370440707468203196, 2939769182126754327, 753180078630191546]), Fq::from_montgomery_limbs([1143377137813871993, 17312593164165222318, 13705553886161524318, 941885898262021576]), Fq::from_montgomery_limbs([2112728878057216642, 3892761102962286658, 11417348492657537819, 735668726979811860]), Fq::from_montgomery_limbs([16782576336846005593, 3624413749987727914, 17968976872659530354, 487897895994872800]), Fq::from_montgomery_limbs([2484948819702640096, 5387963240223549977, 12687920099134049563, 883350989149367893]), Fq::from_montgomery_limbs([2858482485641078244, 2714093515401288033, 10455809282530923083, 751664744246651868]), Fq::from_montgomery_limbs([13617000549064485510, 4455000600207656914, 12777124443685982279, 512862262303044909]), Fq::from_montgomery_limbs([10570187078077272513, 15758514759732880612, 10690894638211880846, 465609433405901497]), Fq::from_montgomery_limbs([13236383050663721729, 12125155130370039041, 17253356752093433548, 232625893933277711]), Fq::from_montgomery_limbs([757191121931270989, 9786533229648281558, 7506322761488798421, 219466670969587686]), Fq::from_montgomery_limbs([11502539180279016827, 10976808592365411679, 14518853469755275814, 189651093510465237]), Fq::from_montgomery_limbs([7406145050063996705, 5433107506103268286, 4579059832807850831, 292839512595959393]), Fq::from_montgomery_limbs([242050570766254477, 16090627413832777930, 8503088905690880687, 844834299854905528]), Fq::from_montgomery_limbs([15972066311454464627, 12186767479971029668, 2392334865506711034, 617078040284954179]), Fq::from_montgomery_limbs([6210271142236644282, 6562036542656589429, 8025274330376993547, 762526438011303745]), Fq::from_montgomery_limbs([14753366313850022795, 5437791126426953356, 14245062222537079752, 150913805242227000]), Fq::from_montgomery_limbs([4807021976023523388, 16710746776370779475, 7473038774703206777, 172363022129389231]), Fq::from_montgomery_limbs([7874676450184753436, 2949898094916075783, 630009569754295782, 934898795281709342]), Fq::from_montgomery_limbs([2596733933911644291, 18211864913609597189, 669972403590796856, 1007790356294249019]), Fq::from_montgomery_limbs([8847285884406092349, 15810443671218046899, 781303087795509610, 175334333513747495]), Fq::from_montgomery_limbs([5611124786858759575, 7741270494085822523, 1204252626273700461, 831434023402198326]), Fq::from_montgomery_limbs([17024841864111709876, 10953422139928438, 7108870425049447348, 867000474059877218]), Fq::from_montgomery_limbs([17254710881283625253, 13619503273421245826, 16524833801283537459, 867017638279036320]), Fq::from_montgomery_limbs([3047689304468185211, 4544400348474807371, 3340017855267764578, 1089932391947236624]), Fq::from_montgomery_limbs([944987404414691783, 7324130194857674958, 14960179948619727115, 970290030783854962]), Fq::from_montgomery_limbs([8156639230679108247, 17055081218862987306, 3045209940380371184, 1025132464373554760]), Fq::from_montgomery_limbs([18254963138764984051, 12469634773213013819, 6758329371646179128, 349904494647494862]), Fq::from_montgomery_limbs([6795371985529952899, 17895939878048277876, 16632557265478858928, 387059669716455908]), Fq::from_montgomery_limbs([1318357771340990990, 12994552359569230566, 16705716531436318589, 763697275022015004]), Fq::from_montgomery_limbs([16465052430714272962, 13602787326604775722, 15751371050932720313, 138014004592597966]), Fq::from_montgomery_limbs([15825638165970940054, 9332212474670848079, 7882594046477316711, 290829412130665018]), Fq::from_montgomery_limbs([6362195239856311490, 4780237228875137807, 14782630189115640960, 704272740049173340]), Fq::from_montgomery_limbs([6559278659646672166, 6801036849757997540, 8000231443027455180, 656562251428831486]), Fq::from_montgomery_limbs([913435484006780831, 4148347286870754245, 15429895160407091360, 481581552746677021]), Fq::from_montgomery_limbs([3201617625256301842, 17959683725889804366, 12477328746136434592, 804751930331318023]), Fq::from_montgomery_limbs([8260268643263772682, 564990144864143113, 3819503561945572420, 589166794945624703]), Fq::from_montgomery_limbs([1468345889510338758, 12133722777278260983, 2225753638037198615, 983608944845547502]), Fq::from_montgomery_limbs([16667974706419349718, 12656033986103589392, 16476477987437165475, 328446031568129583]), Fq::from_montgomery_limbs([10832018960089362233, 15872202042944916671, 1542413852742137668, 856769655034004351]), Fq::from_montgomery_limbs([1248584674224513873, 10955885710253485131, 690903013823109733, 586986955236732406]), Fq::from_montgomery_limbs([7801056996972321718, 10731441130229109668, 1309104763613854723, 168690751356355485]), Fq::from_montgomery_limbs([863448993500386948, 12860067037622976516, 4075953973254780281, 1092718826088125370]), Fq::from_montgomery_limbs([4083664853681447299, 16294486273605038844, 13502684468641213280, 1231917587532627983]), Fq::from_montgomery_limbs([17640823880561253607, 17906844028095875120, 16598825086926066591, 1259468978780670799]), Fq::from_montgomery_limbs([3915912471832963150, 2878160052333009121, 5137491367309860490, 525959498882725072]), Fq::from_montgomery_limbs([624108744920628033, 7222337173749652537, 6177234009439253836, 1305879330650409183]), Fq::from_montgomery_limbs([4047186108818890838, 8293278676301284463, 45421248765572143, 11849077013826147]), Fq::from_montgomery_limbs([13734838437817111564, 14067107962177066014, 6283538344938866018, 943068615468766850]), Fq::from_montgomery_limbs([9459753653362225504, 13412221550119657532, 11719554885145159458, 1038210702444171410]), Fq::from_montgomery_limbs([17258590752825572441, 4422385439615665045, 10963985232294213328, 673097344483052623]), Fq::from_montgomery_limbs([4350910935437581306, 17071656780821887075, 17526744607642225290, 489524084357985818]), Fq::from_montgomery_limbs([8703107470067448452, 734592437454660319, 6370216058631913860, 984849913832896286]), Fq::from_montgomery_limbs([15847437253128917127, 13204151715277535095, 13151742340803361913, 492775982398767260]), Fq::from_montgomery_limbs([13378140148769271177, 11023068523390522139, 1729259508144916727, 998491139322015796]), Fq::from_montgomery_limbs([15868115462640964898, 5808184910810487816, 17891106563868657547, 1273423536878729280]), Fq::from_montgomery_limbs([17498572932499506726, 4915375148198704347, 16526318329827242193, 172885368041045335]), Fq::from_montgomery_limbs([12175858961476635194, 8395097384299796850, 16561947957716644135, 118811035529307344]), Fq::from_montgomery_limbs([1364632949773972783, 5616500288305274826, 2744828291285230257, 1337220218752536168]), Fq::from_montgomery_limbs([7125704632582034340, 2413935880315792634, 16253134495760827214, 1013353907442898755]), Fq::from_montgomery_limbs([9926413936648370716, 9286244748248440505, 5620697470790885637, 1050126432920929832]), Fq::from_montgomery_limbs([2286190222160729638, 1205027650655862007, 284571302335235840, 754838472987631454]), Fq::from_montgomery_limbs([18032942241472576701, 12877723516371231014, 5304401947346162660, 638292803799023432]), Fq::from_montgomery_limbs([1301734909908791963, 3999021096443686109, 8224194566860360743, 975889756225576945]), Fq::from_montgomery_limbs([13137758236377688944, 15164889622744579310, 9510882901247182860, 507443416341514201]), Fq::from_montgomery_limbs([7442629497476523514, 15402336932582436695, 12267702252685663951, 406181490859224216]), Fq::from_montgomery_limbs([3020913173034234370, 7615906519537783167, 14373843007930618441, 268952515824125262]), Fq::from_montgomery_limbs([8510711668693637739, 16478737597936355688, 4962621450185609628, 274948738817040348]), Fq::from_montgomery_limbs([175794307933344111, 2355200265651483892, 17868773626579092521, 52492857067069690]), Fq::from_montgomery_limbs([13918504549178190575, 13563258972352289042, 5310731325887509548, 465559440844068311])]), + mds: MdsMatrix::<6, 5, 36, 25>::new_from_known([Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976])]), + alpha: Alpha::Exponent(17), + rounds: RoundNumbers {r_P: 31, r_F: 8}, + optimized_mds: OptimizedMdsMatrices { + M_hat: SquareMatrix::<5, 25>::new_from_known([Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976])]), + v: Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565])]), + w: Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565])]), + M_prime: SquareMatrix::<6, 36>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976])]), + M_doubleprime: SquareMatrix::<6, 36>::new_from_known([Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([15152119682022281684, 2079168917784381610, 8548836536267236340, 524962922610130041]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16770218796354446865, 6164915921600418774, 18434642018604219177, 984431242893424161]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12257484635811173124, 3332345693021229804, 9856107590709416500, 1159223252431020322]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9979132349322887614, 3961848182433907151, 8799570660063224410, 475862931364908156]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3872788615927669352, 15152509537124089722, 5205890896288656861, 1231307161030894178]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), + M_inverse: SquareMatrix::<6, 36>::new_from_known([Fq::from_montgomery_limbs([9423078532813425529, 2444734831186772378, 13312700987643289865, 1248785285043953466]), Fq::from_montgomery_limbs([17268489821349265988, 4381498102126941915, 18059594369778317098, 58369093700071757]), Fq::from_montgomery_limbs([4554828072642644132, 1444610657142044086, 17449887890871798968, 1155580816162940184]), Fq::from_montgomery_limbs([14700875084405105752, 9239241115023183874, 7789802599827561984, 594039389414401309]), Fq::from_montgomery_limbs([17369961549732213951, 17978420689641993214, 5737613384797227392, 899750828627372416]), Fq::from_montgomery_limbs([11810971497921864966, 13993073307646756902, 8362406159543098387, 1156913604397747244]), Fq::from_montgomery_limbs([17268489821349265988, 4381498102126941915, 18059594369778317098, 58369093700071757]), Fq::from_montgomery_limbs([11035226460624215086, 14239859242862966780, 1132467188784037199, 834550800812545516]), Fq::from_montgomery_limbs([16880054357686407084, 4825991163227954043, 6215044494445833070, 1088315875473995942]), Fq::from_montgomery_limbs([18168083839917324524, 16478236068428869610, 13105126087642640896, 34766978023081808]), Fq::from_montgomery_limbs([17825669542785881313, 12421462367159336603, 2878814310510077253, 503620314193006332]), Fq::from_montgomery_limbs([8217239731080607569, 6429369295863013371, 9835418190294938624, 157201591859370779]), Fq::from_montgomery_limbs([4554828072642644132, 1444610657142044086, 17449887890871798968, 1155580816162940184]), Fq::from_montgomery_limbs([16880054357686407084, 4825991163227954043, 6215044494445833070, 1088315875473995942]), Fq::from_montgomery_limbs([11485023460188927874, 2485551665474920570, 6640923664201453737, 128700539913813365]), Fq::from_montgomery_limbs([8823818330539404675, 14326485851202631671, 17961953298539513959, 284442003114632699]), Fq::from_montgomery_limbs([9085308543112959065, 2317720835922103388, 3188272186429413269, 623518145967541728]), Fq::from_montgomery_limbs([1228919753536764212, 8001001063597501895, 1883429940342590902, 229754754018256412]), Fq::from_montgomery_limbs([14700875084405105752, 9239241115023183874, 7789802599827561984, 594039389414401309]), Fq::from_montgomery_limbs([18168083839917324524, 16478236068428869610, 13105126087642640896, 34766978023081808]), Fq::from_montgomery_limbs([8823818330539404675, 14326485851202631671, 17961953298539513959, 284442003114632699]), Fq::from_montgomery_limbs([9493025027446580308, 5326008844078412686, 17968627192349153669, 636747921187750929]), Fq::from_montgomery_limbs([4719209488067015380, 3286149619947952216, 5381059733444658429, 751991172029274729]), Fq::from_montgomery_limbs([671599285952310028, 4063985053036137885, 9646938041918321080, 299288710064420029]), Fq::from_montgomery_limbs([17369961549732213951, 17978420689641993214, 5737613384797227392, 899750828627372416]), Fq::from_montgomery_limbs([17825669542785881313, 12421462367159336603, 2878814310510077253, 503620314193006332]), Fq::from_montgomery_limbs([9085308543112959065, 2317720835922103388, 3188272186429413269, 623518145967541728]), Fq::from_montgomery_limbs([4719209488067015380, 3286149619947952216, 5381059733444658429, 751991172029274729]), Fq::from_montgomery_limbs([6563574222345881967, 1281874181852671859, 11466642440831414650, 443077589787383810]), Fq::from_montgomery_limbs([2252784982698758221, 17647697801612484629, 3564381744461717162, 1112500262860291153]), Fq::from_montgomery_limbs([11810971497921864966, 13993073307646756902, 8362406159543098387, 1156913604397747244]), Fq::from_montgomery_limbs([8217239731080607569, 6429369295863013371, 9835418190294938624, 157201591859370779]), Fq::from_montgomery_limbs([1228919753536764212, 8001001063597501895, 1883429940342590902, 229754754018256412]), Fq::from_montgomery_limbs([671599285952310028, 4063985053036137885, 9646938041918321080, 299288710064420029]), Fq::from_montgomery_limbs([2252784982698758221, 17647697801612484629, 3564381744461717162, 1112500262860291153]), Fq::from_montgomery_limbs([14444310640393871747, 7159616422470945171, 4259499542152695501, 338890106485999353])]), + M_hat_inverse: SquareMatrix::<5, 25>::new_from_known([Fq::from_montgomery_limbs([13904863849479527760, 2515041799497956331, 1093602514364610087, 950491498045111042]), Fq::from_montgomery_limbs([2579295949243395069, 12030978017499995826, 12080587065043491505, 38868424124071283]), Fq::from_montgomery_limbs([15092547513410891885, 17256115361070971171, 15459413513070879524, 321960420545902323]), Fq::from_montgomery_limbs([2229704028309941057, 12072197468400244658, 10950994247046669419, 1297185510317020994]), Fq::from_montgomery_limbs([12038262541350864619, 6432253836569655322, 13293017510951151922, 464458410353108600]), Fq::from_montgomery_limbs([2579295949243395069, 12030978017499995826, 12080587065043491505, 38868424124071283]), Fq::from_montgomery_limbs([10576000036529335161, 13879266532014962184, 16888595672184660747, 1185164108096765058]), Fq::from_montgomery_limbs([1279444508565403937, 6039704410083424768, 14409182292770989236, 1032663778275682773]), Fq::from_montgomery_limbs([10494653767401929635, 7151674624434035414, 113618062021286492, 734991999940840872]), Fq::from_montgomery_limbs([3733906304148166273, 17683287484600659811, 14933709177852827861, 1249090649945868590]), Fq::from_montgomery_limbs([15092547513410891885, 17256115361070971171, 15459413513070879524, 321960420545902323]), Fq::from_montgomery_limbs([1279444508565403937, 6039704410083424768, 14409182292770989236, 1032663778275682773]), Fq::from_montgomery_limbs([17854942931053508049, 12379835822212862963, 7917418649695695574, 818127752736513102]), Fq::from_montgomery_limbs([16713139695953442230, 14827246597006708747, 6565710292947236351, 279636205695659750]), Fq::from_montgomery_limbs([6021453437997963755, 2434637845477546326, 15808901861436069769, 656837851837718215]), Fq::from_montgomery_limbs([2229704028309941057, 12072197468400244658, 10950994247046669419, 1297185510317020994]), Fq::from_montgomery_limbs([10494653767401929635, 7151674624434035414, 113618062021286492, 734991999940840872]), Fq::from_montgomery_limbs([16713139695953442230, 14827246597006708747, 6565710292947236351, 279636205695659750]), Fq::from_montgomery_limbs([1817061708622591813, 7842241796668241324, 11705700881511613623, 124703629193508345]), Fq::from_montgomery_limbs([7645141843637222694, 11261613033476609866, 684978708883533390, 1180658499202360863]), Fq::from_montgomery_limbs([12038262541350864619, 6432253836569655322, 13293017510951151922, 464458410353108600]), Fq::from_montgomery_limbs([3733906304148166273, 17683287484600659811, 14933709177852827861, 1249090649945868590]), Fq::from_montgomery_limbs([6021453437997963755, 2434637845477546326, 15808901861436069769, 656837851837718215]), Fq::from_montgomery_limbs([7645141843637222694, 11261613033476609866, 684978708883533390, 1180658499202360863]), Fq::from_montgomery_limbs([6471109714169199028, 651257754441033744, 967849492968733845, 881634047292451586])]), + M_00: Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), + M_i: Matrix::<6, 6, 36>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([525395534966640354, 4649108525155679700, 5611566907608735139, 1157162242601075454]), Fq::from_montgomery_limbs([4270514995051619857, 9080682450539254193, 11764444330152623833, 1296452142209921646]), Fq::from_montgomery_limbs([13085423902825236141, 4106908764311471538, 2111632228314415714, 345239388869093745]), Fq::from_montgomery_limbs([4739016182142013260, 12433567496673952941, 16956579312525014509, 596646251662680532]), Fq::from_montgomery_limbs([15744576121486695479, 10597769634158624533, 14136093497735719287, 512698864094506675]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4270514995051619857, 9080682450539254193, 11764444330152623833, 1296452142209921646]), Fq::from_montgomery_limbs([14428417055342911695, 8272271618979314579, 5027159236098050530, 724167566789085063]), Fq::from_montgomery_limbs([3709734358196874918, 11929487831132379323, 16830563350788980501, 398518023243913541]), Fq::from_montgomery_limbs([899835313390383283, 10922138075185035991, 10399061813978257330, 1225969452739805970]), Fq::from_montgomery_limbs([6368857132124103246, 3738999983005063047, 6786228693787372954, 743414762217018339]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13085423902825236141, 4106908764311471538, 2111632228314415714, 345239388869093745]), Fq::from_montgomery_limbs([3709734358196874918, 11929487831132379323, 16830563350788980501, 398518023243913541]), Fq::from_montgomery_limbs([9860604545813959634, 6023137071889763432, 18357541439838773826, 267782511194587624]), Fq::from_montgomery_limbs([5425553862160636710, 10155674884481011840, 8882505056945541629, 629430891711291823]), Fq::from_montgomery_limbs([5693655221984583188, 5078045342146247458, 8593703977821442979, 40108457599127726]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4739016182142013260, 12433567496673952941, 16956579312525014509, 596646251662680532]), Fq::from_montgomery_limbs([899835313390383283, 10922138075185035991, 10399061813978257330, 1225969452739805970]), Fq::from_montgomery_limbs([5425553862160636710, 10155674884481011840, 8882505056945541629, 629430891711291823]), Fq::from_montgomery_limbs([1974709593969888668, 3838580677334353595, 4105349786837999128, 16966368926604082]), Fq::from_montgomery_limbs([16299857180872679507, 9990704222165585528, 17839066130443287287, 1300929190020977365]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15744576121486695479, 10597769634158624533, 14136093497735719287, 512698864094506675]), Fq::from_montgomery_limbs([6368857132124103246, 3738999983005063047, 6786228693787372954, 743414762217018339]), Fq::from_montgomery_limbs([5693655221984583188, 5078045342146247458, 8593703977821442979, 40108457599127726]), Fq::from_montgomery_limbs([16299857180872679507, 9990704222165585528, 17839066130443287287, 1300929190020977365]), Fq::from_montgomery_limbs([14268832143359565128, 14009303067203234749, 1311318265344615584, 224271541899878138])]), + v_collection: [Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([15846042622821125949, 5578170090212244723, 14386484975980635087, 1162081450610719662]), Fq::from_montgomery_limbs([9425713365442649542, 17724400577059603932, 10835235343511845981, 1179696731387397906]), Fq::from_montgomery_limbs([15470398571621834328, 8748455436620348445, 11923882037413103894, 147851229490754041]), Fq::from_montgomery_limbs([3205030528550848740, 11233883805951482885, 4631904539047675327, 85240573307222008]), Fq::from_montgomery_limbs([4306955861584430579, 2866573513612242948, 5009794262667624955, 295301720036234004])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([7251188616661835801, 8810908530742177026, 5438752491170217053, 624809552915168399]), Fq::from_montgomery_limbs([8041373032028091555, 15486500451885216694, 2640515848525906572, 1101280997644118799]), Fq::from_montgomery_limbs([1028894706146998760, 13234395603487812099, 310927904286248029, 1284009513603315703]), Fq::from_montgomery_limbs([15907405187752122338, 7460014754810790101, 3112115084952575259, 1176166567473148345]), Fq::from_montgomery_limbs([6667915961879815626, 11892868641826580977, 17153671363694122316, 1080025318281387536])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([5168631598983031118, 1709031240629846937, 12176717122174422876, 1133547231698905845]), Fq::from_montgomery_limbs([6505284181050366169, 6621303409684149204, 14721846886395529985, 756463071795143691]), Fq::from_montgomery_limbs([10252599865552606113, 8719458131520431579, 4094128546015477610, 154229004185959046]), Fq::from_montgomery_limbs([5962216050578461567, 1852471921743211935, 14625008624739847061, 402573870144144998]), Fq::from_montgomery_limbs([2504232889257023710, 6382931252528192024, 946087668070181732, 39444081019304469])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([8935875040282017923, 9359087371918622751, 4377160640113921337, 438001764693096006]), Fq::from_montgomery_limbs([5964768355342862060, 12844248228508214834, 217390320027003427, 519739213235621144]), Fq::from_montgomery_limbs([13476869152223212245, 14360104411032897136, 16239873007321200914, 3853403215029221]), Fq::from_montgomery_limbs([14270258435530476850, 16224741710497622821, 15034723833298150364, 1105854585395665472]), Fq::from_montgomery_limbs([3034628514738856022, 14677362698363483188, 10612467457981582049, 621317746892157952])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([12356435149313176789, 14997081370594107955, 2318538420922195008, 27051273329381197]), Fq::from_montgomery_limbs([14179669150985422172, 1587784931571575237, 15544226047094276906, 265503486564006544]), Fq::from_montgomery_limbs([15848703335457516734, 12988350955449684774, 10747751923255963574, 192884410298894891]), Fq::from_montgomery_limbs([13283753749608228542, 15731192032524989112, 10134977648663526427, 1011453356572734072]), Fq::from_montgomery_limbs([8372393423324448788, 2642634076467295974, 2238857053734841195, 713995311234362151])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([6650896784315049976, 8618299026172959087, 4613782712309215097, 1194575414958458214]), Fq::from_montgomery_limbs([8401059625843059611, 9360504521211886317, 9752588986385800578, 35467022242567223]), Fq::from_montgomery_limbs([14549311442558804272, 14851474988790195550, 17243272363514665510, 556891460284998050]), Fq::from_montgomery_limbs([8839260009215695166, 5332337195891362342, 10215113273837828390, 53276328504747705]), Fq::from_montgomery_limbs([4743214023748331668, 16150812970442549102, 3607008032772749996, 71636842460588166])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([7745993606763106157, 400962028791523193, 14448679365436054364, 127361796442057001]), Fq::from_montgomery_limbs([4881557665307853374, 16503843953516371036, 2631138906021440407, 1145135568670602972]), Fq::from_montgomery_limbs([3748730199472583624, 1701168955512052480, 1204298795241125154, 919171892692993894]), Fq::from_montgomery_limbs([16293341788272558865, 17325870627390234246, 16387125646971798797, 1009137174300676172]), Fq::from_montgomery_limbs([2499133372428019558, 15739123510404573354, 10677356306660504584, 958976143899963938])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([14252792066102246657, 15864171804698265189, 11911247415967054910, 961487415285183784]), Fq::from_montgomery_limbs([9957038734178160162, 250039500043978770, 375263104710602935, 35544998893003180]), Fq::from_montgomery_limbs([831877114936420076, 2002790044227393828, 11129740988708533905, 746550053534881799]), Fq::from_montgomery_limbs([4734226494958051881, 18003010652169239318, 16569731595317548852, 109984045623665701]), Fq::from_montgomery_limbs([10630025490758573206, 12380598183142825838, 1493124485160554052, 492990263362994025])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([9005167414234319760, 16535434979210366835, 5819620234707341946, 602158252276980823]), Fq::from_montgomery_limbs([9119416898454972043, 8049431789793640151, 13607373929564011639, 761938773322253558]), Fq::from_montgomery_limbs([11646529739221266743, 15631506041020749904, 7526925524884509569, 797718489067789891]), Fq::from_montgomery_limbs([14242496370333104920, 8841581893310155090, 1684451748824201839, 293704403017488420]), Fq::from_montgomery_limbs([12068414265588270249, 7748413288237551533, 18041956849707733339, 1127727052880210045])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([16896144613183838177, 12574347096617734902, 8321293894060275613, 1181815496381441993]), Fq::from_montgomery_limbs([11490675786236053006, 9698599818026366787, 5948732065795477184, 425414085344036431]), Fq::from_montgomery_limbs([13535638352040032845, 11010719926202516879, 10750188616385991719, 450767332534563092]), Fq::from_montgomery_limbs([3178227411283526947, 463456667345831080, 14382176159228633426, 829036438269219798]), Fq::from_montgomery_limbs([15205960183032177355, 12047942859395994973, 5508647109209154207, 409271998288939244])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([5842441710461865655, 14354544144458273887, 16159087842820577493, 1102018593492537867]), Fq::from_montgomery_limbs([10259604216221740521, 2737735964532783652, 1934594841398453131, 915029026536998488]), Fq::from_montgomery_limbs([5389086520584317977, 2729523047482171967, 12492070423980987131, 339278797072716184]), Fq::from_montgomery_limbs([11961359983369405646, 8872285219479794351, 11590963834161858363, 847871031745582321]), Fq::from_montgomery_limbs([15708428924964800383, 9689329403735339585, 876235638671718277, 1293191834696859659])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([10926323662882715805, 6357617649943251603, 3882295273855196975, 302265041875854273]), Fq::from_montgomery_limbs([11884492353389440282, 10865891220420186719, 1506391581950765997, 1273730401079532625]), Fq::from_montgomery_limbs([6062018478948078733, 2238300480159412589, 4475922925472998435, 427700151782713553]), Fq::from_montgomery_limbs([14998626184060509521, 8084520935552429366, 16157620168154649636, 936139145933018848]), Fq::from_montgomery_limbs([5424440642649697210, 11030005216981850100, 3736937858414725236, 353926131228082038])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([6991010538111487096, 3208699080691172022, 15674148293257243198, 528616403431683993]), Fq::from_montgomery_limbs([5895680427204256637, 15308092775755115835, 5725537177674079322, 624044939296156178]), Fq::from_montgomery_limbs([15682781481863573356, 12524037328552645708, 13137829315048512550, 453866324724543378]), Fq::from_montgomery_limbs([5999454803832491786, 11757829240759186672, 16786792833686808980, 1008783050525293123]), Fq::from_montgomery_limbs([4965854579231858650, 4470286827276633884, 18255756957602409470, 1257925856629374202])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([6756792567489648436, 9174065877200954316, 14588982300344994878, 495558322589948188]), Fq::from_montgomery_limbs([16407708660026263913, 17259087838077364390, 13625416430514248811, 207969270690764399]), Fq::from_montgomery_limbs([11870501170821012713, 18047340589874750756, 93512878936056238, 478288405689674144]), Fq::from_montgomery_limbs([873793291822892867, 17836937206243952238, 5128543094009831337, 132104142075103351]), Fq::from_montgomery_limbs([930043501771119768, 15613823438280495150, 6464828430156696004, 359908580296612711])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([18438521383060368690, 14476395006954860191, 3425945854098388541, 944003065485357481]), Fq::from_montgomery_limbs([3311768994809575814, 10503690422660653146, 10526674813249312919, 864802385440313737]), Fq::from_montgomery_limbs([8810438360452481727, 12680118392135545157, 13641246557527810849, 1252645481585559515]), Fq::from_montgomery_limbs([14299022666252422420, 14841944407301251201, 15136912555606442873, 856379827147710042]), Fq::from_montgomery_limbs([2062956481566651544, 12093197892291904316, 11631702561466346010, 144441024184915083])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([7993143086113878189, 3624434478267440806, 13278019726447600986, 654136378501676754]), Fq::from_montgomery_limbs([7992479798903963387, 7895372341947686019, 4334209577850630153, 1180883581857163505]), Fq::from_montgomery_limbs([3027910113375733204, 4485846847893599917, 15294205594975595333, 100423190749786506]), Fq::from_montgomery_limbs([4120333963287836783, 11671291525241561103, 9901986613770683621, 651573815597675240]), Fq::from_montgomery_limbs([11428233072419105889, 2944089198827741952, 5214300364587140869, 1189260788971714219])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([4551784723657471230, 11207660824801473415, 13918603200560666189, 909618049825337324]), Fq::from_montgomery_limbs([2675501742361862254, 5250455330270200426, 12586684907650118989, 1330284139416672144]), Fq::from_montgomery_limbs([12040165191610290428, 16503275216221829144, 5260280485839874467, 1227840433161545716]), Fq::from_montgomery_limbs([7679795588389348013, 15191087003013740641, 15555116922073130768, 344262909715092301]), Fq::from_montgomery_limbs([6169211658344078831, 531166906056818046, 1322277761354587680, 210108348638141620])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([2248963634255452368, 15563761402233708045, 3393738612726595863, 270037018221350140]), Fq::from_montgomery_limbs([11601309892240246141, 3638465656527027416, 1395756619190043331, 138813074475309167]), Fq::from_montgomery_limbs([5291125713635089368, 14819398438069773983, 13114950161797142217, 25590678184791818]), Fq::from_montgomery_limbs([5534877013314393609, 1759072288627502628, 16181954987325767733, 134682133959402637]), Fq::from_montgomery_limbs([4161482061465148858, 16683675972158421075, 3099920947049254669, 957124783703318342])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([4510595409768553239, 4974517727576987266, 15978837518179150731, 335342136683204977]), Fq::from_montgomery_limbs([6636059739397131000, 9640261418262971507, 18005427333200225259, 755356145676404050]), Fq::from_montgomery_limbs([15131021729179035121, 3322699383837917438, 16694361960801514505, 921109580640113983]), Fq::from_montgomery_limbs([7634123202466598220, 810298720516221902, 840599007384281843, 656905365051140366]), Fq::from_montgomery_limbs([11303104649441347181, 12152859936809161042, 8157805368560172079, 226879006121087093])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([4222768071479979923, 6221868890067618237, 6706788302094795072, 470857396285528184]), Fq::from_montgomery_limbs([837480829798517493, 2139750872442256742, 5213024737969853757, 586284678362031355]), Fq::from_montgomery_limbs([18413923626929455705, 12351565965899756217, 17706788027426014962, 396824563157594134]), Fq::from_montgomery_limbs([11865172518676463006, 15009302994533156097, 16026973397263722566, 1243693536982901909]), Fq::from_montgomery_limbs([7252462303444002809, 9549080656602382200, 6400682688095758738, 206059245034621582])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([8375555895564253468, 7925422648691473256, 16821885625729885556, 985921094928817309]), Fq::from_montgomery_limbs([2046299323863281369, 13882781361146929705, 15448488877161513887, 490830679341871217]), Fq::from_montgomery_limbs([7429671875567937801, 10229990955659579326, 17998819479213658262, 468703275856634003]), Fq::from_montgomery_limbs([935091299463462187, 8817490257427535584, 4201099561438792936, 308509415209580254]), Fq::from_montgomery_limbs([15175273292104113428, 15547411926550064745, 18326735472470278187, 46288025765161350])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([2376775726955536549, 7198072882321834778, 5820986721223000167, 1305597767879405697]), Fq::from_montgomery_limbs([11562318758115257029, 422264710018175990, 4674708296176782956, 321605471576378125]), Fq::from_montgomery_limbs([14422446717346283559, 4522943560525804925, 12524200552641302343, 992174839589322314]), Fq::from_montgomery_limbs([2660063348396745477, 3046452749899310106, 12556614243413712855, 292167348848223777]), Fq::from_montgomery_limbs([6669133378666467376, 16135058416591179983, 5627772722389914612, 379140231019033687])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([5810827329069058342, 9466338503926448033, 13219994636736965707, 1133919653888422832]), Fq::from_montgomery_limbs([11390689618371396272, 9685029449622007826, 13242820419679967997, 1063349475949275121]), Fq::from_montgomery_limbs([17763514783930037833, 4809121417820211582, 2875494172038972593, 296043141357624455]), Fq::from_montgomery_limbs([11611692421411999894, 15220040608516358932, 282037844166434278, 281687965959955676]), Fq::from_montgomery_limbs([4438433961554370400, 12877811549841781756, 15741991214229698793, 280844842261162310])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([17169851287016280826, 10822471821114911500, 1491721488328495957, 216887165418048275]), Fq::from_montgomery_limbs([10994016828848236257, 13445735015422423625, 5018165562796963731, 602535974428869013]), Fq::from_montgomery_limbs([15126102334199024880, 12867057351876414370, 11159159194149946143, 115881007342718723]), Fq::from_montgomery_limbs([2794226167942571109, 1548538606305510804, 18291849409425428450, 1340198361306759329]), Fq::from_montgomery_limbs([4267162633414624824, 10477712998553375282, 6267269603855607198, 982787929756500753])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([17381305832731585223, 9268492096935184370, 5234949576450927455, 21981840360160805]), Fq::from_montgomery_limbs([4087927870940191769, 13753414599816622073, 13058329164603291227, 834131236566284313]), Fq::from_montgomery_limbs([2546006251271733188, 17600491598884247746, 14062949050289708021, 821447001112770449]), Fq::from_montgomery_limbs([11557892681183640983, 3553808879521780009, 5828391499760976335, 706816644254127358]), Fq::from_montgomery_limbs([87239843232890664, 15700472350663595467, 174519885711847558, 1123281110015984026])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([2827103361153395332, 9771223936028754360, 17019668270000185744, 250846897334218988]), Fq::from_montgomery_limbs([5119814427033781946, 2081312228775851068, 14150656259150135415, 412824983197785589]), Fq::from_montgomery_limbs([8649749569221526485, 520969763542437761, 18397072919079815484, 473314797287595707]), Fq::from_montgomery_limbs([8194315404853463748, 15060811055660635178, 11318868018104656047, 759678196288305769]), Fq::from_montgomery_limbs([10987085614436524099, 8214999842286961244, 5709575456336614864, 1056310210546073817])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([6532789592575228069, 3265438887018026818, 17111525378271668948, 1320499686924692082]), Fq::from_montgomery_limbs([2197318288869911886, 307033351054159068, 14033422988641489555, 689909787061505964]), Fq::from_montgomery_limbs([3507717375223769090, 10033023697975699121, 15321810854570355253, 890016110699860569]), Fq::from_montgomery_limbs([6897743854949081968, 10158161465287387801, 9179072886178700686, 620001185095628667]), Fq::from_montgomery_limbs([17448998618237282714, 2553852017375909, 1793419264718581373, 725044591608116521])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([16012268534560097932, 13416075297285506301, 16493211465851903420, 1091948493998105984]), Fq::from_montgomery_limbs([14392369108156989804, 10617956576365144165, 11809714324716728769, 1188444181516740870]), Fq::from_montgomery_limbs([15466384892561009653, 10941962222512674624, 1913904384440848129, 606922266921522145]), Fq::from_montgomery_limbs([14584618083984398210, 14186299915288736440, 17757535025721844034, 1063945284694781692]), Fq::from_montgomery_limbs([6792570643359499560, 4535097730077924957, 12073011546773881134, 1137378726981169881])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([15102847980540220978, 5520326730982346297, 2698729817022762322, 1194738055539544118]), Fq::from_montgomery_limbs([6147044654176302920, 2364057582092333147, 11540841437940787480, 556063025467036658]), Fq::from_montgomery_limbs([1647311829762859720, 13415217341886740242, 16485335404491864284, 491439704095662519]), Fq::from_montgomery_limbs([12141727361360860468, 9821467392353266448, 11166495178510190210, 245664677516946430]), Fq::from_montgomery_limbs([5360382176507266601, 768193387830048410, 3996566068451735831, 795512106745688059])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([2189128173409064762, 11499748369225599949, 13499847782281945694, 1340871250773004273]), Fq::from_montgomery_limbs([1159278411248794850, 6701355601329876701, 10476550252580870928, 490304301636428667]), Fq::from_montgomery_limbs([4466317563581149355, 15128213745330326318, 5257941398512314848, 1111650855813054172]), Fq::from_montgomery_limbs([8839577424282800883, 7949855030699078116, 2996553645008704135, 85398623640375889]), Fq::from_montgomery_limbs([9514362250339879637, 13706294199150347872, 11853022932563321890, 818790762833572114])])], + w_hat_collection: [Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([15152119682022281684, 2079168917784381610, 8548836536267236340, 524962922610130041]), Fq::from_montgomery_limbs([16770218796354446865, 6164915921600418774, 18434642018604219177, 984431242893424161]), Fq::from_montgomery_limbs([12257484635811173124, 3332345693021229804, 9856107590709416500, 1159223252431020322]), Fq::from_montgomery_limbs([9979132349322887614, 3961848182433907151, 8799570660063224410, 475862931364908156]), Fq::from_montgomery_limbs([3872788615927669352, 15152509537124089722, 5205890896288656861, 1231307161030894178])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([311271084272320082, 5284197557048869863, 14669222562574339674, 571307699885408030]), Fq::from_montgomery_limbs([11625781241601592791, 14885568706820662540, 17941376171308792723, 783918507477975660]), Fq::from_montgomery_limbs([226868460330872644, 12734244079593541616, 10451890082278586850, 32508669310149618]), Fq::from_montgomery_limbs([6020187144675607048, 11405887127978088053, 4712122969940341979, 1080334010198437810]), Fq::from_montgomery_limbs([5933505187504807441, 3473057270652036730, 6105009132686901569, 114203646444743763])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([1120856672192884245, 16247214934320106390, 15323677081999960076, 62404200512763570]), Fq::from_montgomery_limbs([8831161875549232238, 6077491870312206017, 14081883006003626391, 1154651324772984368]), Fq::from_montgomery_limbs([5661890842653089732, 13320534556163866242, 9035321631852285107, 903630770886300483]), Fq::from_montgomery_limbs([15889657237181390432, 15162271575679238159, 1491114731026258819, 287846816690944321]), Fq::from_montgomery_limbs([7238626723934307483, 13278275328632196610, 8627741857269318907, 925711656222055996])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([16274331391150039806, 1623594389399151027, 11932333738554132870, 706372249166702105]), Fq::from_montgomery_limbs([732452989467352943, 1044771601653765712, 7295501005775861284, 241383337916425122]), Fq::from_montgomery_limbs([1055111559926828336, 436063422223614235, 8237830476387497674, 486023893828905207]), Fq::from_montgomery_limbs([11846198484218265818, 8058524634853844099, 813566309310159764, 1342803580678902586]), Fq::from_montgomery_limbs([13415802809644488728, 14511002260322793565, 4157389022600774011, 262652662563663469])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([6280812441180517055, 6148355053508262675, 10298538567830482124, 549753875811636329]), Fq::from_montgomery_limbs([824304312279887084, 5198474444698315745, 4090895165493551175, 1217302205153655151]), Fq::from_montgomery_limbs([4735542953263469139, 612014805877448122, 12832372076520494984, 750953222849642269]), Fq::from_montgomery_limbs([147828622890240493, 128044761765714597, 12093927754417303852, 132385902652165260]), Fq::from_montgomery_limbs([18171144465445367562, 4015656370081309510, 15930285771575041073, 1269412572744267545])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([14398639038380864956, 6619595958723804843, 12719064233121758133, 406442443563323199]), Fq::from_montgomery_limbs([10762946454330918789, 5528361687335835568, 3991418360765486778, 286492429663333048]), Fq::from_montgomery_limbs([11742168906901241463, 15503883602330266637, 15831515237753512854, 1044066191448484616]), Fq::from_montgomery_limbs([10525155675978585492, 4670730111394235591, 5961373269656674720, 95271963105126236]), Fq::from_montgomery_limbs([584627878861922239, 7921433855087631798, 7615313333543717641, 1109592926172816575])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([15091688909514107804, 654570390524891199, 16494576826680457410, 30762953858016498]), Fq::from_montgomery_limbs([2761325807027693284, 11935489432137753301, 3489012309486987802, 239715377721177782]), Fq::from_montgomery_limbs([10454593178969047515, 1040128098662881642, 5632035830401774632, 554859180328868399]), Fq::from_montgomery_limbs([5107303737176549426, 15727856129637397988, 6051568784602114728, 873492972237083876]), Fq::from_montgomery_limbs([12130743148391729861, 11271998017451462639, 10929122930592304172, 194097991947183661])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([14867630937298531794, 9612402140924249048, 15791934086459495277, 701876161263964392]), Fq::from_montgomery_limbs([4800492369986485195, 837798357520426667, 11678651630838500929, 1197393486814847593]), Fq::from_montgomery_limbs([7361531118817265902, 10654842008121782114, 11329661993953094409, 53031172666072441]), Fq::from_montgomery_limbs([13678736880795169285, 11579896750305940195, 16427828830934341434, 373548996986898141]), Fq::from_montgomery_limbs([3113965972245214273, 3618222426215928202, 14280489027814430075, 1227439762891391632])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([1519481477607620457, 10318567135550122014, 263846661207466096, 640929643224454153]), Fq::from_montgomery_limbs([14263939264430200097, 8800960240049783032, 10525864428412568060, 1229598433830944803]), Fq::from_montgomery_limbs([4737100860592755646, 3405741585209394827, 3774719897330733186, 1001424607855656625]), Fq::from_montgomery_limbs([4527327887926361650, 5195716198788998780, 2452454045651672598, 1114842100489228591]), Fq::from_montgomery_limbs([12639481132070877116, 6184431555458882642, 13833172896014011365, 138391625804209902])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([3025469591916962139, 1116358649574420645, 10697299179333984962, 1100828152488463516]), Fq::from_montgomery_limbs([17596104129549385707, 117028884523868090, 6843789980420923220, 394144012237385792]), Fq::from_montgomery_limbs([76569421022187354, 7618174529699040891, 14258607882742494097, 325795777168928125]), Fq::from_montgomery_limbs([9488688453300333348, 6023458951346117124, 8882873536266522192, 1011335963622574163]), Fq::from_montgomery_limbs([10273078691683312131, 14951774310795138631, 5056574235010407582, 216683108447003755])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([16270690847183812253, 8396384187123364284, 15973135291934403644, 337754294626036574]), Fq::from_montgomery_limbs([11537970389959600601, 15344885270945805038, 16062179622496264928, 634770789960495300]), Fq::from_montgomery_limbs([16629897675960611498, 9857864935176241914, 16649516829790580187, 879077994781187974]), Fq::from_montgomery_limbs([15757760830891963153, 1980968732617718233, 363417887657441819, 1245373320221094018]), Fq::from_montgomery_limbs([1369140419065411691, 114665172743829173, 16025067317418460214, 772519184136728441])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([5166287970903668709, 13178607088194812953, 13394943015525495010, 1136891698590635716]), Fq::from_montgomery_limbs([6786739958142009449, 3712291089779086337, 11114170296176591543, 412243655343207746]), Fq::from_montgomery_limbs([2483986099773441215, 6355297372287593359, 12546131765129037338, 850333435641268865]), Fq::from_montgomery_limbs([4129060137994461513, 15810046888600142778, 14959377549727103485, 983509352989716443]), Fq::from_montgomery_limbs([5375190994774345144, 6642323264045992752, 697489999924152538, 711658337986264203])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([10789013922038705474, 15907427163103262467, 6211828439721814286, 821662973636748389]), Fq::from_montgomery_limbs([1245892911222176515, 1760690499003421411, 7411938278280460519, 996198333836410116]), Fq::from_montgomery_limbs([14902739397227121611, 9677074799597948924, 16338232095647494428, 107475751267019502]), Fq::from_montgomery_limbs([14751552868296217802, 10957219946410361892, 2609386566023075942, 795435587890350748]), Fq::from_montgomery_limbs([14228026094996696402, 2826584103258174948, 1310186622837843420, 912856498151667865])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([632309018718566470, 8852208976226519541, 5569100181556353071, 984010564169166433]), Fq::from_montgomery_limbs([6992820576439012611, 9698447268226822027, 17633082455161111009, 90244636707781414]), Fq::from_montgomery_limbs([6543679712083684758, 10736979596575357883, 4698076992795071575, 1270787674212113]), Fq::from_montgomery_limbs([16044338327666607926, 3960206126744122590, 4858706793602461066, 561666947698425720]), Fq::from_montgomery_limbs([3368306314740365965, 9177942911310203166, 18367144956945019416, 653903203015259414])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([12874723854177830125, 5100681384941725656, 9285950066462290781, 858148062800653733]), Fq::from_montgomery_limbs([4768366185853611631, 14842169834008972704, 16645218449281418514, 817503519482950628]), Fq::from_montgomery_limbs([3007496102230569523, 11399958112043651698, 15787521760129406401, 826416774444573023]), Fq::from_montgomery_limbs([10890936042157055266, 8565215756042961896, 1054057862367192487, 202049359204983814]), Fq::from_montgomery_limbs([2425581217694278079, 12792279644970276082, 4689036727185422224, 1064336763331781201])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([2764179143636297935, 18061233587720561716, 12411254568157467507, 427402914001475058]), Fq::from_montgomery_limbs([2924816478430507635, 9786303437156946185, 13021435082088378496, 78702703698317598]), Fq::from_montgomery_limbs([8200525868229314140, 16881303073057711951, 4187547714670888467, 455617381392152389]), Fq::from_montgomery_limbs([8310666736636434815, 16453325372394262716, 13511049246920939341, 416209098687774975]), Fq::from_montgomery_limbs([7508636928089493550, 1778929466519171040, 9865075252470321631, 222439820478088778])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([26427962923262805, 13400472629512916744, 3808805306352074297, 128699596583089680]), Fq::from_montgomery_limbs([18283636998376248321, 5779768391741799708, 8993926161412908836, 272788598277303242]), Fq::from_montgomery_limbs([385260822800957491, 7888556288710245505, 12785711973091118063, 1290081227789032623]), Fq::from_montgomery_limbs([7370461305656006315, 8097104282146432375, 3693139275053762963, 1200841519361465892]), Fq::from_montgomery_limbs([12067130442173286908, 2170379854767453652, 13201336336736961495, 927175852053928205])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([11214687023235424600, 5560314158648804455, 17670625093449035024, 1242366510949799159]), Fq::from_montgomery_limbs([8409895882379798325, 14471144258274119497, 5245528502428581668, 869805265859067382]), Fq::from_montgomery_limbs([2802161834127193832, 181192611793840022, 1581405763136818654, 674326086636803499]), Fq::from_montgomery_limbs([5748156006252401196, 9530968273316544473, 1373075747037319701, 478917773953068122]), Fq::from_montgomery_limbs([10550634859635316442, 11115297058518078301, 15167740297739703393, 499663014055796942])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([8737679817842057617, 14335003891544767889, 5806471893265243804, 1199697546794663346]), Fq::from_montgomery_limbs([18312746592170672376, 2468171777169034619, 11588707770047473860, 1167607620745843361]), Fq::from_montgomery_limbs([8991056605371192176, 9683166706953599777, 3207279773035228554, 1036594322405142084]), Fq::from_montgomery_limbs([10715958137830220707, 13790797151438523296, 3814352367403212083, 338399526865285980]), Fq::from_montgomery_limbs([7602766395993095249, 15421116878917379598, 9842919232591540089, 811441858348229638])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([11240616276279859335, 18168970638218441074, 12681307963217316671, 529653072592394540]), Fq::from_montgomery_limbs([15804354330800222400, 2664362506755913571, 15220567525462081033, 415854075276634564]), Fq::from_montgomery_limbs([6499893156022247982, 5370094427775939872, 12693314181999023046, 334522766633278821]), Fq::from_montgomery_limbs([2043116979793859192, 5901796972056645976, 14393765505679755827, 861233648011975692]), Fq::from_montgomery_limbs([15324644517910983402, 7402962800234459251, 15501703598689014650, 866765414305968533])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([12865534582606617484, 5710240921655628764, 10047828149580190691, 1035217630777023330]), Fq::from_montgomery_limbs([7623115266181592594, 15654093656542240609, 17584343833694408578, 965948623120670646]), Fq::from_montgomery_limbs([12322860754126106334, 5704375241169042821, 5005598195199710337, 599456016816833315]), Fq::from_montgomery_limbs([3114048235662948861, 3186724356925890101, 12603030351469960653, 784880135590304822]), Fq::from_montgomery_limbs([10542157016978853051, 375232718281833036, 8419637174785911645, 480073460241875582])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([4619753066505217513, 16240034683968173295, 101722798642334078, 1093802332804170111]), Fq::from_montgomery_limbs([11772483107625265757, 10206667679119141509, 18114554164862022458, 1023031741792146569]), Fq::from_montgomery_limbs([13246284581489263787, 14406389897239052674, 3455768173607702603, 1053480392953200960]), Fq::from_montgomery_limbs([6494604848840235336, 6851286908738110852, 6952092093989720037, 528933354597117664]), Fq::from_montgomery_limbs([625815039158913101, 3482039923172880345, 11185655673758240856, 30871173764135737])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([11116836871987577766, 8109541581819717708, 14249648100460872066, 228964235140475035]), Fq::from_montgomery_limbs([10850735048215572309, 4250918544830268539, 1159262399998108531, 597017478561992605]), Fq::from_montgomery_limbs([2429928267440692097, 1037103561750764536, 14249565405637869240, 238948313464233222]), Fq::from_montgomery_limbs([15908449453336200948, 14778706528145004443, 1518131124404071948, 342204757203960757]), Fq::from_montgomery_limbs([10343358798246302148, 4716916005406799178, 1280891908040278925, 33904180033936995])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([13657049778223062917, 16159025960783232211, 4256662595768243763, 769690080070442279]), Fq::from_montgomery_limbs([8630441296206546010, 15101393911422801574, 15765903519913875666, 1059019903719527397]), Fq::from_montgomery_limbs([17353580961907941474, 11690315434040365887, 1919970450761622105, 1284644920565762622]), Fq::from_montgomery_limbs([9142190750578974954, 7982580406830591641, 139105874244767315, 1037725609814647069]), Fq::from_montgomery_limbs([8274397077677504305, 7550323696121525646, 13342176390347462405, 495524022793746412])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([1300654639607007076, 5418426225271078814, 17799220415649590999, 578082611305900028]), Fq::from_montgomery_limbs([15087651230680029653, 14061399273111500513, 13990992483413246139, 217274859442961675]), Fq::from_montgomery_limbs([17409038465662970942, 16739652419107899003, 1728243859263530675, 1005030425295937500]), Fq::from_montgomery_limbs([9881137796190779983, 3738513419678193257, 6908712468714119492, 128170763609761066]), Fq::from_montgomery_limbs([5980808904168005021, 6535637039411031048, 4353709569732736105, 985581940426054692])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([9266459364560412147, 1675941305082716910, 2644496138354097667, 593111726451400001]), Fq::from_montgomery_limbs([11923296558184512186, 14335481794247232343, 1756296816003311831, 1337227067587852298]), Fq::from_montgomery_limbs([15213177739061556154, 5962926969279075759, 9583168463456919751, 1345102811307691605]), Fq::from_montgomery_limbs([7236531265332214668, 11730813784468030291, 3260041626130793112, 413423911331686730]), Fq::from_montgomery_limbs([9992377390528540244, 10251294356867851146, 15408569698061863503, 686801780474850525])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([12551312954021730815, 8771782951882110027, 8266520452918776358, 585025591233977219]), Fq::from_montgomery_limbs([5063400267728024015, 14290329839247601111, 12614604995283750144, 230714106990743170]), Fq::from_montgomery_limbs([14919127087277880180, 1233913841901824423, 2945855199399696462, 1124234888120832064]), Fq::from_montgomery_limbs([6630767633426865082, 4134529385803270273, 547558622173751939, 1276870556955963960]), Fq::from_montgomery_limbs([6194800795402001302, 7453146289235044346, 1846631670011345424, 373216392925072559])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([8530038482194296425, 1186609470593087346, 1550686771111894200, 918591303091561115]), Fq::from_montgomery_limbs([5499603817197150545, 6278523764748797546, 9492893478468221078, 76690422627606484]), Fq::from_montgomery_limbs([7172281043633854180, 9586248386574401986, 4695159959373826247, 291013948190359675]), Fq::from_montgomery_limbs([1958470378825944596, 13429774428855320394, 14915732503423284573, 675396101420063305]), Fq::from_montgomery_limbs([11013259379518244436, 12321083210650373617, 18169826561711333453, 1123565689252234229])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([8538081673660833158, 9406736474943528419, 1248182586638760682, 566915522520784434]), Fq::from_montgomery_limbs([871762597826126451, 16952899443646083570, 9760070688515351533, 1153171851787119216]), Fq::from_montgomery_limbs([17099176922694092192, 828730151529195508, 4040300595746784683, 896316263468400176]), Fq::from_montgomery_limbs([17895859754552623107, 12372008340476127191, 15869904838348331177, 775743200601290861]), Fq::from_montgomery_limbs([7009270681870686791, 2613922803678169165, 14616132396476908383, 1266967860663970985])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([2842431186863606520, 5016515943888671695, 1025755096788745830, 118497541762157376]), Fq::from_montgomery_limbs([15651700296535015112, 8569612184315077364, 15451942282818992185, 541946385718467129]), Fq::from_montgomery_limbs([17425453868458867672, 13259317954798539165, 14653762240483553886, 1289545541558928924]), Fq::from_montgomery_limbs([10182995923953810379, 1555053058248744878, 14233166151877877681, 1314025239224831524]), Fq::from_montgomery_limbs([5382307905322995124, 14222432758856306145, 3195810595195159237, 932323741878209391])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([4093215837977364819, 1786552664558589683, 15811959916460894504, 1122605521342489905]), Fq::from_montgomery_limbs([6757580137997166235, 13857613907011413182, 729793288849614944, 140426125151203814]), Fq::from_montgomery_limbs([18248567113979980306, 15307246736403175565, 7970334653691291978, 817641900996362744]), Fq::from_montgomery_limbs([13209637935471398448, 10485350831767594057, 18120173774880047238, 981942705210324429]), Fq::from_montgomery_limbs([13041861333642835240, 17156211741149643971, 4775992643478887474, 160471371624793379])])], + }, + optimized_arc: OptimizedArcMatrix::<39, 6, 234>::new_from_known([Fq::from_montgomery_limbs([11114527869315019992, 204777424233041404, 11091912519069240090, 121969426625488706]), Fq::from_montgomery_limbs([11602548353808217299, 6197238791893869094, 15622579320964543388, 1298930792120594487]), Fq::from_montgomery_limbs([838896996119702820, 9307552859605174720, 8035142733069793771, 274230695041989171]), Fq::from_montgomery_limbs([3026923182969617970, 17802669379857452552, 12317599963821296502, 1025681681724348483]), Fq::from_montgomery_limbs([5608950751956253759, 13524340746668180438, 15318090696011006995, 777019565914500344]), Fq::from_montgomery_limbs([1158035626778037273, 17664260243497899213, 16296355254226759288, 950557495952381678]), Fq::from_montgomery_limbs([11235491782021601934, 3148198093287396523, 17540068057551648414, 246938399961631601]), Fq::from_montgomery_limbs([17389082769676787279, 4715116371725704005, 680633748837086801, 1023507596971258305]), Fq::from_montgomery_limbs([7398967334233665984, 13695483063991186800, 18171031240540141567, 1071188377250033509]), Fq::from_montgomery_limbs([8901013324099486427, 14221538804433703579, 421845258270117661, 1118364576196477055]), Fq::from_montgomery_limbs([3792995620986947754, 8295286409031689804, 7023787899825757992, 899023674461718667]), Fq::from_montgomery_limbs([8793784762096018942, 15222981485936247095, 17829285903963587033, 104381350073974926]), Fq::from_montgomery_limbs([11268502072074030331, 4494658873172678747, 10565307326465463378, 784696444351308107]), Fq::from_montgomery_limbs([13330824150800116849, 4890131204868069348, 16795432331983276560, 678123243378284364]), Fq::from_montgomery_limbs([16154775053781645033, 5239747136963640569, 16611876759537507645, 759623577554638126]), Fq::from_montgomery_limbs([8392188723943358220, 16791142993973140668, 13297749232586734563, 426701908934618073]), Fq::from_montgomery_limbs([17606532937509352288, 2853753027669231277, 1878611917293492305, 643977045852461225]), Fq::from_montgomery_limbs([5784332265294899224, 10677876800438676900, 18301919197560353192, 1242300655560067148]), Fq::from_montgomery_limbs([11412543805884713089, 4404535555399600518, 4605611364617586616, 706261397170793623]), Fq::from_montgomery_limbs([2724614443579353257, 12190950292326203757, 12944786940879400957, 90707148364678769]), Fq::from_montgomery_limbs([16664686769040599810, 7492639236725157146, 1787480043672337070, 1043615315016757716]), Fq::from_montgomery_limbs([4392261116480034202, 16508253691140740970, 1257682754845069496, 1301148167322522764]), Fq::from_montgomery_limbs([139213556258184346, 16303671450556136664, 10342805884525342231, 508792166529776861]), Fq::from_montgomery_limbs([14643711485787161846, 5395142180975966192, 12467589421402803020, 144762579288366866]), Fq::from_montgomery_limbs([15255437222491521014, 14721462158275437977, 2057221655333534074, 1325734657361576891]), Fq::from_montgomery_limbs([15414140179948612967, 18192784700743189854, 9643806020156298087, 376775047158942797]), Fq::from_montgomery_limbs([18092841461306760003, 2807423972236024481, 7922348787325395480, 1212285078601209657]), Fq::from_montgomery_limbs([16708900869096362927, 2122564142804905834, 13890195487457233383, 126050338062319781]), Fq::from_montgomery_limbs([13016765056631510317, 775825654612492872, 1519488323304929971, 511775234197862995]), Fq::from_montgomery_limbs([10798249763854349440, 8782377489797979147, 12405352952342825868, 1275110544094341666]), Fq::from_montgomery_limbs([9330052657446344303, 4964707063063280466, 2747936433058978798, 1286324345607159919]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13438421980365571751, 13764047089799136418, 6549510980996449235, 89638406717638204]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3120082900215749818, 2506463968951363665, 5751682941173719701, 1183280915899386044]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3889637240168755614, 14778096222179630956, 16885419836575361353, 250222614360102585]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8994135098656528858, 6054905993385110489, 15955209030417792186, 417192650490068388]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10542836021159102202, 3922552091508743640, 15499449205954987041, 257248375734524697]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18307747395340188800, 7047747805490525925, 11242708609504355532, 793276497114397997]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16022663073357324949, 3551519053939817423, 3374093457075448733, 95641413276534082]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16611512242802281767, 13417278867724672960, 12339427782843337847, 1029453794287724677]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9587606159882976610, 13065183120609796571, 5134588985846741978, 1052742636206989263]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5120379400595969817, 4824276514479560160, 15209383162223813538, 98360897446496767]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7633930096380799602, 2831233200869503763, 6933925156133583675, 45431990866667491]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4063032547170944262, 2228607997293084806, 376103209766462421, 748529159788109811]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8393715434195231445, 15247401046663606451, 1655959932549342287, 101776028083387641]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15008767674909606325, 531227893384812653, 7210523396658562084, 437386864972028358]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16809071159722694272, 6830450328296125348, 6475300827542698627, 399257887526004612]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([82825596177761974, 11317217432462243029, 6642795994570466536, 54497338514902862]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6850975607505382161, 14495312419830721473, 12467132244094124841, 869971081325966252]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6776972065809629900, 14404993916899429083, 14745271791343793348, 1281731922471929435]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12167414230777830458, 3579196606687723355, 14118801611883897825, 1188804452360844569]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7553145712183260477, 18113523762458916439, 13422344310762339471, 121199852036910351]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6210598847695513673, 10694250862598493782, 1063552736172580723, 859901328112942851]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10747937872207229763, 13786226828072394952, 274364464850991752, 1218823234058712778]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2520693279910212484, 15286253593138229505, 9531050394238581262, 329181833527084527]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3226526077625644436, 2588404341480318661, 9070433711166827508, 1188235207132643549]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16703563760445846403, 8620998770380437284, 8858436416497897390, 1102236124390324251]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5630089007465765576, 6410026402258852609, 17160884434802874754, 420357023452589124]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12644008863026136496, 11315917635237722843, 12364361333201119848, 946242401908845264]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9089855529735912751, 11711947227707110137, 12189800517249432550, 1037376283079163315]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2642673912191614581, 8420261709120249882, 7567649328018501241, 1090882039889692225]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([624108744920628033, 7222337173749652537, 6177234009439253836, 1305879330650409183]), Fq::from_montgomery_limbs([4047186108818890838, 8293278676301284463, 45421248765572143, 11849077013826147]), Fq::from_montgomery_limbs([13734838437817111564, 14067107962177066014, 6283538344938866018, 943068615468766850]), Fq::from_montgomery_limbs([9459753653362225504, 13412221550119657532, 11719554885145159458, 1038210702444171410]), Fq::from_montgomery_limbs([17258590752825572441, 4422385439615665045, 10963985232294213328, 673097344483052623]), Fq::from_montgomery_limbs([4350910935437581306, 17071656780821887075, 17526744607642225290, 489524084357985818]), Fq::from_montgomery_limbs([8703107470067448452, 734592437454660319, 6370216058631913860, 984849913832896286]), Fq::from_montgomery_limbs([15847437253128917127, 13204151715277535095, 13151742340803361913, 492775982398767260]), Fq::from_montgomery_limbs([13378140148769271177, 11023068523390522139, 1729259508144916727, 998491139322015796]), Fq::from_montgomery_limbs([15868115462640964898, 5808184910810487816, 17891106563868657547, 1273423536878729280]), Fq::from_montgomery_limbs([17498572932499506726, 4915375148198704347, 16526318329827242193, 172885368041045335]), Fq::from_montgomery_limbs([12175858961476635194, 8395097384299796850, 16561947957716644135, 118811035529307344]), Fq::from_montgomery_limbs([1364632949773972783, 5616500288305274826, 2744828291285230257, 1337220218752536168]), Fq::from_montgomery_limbs([7125704632582034340, 2413935880315792634, 16253134495760827214, 1013353907442898755]), Fq::from_montgomery_limbs([9926413936648370716, 9286244748248440505, 5620697470790885637, 1050126432920929832]), Fq::from_montgomery_limbs([2286190222160729638, 1205027650655862007, 284571302335235840, 754838472987631454]), Fq::from_montgomery_limbs([18032942241472576701, 12877723516371231014, 5304401947346162660, 638292803799023432]), Fq::from_montgomery_limbs([1301734909908791963, 3999021096443686109, 8224194566860360743, 975889756225576945]), Fq::from_montgomery_limbs([13137758236377688944, 15164889622744579310, 9510882901247182860, 507443416341514201]), Fq::from_montgomery_limbs([7442629497476523514, 15402336932582436695, 12267702252685663951, 406181490859224216]), Fq::from_montgomery_limbs([3020913173034234370, 7615906519537783167, 14373843007930618441, 268952515824125262]), Fq::from_montgomery_limbs([8510711668693637739, 16478737597936355688, 4962621450185609628, 274948738817040348]), Fq::from_montgomery_limbs([175794307933344111, 2355200265651483892, 17868773626579092521, 52492857067069690]), Fq::from_montgomery_limbs([13918504549178190575, 13563258972352289042, 5310731325887509548, 465559440844068311])]), + } +} From f7358f94ea801a296a3ff4a4d5bbfcfd27b20d24 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 2 Apr 2024 18:40:58 -0400 Subject: [PATCH 49/54] poseidon377: rate 6 --- poseidon377/src/hash.rs | 108 +++++++++++++++---------------- poseidon377/src/lib.rs | 10 +-- poseidon377/src/params.rs | 27 +------- poseidon377/src/params/rate_6.rs | 30 +++++++++ 4 files changed, 91 insertions(+), 84 deletions(-) create mode 100644 poseidon377/src/params/rate_6.rs diff --git a/poseidon377/src/hash.rs b/poseidon377/src/hash.rs index 319c9f2..29922ab 100644 --- a/poseidon377/src/hash.rs +++ b/poseidon377/src/hash.rs @@ -42,20 +42,20 @@ pub fn hash_5(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq)) -> Fq { ]) } -// /// Hash six [`Fq`] elements with the provided `domain_separator`. -// pub fn hash_6(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq, Fq)) -> Fq { -// let params = &crate::RATE_6_PARAMS; -// let mut state = Instance::new(params); -// state.n_to_1_fixed_hash(vec![ -// *domain_separator, -// value.0, -// value.1, -// value.2, -// value.3, -// value.4, -// value.5, -// ]) -// } +/// Hash six [`Fq`] elements with the provided `domain_separator`. +pub fn hash_6(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq, Fq)) -> Fq { + let params = &crate::RATE_6_PARAMS; + let mut state = Instance::new(params); + state.n_to_1_fixed_hash(&[ + *domain_separator, + value.0, + value.1, + value.2, + value.3, + value.4, + value.5, + ]) +} // /// Hash seven [`Fq`] elements with the provided `domain_separator`. // pub fn hash_7(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq, Fq, Fq)) -> Fq { @@ -221,44 +221,44 @@ mod test { assert_eq!(output, expected_output); } - // #[test] - // fn rate_6() { - // let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); - - // let input = ( - // Fq::from_str( - // "7553885614632219548127688026174585776320152166623257619763178041781456016062", - // ) - // .unwrap(), - // Fq::from_str( - // "2337838243217876174544784248400816541933405738836087430664765452605435675740", - // ) - // .unwrap(), - // Fq::from_str( - // "4318449279293553393006719276941638490334729643330833590842693275258805886300", - // ) - // .unwrap(), - // Fq::from_str( - // "2884734248868891876687246055367204388444877057000108043377667455104051576315", - // ) - // .unwrap(), - // Fq::from_str( - // "5235431038142849831913898188189800916077016298531443239266169457588889298166", - // ) - // .unwrap(), - // Fq::from_str( - // "66948599770858083122195578203282720327054804952637730715402418442993895152", - // ) - // .unwrap(), - // ); - - // let output = hash_6(&domain_sep, input); - - // let expected_output = Fq::from_str( - // "6797655301930638258044003960605211404784492298673033525596396177265014216269", - // ) - // .unwrap(); - - // assert_eq!(output, expected_output); - // } + #[test] + fn rate_6() { + let domain_sep = Fq::from_le_bytes_mod_order(b"Penumbra_TestVec"); + + let input = ( + Fq::from_str( + "7553885614632219548127688026174585776320152166623257619763178041781456016062", + ) + .unwrap(), + Fq::from_str( + "2337838243217876174544784248400816541933405738836087430664765452605435675740", + ) + .unwrap(), + Fq::from_str( + "4318449279293553393006719276941638490334729643330833590842693275258805886300", + ) + .unwrap(), + Fq::from_str( + "2884734248868891876687246055367204388444877057000108043377667455104051576315", + ) + .unwrap(), + Fq::from_str( + "5235431038142849831913898188189800916077016298531443239266169457588889298166", + ) + .unwrap(), + Fq::from_str( + "66948599770858083122195578203282720327054804952637730715402418442993895152", + ) + .unwrap(), + ); + + let output = hash_6(&domain_sep, input); + + let expected_output = Fq::from_str( + "6797655301930638258044003960605211404784492298673033525596396177265014216269", + ) + .unwrap(); + + assert_eq!(output, expected_output); + } } diff --git a/poseidon377/src/lib.rs b/poseidon377/src/lib.rs index d26d479..f173a66 100644 --- a/poseidon377/src/lib.rs +++ b/poseidon377/src/lib.rs @@ -5,7 +5,7 @@ mod hash; mod params; // pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5, hash_6, hash_7}; -pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5}; +pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5, hash_6}; /// Parameters for the rate-1 instance of Poseidon. pub const RATE_1_PARAMS: PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> = params::rate_1::rate_1(); @@ -22,10 +22,12 @@ pub const RATE_4_PARAMS: PoseidonParameters<5, 4, 25, 16, 39, 5, 195, 31> = /// Parameters for the rate-5 instance of Poseidon. pub static RATE_5_PARAMS: PoseidonParameters<6, 5, 36, 25, 39, 6, 234, 31> = -params::rate_5::rate_5(); + params::rate_5::rate_5(); + +/// Parameters for the rate-6 instance of Poseidon. +pub static RATE_6_PARAMS: PoseidonParameters<7, 6, 49, 36, 39, 7, 273, 31> = + params::rate_6::rate_6(); -// /// Parameters for the rate-6 instance of Poseidon. -// pub static RATE_6_PARAMS: Lazy> = Lazy::new(params::rate_6); // /// Parameters for the rate-7 instance of Poseidon. // pub static RATE_7_PARAMS: Lazy> = Lazy::new(params::rate_7); pub use decaf377::Fq; diff --git a/poseidon377/src/params.rs b/poseidon377/src/params.rs index 635e28c..0416c03 100644 --- a/poseidon377/src/params.rs +++ b/poseidon377/src/params.rs @@ -3,32 +3,7 @@ pub mod rate_2; pub mod rate_3; pub mod rate_4; pub mod rate_5; - -// /// Parameters for the rate-6 instance of Poseidon. -// pub fn rate_6() -> PoseidonParameters { -// PoseidonParameters { -// M: 128, -// t: 7, -// arc: ArcMatrix::new(39, 7, vec![Fq::from_montgomery_limbs([15142982440796561447, 11586951767160912790, 2554152473571518408, 1060132733599829191]), Fq::from_montgomery_limbs([5004052621280210368, 17001459709892607063, 7681637351760180567, 370325849830378477]), Fq::from_montgomery_limbs([12700316700887579682, 10527071459591008162, 4649940422809756001, 1164398790994859766]), Fq::from_montgomery_limbs([14166576988026094609, 7313392791454005322, 12003933110859736764, 497349496445067730]), Fq::from_montgomery_limbs([660800666505769101, 8654643871558439567, 14263148622483513593, 820049075817239934]), Fq::from_montgomery_limbs([3633256971691786185, 10090676851691033833, 14588357423182388197, 831634409758195705]), Fq::from_montgomery_limbs([6492287632409988134, 12046607076154115291, 17147959445519551317, 461021671425820687]), Fq::from_montgomery_limbs([14444046072241906262, 11260694318344083229, 15743364178797140854, 866446994798567454]), Fq::from_montgomery_limbs([3641312158605685211, 14157364044999263645, 16784472236570305027, 425843099497195003]), Fq::from_montgomery_limbs([17723864121788076174, 13911937024562874191, 12749454259525933628, 451378649043069085]), Fq::from_montgomery_limbs([12784133990119646353, 17654455838119254543, 14047536069777387226, 645204516252515303]), Fq::from_montgomery_limbs([1959581704190940037, 13929985394687694163, 11022302142929130035, 283707020686355664]), Fq::from_montgomery_limbs([8629032034013359758, 8320916390268264398, 11188435069201519314, 1277918481865788038]), Fq::from_montgomery_limbs([1783621120979741815, 10125702604889014266, 7859706914940359291, 1258189548796714111]), Fq::from_montgomery_limbs([4197085784563434882, 243889206587889894, 328885806087941395, 929695947751686179]), Fq::from_montgomery_limbs([6420634290533400711, 3371757063543007366, 8900632765923820105, 371199850895065588]), Fq::from_montgomery_limbs([9679924820095672851, 5191301328839079795, 1468702730043861612, 1130258788388916276]), Fq::from_montgomery_limbs([14270884667693338729, 18421783881067727877, 702505960635108322, 876601962183112334]), Fq::from_montgomery_limbs([12801928710162774032, 15709283060501093378, 2508615709628312314, 924328772397935430]), Fq::from_montgomery_limbs([9019134492733417932, 4614098400696239641, 291908476903718505, 879711180612784839]), Fq::from_montgomery_limbs([12296479578360854848, 3423354675244851904, 17098596077633953792, 378482623029323224]), Fq::from_montgomery_limbs([13200816203042245771, 15381254577926224952, 14688424257545082743, 884773501591309967]), Fq::from_montgomery_limbs([16263843110415550162, 14001011937262187824, 2325893788175944450, 427344840846697831]), Fq::from_montgomery_limbs([10712788406702291397, 14628016237392831746, 12076323935029775432, 746032296870665924]), Fq::from_montgomery_limbs([7577844083779539683, 8593563853045273470, 6762705862919489296, 1011466592883577533]), Fq::from_montgomery_limbs([10970204418416076913, 4397529361571105931, 15590416832284287611, 432035610777585218]), Fq::from_montgomery_limbs([13604542201065871088, 8000646895858538916, 7463535664974476191, 112496092381655883]), Fq::from_montgomery_limbs([5448941064349247150, 18035446383961421934, 9688851655819494355, 314108334517577725]), Fq::from_montgomery_limbs([13216339084640418338, 18208749029142079159, 2801888902925820506, 1144112407212441278]), Fq::from_montgomery_limbs([10386335329700935468, 13018324118118161010, 2406041197881630048, 1324098854417409495]), Fq::from_montgomery_limbs([2690622444332381359, 2738375881209676440, 17836986493178387691, 868260556757543816]), Fq::from_montgomery_limbs([9714850335178297908, 2509018678236953449, 1040431953277617242, 408671886406597132]), Fq::from_montgomery_limbs([707163896186597409, 13903930520829310823, 14380446875360964889, 798432165792010570]), Fq::from_montgomery_limbs([12820993772370131859, 3069542795148551755, 4040592593739183911, 977377017483241698]), Fq::from_montgomery_limbs([4384064590197914518, 11440426390601473487, 3890530701580791196, 991346454205769097]), Fq::from_montgomery_limbs([2745693351823380117, 3687897447624002689, 13955517171460419947, 904061096631428006]), Fq::from_montgomery_limbs([1760514697396940568, 6095881437414931654, 3928451548254372674, 247578034773164640]), Fq::from_montgomery_limbs([16683268981822865275, 15797990746305502978, 12125148959239662231, 449202381506144581]), Fq::from_montgomery_limbs([1544285291520736591, 5232522639692590592, 14175161601321791260, 1003097983515138607]), Fq::from_montgomery_limbs([13865967627227239358, 4354525642109054184, 5021238725820305528, 906854086996571433]), Fq::from_montgomery_limbs([15375530278413617622, 7761235083504109835, 15924872860758961429, 537333030355735422]), Fq::from_montgomery_limbs([13872782625772992287, 2068079588750918007, 17083661114150680976, 191043765855622193]), Fq::from_montgomery_limbs([489795382124266981, 9316407371494156111, 16300320024181640604, 1307068723907147815]), Fq::from_montgomery_limbs([77890204043514297, 14999308260055033106, 16273406145240730287, 1230840137172288304]), Fq::from_montgomery_limbs([9003111034130458080, 14053560383370232566, 14148009681833335599, 84069116658731520]), Fq::from_montgomery_limbs([1986315671557859076, 944997752628096648, 6737867794955410335, 792066859500791592]), Fq::from_montgomery_limbs([11554157552429322652, 6015547764843714345, 3599229111267661129, 1102309536290663120]), Fq::from_montgomery_limbs([16401157455500798150, 2599298290463801395, 4428490753223095655, 516522849079366838]), Fq::from_montgomery_limbs([7623242261478057757, 3618111358832343565, 1696272282252986964, 280076732551033967]), Fq::from_montgomery_limbs([13071470547050819875, 20719442839602638, 9223499824514905062, 1041977639884177823]), Fq::from_montgomery_limbs([1150980008515938579, 12791886596105604965, 11797006328775889799, 132341159056314927]), Fq::from_montgomery_limbs([16356304185985037124, 18355100705716380177, 1487696971024578548, 1163163264873917501]), Fq::from_montgomery_limbs([8790136689831869026, 9859012327886066746, 1622774421779032220, 680128396913817531]), Fq::from_montgomery_limbs([2440240671160835195, 5639103082516719016, 16233642885930425961, 459387979334747122]), Fq::from_montgomery_limbs([3071531689091094489, 11779374527227589848, 5879834474282319317, 392743474596485606]), Fq::from_montgomery_limbs([3786139316484579004, 7465575270640816353, 3301786867662477611, 919080835077506714]), Fq::from_montgomery_limbs([4241677901554464615, 14852259420419314449, 9789117952977925786, 1276159211529108963]), Fq::from_montgomery_limbs([15762815448669571633, 7231481802108863616, 8209538117580382786, 894055725982675524]), Fq::from_montgomery_limbs([3283548778124636488, 17961129609378056584, 12441299600811628613, 709973667467565902]), Fq::from_montgomery_limbs([1675404449995783699, 17666259544497784614, 13412804093386962519, 434991501447979808]), Fq::from_montgomery_limbs([17976226742991442453, 14546337615752094946, 6516407789910488272, 1036976265682484688]), Fq::from_montgomery_limbs([13972137480979054280, 1231617287998224018, 8770959412540690803, 274349352586037174]), Fq::from_montgomery_limbs([14183071713815614452, 12618349549865293619, 4916959733988057866, 228836586859139895]), Fq::from_montgomery_limbs([2619860170191204767, 6934658348682381942, 445022332707100685, 525184674849718520]), Fq::from_montgomery_limbs([10672109165350813992, 13411227948301334538, 7449776000632083055, 11625548609868921]), Fq::from_montgomery_limbs([6408656838496226261, 10947889213454603074, 15967755490758556438, 18592735561502547]), Fq::from_montgomery_limbs([5719054350460464154, 7527902657216442354, 5295945207916573176, 1277891579319310511]), Fq::from_montgomery_limbs([7105816865111098866, 4412124756024705272, 4327040274749466413, 598090016113808041]), Fq::from_montgomery_limbs([14284938317479677602, 545805528309510796, 102974980360120576, 899208167330224593]), Fq::from_montgomery_limbs([5366620062124263126, 13693679210134795513, 8256935418799663781, 300801001668016020]), Fq::from_montgomery_limbs([16666288670655775443, 14215432659130173847, 10678349345487712045, 253025966523940173]), Fq::from_montgomery_limbs([6560188020165350685, 12696821494974958005, 2143653898969513475, 494844631437184679]), Fq::from_montgomery_limbs([13593887229322257028, 4816959067341413725, 11133022091159268235, 612414996504397371]), Fq::from_montgomery_limbs([4493136462766479434, 9962442648546643845, 10853590841986868899, 915809217863755522]), Fq::from_montgomery_limbs([5214032566506119292, 11323013569723200047, 18236741420002046410, 941445927442235049]), Fq::from_montgomery_limbs([6205769808699672756, 10246354759179081834, 15794825809172864679, 391230400284939041]), Fq::from_montgomery_limbs([10116008430714875822, 9911045248650761841, 9928250721052258527, 1185128099055962746]), Fq::from_montgomery_limbs([2754748402734001689, 17481760215560470485, 11108275517987128040, 348615537989168903]), Fq::from_montgomery_limbs([13782224526187933341, 17030959399708586099, 15775077522611833532, 290351976048235673]), Fq::from_montgomery_limbs([4412648891557328130, 11831420266571130198, 9622609839094253285, 639422212319659804]), Fq::from_montgomery_limbs([8394758426176289938, 11674917207711491310, 7857067218925827640, 1264271461076358629]), Fq::from_montgomery_limbs([10524729381187531101, 6565819519130692503, 16455243200834114571, 1113660583135941246]), Fq::from_montgomery_limbs([4910640324547367503, 7067950532806399572, 15713931663221284957, 678204411073496593]), Fq::from_montgomery_limbs([17524781941219231334, 14436265047853993106, 10996160202266791558, 586004270078950889]), Fq::from_montgomery_limbs([14088867458599093720, 2106970093596697979, 12220921713367378788, 618714343685517328]), Fq::from_montgomery_limbs([13932309166033056776, 14069500197080883428, 17852601968294832436, 305995160171313882]), Fq::from_montgomery_limbs([13426729481828305095, 7452289540294927985, 6441597690310943218, 1276798385624416753]), Fq::from_montgomery_limbs([15655620409673762414, 3933061560128724680, 5010270981571820124, 220150600325447216]), Fq::from_montgomery_limbs([1057266741773269348, 17485469765347279593, 9555353042208049027, 1246738101059957518]), Fq::from_montgomery_limbs([10770884181623310580, 8877029614675920762, 13991352514348114517, 1230612668702201686]), Fq::from_montgomery_limbs([15095255137495972889, 10892244248329151219, 11620083234647182892, 868324939988635652]), Fq::from_montgomery_limbs([16875353652867044098, 11044339467067704334, 4725495506316385244, 751264243578502741]), Fq::from_montgomery_limbs([641704525978654163, 17754251290783679148, 14269956822024939667, 156185085842124354]), Fq::from_montgomery_limbs([6461798206210941852, 6476027702683698308, 1734931238850329993, 290399632377126477]), Fq::from_montgomery_limbs([8091575218940757791, 5709045878190771843, 1459237052414398801, 276967051734326786]), Fq::from_montgomery_limbs([11612189501971032754, 8427470897363557012, 8611179978421665778, 759746899153341383]), Fq::from_montgomery_limbs([6954134997737035694, 10268732943041819889, 14604130092481798797, 846640249172985022]), Fq::from_montgomery_limbs([7190233069227170594, 5561401768913144101, 1445785661167706223, 651525665098162949]), Fq::from_montgomery_limbs([9217546346311075388, 11071132921926268863, 15917748726189064849, 1251775227051161244]), Fq::from_montgomery_limbs([10390884162889041261, 16176571899127336650, 10615791626897231355, 642115614053282820]), Fq::from_montgomery_limbs([17238403316934198029, 13759340588486548936, 6092125402785041680, 230724379449110850]), Fq::from_montgomery_limbs([1508952168622687260, 8480288040262420498, 1917577574060388838, 1254153906405997789]), Fq::from_montgomery_limbs([13254932503780193579, 12662991171495849740, 2932469488008999350, 1254958848016626489]), Fq::from_montgomery_limbs([863236748932298852, 7531642076948568445, 10425812845553160509, 563371573575694666]), Fq::from_montgomery_limbs([3280480068018390373, 10989862717157633913, 16572854018482057186, 113384026788145572]), Fq::from_montgomery_limbs([11491036808249350882, 3627925597439189593, 785824861964165853, 215791427072358220]), Fq::from_montgomery_limbs([7066074229281293800, 13321822906632769865, 3996439965503887948, 1564366489909582]), Fq::from_montgomery_limbs([7382263529174205793, 14901486809768854424, 3687940160755015064, 91446740043994899]), Fq::from_montgomery_limbs([11979694890244940318, 2563830158714032427, 9819921513414604825, 870663742752411934]), Fq::from_montgomery_limbs([1600021421033761986, 8201138969411280812, 17030652845294033608, 12175051723204743]), Fq::from_montgomery_limbs([1850310843394039419, 1954532768801601911, 9226966238277907828, 1236975459555124690]), Fq::from_montgomery_limbs([16345060141053822550, 2663786082800954949, 9784580111187431074, 818513014765649539]), Fq::from_montgomery_limbs([16446391408112544104, 9380932902331254953, 7071379728384813096, 646895171875290856]), Fq::from_montgomery_limbs([2378405837694151935, 13313303748778516106, 5453795007116110093, 1101728113109054876]), Fq::from_montgomery_limbs([11103307651772077753, 12554518811578576783, 12962391676951625000, 52064702946163453]), Fq::from_montgomery_limbs([7926549255154919159, 12556509793741807839, 8290515496020439025, 258653521926883600]), Fq::from_montgomery_limbs([307299355354566495, 17945732282126444629, 5433370265316074894, 460536024110656568]), Fq::from_montgomery_limbs([5763861568912805530, 17141796164103068870, 2848893594009159478, 1261756298628549918]), Fq::from_montgomery_limbs([3229487655955554305, 14944270980978379931, 9844844119202542915, 234743086760476866]), Fq::from_montgomery_limbs([2342004844464551443, 1279967885187315863, 373313457964011347, 1079422596885440278]), Fq::from_montgomery_limbs([1952007392466585094, 11762818037481718593, 16662923564394512208, 893001431908838762]), Fq::from_montgomery_limbs([106763804585413546, 14271628963442624240, 590027926779466412, 57257575012574740]), Fq::from_montgomery_limbs([16630768758834449311, 422003402188528512, 12098463822102798962, 159137531863727176]), Fq::from_montgomery_limbs([15534331691675530779, 7061806693665915536, 16952361759388884403, 1053244934847428200]), Fq::from_montgomery_limbs([9263591902583432602, 7558693853599155266, 14896692490740080749, 1313322134212571400]), Fq::from_montgomery_limbs([15314480314637379126, 1151647617314553881, 17769711940094483975, 1199725079245274287]), Fq::from_montgomery_limbs([7963766923607262431, 12935141255115233618, 12948228604583141176, 360484743040385122]), Fq::from_montgomery_limbs([3259283452211432293, 17170672158941172313, 3570208516876138657, 1045429527322967456]), Fq::from_montgomery_limbs([1765653178452548393, 6627965412101454655, 12661490346413822347, 978755993134545199]), Fq::from_montgomery_limbs([142797348951966355, 5680553790994685398, 810985092665822303, 289501802913912482]), Fq::from_montgomery_limbs([8095554876468743411, 9181238692547872814, 13704917242845320718, 866066458565737675]), Fq::from_montgomery_limbs([5618373333754035477, 16633102630691350807, 10343904648768900571, 949315695648845008]), Fq::from_montgomery_limbs([10496943145011706036, 10929716347158307141, 11553769369075211708, 1156430459068926506]), Fq::from_montgomery_limbs([3889976630621922060, 9491334042353419195, 9943086516865463752, 462137530016129102]), Fq::from_montgomery_limbs([14851654499263418555, 8665479737435134577, 9236486044957348017, 1285301549410464570]), Fq::from_montgomery_limbs([7032376007033081754, 8938792808860946217, 3397334075607636452, 1167008250605621029]), Fq::from_montgomery_limbs([10427481727006183439, 3824318376195666571, 1544453519691883408, 1045681207836001052]), Fq::from_montgomery_limbs([8928604482578123459, 13973435534214403451, 15227973464547816988, 1229619095421485591]), Fq::from_montgomery_limbs([4131997010006110231, 8734538168607192092, 5033945745534142948, 1277988214099374488]), Fq::from_montgomery_limbs([7299169039441587737, 2287517025912039400, 5920702563974091346, 687869072690227692]), Fq::from_montgomery_limbs([6148873693348937540, 8423800650513424718, 13147300378355369290, 1251696519717235960]), Fq::from_montgomery_limbs([8030856695051151637, 10312034347138903675, 10835031793863243014, 356820600815810125]), Fq::from_montgomery_limbs([888403096248430880, 456025372404859213, 15679766799242003387, 331916255940957050]), Fq::from_montgomery_limbs([11302383770835780508, 16138456171506112495, 4451261995311188362, 326167792976852851]), Fq::from_montgomery_limbs([12620205064271173241, 5865309702805720081, 5860769966892734734, 960482480478038522]), Fq::from_montgomery_limbs([12917044525272992137, 17120989425489435715, 17218371420168852178, 100206712207827792]), Fq::from_montgomery_limbs([5324266172011654367, 5689211424378054902, 13406842486269119334, 232294740918000310]), Fq::from_montgomery_limbs([8539429359150556585, 10134859336768345709, 15233097762752119955, 731468941704353059]), Fq::from_montgomery_limbs([10594565907991339987, 3638446029011375614, 1076241376615234382, 91321489252748304]), Fq::from_montgomery_limbs([7150892232338862131, 15181691199330314635, 5084197575257990721, 970732723520969453]), Fq::from_montgomery_limbs([14117187289068639852, 3124767309289558236, 13224466604519094715, 428140550724790451]), Fq::from_montgomery_limbs([14415259957437088686, 1795634329615314624, 2942903263296282359, 1012688804870889787]), Fq::from_montgomery_limbs([16612890529511826604, 7596386633939850032, 5924746967850324505, 65893974101627502]), Fq::from_montgomery_limbs([4944775760295616420, 17454746499425782002, 7483609147553356481, 669769743129713618]), Fq::from_montgomery_limbs([8550535250927460379, 14244832580975560343, 10645153178392827451, 166145496718571589]), Fq::from_montgomery_limbs([9472382061922092532, 12599919710080842820, 17660755505335019341, 951845755731906033]), Fq::from_montgomery_limbs([7377011861447992951, 14177185276539188245, 16485545164384506751, 69008004491455439]), Fq::from_montgomery_limbs([7269422847571440384, 10971182983165050190, 10477114392953393609, 529340264286832500]), Fq::from_montgomery_limbs([13548253733030119113, 18088771080273253716, 5912265224571254564, 960653798531692016]), Fq::from_montgomery_limbs([14593305211432266861, 13978513480108154064, 12072035272437813296, 238383478016939515]), Fq::from_montgomery_limbs([14430090856465614687, 2808920183931810539, 2024298398014953733, 368635335239145011]), Fq::from_montgomery_limbs([6675901818525858406, 9691159442966147586, 5200040876915433586, 1110689247130868755]), Fq::from_montgomery_limbs([13172765826410278322, 13976386792584577667, 8689999043086184378, 259436890611363824]), Fq::from_montgomery_limbs([84751421588979831, 14888392918538911455, 5486551275818624189, 951800733297191582]), Fq::from_montgomery_limbs([15334319937719221770, 11563835865217739090, 18090033619866166811, 678279699900803053]), Fq::from_montgomery_limbs([15589602438316257145, 1666336392544054075, 8107996193749583854, 23283085724274977]), Fq::from_montgomery_limbs([6797724227011875266, 11367852742974149411, 6678291715699080418, 92125477783429941]), Fq::from_montgomery_limbs([15080983138964048420, 537488507591658978, 16294679657097133087, 1191852563555895615]), Fq::from_montgomery_limbs([4338903643143774627, 11044337452245898206, 15830174313418706999, 31920243523174840]), Fq::from_montgomery_limbs([8492021065892592922, 7492942567998031746, 10227910279589795050, 947691312997138730]), Fq::from_montgomery_limbs([9561116086048874539, 18073885101683330337, 14636134925092176090, 722339593463585968]), Fq::from_montgomery_limbs([41785100841227711, 17666935019222315365, 4927473313984438107, 67884280271688399]), Fq::from_montgomery_limbs([1446967628258656962, 11243844490161767343, 16958413638051813042, 1004693359077776727]), Fq::from_montgomery_limbs([9629608502131673092, 2882928936333963073, 15987483283589685207, 660673428262656412]), Fq::from_montgomery_limbs([2443606364563185491, 10139467314740663228, 15189229884372483835, 1290830618469438802]), Fq::from_montgomery_limbs([3046319622343455954, 3931730478916712920, 8623867774890709346, 1201913658507810759]), Fq::from_montgomery_limbs([14392864240168621772, 17867735212625517017, 2772429327165542818, 836534298808933]), Fq::from_montgomery_limbs([1151940341306701400, 3833643241309263777, 13096509072792897905, 752108833686380875]), Fq::from_montgomery_limbs([5229009174997575511, 6605658491463927698, 15536337046468055686, 157609910170207177]), Fq::from_montgomery_limbs([8741468218382317460, 7144323380514935844, 8672006512648752584, 1334645244751689770]), Fq::from_montgomery_limbs([10735754706394522516, 4616532568937564832, 15473812904469788516, 326598703312455138]), Fq::from_montgomery_limbs([13470305024595632219, 3964162559887319987, 4104496442465768155, 575184728889423472]), Fq::from_montgomery_limbs([7024155969680638810, 1248446637476984159, 3946566487106719690, 78713827286502076]), Fq::from_montgomery_limbs([1167875954574760034, 7519910968010082415, 15211147069856354453, 750498091773211075]), Fq::from_montgomery_limbs([2863941003802949509, 14521430537116398940, 17833674840165779294, 1117243092487510999]), Fq::from_montgomery_limbs([3988048134544140696, 4164314985762153852, 5192160405207219362, 537616833580442108]), Fq::from_montgomery_limbs([11691596547822673173, 2072119953696732776, 6048298284479353132, 1041936268987727800]), Fq::from_montgomery_limbs([5195217310941133128, 983742991580727110, 15582341176749546934, 192949243806351219]), Fq::from_montgomery_limbs([989864604993544245, 10337084476006024351, 6399045939932107087, 349553169959482485]), Fq::from_montgomery_limbs([1083252708106498385, 14683159496360594363, 6249116681658609726, 965679621626703084]), Fq::from_montgomery_limbs([15520366118357711305, 15455325080109246278, 15912772926708879347, 1181106395388318589]), Fq::from_montgomery_limbs([10606086519021812869, 8982436141916758768, 8984252788653949566, 94441446490162493]), Fq::from_montgomery_limbs([3989193979672410706, 14522119372119676520, 6031184060057719655, 876537182738173910]), Fq::from_montgomery_limbs([6542858007243344725, 10468817694619667802, 1374963053947997860, 281508730046968385]), Fq::from_montgomery_limbs([2121254413916702881, 11174399821186314401, 642752851055260652, 172419384352924756]), Fq::from_montgomery_limbs([14933138168325040251, 18073996174008481460, 7709184193316921275, 77928985789134259]), Fq::from_montgomery_limbs([14183089598463409576, 9599657595270154138, 10401242555342360511, 1031862193117340540]), Fq::from_montgomery_limbs([17077860441038791206, 6907855957939974514, 7600347021193310054, 225485956370582495]), Fq::from_montgomery_limbs([14475416504140964933, 6622123083135972798, 9257366424078234840, 1254195725521864761]), Fq::from_montgomery_limbs([18280884764210583702, 16338431925875586014, 14128385164093913939, 598858774608218822]), Fq::from_montgomery_limbs([4251295228276607623, 14698477834719362145, 1576184780996848894, 571585722355337029]), Fq::from_montgomery_limbs([13272236615232894643, 14010494529183759900, 800023943280278947, 298394511556555918]), Fq::from_montgomery_limbs([10782700402615775164, 14412830325727077172, 4994923730339550224, 1079837299050839065]), Fq::from_montgomery_limbs([3621380562787996822, 9464307808788620312, 13909924710435794908, 954766105382202190]), Fq::from_montgomery_limbs([17420485363085974001, 9021049394344178089, 8712760747075739797, 568515634248632496]), Fq::from_montgomery_limbs([5631572804871766736, 5280080317359998903, 10662020310256217520, 409512057651566449]), Fq::from_montgomery_limbs([492276079446892838, 2465000468485598245, 8673960199484145367, 1223371911459041820]), Fq::from_montgomery_limbs([16206685073675005008, 13515283938452316993, 8657484044144188143, 555324291337764049]), Fq::from_montgomery_limbs([12258020657657344839, 14080584073572047035, 1786385914292976334, 890045806750446876]), Fq::from_montgomery_limbs([5437561110469019457, 4195656535041473973, 16642453980220687614, 66446192393822025]), Fq::from_montgomery_limbs([11378296852796405140, 13948486972729474860, 13814823936920393870, 543448461574407786]), Fq::from_montgomery_limbs([15861083328916660546, 10580336230427962464, 8314263211374088393, 462499203598507289]), Fq::from_montgomery_limbs([3596880637235637430, 7244702719747713366, 7698652078859897602, 339166837713921764]), Fq::from_montgomery_limbs([16434053565692243270, 856826524108649327, 582888221769745389, 231849743296221718]), Fq::from_montgomery_limbs([13466829214638063330, 11871004193533817602, 8715083865527535935, 772758187739256383]), Fq::from_montgomery_limbs([2215715304482300708, 6939601967594674311, 9762471006918361079, 751422865267861919]), Fq::from_montgomery_limbs([8660358354344868439, 10887567579928131536, 4636772766460938216, 875861572717087557]), Fq::from_montgomery_limbs([3718962475606244056, 3574286178071706662, 13969021013516480159, 674248673994385489]), Fq::from_montgomery_limbs([13879628242113969355, 15611868744516972804, 689523972787487196, 272170949885373985]), Fq::from_montgomery_limbs([731217591867043834, 12057204063676562058, 9968800370062020379, 54367310812503073]), Fq::from_montgomery_limbs([10847577089461485884, 14781720798335935361, 2050883758009058177, 1227443941313558442]), Fq::from_montgomery_limbs([15484525416052326375, 10433705807314230036, 15903522838889990919, 544585322945419235]), Fq::from_montgomery_limbs([5074309280962037193, 5217880605983656639, 14510200362648483018, 557494968888174908]), Fq::from_montgomery_limbs([5195138641573043477, 9406776113353168661, 14027024671301857164, 845631148216790994]), Fq::from_montgomery_limbs([17960866561088745173, 7239612137411824399, 608332955631666951, 1339588249269723610]), Fq::from_montgomery_limbs([6645023811265252448, 359090506368957415, 13186732800236585001, 636175819244839498]), Fq::from_montgomery_limbs([9658258475735190727, 14527591238813797995, 16927575748315332307, 1301180113169078950]), Fq::from_montgomery_limbs([2426687195330334614, 1677243348703957868, 280959539850383222, 1302367371047198015]), Fq::from_montgomery_limbs([2824388857182280398, 387310680804206136, 5259604914427521138, 1184806076664523237]), Fq::from_montgomery_limbs([7574972296183053595, 15822886777846030642, 12388539958981301194, 559152516777131559]), Fq::from_montgomery_limbs([12201036799149233249, 17892988483166995904, 18084947728796372356, 675956869171241463]), Fq::from_montgomery_limbs([16104554650380896914, 4746900513825001701, 6829416706759018904, 220904217190207835]), Fq::from_montgomery_limbs([17292549212841163737, 2352946917715655598, 10473544622578247206, 331414403574303893]), Fq::from_montgomery_limbs([11411751507285114977, 6456131281833042189, 9429033659401855692, 1204457583147690703]), Fq::from_montgomery_limbs([13351228652344837450, 3406524763947142470, 9081889404473741581, 940424223754317289]), Fq::from_montgomery_limbs([14630628062553504316, 6262447828497056896, 18085717084217406803, 799246626583428302]), Fq::from_montgomery_limbs([864375154255180873, 14000240309598220542, 1750007932942661463, 761312485749733723]), Fq::from_montgomery_limbs([14345179008259546406, 6736994392830783692, 5908556958000542218, 1253865209554350406]), Fq::from_montgomery_limbs([9764377369274365673, 9072647876947127557, 2341472943201056441, 929216282518283791]), Fq::from_montgomery_limbs([12859964114531846483, 13694745246472282132, 2013500954373579911, 751364861274622110]), Fq::from_montgomery_limbs([175177818989840916, 4770111355878906194, 12267383210154126463, 131920286091241797]), Fq::from_montgomery_limbs([6349104885803077585, 18001260594929500797, 14793230544956264458, 669871090964351917]), Fq::from_montgomery_limbs([1792126764165083108, 6081987124440657035, 5531241762790015809, 85100796395211080]), Fq::from_montgomery_limbs([11335525023979482372, 13822295879245716952, 777769361600630976, 852248906668581924]), Fq::from_montgomery_limbs([2057611721707481944, 12549766028751733826, 3184617081367493745, 17035887437619700]), Fq::from_montgomery_limbs([5033510300536938046, 14319156262351107248, 14453339555250931608, 1300088399042594667]), Fq::from_montgomery_limbs([586365878943401533, 10219333061949038245, 7972787616665459187, 1180682599170166362]), Fq::from_montgomery_limbs([8677310049713074877, 6209659062870853276, 6361763165884296788, 1086786531947345096]), Fq::from_montgomery_limbs([4779669491370037827, 13794675476884129106, 2856260482144566523, 815058410432730978]), Fq::from_montgomery_limbs([8349785262387520653, 14703604045323517453, 10665488643511503896, 1190736588532344714]), Fq::from_montgomery_limbs([9753136258891648437, 7592309943578822500, 18234430885873993524, 946608033429176051]), Fq::from_montgomery_limbs([8862120093151408513, 9919781382246740055, 1639967479777957120, 548895009658598348]), Fq::from_montgomery_limbs([13150047014556861649, 9895352886349978940, 607603433543469096, 825078058460205935]), Fq::from_montgomery_limbs([10677514517763000310, 1869057220976501750, 7668490026500068131, 645375934459787109]), Fq::from_montgomery_limbs([8393901821323241932, 7155803376644055598, 5465256629438666110, 467809976924970962]), Fq::from_montgomery_limbs([8008789779293081850, 17333068400582244417, 864473515802821379, 712131972755422562]), Fq::from_montgomery_limbs([5260641048740129119, 11495506189219575805, 1976170684554961654, 583558279245420304]), Fq::from_montgomery_limbs([10607922137491563126, 16997507064637422660, 16243052688991164520, 620318480202596319]), Fq::from_montgomery_limbs([8682850641454705537, 4234371891064954414, 11030571520428482979, 775687601614273649]), Fq::from_montgomery_limbs([12248979915462901096, 1794636648127247975, 16388845185353268388, 1257257804440120883]), Fq::from_montgomery_limbs([17181365213230240819, 3933917789297525218, 774796165591114183, 628159510187755171]), Fq::from_montgomery_limbs([9201407700189177387, 14700424513123193347, 18288661468232834482, 407382537568434540]), Fq::from_montgomery_limbs([11966891449526246216, 6846368159746727324, 5421814018651935761, 1007837491484494646]), Fq::from_montgomery_limbs([3054672449338249840, 772010416012553897, 804919836093674272, 60934971449786311]), Fq::from_montgomery_limbs([3349955854192164124, 12023516821995660430, 14073054570207692346, 391152224081538807]), Fq::from_montgomery_limbs([4393818606630194054, 11894249453630174803, 11407464681452601419, 527342257675756743]), Fq::from_montgomery_limbs([593191207061949875, 394301333075100218, 15992303837511873397, 1258463696198082538]), Fq::from_montgomery_limbs([7392815618978882544, 8600193649781721343, 10001082189003162790, 160465744058402439]), Fq::from_montgomery_limbs([5982722207731997556, 9327097271719907983, 16837081471143367937, 1323283752393867441]), Fq::from_montgomery_limbs([15234580594321690160, 14480758270368693259, 7897576353120019799, 1211836381357568240]), Fq::from_montgomery_limbs([17534396175019205578, 3323788238042131357, 16622036826489890791, 893487708746761741]), Fq::from_montgomery_limbs([3851834168141787069, 11582510337408899680, 15343784808633432566, 461896544402216282]), Fq::from_montgomery_limbs([1182215324455482337, 1943242735522063011, 4144863718139895080, 243576649285589719])]), -// mds: MdsMatrix::from_elements(vec![Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169])]), -// alpha: Alpha::Exponent(17), -// rounds: RoundNumbers {r_P: 31, r_F: 8}, -// optimized_mds: OptimizedMdsMatrices { -// M_hat: SquareMatrix::new(6, 6, vec![Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169])]), -// v: Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), -// w: Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), -// M_prime: SquareMatrix::new(7, 7, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169])]), -// M_doubleprime: SquareMatrix::new(7, 7, vec![Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([6933713838801944433, 16845582094611513195, 18106981831632269118, 1315719765541495999]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11025937787709817432, 2848215840891863663, 12003429085947921194, 123169188111155826]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12625372430371999830, 16677955247940128803, 7323211740492754581, 634092645821649835]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8476375831616065903, 8302751278140753414, 4675397025515049474, 916054888187664134]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10397071512469717592, 5168805500057287779, 15231087545157212262, 795647437775574917]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4753644871978862709, 5862282760667146308, 12460694012157225697, 599558919665641703]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), -// M_inverse: SquareMatrix::new(7, 7, vec![Fq::from_montgomery_limbs([18289540298934006401, 12620611207485559719, 12496121289749056322, 817144512748384706]), Fq::from_montgomery_limbs([15589773063064153532, 10937873166103048610, 6318262381745988044, 164305025615087669]), Fq::from_montgomery_limbs([15945838893269705074, 12231655940729207770, 16783976632846575746, 1109102887521365908]), Fq::from_montgomery_limbs([6834634673379885361, 14313980702431346769, 11799433102834887335, 414159939376644417]), Fq::from_montgomery_limbs([6202864031195801806, 9008291636618939950, 4452886644180013898, 834656796167786155]), Fq::from_montgomery_limbs([257831097013115576, 868816813650478155, 3804928554730106375, 37318070574597666]), Fq::from_montgomery_limbs([12731957617084167734, 10385122202334236509, 6304526407551965622, 473830859466044865]), Fq::from_montgomery_limbs([15589773063064153532, 10937873166103048610, 6318262381745988044, 164305025615087669]), Fq::from_montgomery_limbs([6846034351900465196, 14922456655897598264, 3385387262061980880, 41120221023296058]), Fq::from_montgomery_limbs([15382748348274919943, 17176897444608801178, 9672737639142736111, 667324299238078128]), Fq::from_montgomery_limbs([15347282079877344563, 7118861760574925591, 14639960435031189354, 496118406637979928]), Fq::from_montgomery_limbs([10633984218986397485, 1476776383719121929, 18242946201412975574, 235737836971566080]), Fq::from_montgomery_limbs([13255078662550912877, 6201099884138924934, 16598544366614787861, 517978551803961280]), Fq::from_montgomery_limbs([16511322183643786520, 12899213679171041629, 10327663219981717303, 101291905845336522]), Fq::from_montgomery_limbs([15945838893269705074, 12231655940729207770, 16783976632846575746, 1109102887521365908]), Fq::from_montgomery_limbs([15382748348274919943, 17176897444608801178, 9672737639142736111, 667324299238078128]), Fq::from_montgomery_limbs([14205197080554911234, 18284593956791143607, 9307844449907611885, 840522240017846486]), Fq::from_montgomery_limbs([15159258319784243147, 14082599260628033239, 6774164385877933413, 747982014981801174]), Fq::from_montgomery_limbs([1720795814776594401, 1331741422739941001, 1433030060135444919, 661580976464017359]), Fq::from_montgomery_limbs([18293763308414053579, 18299155137503640753, 10462936480575081846, 453983746301356936]), Fq::from_montgomery_limbs([4581286503082050232, 12284808854596259078, 3289926894666988909, 902128282614826112]), Fq::from_montgomery_limbs([6834634673379885361, 14313980702431346769, 11799433102834887335, 414159939376644417]), Fq::from_montgomery_limbs([15347282079877344563, 7118861760574925591, 14639960435031189354, 496118406637979928]), Fq::from_montgomery_limbs([15159258319784243147, 14082599260628033239, 6774164385877933413, 747982014981801174]), Fq::from_montgomery_limbs([8459024031946559011, 9756324734815253725, 14081981857002652443, 1295411099915753127]), Fq::from_montgomery_limbs([12916186197107076085, 5935794698380416041, 14163718741243160273, 1284207706380505486]), Fq::from_montgomery_limbs([18200592249652917081, 10952824854756428652, 13221851894140961386, 952100497899551398]), Fq::from_montgomery_limbs([7909306592215715661, 12372000920976206381, 13047646210570006173, 1134258014683902124]), Fq::from_montgomery_limbs([6202864031195801806, 9008291636618939950, 4452886644180013898, 834656796167786155]), Fq::from_montgomery_limbs([10633984218986397485, 1476776383719121929, 18242946201412975574, 235737836971566080]), Fq::from_montgomery_limbs([1720795814776594401, 1331741422739941001, 1433030060135444919, 661580976464017359]), Fq::from_montgomery_limbs([12916186197107076085, 5935794698380416041, 14163718741243160273, 1284207706380505486]), Fq::from_montgomery_limbs([3910809514494604292, 8483245271389311552, 16246267851842217096, 18865255698597878]), Fq::from_montgomery_limbs([3026843501192760993, 8380473052143493977, 3054950936628239486, 722212886196682246]), Fq::from_montgomery_limbs([17640176946983601983, 7851638753013976420, 7953773760774643320, 1060395049618029567]), Fq::from_montgomery_limbs([257831097013115576, 868816813650478155, 3804928554730106375, 37318070574597666]), Fq::from_montgomery_limbs([13255078662550912877, 6201099884138924934, 16598544366614787861, 517978551803961280]), Fq::from_montgomery_limbs([18293763308414053579, 18299155137503640753, 10462936480575081846, 453983746301356936]), Fq::from_montgomery_limbs([18200592249652917081, 10952824854756428652, 13221851894140961386, 952100497899551398]), Fq::from_montgomery_limbs([3026843501192760993, 8380473052143493977, 3054950936628239486, 722212886196682246]), Fq::from_montgomery_limbs([6947786146630418877, 15369056627168554704, 17602917142112233480, 860079864989181067]), Fq::from_montgomery_limbs([12292153329582579311, 12340018229585837748, 16138005556776207249, 689763430924300574]), Fq::from_montgomery_limbs([12731957617084167734, 10385122202334236509, 6304526407551965622, 473830859466044865]), Fq::from_montgomery_limbs([16511322183643786520, 12899213679171041629, 10327663219981717303, 101291905845336522]), Fq::from_montgomery_limbs([4581286503082050232, 12284808854596259078, 3289926894666988909, 902128282614826112]), Fq::from_montgomery_limbs([7909306592215715661, 12372000920976206381, 13047646210570006173, 1134258014683902124]), Fq::from_montgomery_limbs([17640176946983601983, 7851638753013976420, 7953773760774643320, 1060395049618029567]), Fq::from_montgomery_limbs([12292153329582579311, 12340018229585837748, 16138005556776207249, 689763430924300574]), Fq::from_montgomery_limbs([11306146037240305765, 10984198068608188499, 1191708097986331420, 836519420285054905])]), -// M_hat_inverse: SquareMatrix::new(6, 6, vec![Fq::from_montgomery_limbs([3792453098216396897, 12628553005522469477, 16642002769880465331, 421042619293543187]), Fq::from_montgomery_limbs([10263844291975416107, 13672341457628810763, 12509513995609872959, 205381282018859586]), Fq::from_montgomery_limbs([10784713721876928946, 5674574537437802090, 12687938002553184071, 136316472684139419]), Fq::from_montgomery_limbs([16070813810583366554, 1956961633890359529, 13965208031005279836, 927951972604280320]), Fq::from_montgomery_limbs([6738933144333850617, 6100304390614169754, 1210061970152249951, 909818292837236776]), Fq::from_montgomery_limbs([9669791352790763084, 10325954078533278386, 9503492366281944368, 1040674818174287413]), Fq::from_montgomery_limbs([10263844291975416107, 13672341457628810763, 12509513995609872959, 205381282018859586]), Fq::from_montgomery_limbs([6412844366295084778, 7666866282335076917, 1998128405856404681, 74724070388243614]), Fq::from_montgomery_limbs([2820801561543625657, 2418377097726488830, 6026234412050937676, 1126089764215992130]), Fq::from_montgomery_limbs([8551209674866173640, 6260366140671248954, 12081978629156052449, 1140556338048141522]), Fq::from_montgomery_limbs([3127468548134575066, 584585047777214689, 7762916153904627652, 166598529350882438]), Fq::from_montgomery_limbs([7594054111820467981, 8571015412052249811, 6107608647809765519, 1023873926642050928]), Fq::from_montgomery_limbs([10784713721876928946, 5674574537437802090, 12687938002553184071, 136316472684139419]), Fq::from_montgomery_limbs([2820801561543625657, 2418377097726488830, 6026234412050937676, 1126089764215992130]), Fq::from_montgomery_limbs([10427240268737712782, 8508693586717179156, 9391845005515956255, 937208025112203554]), Fq::from_montgomery_limbs([8182900134894401237, 12638356435589207249, 2514008238224928511, 262393601667707271]), Fq::from_montgomery_limbs([9827417092260447852, 9328415136733098350, 7749975888478067278, 1296132886589595648]), Fq::from_montgomery_limbs([16287831069372846812, 12117020194152290696, 2582012005292236373, 964219332138367410]), Fq::from_montgomery_limbs([16070813810583366554, 1956961633890359529, 13965208031005279836, 927951972604280320]), Fq::from_montgomery_limbs([8551209674866173640, 6260366140671248954, 12081978629156052449, 1140556338048141522]), Fq::from_montgomery_limbs([8182900134894401237, 12638356435589207249, 2514008238224928511, 262393601667707271]), Fq::from_montgomery_limbs([2689211423437640460, 9937738931024806642, 16752771701136165272, 1203240695252068537]), Fq::from_montgomery_limbs([4340203757804311965, 12676662818122060527, 8325672080044279362, 1087811919015138569]), Fq::from_montgomery_limbs([14389282186921406518, 13071685447061354484, 9323961789214815202, 798867032561203873]), Fq::from_montgomery_limbs([6738933144333850617, 6100304390614169754, 1210061970152249951, 909818292837236776]), Fq::from_montgomery_limbs([3127468548134575066, 584585047777214689, 7762916153904627652, 166598529350882438]), Fq::from_montgomery_limbs([9827417092260447852, 9328415136733098350, 7749975888478067278, 1296132886589595648]), Fq::from_montgomery_limbs([4340203757804311965, 12676662818122060527, 8325672080044279362, 1087811919015138569]), Fq::from_montgomery_limbs([16937615735900532927, 2828202157217662325, 11653172729566405164, 102608297022837914]), Fq::from_montgomery_limbs([10698441721372329435, 14189560518339287134, 16709548602960206315, 1115736315296030670]), Fq::from_montgomery_limbs([9669791352790763084, 10325954078533278386, 9503492366281944368, 1040674818174287413]), Fq::from_montgomery_limbs([7594054111820467981, 8571015412052249811, 6107608647809765519, 1023873926642050928]), Fq::from_montgomery_limbs([16287831069372846812, 12117020194152290696, 2582012005292236373, 964219332138367410]), Fq::from_montgomery_limbs([14389282186921406518, 13071685447061354484, 9323961789214815202, 798867032561203873]), Fq::from_montgomery_limbs([10698441721372329435, 14189560518339287134, 16709548602960206315, 1115736315296030670]), Fq::from_montgomery_limbs([4200873270792393235, 10250359348562610182, 13119023895300261973, 870734268521497409])]), -// M_00: Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), -// M_i: Matrix::new(7, 7, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3417057834288542701, 14660334709638275173, 15697961235617927687, 541283478161011852]), Fq::from_montgomery_limbs([7015809488978334700, 16756137731097346041, 4299145747412822878, 425771021418967410]), Fq::from_montgomery_limbs([11403455157288865564, 17867822347283350530, 6642326758447081407, 347793598737965121]), Fq::from_montgomery_limbs([3281498772575130056, 15793155797823121930, 13825210503534495803, 403937498710078315]), Fq::from_montgomery_limbs([14433853750795786283, 6064690325535561885, 8568546552249237512, 321732587903564709]), Fq::from_montgomery_limbs([6678655391923876018, 8629057843778719427, 9842628707936041139, 63076861057827674]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7015809488978334700, 16756137731097346041, 4299145747412822878, 425771021418967410]), Fq::from_montgomery_limbs([2912519858324498512, 6507880465488943086, 4272821136041054916, 111743668526988613]), Fq::from_montgomery_limbs([1748445869324305294, 9551769637184621333, 15854660035338842641, 935843652651688174]), Fq::from_montgomery_limbs([16017478920517952465, 12052990841260496131, 1846258033159005439, 1283952887503997049]), Fq::from_montgomery_limbs([13375753074817350454, 1048153563921378033, 9203345202329021202, 240551250239901980]), Fq::from_montgomery_limbs([11153565452311437343, 15840896398791388390, 6651106066134943770, 1041420503258293522]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11403455157288865564, 17867822347283350530, 6642326758447081407, 347793598737965121]), Fq::from_montgomery_limbs([1748445869324305294, 9551769637184621333, 15854660035338842641, 935843652651688174]), Fq::from_montgomery_limbs([12634906865313795269, 11036595778607414197, 3160889789817653150, 123157168832279614]), Fq::from_montgomery_limbs([8716577469114679639, 13354977326657221151, 13192299021058097299, 1294655858266660253]), Fq::from_montgomery_limbs([13373336070740714862, 8730572127209811217, 7187749001613674585, 593376019371200200]), Fq::from_montgomery_limbs([10026036648949247362, 12678383936758102898, 11178426371544881076, 1002297129682557342]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3281498772575130056, 15793155797823121930, 13825210503534495803, 403937498710078315]), Fq::from_montgomery_limbs([16017478920517952465, 12052990841260496131, 1846258033159005439, 1283952887503997049]), Fq::from_montgomery_limbs([8716577469114679639, 13354977326657221151, 13192299021058097299, 1294655858266660253]), Fq::from_montgomery_limbs([14690633444146561299, 13456453518898387751, 10432348396252513416, 1242585437512358865]), Fq::from_montgomery_limbs([14102570081274067998, 8257296766039180005, 7790604469177448243, 143690956943080350]), Fq::from_montgomery_limbs([8465733138989536717, 2929735846155108951, 4450573983160870127, 472219173524401119]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14433853750795786283, 6064690325535561885, 8568546552249237512, 321732587903564709]), Fq::from_montgomery_limbs([13375753074817350454, 1048153563921378033, 9203345202329021202, 240551250239901980]), Fq::from_montgomery_limbs([13373336070740714862, 8730572127209811217, 7187749001613674585, 593376019371200200]), Fq::from_montgomery_limbs([14102570081274067998, 8257296766039180005, 7790604469177448243, 143690956943080350]), Fq::from_montgomery_limbs([4085032723309791110, 4665611504008924558, 11824165711550330487, 578201258376880126]), Fq::from_montgomery_limbs([11519276958617059096, 13454485508887725898, 7249926774019308728, 1072756789797212364]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6678655391923876018, 8629057843778719427, 9842628707936041139, 63076861057827674]), Fq::from_montgomery_limbs([11153565452311437343, 15840896398791388390, 6651106066134943770, 1041420503258293522]), Fq::from_montgomery_limbs([10026036648949247362, 12678383936758102898, 11178426371544881076, 1002297129682557342]), Fq::from_montgomery_limbs([8465733138989536717, 2929735846155108951, 4450573983160870127, 472219173524401119]), Fq::from_montgomery_limbs([11519276958617059096, 13454485508887725898, 7249926774019308728, 1072756789797212364]), Fq::from_montgomery_limbs([8573207762665625898, 16056334493165972918, 10346718250214646205, 1191123760209144883])]), -// v_collection: vec![Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([10644639721044274615, 16734510270636734171, 6265966780522802029, 1180401342618465036]), Fq::from_montgomery_limbs([1254097908378330934, 13601601811345135765, 15071243631801644424, 297593012698954223]), Fq::from_montgomery_limbs([10771062345226876930, 7469649658028794228, 3597902033882677100, 608350358812428664]), Fq::from_montgomery_limbs([10231075707837198839, 11530522131003023037, 1802721152151214035, 1212125375706727806]), Fq::from_montgomery_limbs([548206758129328348, 778220363894850734, 12082251172806692919, 593860302507973656]), Fq::from_montgomery_limbs([6029427183938663855, 17136269120728144851, 7031277897576748532, 978052702327451285])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([14583548544607776390, 1455594659839297233, 7503148269133459078, 979881557166431467]), Fq::from_montgomery_limbs([4091794927241778027, 3984934849444513902, 4168704414264273635, 1243153189837659840]), Fq::from_montgomery_limbs([13672227389423134641, 7889118255497550145, 10535716868579808028, 727851871568307361]), Fq::from_montgomery_limbs([1805790605077811102, 13328027295111756288, 15284753467090911646, 476755389437853977]), Fq::from_montgomery_limbs([6818887996128827024, 12980010109101424586, 17837508282492360706, 804695904048021645]), Fq::from_montgomery_limbs([9531071905126860029, 10560990131084904417, 3843562488879133086, 427342220830413508])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([12999307184917437199, 4460278989335054240, 8039372983916400823, 524229825913330581]), Fq::from_montgomery_limbs([13201924241923240556, 11745564486322152121, 2471694394944636145, 181216534789741406]), Fq::from_montgomery_limbs([4934105058811497644, 12271038025203690017, 7436143789682315585, 998806416030886275]), Fq::from_montgomery_limbs([13725255261959326942, 8555513885879208558, 955378272993441581, 297008239472103166]), Fq::from_montgomery_limbs([10371095811858205849, 8804518571176544229, 11002636904361592873, 660578117299637260]), Fq::from_montgomery_limbs([8307653710943752623, 2839318436416200448, 12213117778126871947, 1025759164655249254])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([11863327563780294024, 10993730767593839696, 9502873035480842903, 1097248076762680248]), Fq::from_montgomery_limbs([6808878885915903933, 8278632955554852373, 12719166835729596674, 804467256685775329]), Fq::from_montgomery_limbs([16008107817056775055, 8608502583580218397, 2796011695423831437, 949203486167282741]), Fq::from_montgomery_limbs([9591171450453062265, 6399710760130247553, 16473627252289324238, 199489766710074990]), Fq::from_montgomery_limbs([2126693132859812176, 10946771068545746672, 16987361148217467014, 545647818048109007]), Fq::from_montgomery_limbs([11988059750093062229, 9298754840020496938, 15035120852882985245, 1192754512132360647])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([8283981142206306939, 15468588506068845291, 14286327059693983748, 168088448899207140]), Fq::from_montgomery_limbs([10471089395398769453, 96236653784383214, 16648343620891915559, 253629587649938570]), Fq::from_montgomery_limbs([2122557167897006073, 6496047148498928328, 4866370458783575330, 393653606927582732]), Fq::from_montgomery_limbs([1613936452873278524, 13810247455069732717, 15313868045534267346, 1243393042619890514]), Fq::from_montgomery_limbs([15475354144715027231, 7573523099482013249, 12718534995660881344, 1280011735315941795]), Fq::from_montgomery_limbs([16713988261819571430, 2839652657083011646, 3620474509759339159, 813365112700437390])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([5224860601737206030, 471099951455807337, 4240850224623809066, 1213277143090320240]), Fq::from_montgomery_limbs([8044997223262572963, 8080347158505061529, 3228586894312007285, 331597882779275433]), Fq::from_montgomery_limbs([1208998236383405070, 1447425529631254332, 8002978071615560825, 1168296975382357177]), Fq::from_montgomery_limbs([3717552334324548558, 14379760040658949225, 17287286958139444106, 498156372540796351]), Fq::from_montgomery_limbs([7205892599830853163, 15212333206847125686, 5699921803433736310, 905915093597247729]), Fq::from_montgomery_limbs([755943729919434357, 10577236669397908241, 14468710867857253298, 1024324011896165462])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([8058282063231996405, 17257430900010574484, 2158055163476481194, 595100858348853692]), Fq::from_montgomery_limbs([15085559623482919871, 3472078672722908583, 4599317711792091602, 222588611222065167]), Fq::from_montgomery_limbs([15424099905499014070, 8434797005632313353, 8131086932997815225, 1036565779889668097]), Fq::from_montgomery_limbs([1382697922847342157, 4665453833795528964, 9747274806721360803, 148779622932294522]), Fq::from_montgomery_limbs([4432837085227621901, 3625643010647482210, 9188161200126159834, 1031489011263833493]), Fq::from_montgomery_limbs([2595560161561027549, 10106811297951765366, 17488308776579863485, 206455909861435406])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([820166082021164174, 9749064658839893621, 2697165176777711952, 1013643423254794247]), Fq::from_montgomery_limbs([11434285783669558858, 13584809878479701720, 3915545683544186278, 1023126538570256918]), Fq::from_montgomery_limbs([2165364699284154689, 12685002878895760637, 6867136501788661212, 674836357022179385]), Fq::from_montgomery_limbs([9371284124941532260, 7254488926567729428, 14153148852060364975, 563833886155167209]), Fq::from_montgomery_limbs([12983913502532225115, 10422261732254055015, 9682741985590349706, 1152902980215236093]), Fq::from_montgomery_limbs([53453825694603265, 7363785068269762421, 10014136818496735189, 418364251047633957])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([9089547361822769623, 2614400882196504844, 18171746873737288094, 75978327930221735]), Fq::from_montgomery_limbs([16792233542280595044, 9194009742559712662, 16681314096151276162, 141104854369611948]), Fq::from_montgomery_limbs([14121587945665084254, 4285652051739813435, 908329507035055833, 1170458112249762210]), Fq::from_montgomery_limbs([17832160706398652605, 12757316993880307572, 17823976387828534641, 1060884446639737566]), Fq::from_montgomery_limbs([12238967831419693891, 17285564337796726189, 772363080009335540, 1133022491303716360]), Fq::from_montgomery_limbs([7101023699634357749, 6639281158265807289, 4981868997280764642, 985691418122098087])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([11269122037409773082, 12011421319544460999, 1334150225599331569, 2858146322225763]), Fq::from_montgomery_limbs([9313709853509185496, 16206428797220002184, 13680333402027486517, 1242753153191996216]), Fq::from_montgomery_limbs([17569743508708392526, 3142648113271106845, 1634996132313805038, 345389980530236831]), Fq::from_montgomery_limbs([13214675085238735159, 17546363296125310843, 15104140193957885186, 1009608979945975479]), Fq::from_montgomery_limbs([13156206507994500002, 15331136932468936255, 18120353711369546595, 212936761308279860]), Fq::from_montgomery_limbs([15728832258520667556, 2222718495126847960, 9069363803574780412, 1252511052567294538])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([15318220334729666071, 10085274749271496451, 13235713280652147722, 745052808139004576]), Fq::from_montgomery_limbs([13156235912943986954, 5448235351584523656, 14912753996910833259, 1074562042912540040]), Fq::from_montgomery_limbs([10973489371567110798, 13864494226359434162, 2551801121655091132, 842122627627640172]), Fq::from_montgomery_limbs([16434063247854180644, 4535379715543303383, 15837253172489347337, 811511753879666188]), Fq::from_montgomery_limbs([17168911107864577236, 43950174469174547, 5104860072131484949, 973362737471998355]), Fq::from_montgomery_limbs([7931655442728732623, 2231832287024216001, 1215678170119206083, 809922596417314673])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([11089365147905175739, 17689470198615435650, 1802029570881529665, 323182645037342266]), Fq::from_montgomery_limbs([15969427871111504498, 5489904452991350903, 6060256254335150822, 327519122975337122]), Fq::from_montgomery_limbs([8372741465623248660, 14241887742859321780, 5732992227950195767, 39295360183511289]), Fq::from_montgomery_limbs([1187756953137288615, 6353707652463699269, 16025288734445909769, 689723399381686930]), Fq::from_montgomery_limbs([3641027043425346704, 7529359599459005223, 2263874390889253898, 1174711192482135891]), Fq::from_montgomery_limbs([14213602576882685129, 1072450781726178504, 9166004798283088170, 288986234043895133])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([9857091378959575712, 4700244761781549157, 11886572911958021128, 978573057754163783]), Fq::from_montgomery_limbs([6859829417840328625, 5380908914233546421, 9985382358422821006, 809479275163892841]), Fq::from_montgomery_limbs([7129905675772133963, 9947583967153283633, 11488752011523120045, 70770661730429235]), Fq::from_montgomery_limbs([10339301687172431688, 7034120066892139373, 278535235730000358, 1037618672688193269]), Fq::from_montgomery_limbs([8073945182151246976, 8024480602729778451, 14228737842273667747, 5601376964086932]), Fq::from_montgomery_limbs([17455241286370251178, 5877720710031178913, 9559992722432789829, 1325168601990716931])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([4443170007910122686, 7353422220255768461, 15086677032035138267, 1000401307557218310]), Fq::from_montgomery_limbs([6016899902613423969, 17460518555665406782, 3732816219387681456, 602171657802810010]), Fq::from_montgomery_limbs([17215551508008455197, 14155576318076749717, 287763472218567445, 348594781061367360]), Fq::from_montgomery_limbs([13673281300516729195, 2214275010578136594, 5278640382055069707, 862836485498449760]), Fq::from_montgomery_limbs([14604602086577261525, 17331229080491881983, 9761345074674761926, 92431445071525752]), Fq::from_montgomery_limbs([288667004247211189, 8068558316435185759, 34133259048288536, 632325899262964414])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([4414532264671055849, 13933747433746332421, 13027565118143790352, 1050571576397137370]), Fq::from_montgomery_limbs([10778047724985809400, 1316157346886280268, 10174764403037871455, 1310251685035182702]), Fq::from_montgomery_limbs([2901779093000588757, 14345292131236108270, 325687763253834560, 1302296993426055332]), Fq::from_montgomery_limbs([10195270688246580514, 15529132938808577668, 16655748986619374751, 1334926369645181743]), Fq::from_montgomery_limbs([10219117138329677661, 17968691841862978952, 2586002244710590318, 890496969841145620]), Fq::from_montgomery_limbs([2498245601951074289, 1598646875827827107, 890275996690762376, 77165559003555915])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([2988605310258792866, 15957801327838169961, 7584840999811153279, 434926945147154735]), Fq::from_montgomery_limbs([9597713906228190573, 13530531350309731794, 11006707392867763256, 1180021669203726874]), Fq::from_montgomery_limbs([3103797984913840610, 13327065637625915613, 7317743376243954428, 454606898571769263]), Fq::from_montgomery_limbs([13418762319452988162, 7011698969983978549, 10043811570622910529, 1219725988569937648]), Fq::from_montgomery_limbs([16415739938738212197, 18000325972331813382, 2937222969358261592, 751420552035148970]), Fq::from_montgomery_limbs([18143523461998133814, 17501449569222234751, 11831229978852878240, 230065434288493720])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([390587431735370215, 6070182885512254444, 15678300086321846232, 658622796995655025]), Fq::from_montgomery_limbs([11187073703980753366, 11256592440200977896, 1503110027135689183, 1132851611041610655]), Fq::from_montgomery_limbs([13154916648506390915, 5339482676807482888, 7230250399862288620, 218460204422790571]), Fq::from_montgomery_limbs([9102410326146594084, 6165251247104570609, 17897733375690573799, 920164771069067785]), Fq::from_montgomery_limbs([17285085289295929853, 16238198804092185825, 16251509486414134096, 1084909706592090544]), Fq::from_montgomery_limbs([3880782017033225674, 4873252603362867352, 14459262730771211791, 163174741264077656])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([4363513037339290429, 11071402644779655945, 18203948441237058377, 487870628328334554]), Fq::from_montgomery_limbs([9854620422114551002, 11862250176770700568, 874594626487585300, 932096667364472947]), Fq::from_montgomery_limbs([2172530204291601442, 6393872278636522840, 684019909052108375, 180921268676761997]), Fq::from_montgomery_limbs([747820584568953283, 11441694611866320992, 4524856196876367929, 874564518710804172]), Fq::from_montgomery_limbs([7299335342253825037, 12867703813750147845, 7941311700245180087, 1108892033870182325]), Fq::from_montgomery_limbs([17832410557204971163, 4075792975869963488, 7197135716780572438, 152677169125496593])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([10163931248253127785, 1981713163631115965, 3150372916074444430, 470994848988866265]), Fq::from_montgomery_limbs([15083629881223276978, 2015879515814390952, 11644449746714623084, 946361618448877426]), Fq::from_montgomery_limbs([16592814677886046887, 8039452671655169748, 2594546365519790998, 584104276493702607]), Fq::from_montgomery_limbs([17407066489676124305, 8656046168534251407, 3138964226038501382, 514356098263219093]), Fq::from_montgomery_limbs([15942565322057954282, 6097316293590202889, 6372629697231874413, 113242342217125329]), Fq::from_montgomery_limbs([11571924722120150581, 13912164049336724059, 2502413236406840486, 679604324439169221])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([11231555889522859185, 12838308109173382219, 14989494611471795387, 1234334251746422128]), Fq::from_montgomery_limbs([11820760137592674131, 13233941704214912620, 9184955620669308585, 760535087243845704]), Fq::from_montgomery_limbs([18251843258930069429, 6913182660293023569, 15611295871669355399, 543202252785444658]), Fq::from_montgomery_limbs([3623801569902716815, 12012005568369974445, 8975238911566253998, 1306561840926137970]), Fq::from_montgomery_limbs([11553511503558092125, 12278824151250337447, 14503589672502199303, 1306659756102330132]), Fq::from_montgomery_limbs([15708785553057654326, 3840692890311772930, 4102206509788468425, 440698181344607784])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([8058055302582355971, 5700106105541005064, 7460926738156841111, 462277946682165887]), Fq::from_montgomery_limbs([4851568100746305461, 6584456459134975532, 17460185792418666468, 793703974849869892]), Fq::from_montgomery_limbs([1493013092751501655, 6157234009848897017, 14948235164845831294, 1116239172277392848]), Fq::from_montgomery_limbs([541291017778122597, 4361606389405799905, 13559255135673617904, 164046297400629617]), Fq::from_montgomery_limbs([6157883725635917010, 7921949762718398664, 8097426475493743176, 285172774886131081]), Fq::from_montgomery_limbs([276501516953041810, 15996807350070926146, 1269758076943886300, 195784581070827446])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([4853469952320798393, 17379711604415333498, 11341428304819039080, 766000305508925099]), Fq::from_montgomery_limbs([1723028172270801784, 7846165827796379646, 4636451005692610955, 871151940476972966]), Fq::from_montgomery_limbs([6590646061221323902, 889461654044032879, 1505496877923673922, 752475483640516924]), Fq::from_montgomery_limbs([13045448500706444324, 8361654882120486231, 4205925187373381862, 277826998934433801]), Fq::from_montgomery_limbs([9675553409793389785, 5667173122152825040, 8083271914684780456, 706216661468574727]), Fq::from_montgomery_limbs([14266510371042388064, 7106905440715991100, 10411622989018615279, 894382081849790039])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([9268336790197882301, 12070173591607011265, 7396189305808814103, 6826922221427887]), Fq::from_montgomery_limbs([11481176188982883772, 15479330738046464105, 15874300506335824, 418080356004810461]), Fq::from_montgomery_limbs([8402920895853151075, 11319528131289558551, 11236635718047704076, 590562434419913557]), Fq::from_montgomery_limbs([11942015297507883097, 16315121378556649183, 668425812435475072, 1203236348881767128]), Fq::from_montgomery_limbs([14719743395974511202, 1514583382813202278, 3223906165579006067, 1338589921222659040]), Fq::from_montgomery_limbs([11353873627418368002, 17696069599691683167, 17867255547403463352, 256390082737611698])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([3183181278357516648, 10539132954816790294, 14186140147230647162, 782128376830566716]), Fq::from_montgomery_limbs([24279344590760052, 1500125118480868266, 1805095232159146495, 1156936758956513949]), Fq::from_montgomery_limbs([10537024754772614474, 3289834431146907946, 204955315838625775, 635285322161689619]), Fq::from_montgomery_limbs([10063527467101509243, 6065807056365479935, 17027546583602504025, 991768228369353932]), Fq::from_montgomery_limbs([10809287584503006407, 1968797130899798907, 15335034484681843481, 581199600450356946]), Fq::from_montgomery_limbs([5342411348500260963, 6851928330103451454, 17931963062212165213, 1333165923948214303])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([5362873004958210141, 4780911804231906429, 491658981443450273, 865870945658130370]), Fq::from_montgomery_limbs([16170855628896579013, 16924415594421177943, 18099375624011254510, 1172947874675982311]), Fq::from_montgomery_limbs([2313253813846593553, 6024058999881721714, 3460494784065903603, 200192466049298184]), Fq::from_montgomery_limbs([16495862644170305555, 1027481903728649974, 18424464377133050050, 286370147149132790]), Fq::from_montgomery_limbs([10500420552294712757, 1190864375567816587, 7753792083623713506, 527733109368565721]), Fq::from_montgomery_limbs([14443372038206196537, 7620145268069197030, 14646532763986835342, 456340242357593922])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([9232251606394270216, 14408677736204106911, 13271324872968281, 759107595695446407]), Fq::from_montgomery_limbs([17249519010359595711, 3324593693860748091, 17110518692688522506, 1222951351162422358]), Fq::from_montgomery_limbs([18126276283902025445, 4360757737312030104, 7886535856284373354, 1092174897468921446]), Fq::from_montgomery_limbs([1062163077313937380, 11987404733688401354, 13771857460633546591, 404835587063112873]), Fq::from_montgomery_limbs([16497288776209779034, 2880366049054710506, 253042145042914898, 795216235095539205]), Fq::from_montgomery_limbs([13406148328760919071, 7241933139744138143, 12901549130103097508, 622176358374555103])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([8839697166194087406, 4483906360586614080, 14882309942760908718, 26805057196885842]), Fq::from_montgomery_limbs([7780277578177316464, 8830183239891425324, 17543080001337922949, 763106694028031052]), Fq::from_montgomery_limbs([1380876235740608953, 7727437954586184212, 6573237846455394763, 348129619934932866]), Fq::from_montgomery_limbs([14022759702194409553, 8495575903624052978, 4435568764932750980, 556954649769758600]), Fq::from_montgomery_limbs([10833230885057379503, 14946233534988385740, 3482517598744002245, 312685728556510786]), Fq::from_montgomery_limbs([4935346722124605172, 797590664817406232, 6711744841558593604, 1113832946092370199])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([4507604340829135994, 6192904589647086945, 349044365259597977, 1152686511406973589]), Fq::from_montgomery_limbs([195352152493747630, 5233440319211994798, 932481733874805995, 509755197807725335]), Fq::from_montgomery_limbs([6237574338367694863, 18409691934826828587, 2269618770290486313, 1105546858321591640]), Fq::from_montgomery_limbs([12982330271334867216, 3689728804743182371, 11969860905888785248, 384135728283136906]), Fq::from_montgomery_limbs([18265210337391869731, 11610294943475185851, 7713269183082030658, 64710928906612284]), Fq::from_montgomery_limbs([17581461696584771576, 1251761997536591051, 8677916614754373573, 11467824250957215])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([5293383473840045151, 14232932703686129211, 16580168622608048461, 944952712971843416]), Fq::from_montgomery_limbs([1172918766922903979, 5995995512044846696, 7739257607297521882, 1042510915533280011]), Fq::from_montgomery_limbs([1981724477088009475, 13354315713534102679, 11891854408097089989, 92846148123740243]), Fq::from_montgomery_limbs([976886551936370648, 14904356347049243804, 14591979302472212806, 1213715283121821429]), Fq::from_montgomery_limbs([15587984398787314569, 16826502960315805008, 12894364377505862261, 1260461626778401163]), Fq::from_montgomery_limbs([4959549071568407724, 16406890426995168379, 5205271867547136181, 625367672303411178])]), Matrix::new(1, 6, vec![Fq::from_montgomery_limbs([4469737807624992151, 13646441970050473001, 14103514615210198911, 951934596751743825]), Fq::from_montgomery_limbs([179935223424484463, 2716781758867967994, 13772831748270319508, 559465738003921114]), Fq::from_montgomery_limbs([3732370725359378315, 109679493243276219, 881555622161027305, 772217225730861177]), Fq::from_montgomery_limbs([2034891371688198908, 15927708347683796662, 2835422031008901944, 942335024460335016]), Fq::from_montgomery_limbs([10874231289292346814, 11117313284388646608, 16125883931973538451, 1333477728458259050]), Fq::from_montgomery_limbs([5836661691500937581, 2582555451477250318, 16743568702164980685, 1095040268607012655])])], -// w_hat_collection: vec![Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([6933713838801944433, 16845582094611513195, 18106981831632269118, 1315719765541495999]), Fq::from_montgomery_limbs([11025937787709817432, 2848215840891863663, 12003429085947921194, 123169188111155826]), Fq::from_montgomery_limbs([12625372430371999830, 16677955247940128803, 7323211740492754581, 634092645821649835]), Fq::from_montgomery_limbs([8476375831616065903, 8302751278140753414, 4675397025515049474, 916054888187664134]), Fq::from_montgomery_limbs([10397071512469717592, 5168805500057287779, 15231087545157212262, 795647437775574917]), Fq::from_montgomery_limbs([4753644871978862709, 5862282760667146308, 12460694012157225697, 599558919665641703])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([3525611259680496361, 16850996105995319551, 5895804919214678528, 391214039273829079]), Fq::from_montgomery_limbs([16383982061649260213, 7412768188479417373, 18252968433587413341, 921842098972532091]), Fq::from_montgomery_limbs([4293960317930015621, 15005027020601642292, 14505531830207858927, 1015323632458039193]), Fq::from_montgomery_limbs([6752151532781968377, 16993009794999287001, 14092320031767020691, 1182677145301447547]), Fq::from_montgomery_limbs([16314233041829270002, 3649678206581272066, 11390243497395273567, 313040234242687401]), Fq::from_montgomery_limbs([16897077646049598862, 5408248314355013755, 10936401950030912526, 513592532346930326])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([10142077329767560760, 6792944251304638223, 7902051751595654458, 52562103742172771]), Fq::from_montgomery_limbs([4124245661449561978, 16104205151533781959, 12907591592992771975, 375874492004655234]), Fq::from_montgomery_limbs([721737094669186114, 9206501775775148139, 4450459856140585915, 711734015520322130]), Fq::from_montgomery_limbs([614920776545720184, 9338526590820186332, 3423803905067391290, 1297483125050494498]), Fq::from_montgomery_limbs([5114006628798839509, 10631775008980466663, 3587509331998934684, 1269615621594518563]), Fq::from_montgomery_limbs([10586294365539695697, 13070162917427803989, 5131427260750659378, 185094384545327415])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([15393156556409725569, 12069454178577165134, 10615051884848589576, 627431092634767494]), Fq::from_montgomery_limbs([2254585774072887271, 9054648099999668560, 10092512970859140868, 128794736276163271]), Fq::from_montgomery_limbs([9634188559612410031, 11231916523014098458, 9347609823309203991, 350537733562293921]), Fq::from_montgomery_limbs([712883344164921598, 12267969327296118133, 18415463544294982318, 453347153304216575]), Fq::from_montgomery_limbs([6354724406448162447, 16973074452059542227, 1742850061709863465, 29248222949323830]), Fq::from_montgomery_limbs([5847808690552004737, 2583092622487380856, 16226455529753322167, 622812582439549387])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([8037108896489144647, 11600187371086455875, 14226278393962213262, 1257430093680684711]), Fq::from_montgomery_limbs([17768344430228638036, 12362984821927414562, 8755702286219707347, 1052522743722421089]), Fq::from_montgomery_limbs([6518969013844050226, 10104698889580418215, 12831301188037688559, 783109772397025172]), Fq::from_montgomery_limbs([6181962216281397012, 8791420351320694807, 5845391987758232061, 691946495243473347]), Fq::from_montgomery_limbs([555663508144587651, 2813166513808555896, 9604748549845359549, 1115460934710212864]), Fq::from_montgomery_limbs([638373104524889548, 6961133691969109992, 16899272275885442322, 107354495377389126])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([359839753750440452, 16872903944693818879, 9182594678934428762, 157875028486713218]), Fq::from_montgomery_limbs([18133892901854313763, 2808183347815612802, 13420838164084790320, 592901990662685620]), Fq::from_montgomery_limbs([2972894661558754427, 10007808519010762631, 9092666282720580619, 1045475284031737143]), Fq::from_montgomery_limbs([11312374728773702090, 14199049380673735694, 6883328492121377672, 254205863439515968]), Fq::from_montgomery_limbs([1622439358680448127, 16670668058993745597, 4548903667405006277, 711571731093376968]), Fq::from_montgomery_limbs([17647983290779098291, 516914030435843715, 12098656310263379019, 275469573180901388])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([8548644889741041300, 16958143034062232997, 13155023865968925107, 527671552750155065]), Fq::from_montgomery_limbs([13280891140215524593, 3305529464796220554, 13769067712411857696, 194876564429210557]), Fq::from_montgomery_limbs([4744158468698697612, 16501033922635430369, 13118709481247752005, 455296334218894134]), Fq::from_montgomery_limbs([3276121206714262439, 4384108406151911994, 10320409945935199931, 1129505288669932775]), Fq::from_montgomery_limbs([4802683862047720627, 12048656597166121442, 2985941889978900161, 1215862908384237465]), Fq::from_montgomery_limbs([9878053342652269422, 6952038940472105574, 13204721887023621809, 104559270963520601])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([2884484268998399392, 7516340773367415265, 17967577411328781785, 71104776242823513]), Fq::from_montgomery_limbs([6836357534971200276, 12307486411100090586, 3725741383492541705, 708703587844324306]), Fq::from_montgomery_limbs([16065785508863042824, 13168438874677663185, 10334681499739682637, 537952869573618152]), Fq::from_montgomery_limbs([4276306945181457487, 11319798687621632943, 11337729997070203637, 154843360608516964]), Fq::from_montgomery_limbs([15091173599951556922, 10089665296762720564, 1001320269268178313, 1278999239679089342]), Fq::from_montgomery_limbs([6790806302663889439, 15630966142638650191, 7219114191273641870, 607000211505329118])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([10941156742810682792, 13379581544377778361, 13597487267674595073, 856893196159093362]), Fq::from_montgomery_limbs([12116163542944543584, 10494464956681785456, 5328861516400529745, 1198358765731586889]), Fq::from_montgomery_limbs([18189172451487902278, 4704482581638044529, 984078958545158234, 1214725173814978653]), Fq::from_montgomery_limbs([5693469689620468779, 9572644835043944500, 2366490855072377760, 976822768924111263]), Fq::from_montgomery_limbs([13490986302612722028, 1283285868432826268, 15164008493321253514, 443251753067442416]), Fq::from_montgomery_limbs([13150294025593833313, 5620721896853634047, 4766918037148084086, 1004371804232239176])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([11674076986569886445, 14273565036215986478, 7256033114853758831, 1243175635214446154]), Fq::from_montgomery_limbs([13391657488427814604, 11740905283874021531, 9224412564843665854, 277256927127426063]), Fq::from_montgomery_limbs([9479795538791379585, 12974816116199774846, 12093010719550875010, 5065395771365623]), Fq::from_montgomery_limbs([8817914873159831624, 2104380883716865129, 18076504449817050016, 651566378088004291]), Fq::from_montgomery_limbs([2593549556231375650, 9464329604880807882, 931952291445829364, 1296192193647975938]), Fq::from_montgomery_limbs([6791830127635900713, 5571583372402235342, 5980079258218847792, 609581694037305767])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([3590436137035362796, 6878827383468400586, 2087187619625759972, 366519334389468484]), Fq::from_montgomery_limbs([8466797588269795178, 6233162019605045514, 7818079020321919455, 1299893902682642414]), Fq::from_montgomery_limbs([13213818269144599466, 1289947883313972118, 4059701246652915385, 12056266522820237]), Fq::from_montgomery_limbs([4508800680162331521, 15986068886298500867, 14977838885955851194, 38157078418942241]), Fq::from_montgomery_limbs([13953378503175087488, 2632607770308512210, 13562084469560012417, 245249845748719170]), Fq::from_montgomery_limbs([14192710935721498803, 10423371171643016558, 8787645447508907660, 1222320713106865517])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([11672182316223918869, 6397196540158184432, 16362125278956639955, 487254253940971622]), Fq::from_montgomery_limbs([3466115228336022838, 17336865038830586933, 15011622032603429066, 886109464755529302]), Fq::from_montgomery_limbs([60790403003891626, 11789627958407425130, 18093678967772149866, 163664659042316929]), Fq::from_montgomery_limbs([11752605341201064356, 17735918082592333925, 6652470350194431394, 889452019796415044]), Fq::from_montgomery_limbs([8401712234167110287, 10960633415813906272, 11916450035773002049, 1182232446618175169]), Fq::from_montgomery_limbs([10396262244990196196, 13566621656449952195, 17637374041715454767, 487328172506255483])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([359851191963578459, 6093707674603330913, 12382809233400904418, 822869288595513424]), Fq::from_montgomery_limbs([8685375674428402008, 11116570913984986227, 13141958117760910576, 694631449425721940]), Fq::from_montgomery_limbs([13799808203577028319, 17015236177612766046, 13321925256996230040, 83728605392058044]), Fq::from_montgomery_limbs([11345927491644574710, 6729113552022061366, 489680359452713554, 1063665064872602168]), Fq::from_montgomery_limbs([5144672341518660971, 13584780511637830006, 8111044646642319859, 760808052520956883]), Fq::from_montgomery_limbs([10534617268344014793, 13365424830059569868, 15323686518176324368, 630253372526730391])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([5574736329985492350, 1394240824897034276, 12869158727379905882, 927371660714513620]), Fq::from_montgomery_limbs([6250879616233772588, 14830533363705576088, 11405716231454843078, 302485753651389813]), Fq::from_montgomery_limbs([9376998902591535768, 10870546783769916945, 8867938913668980167, 168036903158516371]), Fq::from_montgomery_limbs([17665300127173928717, 16211022938249470990, 17778018974492488988, 1035038949736118270]), Fq::from_montgomery_limbs([8713486127840843643, 12284089155092108591, 9199322335133216480, 1254936361875119138]), Fq::from_montgomery_limbs([10672903121209769745, 1541284167923703332, 354508315039816196, 1077919680069474774])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([6003956627532398687, 12900385821050494701, 13212436788748797499, 550552294639902063]), Fq::from_montgomery_limbs([14895950277557938580, 3197587119252958842, 1370401976516442748, 185312282262907769]), Fq::from_montgomery_limbs([4334813612319164060, 1249839787510419412, 2014732433360765992, 674486378020601344]), Fq::from_montgomery_limbs([16372536311394952793, 16876000734634230902, 16256142784705290990, 1216045970949193228]), Fq::from_montgomery_limbs([7511261605071474477, 12731027885113475848, 7275278577140348070, 1332751723743282012]), Fq::from_montgomery_limbs([2087120385657061588, 5805219940951110446, 13072060426636966211, 863754038349923743])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([9861938477894648572, 1261863888379893097, 1659273544923639757, 1175309734597332353]), Fq::from_montgomery_limbs([3160898884988868850, 12315548764431121182, 12829922584215852165, 56495588159121736]), Fq::from_montgomery_limbs([9126361106532779429, 8812351712430538764, 16651360315827640335, 488907765340195245]), Fq::from_montgomery_limbs([8831436795438293115, 389432919099331880, 4151373017145697434, 20487081091778889]), Fq::from_montgomery_limbs([1478664308612791336, 8186322499300142837, 14558475073251694928, 808252273304974762]), Fq::from_montgomery_limbs([15607838810385275909, 12674581021244262249, 1909980166381620782, 345071109506949067])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([10897251009229233031, 3820618022447517075, 10985787470877927823, 403556049280121762]), Fq::from_montgomery_limbs([930794418602631676, 4219345337777307051, 12545787195024594643, 727460251993377030]), Fq::from_montgomery_limbs([1295669867887905036, 9507152194066574702, 7109356788802489574, 787002368140653778]), Fq::from_montgomery_limbs([3498224858763889755, 302153864491265874, 14518919122820805288, 961799431413434867]), Fq::from_montgomery_limbs([14579188115252453346, 8486675243511966662, 4198502112353568422, 266466804927785090]), Fq::from_montgomery_limbs([5714787944090956648, 8773050216612558194, 4209799818844007033, 157683362695822804])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([7490636877172818331, 18234545141478570777, 4868926515076353497, 1040485086378507404]), Fq::from_montgomery_limbs([4007494498414670332, 11381886286508088565, 2983212756609056257, 310114683693996305]), Fq::from_montgomery_limbs([9176086588288648852, 1592592270921797535, 4569673380486221672, 1302061240324827715]), Fq::from_montgomery_limbs([16913435421079334086, 1877470558106542334, 3613514508584067134, 934461884972210272]), Fq::from_montgomery_limbs([5267175603942094137, 1748374762382459641, 4882024791077414221, 1068225445733947215]), Fq::from_montgomery_limbs([4248184777234069323, 13346185782403877767, 10153633758750203581, 141684902152107360])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([14329113735110304247, 4241308009922883952, 9772848400881136490, 239381311112673117]), Fq::from_montgomery_limbs([1815346937549645652, 3479767444023955389, 4985298868790684050, 355453443190923870]), Fq::from_montgomery_limbs([5747089878066396614, 5454329989338975845, 12341448373351673623, 1202238166588655979]), Fq::from_montgomery_limbs([9296701061462558971, 17770007858418801719, 9914793610472554336, 1281893899901916554]), Fq::from_montgomery_limbs([3010329870005884069, 2836286366415384158, 2351971757588955099, 425289972726450364]), Fq::from_montgomery_limbs([18291414506166784212, 810246456460775309, 17528761664504541127, 1189494422506112895])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([13873201020652076543, 6243622914124108573, 6903929397781795660, 574766800775597314]), Fq::from_montgomery_limbs([17971358622227978668, 15854652377477090302, 1063842904034816, 989523394960344619]), Fq::from_montgomery_limbs([8015553520299503933, 4607530076716157995, 7439330134573907822, 1104246105186017619]), Fq::from_montgomery_limbs([3986330100644126569, 17707403369263436100, 4053571974764234396, 108842167919011278]), Fq::from_montgomery_limbs([5227388868334111117, 12812207377137498929, 2588198532604965494, 961490407308315800]), Fq::from_montgomery_limbs([7646326553387833689, 12724139924596788661, 629496738895522970, 1201441128237966538])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([14866344307104327368, 4985794825846590702, 853871436616991822, 749367072047711970]), Fq::from_montgomery_limbs([1876020443251361508, 6552070073373315737, 12995514842585856406, 1275392944325677985]), Fq::from_montgomery_limbs([7601514916050054383, 16910631174758870764, 7353760964415941247, 324644049762087391]), Fq::from_montgomery_limbs([16565109856331579529, 458787328687847682, 5878204963586402256, 1322072415305233581]), Fq::from_montgomery_limbs([12729053080732475923, 11510453208755572522, 3723997403677235406, 73363110170067874]), Fq::from_montgomery_limbs([18174997862860579716, 6182018227945955817, 2127647890385770221, 870293941267412601])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([10698372380060816691, 7522180405775599951, 15832604002112875278, 521032436098731379]), Fq::from_montgomery_limbs([15319055731354684350, 1753334646577885863, 4505520717374373397, 984179811150887857]), Fq::from_montgomery_limbs([13141271355432538382, 14700998572061668181, 4549081783230234567, 806347686644718089]), Fq::from_montgomery_limbs([9975557437768999376, 11618707034451291844, 3181936011792873831, 576438052445019413]), Fq::from_montgomery_limbs([16609855326770322939, 13212944030983556053, 3039401190695389047, 1188561968753866414]), Fq::from_montgomery_limbs([10305504178314593273, 14719639554020787850, 2480984582534492384, 221582009878780852])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([13200038943773919312, 14432882432204232972, 3023115969282520533, 343418406639707901]), Fq::from_montgomery_limbs([9327873286332474704, 5954324830215207584, 3873074387113200139, 744988613833241266]), Fq::from_montgomery_limbs([15847102383028666437, 1096370811445384001, 10166653322883901200, 327347038183216223]), Fq::from_montgomery_limbs([17600124854622807025, 15328683957983696187, 3518858654096416419, 638859422450597084]), Fq::from_montgomery_limbs([3012983939074171362, 9083322861410244018, 4322938770639600225, 442252654129847313]), Fq::from_montgomery_limbs([10656857781541021576, 5978481768391996531, 2250259229090183585, 432977302373307667])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([14355870696105147319, 8480124686198992740, 4123496920141395243, 506237667861983638]), Fq::from_montgomery_limbs([12320253406233535520, 8322795092624377756, 9572334243002510406, 1226552575804851889]), Fq::from_montgomery_limbs([9845446342011599085, 17778086686673507324, 5271342849823127028, 1088489886300171520]), Fq::from_montgomery_limbs([10715976971447272221, 1556354685447448032, 16979954691422909924, 386763037013271508]), Fq::from_montgomery_limbs([6180856312104178084, 11877570767790110506, 11499883073784997611, 393033674847566959]), Fq::from_montgomery_limbs([7644299261552751667, 2236838738262968574, 8460748568952358391, 1177808537547336633])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([9135896072628350252, 17288794130611191656, 16136991324140875732, 84153041777780941]), Fq::from_montgomery_limbs([3384444111049248095, 5013442674731807719, 8362856530990022791, 1126331696064245534]), Fq::from_montgomery_limbs([13385137591549846388, 11889738158254938557, 17705852903381913949, 155996115818620695]), Fq::from_montgomery_limbs([15454217037527338314, 9036781253178038581, 12351768307285004715, 776821242022223621]), Fq::from_montgomery_limbs([1200501875000044263, 6384384240290446957, 15639254494736291770, 930709414948460626]), Fq::from_montgomery_limbs([2141846397057350878, 14687259326247822547, 2879743331055932654, 420053148927601148])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([18343404923952179637, 1978770268004633152, 18074842923392944526, 99740808436074128]), Fq::from_montgomery_limbs([16339172153591076879, 13902224968596916829, 10987490026958244901, 480318192898237950]), Fq::from_montgomery_limbs([16708778634825784370, 5310850661772903365, 16720939557594415942, 983754580352601152]), Fq::from_montgomery_limbs([8614768398997670932, 10441907275834816828, 11459906999048618974, 98256766838754326]), Fq::from_montgomery_limbs([5461219359492352050, 8928173417887044164, 5632769833875876015, 938637862379787936]), Fq::from_montgomery_limbs([14478729241761067482, 14593688601059211201, 14567193330233850704, 193411838718316245])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([6244372198079752707, 12764020255605820167, 3597323991837773264, 232811656021755322]), Fq::from_montgomery_limbs([12794321084179091283, 12550727012798192271, 5852541072119985136, 1021072807450583460]), Fq::from_montgomery_limbs([5843482488715644166, 17968652270397807267, 10729147049305849619, 157069170856760481]), Fq::from_montgomery_limbs([16486113458959504396, 3842616654194538021, 16267097259825943411, 595256064535306261]), Fq::from_montgomery_limbs([18403329840356376661, 17180721686489435607, 16602787769632693868, 1218551944743323947]), Fq::from_montgomery_limbs([15792003884980763548, 103687243243986150, 1015407070790759683, 925892726865866689])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([4737231254389322774, 1982930339222313430, 17171322757846703283, 898862720123176395]), Fq::from_montgomery_limbs([15341788185538116478, 15152543049620221847, 11673048694712682284, 322745914045333317]), Fq::from_montgomery_limbs([12638501658486051138, 13136127249934274833, 16835414843273620909, 830854396919510911]), Fq::from_montgomery_limbs([15895567503124768810, 17851680667009624675, 9790662472981446008, 688513180346337911]), Fq::from_montgomery_limbs([7539663061168884957, 14647473521866168085, 14254615857988792976, 4914529917008946]), Fq::from_montgomery_limbs([10355365805280135879, 1713320802629047069, 11781471822278287496, 696018085837035473])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([17208622806574606453, 2131863109694270375, 17267390257687220562, 717142744114900489]), Fq::from_montgomery_limbs([13115781297674767878, 11806487226059857638, 3832559734382202821, 1327223946228164221]), Fq::from_montgomery_limbs([1519942432011064348, 2971486323152134197, 10412234235600737234, 627890410365264901]), Fq::from_montgomery_limbs([10935974904415640609, 3329695497336026013, 13276582814401540013, 624327570851923410]), Fq::from_montgomery_limbs([110740126727160908, 1977000808556019402, 17939216501132184661, 456092178041276768]), Fq::from_montgomery_limbs([13974795879491265452, 16756058358467461957, 18345173225794766341, 1240468105851879043])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([16648425534044120166, 17300631023568278668, 3769987016608299300, 701256036605548976]), Fq::from_montgomery_limbs([9545137723467262343, 5920020285572073751, 5586902085914198509, 1101010118319202051]), Fq::from_montgomery_limbs([1804254836884575917, 5416042091971666706, 2881258114252429182, 68889272174393525]), Fq::from_montgomery_limbs([15468731159921956531, 15872344848072676105, 1678659996910931386, 827142061320044550]), Fq::from_montgomery_limbs([14524351942355153784, 10797623040866138576, 12874995891465211466, 522880520258235794]), Fq::from_montgomery_limbs([3987121765421903331, 10914786903369841306, 14357739193531493338, 159659900263967910])]), Matrix::new(6, 1, vec![Fq::from_montgomery_limbs([1502512509312401925, 17658662731474453106, 12409373669027537750, 369255404008259275]), Fq::from_montgomery_limbs([3933340182670563102, 17988389551284440931, 2662254549780507248, 455350437925171541]), Fq::from_montgomery_limbs([12151336628671687181, 16659863612142679844, 4275242264769905759, 226663222642898029]), Fq::from_montgomery_limbs([16130436743434681682, 11552440823414351188, 4441812352013272663, 1024571907948499450]), Fq::from_montgomery_limbs([6575764606651544368, 3768634045069377030, 18077248345407646289, 1109390810042386997]), Fq::from_montgomery_limbs([14122304828382902866, 7822601784757433157, 15085114466160105232, 454674386781135986])])], -// }, -// optimized_arc: OptimizedArcMatrix::new(39, 7, vec![Fq::from_montgomery_limbs([15142982440796561447, 11586951767160912790, 2554152473571518408, 1060132733599829191]), Fq::from_montgomery_limbs([5004052621280210368, 17001459709892607063, 7681637351760180567, 370325849830378477]), Fq::from_montgomery_limbs([12700316700887579682, 10527071459591008162, 4649940422809756001, 1164398790994859766]), Fq::from_montgomery_limbs([14166576988026094609, 7313392791454005322, 12003933110859736764, 497349496445067730]), Fq::from_montgomery_limbs([660800666505769101, 8654643871558439567, 14263148622483513593, 820049075817239934]), Fq::from_montgomery_limbs([3633256971691786185, 10090676851691033833, 14588357423182388197, 831634409758195705]), Fq::from_montgomery_limbs([6492287632409988134, 12046607076154115291, 17147959445519551317, 461021671425820687]), Fq::from_montgomery_limbs([14444046072241906262, 11260694318344083229, 15743364178797140854, 866446994798567454]), Fq::from_montgomery_limbs([3641312158605685211, 14157364044999263645, 16784472236570305027, 425843099497195003]), Fq::from_montgomery_limbs([17723864121788076174, 13911937024562874191, 12749454259525933628, 451378649043069085]), Fq::from_montgomery_limbs([12784133990119646353, 17654455838119254543, 14047536069777387226, 645204516252515303]), Fq::from_montgomery_limbs([1959581704190940037, 13929985394687694163, 11022302142929130035, 283707020686355664]), Fq::from_montgomery_limbs([8629032034013359758, 8320916390268264398, 11188435069201519314, 1277918481865788038]), Fq::from_montgomery_limbs([1783621120979741815, 10125702604889014266, 7859706914940359291, 1258189548796714111]), Fq::from_montgomery_limbs([4197085784563434882, 243889206587889894, 328885806087941395, 929695947751686179]), Fq::from_montgomery_limbs([6420634290533400711, 3371757063543007366, 8900632765923820105, 371199850895065588]), Fq::from_montgomery_limbs([9679924820095672851, 5191301328839079795, 1468702730043861612, 1130258788388916276]), Fq::from_montgomery_limbs([14270884667693338729, 18421783881067727877, 702505960635108322, 876601962183112334]), Fq::from_montgomery_limbs([12801928710162774032, 15709283060501093378, 2508615709628312314, 924328772397935430]), Fq::from_montgomery_limbs([9019134492733417932, 4614098400696239641, 291908476903718505, 879711180612784839]), Fq::from_montgomery_limbs([12296479578360854848, 3423354675244851904, 17098596077633953792, 378482623029323224]), Fq::from_montgomery_limbs([13200816203042245771, 15381254577926224952, 14688424257545082743, 884773501591309967]), Fq::from_montgomery_limbs([16263843110415550162, 14001011937262187824, 2325893788175944450, 427344840846697831]), Fq::from_montgomery_limbs([10712788406702291397, 14628016237392831746, 12076323935029775432, 746032296870665924]), Fq::from_montgomery_limbs([7577844083779539683, 8593563853045273470, 6762705862919489296, 1011466592883577533]), Fq::from_montgomery_limbs([10970204418416076913, 4397529361571105931, 15590416832284287611, 432035610777585218]), Fq::from_montgomery_limbs([13604542201065871088, 8000646895858538916, 7463535664974476191, 112496092381655883]), Fq::from_montgomery_limbs([5448941064349247150, 18035446383961421934, 9688851655819494355, 314108334517577725]), Fq::from_montgomery_limbs([13216339084640418338, 18208749029142079159, 2801888902925820506, 1144112407212441278]), Fq::from_montgomery_limbs([7414209360993783553, 9029452093631467477, 10351555314693636524, 588771856204784285]), Fq::from_montgomery_limbs([3108201764764012849, 9316564318794683488, 2890833741230407843, 2976751152949582]), Fq::from_montgomery_limbs([5531824355021026381, 12498142272625928587, 3715194578260983474, 1067798051179441316]), Fq::from_montgomery_limbs([5339344176782059900, 10307852721097022359, 14767036192885737246, 130540287097272817]), Fq::from_montgomery_limbs([7180958399368342439, 128655658219475950, 15207307979599970655, 1124647386318203846]), Fq::from_montgomery_limbs([10677712105355735228, 303877370541742151, 11456613512094797466, 1197130552973396923]), Fq::from_montgomery_limbs([1852186172212255919, 7732103194240143876, 3191072801518998585, 684231033415976440]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12344835392323260771, 2083746688625641780, 9843550839040352981, 651659425757649777]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1110121811836510524, 11074047049180975687, 15444325776340307889, 1176464439067465611]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15910765157617366987, 3536546922624744505, 13839442880050335167, 1052063195754658296]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15883615976440084496, 10513678964631690585, 17274484441634888004, 104967936091342947]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6481049124859745810, 12420828791682339353, 3515061109189248511, 2970636150410785]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9330561373397764193, 15220428410405742122, 3596976591192400082, 1172536306991915045]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11645314245053381169, 12447229279329596583, 2611021837182599503, 1121293333579047218]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5520645742684358372, 4184771738280864541, 4013355666407389724, 651341887764501817]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3861533222480473435, 8229127100534402633, 961020646123781410, 1093771644395281795]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7693571830729430183, 14740278293355277643, 7478396620768437721, 1020903160466582154]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13974629067477558431, 5721400371209900889, 788632258150877276, 1052522919478138392]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4992769493438078027, 6924382181722868018, 8263199750104564483, 169174671387869155]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11416436440841880348, 7910510255652583772, 2772926057469350664, 240489949253278513]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8550478801539329000, 17416455311840648130, 7713828782443004553, 1257322107749939919]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10946761173248535048, 6300893940302812177, 14214574452301493380, 1064839331942993571]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12881919676216378529, 6525643603496459068, 7739411544375049269, 121520118034913063]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14171005468190725795, 807987272814416859, 16062924926726151568, 258817012972523442]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5031548057386859908, 16708231376954786943, 3901002117807196384, 15277199136600693]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3470573257247529570, 3778398720483160839, 4271650771133121672, 366341134231605540]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17671590415686923470, 14797555043330379484, 2826722725742773774, 673498791246184156]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4599390077836288923, 15103704149833090169, 13723271685426770651, 1238708412855247473]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12304403800545959570, 12269595607865918824, 4224309437769311654, 1102826182464027344]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7422908892054624300, 6613469136954082264, 2435694939055735193, 465151622319296864]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9966121319294113392, 1036787719885473593, 16922917099071401564, 957685172296873589]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9346051242088429570, 5881327167233602278, 18366005774591742073, 1234098542793269307]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6556095991079572091, 15800350435028538953, 17490188894945751356, 318651152411458756]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9604843137147166704, 10750667974649036098, 15855520508812075513, 289244356768878157]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9330357980066794783, 17865465819235974796, 9112978452518873031, 700544745156046737]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6722735210481586279, 9213635375899356767, 3419293198746470858, 397188667470959331]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5033510300536938046, 14319156262351107248, 14453339555250931608, 1300088399042594667]), Fq::from_montgomery_limbs([586365878943401533, 10219333061949038245, 7972787616665459187, 1180682599170166362]), Fq::from_montgomery_limbs([8677310049713074877, 6209659062870853276, 6361763165884296788, 1086786531947345096]), Fq::from_montgomery_limbs([4779669491370037827, 13794675476884129106, 2856260482144566523, 815058410432730978]), Fq::from_montgomery_limbs([8349785262387520653, 14703604045323517453, 10665488643511503896, 1190736588532344714]), Fq::from_montgomery_limbs([9753136258891648437, 7592309943578822500, 18234430885873993524, 946608033429176051]), Fq::from_montgomery_limbs([8862120093151408513, 9919781382246740055, 1639967479777957120, 548895009658598348]), Fq::from_montgomery_limbs([13150047014556861649, 9895352886349978940, 607603433543469096, 825078058460205935]), Fq::from_montgomery_limbs([10677514517763000310, 1869057220976501750, 7668490026500068131, 645375934459787109]), Fq::from_montgomery_limbs([8393901821323241932, 7155803376644055598, 5465256629438666110, 467809976924970962]), Fq::from_montgomery_limbs([8008789779293081850, 17333068400582244417, 864473515802821379, 712131972755422562]), Fq::from_montgomery_limbs([5260641048740129119, 11495506189219575805, 1976170684554961654, 583558279245420304]), Fq::from_montgomery_limbs([10607922137491563126, 16997507064637422660, 16243052688991164520, 620318480202596319]), Fq::from_montgomery_limbs([8682850641454705537, 4234371891064954414, 11030571520428482979, 775687601614273649]), Fq::from_montgomery_limbs([12248979915462901096, 1794636648127247975, 16388845185353268388, 1257257804440120883]), Fq::from_montgomery_limbs([17181365213230240819, 3933917789297525218, 774796165591114183, 628159510187755171]), Fq::from_montgomery_limbs([9201407700189177387, 14700424513123193347, 18288661468232834482, 407382537568434540]), Fq::from_montgomery_limbs([11966891449526246216, 6846368159746727324, 5421814018651935761, 1007837491484494646]), Fq::from_montgomery_limbs([3054672449338249840, 772010416012553897, 804919836093674272, 60934971449786311]), Fq::from_montgomery_limbs([3349955854192164124, 12023516821995660430, 14073054570207692346, 391152224081538807]), Fq::from_montgomery_limbs([4393818606630194054, 11894249453630174803, 11407464681452601419, 527342257675756743]), Fq::from_montgomery_limbs([593191207061949875, 394301333075100218, 15992303837511873397, 1258463696198082538]), Fq::from_montgomery_limbs([7392815618978882544, 8600193649781721343, 10001082189003162790, 160465744058402439]), Fq::from_montgomery_limbs([5982722207731997556, 9327097271719907983, 16837081471143367937, 1323283752393867441]), Fq::from_montgomery_limbs([15234580594321690160, 14480758270368693259, 7897576353120019799, 1211836381357568240]), Fq::from_montgomery_limbs([17534396175019205578, 3323788238042131357, 16622036826489890791, 893487708746761741]), Fq::from_montgomery_limbs([3851834168141787069, 11582510337408899680, 15343784808633432566, 461896544402216282]), Fq::from_montgomery_limbs([1182215324455482337, 1943242735522063011, 4144863718139895080, 243576649285589719])]), -// } -// } +pub mod rate_6; // /// Parameters for the rate-7 instance of Poseidon. // pub fn rate_7() -> PoseidonParameters { diff --git a/poseidon377/src/params/rate_6.rs b/poseidon377/src/params/rate_6.rs new file mode 100644 index 0000000..4040f55 --- /dev/null +++ b/poseidon377/src/params/rate_6.rs @@ -0,0 +1,30 @@ +use decaf377::Fq; +use poseidon_parameters::v1::{ + Alpha, ArcMatrix, Matrix, MdsMatrix, OptimizedArcMatrix, OptimizedMdsMatrices, + PoseidonParameters, RoundNumbers, SquareMatrix, +}; + +/// Parameters for the rate-6 instance of Poseidon. +pub const fn rate_6() -> PoseidonParameters<7, 6, 49, 36, 39, 7, 273, 31> { + PoseidonParameters { + M: 128, + arc: ArcMatrix::<39, 7, 273>::new_from_known([Fq::from_montgomery_limbs([15142982440796561447, 11586951767160912790, 2554152473571518408, 1060132733599829191]), Fq::from_montgomery_limbs([5004052621280210368, 17001459709892607063, 7681637351760180567, 370325849830378477]), Fq::from_montgomery_limbs([12700316700887579682, 10527071459591008162, 4649940422809756001, 1164398790994859766]), Fq::from_montgomery_limbs([14166576988026094609, 7313392791454005322, 12003933110859736764, 497349496445067730]), Fq::from_montgomery_limbs([660800666505769101, 8654643871558439567, 14263148622483513593, 820049075817239934]), Fq::from_montgomery_limbs([3633256971691786185, 10090676851691033833, 14588357423182388197, 831634409758195705]), Fq::from_montgomery_limbs([6492287632409988134, 12046607076154115291, 17147959445519551317, 461021671425820687]), Fq::from_montgomery_limbs([14444046072241906262, 11260694318344083229, 15743364178797140854, 866446994798567454]), Fq::from_montgomery_limbs([3641312158605685211, 14157364044999263645, 16784472236570305027, 425843099497195003]), Fq::from_montgomery_limbs([17723864121788076174, 13911937024562874191, 12749454259525933628, 451378649043069085]), Fq::from_montgomery_limbs([12784133990119646353, 17654455838119254543, 14047536069777387226, 645204516252515303]), Fq::from_montgomery_limbs([1959581704190940037, 13929985394687694163, 11022302142929130035, 283707020686355664]), Fq::from_montgomery_limbs([8629032034013359758, 8320916390268264398, 11188435069201519314, 1277918481865788038]), Fq::from_montgomery_limbs([1783621120979741815, 10125702604889014266, 7859706914940359291, 1258189548796714111]), Fq::from_montgomery_limbs([4197085784563434882, 243889206587889894, 328885806087941395, 929695947751686179]), Fq::from_montgomery_limbs([6420634290533400711, 3371757063543007366, 8900632765923820105, 371199850895065588]), Fq::from_montgomery_limbs([9679924820095672851, 5191301328839079795, 1468702730043861612, 1130258788388916276]), Fq::from_montgomery_limbs([14270884667693338729, 18421783881067727877, 702505960635108322, 876601962183112334]), Fq::from_montgomery_limbs([12801928710162774032, 15709283060501093378, 2508615709628312314, 924328772397935430]), Fq::from_montgomery_limbs([9019134492733417932, 4614098400696239641, 291908476903718505, 879711180612784839]), Fq::from_montgomery_limbs([12296479578360854848, 3423354675244851904, 17098596077633953792, 378482623029323224]), Fq::from_montgomery_limbs([13200816203042245771, 15381254577926224952, 14688424257545082743, 884773501591309967]), Fq::from_montgomery_limbs([16263843110415550162, 14001011937262187824, 2325893788175944450, 427344840846697831]), Fq::from_montgomery_limbs([10712788406702291397, 14628016237392831746, 12076323935029775432, 746032296870665924]), Fq::from_montgomery_limbs([7577844083779539683, 8593563853045273470, 6762705862919489296, 1011466592883577533]), Fq::from_montgomery_limbs([10970204418416076913, 4397529361571105931, 15590416832284287611, 432035610777585218]), Fq::from_montgomery_limbs([13604542201065871088, 8000646895858538916, 7463535664974476191, 112496092381655883]), Fq::from_montgomery_limbs([5448941064349247150, 18035446383961421934, 9688851655819494355, 314108334517577725]), Fq::from_montgomery_limbs([13216339084640418338, 18208749029142079159, 2801888902925820506, 1144112407212441278]), Fq::from_montgomery_limbs([10386335329700935468, 13018324118118161010, 2406041197881630048, 1324098854417409495]), Fq::from_montgomery_limbs([2690622444332381359, 2738375881209676440, 17836986493178387691, 868260556757543816]), Fq::from_montgomery_limbs([9714850335178297908, 2509018678236953449, 1040431953277617242, 408671886406597132]), Fq::from_montgomery_limbs([707163896186597409, 13903930520829310823, 14380446875360964889, 798432165792010570]), Fq::from_montgomery_limbs([12820993772370131859, 3069542795148551755, 4040592593739183911, 977377017483241698]), Fq::from_montgomery_limbs([4384064590197914518, 11440426390601473487, 3890530701580791196, 991346454205769097]), Fq::from_montgomery_limbs([2745693351823380117, 3687897447624002689, 13955517171460419947, 904061096631428006]), Fq::from_montgomery_limbs([1760514697396940568, 6095881437414931654, 3928451548254372674, 247578034773164640]), Fq::from_montgomery_limbs([16683268981822865275, 15797990746305502978, 12125148959239662231, 449202381506144581]), Fq::from_montgomery_limbs([1544285291520736591, 5232522639692590592, 14175161601321791260, 1003097983515138607]), Fq::from_montgomery_limbs([13865967627227239358, 4354525642109054184, 5021238725820305528, 906854086996571433]), Fq::from_montgomery_limbs([15375530278413617622, 7761235083504109835, 15924872860758961429, 537333030355735422]), Fq::from_montgomery_limbs([13872782625772992287, 2068079588750918007, 17083661114150680976, 191043765855622193]), Fq::from_montgomery_limbs([489795382124266981, 9316407371494156111, 16300320024181640604, 1307068723907147815]), Fq::from_montgomery_limbs([77890204043514297, 14999308260055033106, 16273406145240730287, 1230840137172288304]), Fq::from_montgomery_limbs([9003111034130458080, 14053560383370232566, 14148009681833335599, 84069116658731520]), Fq::from_montgomery_limbs([1986315671557859076, 944997752628096648, 6737867794955410335, 792066859500791592]), Fq::from_montgomery_limbs([11554157552429322652, 6015547764843714345, 3599229111267661129, 1102309536290663120]), Fq::from_montgomery_limbs([16401157455500798150, 2599298290463801395, 4428490753223095655, 516522849079366838]), Fq::from_montgomery_limbs([7623242261478057757, 3618111358832343565, 1696272282252986964, 280076732551033967]), Fq::from_montgomery_limbs([13071470547050819875, 20719442839602638, 9223499824514905062, 1041977639884177823]), Fq::from_montgomery_limbs([1150980008515938579, 12791886596105604965, 11797006328775889799, 132341159056314927]), Fq::from_montgomery_limbs([16356304185985037124, 18355100705716380177, 1487696971024578548, 1163163264873917501]), Fq::from_montgomery_limbs([8790136689831869026, 9859012327886066746, 1622774421779032220, 680128396913817531]), Fq::from_montgomery_limbs([2440240671160835195, 5639103082516719016, 16233642885930425961, 459387979334747122]), Fq::from_montgomery_limbs([3071531689091094489, 11779374527227589848, 5879834474282319317, 392743474596485606]), Fq::from_montgomery_limbs([3786139316484579004, 7465575270640816353, 3301786867662477611, 919080835077506714]), Fq::from_montgomery_limbs([4241677901554464615, 14852259420419314449, 9789117952977925786, 1276159211529108963]), Fq::from_montgomery_limbs([15762815448669571633, 7231481802108863616, 8209538117580382786, 894055725982675524]), Fq::from_montgomery_limbs([3283548778124636488, 17961129609378056584, 12441299600811628613, 709973667467565902]), Fq::from_montgomery_limbs([1675404449995783699, 17666259544497784614, 13412804093386962519, 434991501447979808]), Fq::from_montgomery_limbs([17976226742991442453, 14546337615752094946, 6516407789910488272, 1036976265682484688]), Fq::from_montgomery_limbs([13972137480979054280, 1231617287998224018, 8770959412540690803, 274349352586037174]), Fq::from_montgomery_limbs([14183071713815614452, 12618349549865293619, 4916959733988057866, 228836586859139895]), Fq::from_montgomery_limbs([2619860170191204767, 6934658348682381942, 445022332707100685, 525184674849718520]), Fq::from_montgomery_limbs([10672109165350813992, 13411227948301334538, 7449776000632083055, 11625548609868921]), Fq::from_montgomery_limbs([6408656838496226261, 10947889213454603074, 15967755490758556438, 18592735561502547]), Fq::from_montgomery_limbs([5719054350460464154, 7527902657216442354, 5295945207916573176, 1277891579319310511]), Fq::from_montgomery_limbs([7105816865111098866, 4412124756024705272, 4327040274749466413, 598090016113808041]), Fq::from_montgomery_limbs([14284938317479677602, 545805528309510796, 102974980360120576, 899208167330224593]), Fq::from_montgomery_limbs([5366620062124263126, 13693679210134795513, 8256935418799663781, 300801001668016020]), Fq::from_montgomery_limbs([16666288670655775443, 14215432659130173847, 10678349345487712045, 253025966523940173]), Fq::from_montgomery_limbs([6560188020165350685, 12696821494974958005, 2143653898969513475, 494844631437184679]), Fq::from_montgomery_limbs([13593887229322257028, 4816959067341413725, 11133022091159268235, 612414996504397371]), Fq::from_montgomery_limbs([4493136462766479434, 9962442648546643845, 10853590841986868899, 915809217863755522]), Fq::from_montgomery_limbs([5214032566506119292, 11323013569723200047, 18236741420002046410, 941445927442235049]), Fq::from_montgomery_limbs([6205769808699672756, 10246354759179081834, 15794825809172864679, 391230400284939041]), Fq::from_montgomery_limbs([10116008430714875822, 9911045248650761841, 9928250721052258527, 1185128099055962746]), Fq::from_montgomery_limbs([2754748402734001689, 17481760215560470485, 11108275517987128040, 348615537989168903]), Fq::from_montgomery_limbs([13782224526187933341, 17030959399708586099, 15775077522611833532, 290351976048235673]), Fq::from_montgomery_limbs([4412648891557328130, 11831420266571130198, 9622609839094253285, 639422212319659804]), Fq::from_montgomery_limbs([8394758426176289938, 11674917207711491310, 7857067218925827640, 1264271461076358629]), Fq::from_montgomery_limbs([10524729381187531101, 6565819519130692503, 16455243200834114571, 1113660583135941246]), Fq::from_montgomery_limbs([4910640324547367503, 7067950532806399572, 15713931663221284957, 678204411073496593]), Fq::from_montgomery_limbs([17524781941219231334, 14436265047853993106, 10996160202266791558, 586004270078950889]), Fq::from_montgomery_limbs([14088867458599093720, 2106970093596697979, 12220921713367378788, 618714343685517328]), Fq::from_montgomery_limbs([13932309166033056776, 14069500197080883428, 17852601968294832436, 305995160171313882]), Fq::from_montgomery_limbs([13426729481828305095, 7452289540294927985, 6441597690310943218, 1276798385624416753]), Fq::from_montgomery_limbs([15655620409673762414, 3933061560128724680, 5010270981571820124, 220150600325447216]), Fq::from_montgomery_limbs([1057266741773269348, 17485469765347279593, 9555353042208049027, 1246738101059957518]), Fq::from_montgomery_limbs([10770884181623310580, 8877029614675920762, 13991352514348114517, 1230612668702201686]), Fq::from_montgomery_limbs([15095255137495972889, 10892244248329151219, 11620083234647182892, 868324939988635652]), Fq::from_montgomery_limbs([16875353652867044098, 11044339467067704334, 4725495506316385244, 751264243578502741]), Fq::from_montgomery_limbs([641704525978654163, 17754251290783679148, 14269956822024939667, 156185085842124354]), Fq::from_montgomery_limbs([6461798206210941852, 6476027702683698308, 1734931238850329993, 290399632377126477]), Fq::from_montgomery_limbs([8091575218940757791, 5709045878190771843, 1459237052414398801, 276967051734326786]), Fq::from_montgomery_limbs([11612189501971032754, 8427470897363557012, 8611179978421665778, 759746899153341383]), Fq::from_montgomery_limbs([6954134997737035694, 10268732943041819889, 14604130092481798797, 846640249172985022]), Fq::from_montgomery_limbs([7190233069227170594, 5561401768913144101, 1445785661167706223, 651525665098162949]), Fq::from_montgomery_limbs([9217546346311075388, 11071132921926268863, 15917748726189064849, 1251775227051161244]), Fq::from_montgomery_limbs([10390884162889041261, 16176571899127336650, 10615791626897231355, 642115614053282820]), Fq::from_montgomery_limbs([17238403316934198029, 13759340588486548936, 6092125402785041680, 230724379449110850]), Fq::from_montgomery_limbs([1508952168622687260, 8480288040262420498, 1917577574060388838, 1254153906405997789]), Fq::from_montgomery_limbs([13254932503780193579, 12662991171495849740, 2932469488008999350, 1254958848016626489]), Fq::from_montgomery_limbs([863236748932298852, 7531642076948568445, 10425812845553160509, 563371573575694666]), Fq::from_montgomery_limbs([3280480068018390373, 10989862717157633913, 16572854018482057186, 113384026788145572]), Fq::from_montgomery_limbs([11491036808249350882, 3627925597439189593, 785824861964165853, 215791427072358220]), Fq::from_montgomery_limbs([7066074229281293800, 13321822906632769865, 3996439965503887948, 1564366489909582]), Fq::from_montgomery_limbs([7382263529174205793, 14901486809768854424, 3687940160755015064, 91446740043994899]), Fq::from_montgomery_limbs([11979694890244940318, 2563830158714032427, 9819921513414604825, 870663742752411934]), Fq::from_montgomery_limbs([1600021421033761986, 8201138969411280812, 17030652845294033608, 12175051723204743]), Fq::from_montgomery_limbs([1850310843394039419, 1954532768801601911, 9226966238277907828, 1236975459555124690]), Fq::from_montgomery_limbs([16345060141053822550, 2663786082800954949, 9784580111187431074, 818513014765649539]), Fq::from_montgomery_limbs([16446391408112544104, 9380932902331254953, 7071379728384813096, 646895171875290856]), Fq::from_montgomery_limbs([2378405837694151935, 13313303748778516106, 5453795007116110093, 1101728113109054876]), Fq::from_montgomery_limbs([11103307651772077753, 12554518811578576783, 12962391676951625000, 52064702946163453]), Fq::from_montgomery_limbs([7926549255154919159, 12556509793741807839, 8290515496020439025, 258653521926883600]), Fq::from_montgomery_limbs([307299355354566495, 17945732282126444629, 5433370265316074894, 460536024110656568]), Fq::from_montgomery_limbs([5763861568912805530, 17141796164103068870, 2848893594009159478, 1261756298628549918]), Fq::from_montgomery_limbs([3229487655955554305, 14944270980978379931, 9844844119202542915, 234743086760476866]), Fq::from_montgomery_limbs([2342004844464551443, 1279967885187315863, 373313457964011347, 1079422596885440278]), Fq::from_montgomery_limbs([1952007392466585094, 11762818037481718593, 16662923564394512208, 893001431908838762]), Fq::from_montgomery_limbs([106763804585413546, 14271628963442624240, 590027926779466412, 57257575012574740]), Fq::from_montgomery_limbs([16630768758834449311, 422003402188528512, 12098463822102798962, 159137531863727176]), Fq::from_montgomery_limbs([15534331691675530779, 7061806693665915536, 16952361759388884403, 1053244934847428200]), Fq::from_montgomery_limbs([9263591902583432602, 7558693853599155266, 14896692490740080749, 1313322134212571400]), Fq::from_montgomery_limbs([15314480314637379126, 1151647617314553881, 17769711940094483975, 1199725079245274287]), Fq::from_montgomery_limbs([7963766923607262431, 12935141255115233618, 12948228604583141176, 360484743040385122]), Fq::from_montgomery_limbs([3259283452211432293, 17170672158941172313, 3570208516876138657, 1045429527322967456]), Fq::from_montgomery_limbs([1765653178452548393, 6627965412101454655, 12661490346413822347, 978755993134545199]), Fq::from_montgomery_limbs([142797348951966355, 5680553790994685398, 810985092665822303, 289501802913912482]), Fq::from_montgomery_limbs([8095554876468743411, 9181238692547872814, 13704917242845320718, 866066458565737675]), Fq::from_montgomery_limbs([5618373333754035477, 16633102630691350807, 10343904648768900571, 949315695648845008]), Fq::from_montgomery_limbs([10496943145011706036, 10929716347158307141, 11553769369075211708, 1156430459068926506]), Fq::from_montgomery_limbs([3889976630621922060, 9491334042353419195, 9943086516865463752, 462137530016129102]), Fq::from_montgomery_limbs([14851654499263418555, 8665479737435134577, 9236486044957348017, 1285301549410464570]), Fq::from_montgomery_limbs([7032376007033081754, 8938792808860946217, 3397334075607636452, 1167008250605621029]), Fq::from_montgomery_limbs([10427481727006183439, 3824318376195666571, 1544453519691883408, 1045681207836001052]), Fq::from_montgomery_limbs([8928604482578123459, 13973435534214403451, 15227973464547816988, 1229619095421485591]), Fq::from_montgomery_limbs([4131997010006110231, 8734538168607192092, 5033945745534142948, 1277988214099374488]), Fq::from_montgomery_limbs([7299169039441587737, 2287517025912039400, 5920702563974091346, 687869072690227692]), Fq::from_montgomery_limbs([6148873693348937540, 8423800650513424718, 13147300378355369290, 1251696519717235960]), Fq::from_montgomery_limbs([8030856695051151637, 10312034347138903675, 10835031793863243014, 356820600815810125]), Fq::from_montgomery_limbs([888403096248430880, 456025372404859213, 15679766799242003387, 331916255940957050]), Fq::from_montgomery_limbs([11302383770835780508, 16138456171506112495, 4451261995311188362, 326167792976852851]), Fq::from_montgomery_limbs([12620205064271173241, 5865309702805720081, 5860769966892734734, 960482480478038522]), Fq::from_montgomery_limbs([12917044525272992137, 17120989425489435715, 17218371420168852178, 100206712207827792]), Fq::from_montgomery_limbs([5324266172011654367, 5689211424378054902, 13406842486269119334, 232294740918000310]), Fq::from_montgomery_limbs([8539429359150556585, 10134859336768345709, 15233097762752119955, 731468941704353059]), Fq::from_montgomery_limbs([10594565907991339987, 3638446029011375614, 1076241376615234382, 91321489252748304]), Fq::from_montgomery_limbs([7150892232338862131, 15181691199330314635, 5084197575257990721, 970732723520969453]), Fq::from_montgomery_limbs([14117187289068639852, 3124767309289558236, 13224466604519094715, 428140550724790451]), Fq::from_montgomery_limbs([14415259957437088686, 1795634329615314624, 2942903263296282359, 1012688804870889787]), Fq::from_montgomery_limbs([16612890529511826604, 7596386633939850032, 5924746967850324505, 65893974101627502]), Fq::from_montgomery_limbs([4944775760295616420, 17454746499425782002, 7483609147553356481, 669769743129713618]), Fq::from_montgomery_limbs([8550535250927460379, 14244832580975560343, 10645153178392827451, 166145496718571589]), Fq::from_montgomery_limbs([9472382061922092532, 12599919710080842820, 17660755505335019341, 951845755731906033]), Fq::from_montgomery_limbs([7377011861447992951, 14177185276539188245, 16485545164384506751, 69008004491455439]), Fq::from_montgomery_limbs([7269422847571440384, 10971182983165050190, 10477114392953393609, 529340264286832500]), Fq::from_montgomery_limbs([13548253733030119113, 18088771080273253716, 5912265224571254564, 960653798531692016]), Fq::from_montgomery_limbs([14593305211432266861, 13978513480108154064, 12072035272437813296, 238383478016939515]), Fq::from_montgomery_limbs([14430090856465614687, 2808920183931810539, 2024298398014953733, 368635335239145011]), Fq::from_montgomery_limbs([6675901818525858406, 9691159442966147586, 5200040876915433586, 1110689247130868755]), Fq::from_montgomery_limbs([13172765826410278322, 13976386792584577667, 8689999043086184378, 259436890611363824]), Fq::from_montgomery_limbs([84751421588979831, 14888392918538911455, 5486551275818624189, 951800733297191582]), Fq::from_montgomery_limbs([15334319937719221770, 11563835865217739090, 18090033619866166811, 678279699900803053]), Fq::from_montgomery_limbs([15589602438316257145, 1666336392544054075, 8107996193749583854, 23283085724274977]), Fq::from_montgomery_limbs([6797724227011875266, 11367852742974149411, 6678291715699080418, 92125477783429941]), Fq::from_montgomery_limbs([15080983138964048420, 537488507591658978, 16294679657097133087, 1191852563555895615]), Fq::from_montgomery_limbs([4338903643143774627, 11044337452245898206, 15830174313418706999, 31920243523174840]), Fq::from_montgomery_limbs([8492021065892592922, 7492942567998031746, 10227910279589795050, 947691312997138730]), Fq::from_montgomery_limbs([9561116086048874539, 18073885101683330337, 14636134925092176090, 722339593463585968]), Fq::from_montgomery_limbs([41785100841227711, 17666935019222315365, 4927473313984438107, 67884280271688399]), Fq::from_montgomery_limbs([1446967628258656962, 11243844490161767343, 16958413638051813042, 1004693359077776727]), Fq::from_montgomery_limbs([9629608502131673092, 2882928936333963073, 15987483283589685207, 660673428262656412]), Fq::from_montgomery_limbs([2443606364563185491, 10139467314740663228, 15189229884372483835, 1290830618469438802]), Fq::from_montgomery_limbs([3046319622343455954, 3931730478916712920, 8623867774890709346, 1201913658507810759]), Fq::from_montgomery_limbs([14392864240168621772, 17867735212625517017, 2772429327165542818, 836534298808933]), Fq::from_montgomery_limbs([1151940341306701400, 3833643241309263777, 13096509072792897905, 752108833686380875]), Fq::from_montgomery_limbs([5229009174997575511, 6605658491463927698, 15536337046468055686, 157609910170207177]), Fq::from_montgomery_limbs([8741468218382317460, 7144323380514935844, 8672006512648752584, 1334645244751689770]), Fq::from_montgomery_limbs([10735754706394522516, 4616532568937564832, 15473812904469788516, 326598703312455138]), Fq::from_montgomery_limbs([13470305024595632219, 3964162559887319987, 4104496442465768155, 575184728889423472]), Fq::from_montgomery_limbs([7024155969680638810, 1248446637476984159, 3946566487106719690, 78713827286502076]), Fq::from_montgomery_limbs([1167875954574760034, 7519910968010082415, 15211147069856354453, 750498091773211075]), Fq::from_montgomery_limbs([2863941003802949509, 14521430537116398940, 17833674840165779294, 1117243092487510999]), Fq::from_montgomery_limbs([3988048134544140696, 4164314985762153852, 5192160405207219362, 537616833580442108]), Fq::from_montgomery_limbs([11691596547822673173, 2072119953696732776, 6048298284479353132, 1041936268987727800]), Fq::from_montgomery_limbs([5195217310941133128, 983742991580727110, 15582341176749546934, 192949243806351219]), Fq::from_montgomery_limbs([989864604993544245, 10337084476006024351, 6399045939932107087, 349553169959482485]), Fq::from_montgomery_limbs([1083252708106498385, 14683159496360594363, 6249116681658609726, 965679621626703084]), Fq::from_montgomery_limbs([15520366118357711305, 15455325080109246278, 15912772926708879347, 1181106395388318589]), Fq::from_montgomery_limbs([10606086519021812869, 8982436141916758768, 8984252788653949566, 94441446490162493]), Fq::from_montgomery_limbs([3989193979672410706, 14522119372119676520, 6031184060057719655, 876537182738173910]), Fq::from_montgomery_limbs([6542858007243344725, 10468817694619667802, 1374963053947997860, 281508730046968385]), Fq::from_montgomery_limbs([2121254413916702881, 11174399821186314401, 642752851055260652, 172419384352924756]), Fq::from_montgomery_limbs([14933138168325040251, 18073996174008481460, 7709184193316921275, 77928985789134259]), Fq::from_montgomery_limbs([14183089598463409576, 9599657595270154138, 10401242555342360511, 1031862193117340540]), Fq::from_montgomery_limbs([17077860441038791206, 6907855957939974514, 7600347021193310054, 225485956370582495]), Fq::from_montgomery_limbs([14475416504140964933, 6622123083135972798, 9257366424078234840, 1254195725521864761]), Fq::from_montgomery_limbs([18280884764210583702, 16338431925875586014, 14128385164093913939, 598858774608218822]), Fq::from_montgomery_limbs([4251295228276607623, 14698477834719362145, 1576184780996848894, 571585722355337029]), Fq::from_montgomery_limbs([13272236615232894643, 14010494529183759900, 800023943280278947, 298394511556555918]), Fq::from_montgomery_limbs([10782700402615775164, 14412830325727077172, 4994923730339550224, 1079837299050839065]), Fq::from_montgomery_limbs([3621380562787996822, 9464307808788620312, 13909924710435794908, 954766105382202190]), Fq::from_montgomery_limbs([17420485363085974001, 9021049394344178089, 8712760747075739797, 568515634248632496]), Fq::from_montgomery_limbs([5631572804871766736, 5280080317359998903, 10662020310256217520, 409512057651566449]), Fq::from_montgomery_limbs([492276079446892838, 2465000468485598245, 8673960199484145367, 1223371911459041820]), Fq::from_montgomery_limbs([16206685073675005008, 13515283938452316993, 8657484044144188143, 555324291337764049]), Fq::from_montgomery_limbs([12258020657657344839, 14080584073572047035, 1786385914292976334, 890045806750446876]), Fq::from_montgomery_limbs([5437561110469019457, 4195656535041473973, 16642453980220687614, 66446192393822025]), Fq::from_montgomery_limbs([11378296852796405140, 13948486972729474860, 13814823936920393870, 543448461574407786]), Fq::from_montgomery_limbs([15861083328916660546, 10580336230427962464, 8314263211374088393, 462499203598507289]), Fq::from_montgomery_limbs([3596880637235637430, 7244702719747713366, 7698652078859897602, 339166837713921764]), Fq::from_montgomery_limbs([16434053565692243270, 856826524108649327, 582888221769745389, 231849743296221718]), Fq::from_montgomery_limbs([13466829214638063330, 11871004193533817602, 8715083865527535935, 772758187739256383]), Fq::from_montgomery_limbs([2215715304482300708, 6939601967594674311, 9762471006918361079, 751422865267861919]), Fq::from_montgomery_limbs([8660358354344868439, 10887567579928131536, 4636772766460938216, 875861572717087557]), Fq::from_montgomery_limbs([3718962475606244056, 3574286178071706662, 13969021013516480159, 674248673994385489]), Fq::from_montgomery_limbs([13879628242113969355, 15611868744516972804, 689523972787487196, 272170949885373985]), Fq::from_montgomery_limbs([731217591867043834, 12057204063676562058, 9968800370062020379, 54367310812503073]), Fq::from_montgomery_limbs([10847577089461485884, 14781720798335935361, 2050883758009058177, 1227443941313558442]), Fq::from_montgomery_limbs([15484525416052326375, 10433705807314230036, 15903522838889990919, 544585322945419235]), Fq::from_montgomery_limbs([5074309280962037193, 5217880605983656639, 14510200362648483018, 557494968888174908]), Fq::from_montgomery_limbs([5195138641573043477, 9406776113353168661, 14027024671301857164, 845631148216790994]), Fq::from_montgomery_limbs([17960866561088745173, 7239612137411824399, 608332955631666951, 1339588249269723610]), Fq::from_montgomery_limbs([6645023811265252448, 359090506368957415, 13186732800236585001, 636175819244839498]), Fq::from_montgomery_limbs([9658258475735190727, 14527591238813797995, 16927575748315332307, 1301180113169078950]), Fq::from_montgomery_limbs([2426687195330334614, 1677243348703957868, 280959539850383222, 1302367371047198015]), Fq::from_montgomery_limbs([2824388857182280398, 387310680804206136, 5259604914427521138, 1184806076664523237]), Fq::from_montgomery_limbs([7574972296183053595, 15822886777846030642, 12388539958981301194, 559152516777131559]), Fq::from_montgomery_limbs([12201036799149233249, 17892988483166995904, 18084947728796372356, 675956869171241463]), Fq::from_montgomery_limbs([16104554650380896914, 4746900513825001701, 6829416706759018904, 220904217190207835]), Fq::from_montgomery_limbs([17292549212841163737, 2352946917715655598, 10473544622578247206, 331414403574303893]), Fq::from_montgomery_limbs([11411751507285114977, 6456131281833042189, 9429033659401855692, 1204457583147690703]), Fq::from_montgomery_limbs([13351228652344837450, 3406524763947142470, 9081889404473741581, 940424223754317289]), Fq::from_montgomery_limbs([14630628062553504316, 6262447828497056896, 18085717084217406803, 799246626583428302]), Fq::from_montgomery_limbs([864375154255180873, 14000240309598220542, 1750007932942661463, 761312485749733723]), Fq::from_montgomery_limbs([14345179008259546406, 6736994392830783692, 5908556958000542218, 1253865209554350406]), Fq::from_montgomery_limbs([9764377369274365673, 9072647876947127557, 2341472943201056441, 929216282518283791]), Fq::from_montgomery_limbs([12859964114531846483, 13694745246472282132, 2013500954373579911, 751364861274622110]), Fq::from_montgomery_limbs([175177818989840916, 4770111355878906194, 12267383210154126463, 131920286091241797]), Fq::from_montgomery_limbs([6349104885803077585, 18001260594929500797, 14793230544956264458, 669871090964351917]), Fq::from_montgomery_limbs([1792126764165083108, 6081987124440657035, 5531241762790015809, 85100796395211080]), Fq::from_montgomery_limbs([11335525023979482372, 13822295879245716952, 777769361600630976, 852248906668581924]), Fq::from_montgomery_limbs([2057611721707481944, 12549766028751733826, 3184617081367493745, 17035887437619700]), Fq::from_montgomery_limbs([5033510300536938046, 14319156262351107248, 14453339555250931608, 1300088399042594667]), Fq::from_montgomery_limbs([586365878943401533, 10219333061949038245, 7972787616665459187, 1180682599170166362]), Fq::from_montgomery_limbs([8677310049713074877, 6209659062870853276, 6361763165884296788, 1086786531947345096]), Fq::from_montgomery_limbs([4779669491370037827, 13794675476884129106, 2856260482144566523, 815058410432730978]), Fq::from_montgomery_limbs([8349785262387520653, 14703604045323517453, 10665488643511503896, 1190736588532344714]), Fq::from_montgomery_limbs([9753136258891648437, 7592309943578822500, 18234430885873993524, 946608033429176051]), Fq::from_montgomery_limbs([8862120093151408513, 9919781382246740055, 1639967479777957120, 548895009658598348]), Fq::from_montgomery_limbs([13150047014556861649, 9895352886349978940, 607603433543469096, 825078058460205935]), Fq::from_montgomery_limbs([10677514517763000310, 1869057220976501750, 7668490026500068131, 645375934459787109]), Fq::from_montgomery_limbs([8393901821323241932, 7155803376644055598, 5465256629438666110, 467809976924970962]), Fq::from_montgomery_limbs([8008789779293081850, 17333068400582244417, 864473515802821379, 712131972755422562]), Fq::from_montgomery_limbs([5260641048740129119, 11495506189219575805, 1976170684554961654, 583558279245420304]), Fq::from_montgomery_limbs([10607922137491563126, 16997507064637422660, 16243052688991164520, 620318480202596319]), Fq::from_montgomery_limbs([8682850641454705537, 4234371891064954414, 11030571520428482979, 775687601614273649]), Fq::from_montgomery_limbs([12248979915462901096, 1794636648127247975, 16388845185353268388, 1257257804440120883]), Fq::from_montgomery_limbs([17181365213230240819, 3933917789297525218, 774796165591114183, 628159510187755171]), Fq::from_montgomery_limbs([9201407700189177387, 14700424513123193347, 18288661468232834482, 407382537568434540]), Fq::from_montgomery_limbs([11966891449526246216, 6846368159746727324, 5421814018651935761, 1007837491484494646]), Fq::from_montgomery_limbs([3054672449338249840, 772010416012553897, 804919836093674272, 60934971449786311]), Fq::from_montgomery_limbs([3349955854192164124, 12023516821995660430, 14073054570207692346, 391152224081538807]), Fq::from_montgomery_limbs([4393818606630194054, 11894249453630174803, 11407464681452601419, 527342257675756743]), Fq::from_montgomery_limbs([593191207061949875, 394301333075100218, 15992303837511873397, 1258463696198082538]), Fq::from_montgomery_limbs([7392815618978882544, 8600193649781721343, 10001082189003162790, 160465744058402439]), Fq::from_montgomery_limbs([5982722207731997556, 9327097271719907983, 16837081471143367937, 1323283752393867441]), Fq::from_montgomery_limbs([15234580594321690160, 14480758270368693259, 7897576353120019799, 1211836381357568240]), Fq::from_montgomery_limbs([17534396175019205578, 3323788238042131357, 16622036826489890791, 893487708746761741]), Fq::from_montgomery_limbs([3851834168141787069, 11582510337408899680, 15343784808633432566, 461896544402216282]), Fq::from_montgomery_limbs([1182215324455482337, 1943242735522063011, 4144863718139895080, 243576649285589719])]), + mds: MdsMatrix::new_from_known([Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169])]), + alpha: Alpha::Exponent(17), + rounds: RoundNumbers {r_P: 31, r_F: 8}, + optimized_mds: OptimizedMdsMatrices { + M_hat: SquareMatrix::<6, 36>::new_from_known([Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169])]), + v: Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), + w: Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), + M_prime: SquareMatrix::<7, 49>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169])]), + M_doubleprime: SquareMatrix::<7, 49>::new_from_known([Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([6933713838801944433, 16845582094611513195, 18106981831632269118, 1315719765541495999]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11025937787709817432, 2848215840891863663, 12003429085947921194, 123169188111155826]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12625372430371999830, 16677955247940128803, 7323211740492754581, 634092645821649835]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8476375831616065903, 8302751278140753414, 4675397025515049474, 916054888187664134]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10397071512469717592, 5168805500057287779, 15231087545157212262, 795647437775574917]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4753644871978862709, 5862282760667146308, 12460694012157225697, 599558919665641703]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), + M_inverse: SquareMatrix::<7, 49>::new_from_known([Fq::from_montgomery_limbs([18289540298934006401, 12620611207485559719, 12496121289749056322, 817144512748384706]), Fq::from_montgomery_limbs([15589773063064153532, 10937873166103048610, 6318262381745988044, 164305025615087669]), Fq::from_montgomery_limbs([15945838893269705074, 12231655940729207770, 16783976632846575746, 1109102887521365908]), Fq::from_montgomery_limbs([6834634673379885361, 14313980702431346769, 11799433102834887335, 414159939376644417]), Fq::from_montgomery_limbs([6202864031195801806, 9008291636618939950, 4452886644180013898, 834656796167786155]), Fq::from_montgomery_limbs([257831097013115576, 868816813650478155, 3804928554730106375, 37318070574597666]), Fq::from_montgomery_limbs([12731957617084167734, 10385122202334236509, 6304526407551965622, 473830859466044865]), Fq::from_montgomery_limbs([15589773063064153532, 10937873166103048610, 6318262381745988044, 164305025615087669]), Fq::from_montgomery_limbs([6846034351900465196, 14922456655897598264, 3385387262061980880, 41120221023296058]), Fq::from_montgomery_limbs([15382748348274919943, 17176897444608801178, 9672737639142736111, 667324299238078128]), Fq::from_montgomery_limbs([15347282079877344563, 7118861760574925591, 14639960435031189354, 496118406637979928]), Fq::from_montgomery_limbs([10633984218986397485, 1476776383719121929, 18242946201412975574, 235737836971566080]), Fq::from_montgomery_limbs([13255078662550912877, 6201099884138924934, 16598544366614787861, 517978551803961280]), Fq::from_montgomery_limbs([16511322183643786520, 12899213679171041629, 10327663219981717303, 101291905845336522]), Fq::from_montgomery_limbs([15945838893269705074, 12231655940729207770, 16783976632846575746, 1109102887521365908]), Fq::from_montgomery_limbs([15382748348274919943, 17176897444608801178, 9672737639142736111, 667324299238078128]), Fq::from_montgomery_limbs([14205197080554911234, 18284593956791143607, 9307844449907611885, 840522240017846486]), Fq::from_montgomery_limbs([15159258319784243147, 14082599260628033239, 6774164385877933413, 747982014981801174]), Fq::from_montgomery_limbs([1720795814776594401, 1331741422739941001, 1433030060135444919, 661580976464017359]), Fq::from_montgomery_limbs([18293763308414053579, 18299155137503640753, 10462936480575081846, 453983746301356936]), Fq::from_montgomery_limbs([4581286503082050232, 12284808854596259078, 3289926894666988909, 902128282614826112]), Fq::from_montgomery_limbs([6834634673379885361, 14313980702431346769, 11799433102834887335, 414159939376644417]), Fq::from_montgomery_limbs([15347282079877344563, 7118861760574925591, 14639960435031189354, 496118406637979928]), Fq::from_montgomery_limbs([15159258319784243147, 14082599260628033239, 6774164385877933413, 747982014981801174]), Fq::from_montgomery_limbs([8459024031946559011, 9756324734815253725, 14081981857002652443, 1295411099915753127]), Fq::from_montgomery_limbs([12916186197107076085, 5935794698380416041, 14163718741243160273, 1284207706380505486]), Fq::from_montgomery_limbs([18200592249652917081, 10952824854756428652, 13221851894140961386, 952100497899551398]), Fq::from_montgomery_limbs([7909306592215715661, 12372000920976206381, 13047646210570006173, 1134258014683902124]), Fq::from_montgomery_limbs([6202864031195801806, 9008291636618939950, 4452886644180013898, 834656796167786155]), Fq::from_montgomery_limbs([10633984218986397485, 1476776383719121929, 18242946201412975574, 235737836971566080]), Fq::from_montgomery_limbs([1720795814776594401, 1331741422739941001, 1433030060135444919, 661580976464017359]), Fq::from_montgomery_limbs([12916186197107076085, 5935794698380416041, 14163718741243160273, 1284207706380505486]), Fq::from_montgomery_limbs([3910809514494604292, 8483245271389311552, 16246267851842217096, 18865255698597878]), Fq::from_montgomery_limbs([3026843501192760993, 8380473052143493977, 3054950936628239486, 722212886196682246]), Fq::from_montgomery_limbs([17640176946983601983, 7851638753013976420, 7953773760774643320, 1060395049618029567]), Fq::from_montgomery_limbs([257831097013115576, 868816813650478155, 3804928554730106375, 37318070574597666]), Fq::from_montgomery_limbs([13255078662550912877, 6201099884138924934, 16598544366614787861, 517978551803961280]), Fq::from_montgomery_limbs([18293763308414053579, 18299155137503640753, 10462936480575081846, 453983746301356936]), Fq::from_montgomery_limbs([18200592249652917081, 10952824854756428652, 13221851894140961386, 952100497899551398]), Fq::from_montgomery_limbs([3026843501192760993, 8380473052143493977, 3054950936628239486, 722212886196682246]), Fq::from_montgomery_limbs([6947786146630418877, 15369056627168554704, 17602917142112233480, 860079864989181067]), Fq::from_montgomery_limbs([12292153329582579311, 12340018229585837748, 16138005556776207249, 689763430924300574]), Fq::from_montgomery_limbs([12731957617084167734, 10385122202334236509, 6304526407551965622, 473830859466044865]), Fq::from_montgomery_limbs([16511322183643786520, 12899213679171041629, 10327663219981717303, 101291905845336522]), Fq::from_montgomery_limbs([4581286503082050232, 12284808854596259078, 3289926894666988909, 902128282614826112]), Fq::from_montgomery_limbs([7909306592215715661, 12372000920976206381, 13047646210570006173, 1134258014683902124]), Fq::from_montgomery_limbs([17640176946983601983, 7851638753013976420, 7953773760774643320, 1060395049618029567]), Fq::from_montgomery_limbs([12292153329582579311, 12340018229585837748, 16138005556776207249, 689763430924300574]), Fq::from_montgomery_limbs([11306146037240305765, 10984198068608188499, 1191708097986331420, 836519420285054905])]), + M_hat_inverse: SquareMatrix::<6, 36>::new_from_known([Fq::from_montgomery_limbs([3792453098216396897, 12628553005522469477, 16642002769880465331, 421042619293543187]), Fq::from_montgomery_limbs([10263844291975416107, 13672341457628810763, 12509513995609872959, 205381282018859586]), Fq::from_montgomery_limbs([10784713721876928946, 5674574537437802090, 12687938002553184071, 136316472684139419]), Fq::from_montgomery_limbs([16070813810583366554, 1956961633890359529, 13965208031005279836, 927951972604280320]), Fq::from_montgomery_limbs([6738933144333850617, 6100304390614169754, 1210061970152249951, 909818292837236776]), Fq::from_montgomery_limbs([9669791352790763084, 10325954078533278386, 9503492366281944368, 1040674818174287413]), Fq::from_montgomery_limbs([10263844291975416107, 13672341457628810763, 12509513995609872959, 205381282018859586]), Fq::from_montgomery_limbs([6412844366295084778, 7666866282335076917, 1998128405856404681, 74724070388243614]), Fq::from_montgomery_limbs([2820801561543625657, 2418377097726488830, 6026234412050937676, 1126089764215992130]), Fq::from_montgomery_limbs([8551209674866173640, 6260366140671248954, 12081978629156052449, 1140556338048141522]), Fq::from_montgomery_limbs([3127468548134575066, 584585047777214689, 7762916153904627652, 166598529350882438]), Fq::from_montgomery_limbs([7594054111820467981, 8571015412052249811, 6107608647809765519, 1023873926642050928]), Fq::from_montgomery_limbs([10784713721876928946, 5674574537437802090, 12687938002553184071, 136316472684139419]), Fq::from_montgomery_limbs([2820801561543625657, 2418377097726488830, 6026234412050937676, 1126089764215992130]), Fq::from_montgomery_limbs([10427240268737712782, 8508693586717179156, 9391845005515956255, 937208025112203554]), Fq::from_montgomery_limbs([8182900134894401237, 12638356435589207249, 2514008238224928511, 262393601667707271]), Fq::from_montgomery_limbs([9827417092260447852, 9328415136733098350, 7749975888478067278, 1296132886589595648]), Fq::from_montgomery_limbs([16287831069372846812, 12117020194152290696, 2582012005292236373, 964219332138367410]), Fq::from_montgomery_limbs([16070813810583366554, 1956961633890359529, 13965208031005279836, 927951972604280320]), Fq::from_montgomery_limbs([8551209674866173640, 6260366140671248954, 12081978629156052449, 1140556338048141522]), Fq::from_montgomery_limbs([8182900134894401237, 12638356435589207249, 2514008238224928511, 262393601667707271]), Fq::from_montgomery_limbs([2689211423437640460, 9937738931024806642, 16752771701136165272, 1203240695252068537]), Fq::from_montgomery_limbs([4340203757804311965, 12676662818122060527, 8325672080044279362, 1087811919015138569]), Fq::from_montgomery_limbs([14389282186921406518, 13071685447061354484, 9323961789214815202, 798867032561203873]), Fq::from_montgomery_limbs([6738933144333850617, 6100304390614169754, 1210061970152249951, 909818292837236776]), Fq::from_montgomery_limbs([3127468548134575066, 584585047777214689, 7762916153904627652, 166598529350882438]), Fq::from_montgomery_limbs([9827417092260447852, 9328415136733098350, 7749975888478067278, 1296132886589595648]), Fq::from_montgomery_limbs([4340203757804311965, 12676662818122060527, 8325672080044279362, 1087811919015138569]), Fq::from_montgomery_limbs([16937615735900532927, 2828202157217662325, 11653172729566405164, 102608297022837914]), Fq::from_montgomery_limbs([10698441721372329435, 14189560518339287134, 16709548602960206315, 1115736315296030670]), Fq::from_montgomery_limbs([9669791352790763084, 10325954078533278386, 9503492366281944368, 1040674818174287413]), Fq::from_montgomery_limbs([7594054111820467981, 8571015412052249811, 6107608647809765519, 1023873926642050928]), Fq::from_montgomery_limbs([16287831069372846812, 12117020194152290696, 2582012005292236373, 964219332138367410]), Fq::from_montgomery_limbs([14389282186921406518, 13071685447061354484, 9323961789214815202, 798867032561203873]), Fq::from_montgomery_limbs([10698441721372329435, 14189560518339287134, 16709548602960206315, 1115736315296030670]), Fq::from_montgomery_limbs([4200873270792393235, 10250359348562610182, 13119023895300261973, 870734268521497409])]), + M_00: Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), + M_i: Matrix::<7, 7, 49>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3417057834288542701, 14660334709638275173, 15697961235617927687, 541283478161011852]), Fq::from_montgomery_limbs([7015809488978334700, 16756137731097346041, 4299145747412822878, 425771021418967410]), Fq::from_montgomery_limbs([11403455157288865564, 17867822347283350530, 6642326758447081407, 347793598737965121]), Fq::from_montgomery_limbs([3281498772575130056, 15793155797823121930, 13825210503534495803, 403937498710078315]), Fq::from_montgomery_limbs([14433853750795786283, 6064690325535561885, 8568546552249237512, 321732587903564709]), Fq::from_montgomery_limbs([6678655391923876018, 8629057843778719427, 9842628707936041139, 63076861057827674]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7015809488978334700, 16756137731097346041, 4299145747412822878, 425771021418967410]), Fq::from_montgomery_limbs([2912519858324498512, 6507880465488943086, 4272821136041054916, 111743668526988613]), Fq::from_montgomery_limbs([1748445869324305294, 9551769637184621333, 15854660035338842641, 935843652651688174]), Fq::from_montgomery_limbs([16017478920517952465, 12052990841260496131, 1846258033159005439, 1283952887503997049]), Fq::from_montgomery_limbs([13375753074817350454, 1048153563921378033, 9203345202329021202, 240551250239901980]), Fq::from_montgomery_limbs([11153565452311437343, 15840896398791388390, 6651106066134943770, 1041420503258293522]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11403455157288865564, 17867822347283350530, 6642326758447081407, 347793598737965121]), Fq::from_montgomery_limbs([1748445869324305294, 9551769637184621333, 15854660035338842641, 935843652651688174]), Fq::from_montgomery_limbs([12634906865313795269, 11036595778607414197, 3160889789817653150, 123157168832279614]), Fq::from_montgomery_limbs([8716577469114679639, 13354977326657221151, 13192299021058097299, 1294655858266660253]), Fq::from_montgomery_limbs([13373336070740714862, 8730572127209811217, 7187749001613674585, 593376019371200200]), Fq::from_montgomery_limbs([10026036648949247362, 12678383936758102898, 11178426371544881076, 1002297129682557342]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3281498772575130056, 15793155797823121930, 13825210503534495803, 403937498710078315]), Fq::from_montgomery_limbs([16017478920517952465, 12052990841260496131, 1846258033159005439, 1283952887503997049]), Fq::from_montgomery_limbs([8716577469114679639, 13354977326657221151, 13192299021058097299, 1294655858266660253]), Fq::from_montgomery_limbs([14690633444146561299, 13456453518898387751, 10432348396252513416, 1242585437512358865]), Fq::from_montgomery_limbs([14102570081274067998, 8257296766039180005, 7790604469177448243, 143690956943080350]), Fq::from_montgomery_limbs([8465733138989536717, 2929735846155108951, 4450573983160870127, 472219173524401119]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14433853750795786283, 6064690325535561885, 8568546552249237512, 321732587903564709]), Fq::from_montgomery_limbs([13375753074817350454, 1048153563921378033, 9203345202329021202, 240551250239901980]), Fq::from_montgomery_limbs([13373336070740714862, 8730572127209811217, 7187749001613674585, 593376019371200200]), Fq::from_montgomery_limbs([14102570081274067998, 8257296766039180005, 7790604469177448243, 143690956943080350]), Fq::from_montgomery_limbs([4085032723309791110, 4665611504008924558, 11824165711550330487, 578201258376880126]), Fq::from_montgomery_limbs([11519276958617059096, 13454485508887725898, 7249926774019308728, 1072756789797212364]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6678655391923876018, 8629057843778719427, 9842628707936041139, 63076861057827674]), Fq::from_montgomery_limbs([11153565452311437343, 15840896398791388390, 6651106066134943770, 1041420503258293522]), Fq::from_montgomery_limbs([10026036648949247362, 12678383936758102898, 11178426371544881076, 1002297129682557342]), Fq::from_montgomery_limbs([8465733138989536717, 2929735846155108951, 4450573983160870127, 472219173524401119]), Fq::from_montgomery_limbs([11519276958617059096, 13454485508887725898, 7249926774019308728, 1072756789797212364]), Fq::from_montgomery_limbs([8573207762665625898, 16056334493165972918, 10346718250214646205, 1191123760209144883])]), + v_collection: [Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([10644639721044274615, 16734510270636734171, 6265966780522802029, 1180401342618465036]), Fq::from_montgomery_limbs([1254097908378330934, 13601601811345135765, 15071243631801644424, 297593012698954223]), Fq::from_montgomery_limbs([10771062345226876930, 7469649658028794228, 3597902033882677100, 608350358812428664]), Fq::from_montgomery_limbs([10231075707837198839, 11530522131003023037, 1802721152151214035, 1212125375706727806]), Fq::from_montgomery_limbs([548206758129328348, 778220363894850734, 12082251172806692919, 593860302507973656]), Fq::from_montgomery_limbs([6029427183938663855, 17136269120728144851, 7031277897576748532, 978052702327451285])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([14583548544607776390, 1455594659839297233, 7503148269133459078, 979881557166431467]), Fq::from_montgomery_limbs([4091794927241778027, 3984934849444513902, 4168704414264273635, 1243153189837659840]), Fq::from_montgomery_limbs([13672227389423134641, 7889118255497550145, 10535716868579808028, 727851871568307361]), Fq::from_montgomery_limbs([1805790605077811102, 13328027295111756288, 15284753467090911646, 476755389437853977]), Fq::from_montgomery_limbs([6818887996128827024, 12980010109101424586, 17837508282492360706, 804695904048021645]), Fq::from_montgomery_limbs([9531071905126860029, 10560990131084904417, 3843562488879133086, 427342220830413508])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([12999307184917437199, 4460278989335054240, 8039372983916400823, 524229825913330581]), Fq::from_montgomery_limbs([13201924241923240556, 11745564486322152121, 2471694394944636145, 181216534789741406]), Fq::from_montgomery_limbs([4934105058811497644, 12271038025203690017, 7436143789682315585, 998806416030886275]), Fq::from_montgomery_limbs([13725255261959326942, 8555513885879208558, 955378272993441581, 297008239472103166]), Fq::from_montgomery_limbs([10371095811858205849, 8804518571176544229, 11002636904361592873, 660578117299637260]), Fq::from_montgomery_limbs([8307653710943752623, 2839318436416200448, 12213117778126871947, 1025759164655249254])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([11863327563780294024, 10993730767593839696, 9502873035480842903, 1097248076762680248]), Fq::from_montgomery_limbs([6808878885915903933, 8278632955554852373, 12719166835729596674, 804467256685775329]), Fq::from_montgomery_limbs([16008107817056775055, 8608502583580218397, 2796011695423831437, 949203486167282741]), Fq::from_montgomery_limbs([9591171450453062265, 6399710760130247553, 16473627252289324238, 199489766710074990]), Fq::from_montgomery_limbs([2126693132859812176, 10946771068545746672, 16987361148217467014, 545647818048109007]), Fq::from_montgomery_limbs([11988059750093062229, 9298754840020496938, 15035120852882985245, 1192754512132360647])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([8283981142206306939, 15468588506068845291, 14286327059693983748, 168088448899207140]), Fq::from_montgomery_limbs([10471089395398769453, 96236653784383214, 16648343620891915559, 253629587649938570]), Fq::from_montgomery_limbs([2122557167897006073, 6496047148498928328, 4866370458783575330, 393653606927582732]), Fq::from_montgomery_limbs([1613936452873278524, 13810247455069732717, 15313868045534267346, 1243393042619890514]), Fq::from_montgomery_limbs([15475354144715027231, 7573523099482013249, 12718534995660881344, 1280011735315941795]), Fq::from_montgomery_limbs([16713988261819571430, 2839652657083011646, 3620474509759339159, 813365112700437390])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([5224860601737206030, 471099951455807337, 4240850224623809066, 1213277143090320240]), Fq::from_montgomery_limbs([8044997223262572963, 8080347158505061529, 3228586894312007285, 331597882779275433]), Fq::from_montgomery_limbs([1208998236383405070, 1447425529631254332, 8002978071615560825, 1168296975382357177]), Fq::from_montgomery_limbs([3717552334324548558, 14379760040658949225, 17287286958139444106, 498156372540796351]), Fq::from_montgomery_limbs([7205892599830853163, 15212333206847125686, 5699921803433736310, 905915093597247729]), Fq::from_montgomery_limbs([755943729919434357, 10577236669397908241, 14468710867857253298, 1024324011896165462])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([8058282063231996405, 17257430900010574484, 2158055163476481194, 595100858348853692]), Fq::from_montgomery_limbs([15085559623482919871, 3472078672722908583, 4599317711792091602, 222588611222065167]), Fq::from_montgomery_limbs([15424099905499014070, 8434797005632313353, 8131086932997815225, 1036565779889668097]), Fq::from_montgomery_limbs([1382697922847342157, 4665453833795528964, 9747274806721360803, 148779622932294522]), Fq::from_montgomery_limbs([4432837085227621901, 3625643010647482210, 9188161200126159834, 1031489011263833493]), Fq::from_montgomery_limbs([2595560161561027549, 10106811297951765366, 17488308776579863485, 206455909861435406])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([820166082021164174, 9749064658839893621, 2697165176777711952, 1013643423254794247]), Fq::from_montgomery_limbs([11434285783669558858, 13584809878479701720, 3915545683544186278, 1023126538570256918]), Fq::from_montgomery_limbs([2165364699284154689, 12685002878895760637, 6867136501788661212, 674836357022179385]), Fq::from_montgomery_limbs([9371284124941532260, 7254488926567729428, 14153148852060364975, 563833886155167209]), Fq::from_montgomery_limbs([12983913502532225115, 10422261732254055015, 9682741985590349706, 1152902980215236093]), Fq::from_montgomery_limbs([53453825694603265, 7363785068269762421, 10014136818496735189, 418364251047633957])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([9089547361822769623, 2614400882196504844, 18171746873737288094, 75978327930221735]), Fq::from_montgomery_limbs([16792233542280595044, 9194009742559712662, 16681314096151276162, 141104854369611948]), Fq::from_montgomery_limbs([14121587945665084254, 4285652051739813435, 908329507035055833, 1170458112249762210]), Fq::from_montgomery_limbs([17832160706398652605, 12757316993880307572, 17823976387828534641, 1060884446639737566]), Fq::from_montgomery_limbs([12238967831419693891, 17285564337796726189, 772363080009335540, 1133022491303716360]), Fq::from_montgomery_limbs([7101023699634357749, 6639281158265807289, 4981868997280764642, 985691418122098087])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([11269122037409773082, 12011421319544460999, 1334150225599331569, 2858146322225763]), Fq::from_montgomery_limbs([9313709853509185496, 16206428797220002184, 13680333402027486517, 1242753153191996216]), Fq::from_montgomery_limbs([17569743508708392526, 3142648113271106845, 1634996132313805038, 345389980530236831]), Fq::from_montgomery_limbs([13214675085238735159, 17546363296125310843, 15104140193957885186, 1009608979945975479]), Fq::from_montgomery_limbs([13156206507994500002, 15331136932468936255, 18120353711369546595, 212936761308279860]), Fq::from_montgomery_limbs([15728832258520667556, 2222718495126847960, 9069363803574780412, 1252511052567294538])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([15318220334729666071, 10085274749271496451, 13235713280652147722, 745052808139004576]), Fq::from_montgomery_limbs([13156235912943986954, 5448235351584523656, 14912753996910833259, 1074562042912540040]), Fq::from_montgomery_limbs([10973489371567110798, 13864494226359434162, 2551801121655091132, 842122627627640172]), Fq::from_montgomery_limbs([16434063247854180644, 4535379715543303383, 15837253172489347337, 811511753879666188]), Fq::from_montgomery_limbs([17168911107864577236, 43950174469174547, 5104860072131484949, 973362737471998355]), Fq::from_montgomery_limbs([7931655442728732623, 2231832287024216001, 1215678170119206083, 809922596417314673])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([11089365147905175739, 17689470198615435650, 1802029570881529665, 323182645037342266]), Fq::from_montgomery_limbs([15969427871111504498, 5489904452991350903, 6060256254335150822, 327519122975337122]), Fq::from_montgomery_limbs([8372741465623248660, 14241887742859321780, 5732992227950195767, 39295360183511289]), Fq::from_montgomery_limbs([1187756953137288615, 6353707652463699269, 16025288734445909769, 689723399381686930]), Fq::from_montgomery_limbs([3641027043425346704, 7529359599459005223, 2263874390889253898, 1174711192482135891]), Fq::from_montgomery_limbs([14213602576882685129, 1072450781726178504, 9166004798283088170, 288986234043895133])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([9857091378959575712, 4700244761781549157, 11886572911958021128, 978573057754163783]), Fq::from_montgomery_limbs([6859829417840328625, 5380908914233546421, 9985382358422821006, 809479275163892841]), Fq::from_montgomery_limbs([7129905675772133963, 9947583967153283633, 11488752011523120045, 70770661730429235]), Fq::from_montgomery_limbs([10339301687172431688, 7034120066892139373, 278535235730000358, 1037618672688193269]), Fq::from_montgomery_limbs([8073945182151246976, 8024480602729778451, 14228737842273667747, 5601376964086932]), Fq::from_montgomery_limbs([17455241286370251178, 5877720710031178913, 9559992722432789829, 1325168601990716931])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([4443170007910122686, 7353422220255768461, 15086677032035138267, 1000401307557218310]), Fq::from_montgomery_limbs([6016899902613423969, 17460518555665406782, 3732816219387681456, 602171657802810010]), Fq::from_montgomery_limbs([17215551508008455197, 14155576318076749717, 287763472218567445, 348594781061367360]), Fq::from_montgomery_limbs([13673281300516729195, 2214275010578136594, 5278640382055069707, 862836485498449760]), Fq::from_montgomery_limbs([14604602086577261525, 17331229080491881983, 9761345074674761926, 92431445071525752]), Fq::from_montgomery_limbs([288667004247211189, 8068558316435185759, 34133259048288536, 632325899262964414])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([4414532264671055849, 13933747433746332421, 13027565118143790352, 1050571576397137370]), Fq::from_montgomery_limbs([10778047724985809400, 1316157346886280268, 10174764403037871455, 1310251685035182702]), Fq::from_montgomery_limbs([2901779093000588757, 14345292131236108270, 325687763253834560, 1302296993426055332]), Fq::from_montgomery_limbs([10195270688246580514, 15529132938808577668, 16655748986619374751, 1334926369645181743]), Fq::from_montgomery_limbs([10219117138329677661, 17968691841862978952, 2586002244710590318, 890496969841145620]), Fq::from_montgomery_limbs([2498245601951074289, 1598646875827827107, 890275996690762376, 77165559003555915])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([2988605310258792866, 15957801327838169961, 7584840999811153279, 434926945147154735]), Fq::from_montgomery_limbs([9597713906228190573, 13530531350309731794, 11006707392867763256, 1180021669203726874]), Fq::from_montgomery_limbs([3103797984913840610, 13327065637625915613, 7317743376243954428, 454606898571769263]), Fq::from_montgomery_limbs([13418762319452988162, 7011698969983978549, 10043811570622910529, 1219725988569937648]), Fq::from_montgomery_limbs([16415739938738212197, 18000325972331813382, 2937222969358261592, 751420552035148970]), Fq::from_montgomery_limbs([18143523461998133814, 17501449569222234751, 11831229978852878240, 230065434288493720])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([390587431735370215, 6070182885512254444, 15678300086321846232, 658622796995655025]), Fq::from_montgomery_limbs([11187073703980753366, 11256592440200977896, 1503110027135689183, 1132851611041610655]), Fq::from_montgomery_limbs([13154916648506390915, 5339482676807482888, 7230250399862288620, 218460204422790571]), Fq::from_montgomery_limbs([9102410326146594084, 6165251247104570609, 17897733375690573799, 920164771069067785]), Fq::from_montgomery_limbs([17285085289295929853, 16238198804092185825, 16251509486414134096, 1084909706592090544]), Fq::from_montgomery_limbs([3880782017033225674, 4873252603362867352, 14459262730771211791, 163174741264077656])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([4363513037339290429, 11071402644779655945, 18203948441237058377, 487870628328334554]), Fq::from_montgomery_limbs([9854620422114551002, 11862250176770700568, 874594626487585300, 932096667364472947]), Fq::from_montgomery_limbs([2172530204291601442, 6393872278636522840, 684019909052108375, 180921268676761997]), Fq::from_montgomery_limbs([747820584568953283, 11441694611866320992, 4524856196876367929, 874564518710804172]), Fq::from_montgomery_limbs([7299335342253825037, 12867703813750147845, 7941311700245180087, 1108892033870182325]), Fq::from_montgomery_limbs([17832410557204971163, 4075792975869963488, 7197135716780572438, 152677169125496593])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([10163931248253127785, 1981713163631115965, 3150372916074444430, 470994848988866265]), Fq::from_montgomery_limbs([15083629881223276978, 2015879515814390952, 11644449746714623084, 946361618448877426]), Fq::from_montgomery_limbs([16592814677886046887, 8039452671655169748, 2594546365519790998, 584104276493702607]), Fq::from_montgomery_limbs([17407066489676124305, 8656046168534251407, 3138964226038501382, 514356098263219093]), Fq::from_montgomery_limbs([15942565322057954282, 6097316293590202889, 6372629697231874413, 113242342217125329]), Fq::from_montgomery_limbs([11571924722120150581, 13912164049336724059, 2502413236406840486, 679604324439169221])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([11231555889522859185, 12838308109173382219, 14989494611471795387, 1234334251746422128]), Fq::from_montgomery_limbs([11820760137592674131, 13233941704214912620, 9184955620669308585, 760535087243845704]), Fq::from_montgomery_limbs([18251843258930069429, 6913182660293023569, 15611295871669355399, 543202252785444658]), Fq::from_montgomery_limbs([3623801569902716815, 12012005568369974445, 8975238911566253998, 1306561840926137970]), Fq::from_montgomery_limbs([11553511503558092125, 12278824151250337447, 14503589672502199303, 1306659756102330132]), Fq::from_montgomery_limbs([15708785553057654326, 3840692890311772930, 4102206509788468425, 440698181344607784])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([8058055302582355971, 5700106105541005064, 7460926738156841111, 462277946682165887]), Fq::from_montgomery_limbs([4851568100746305461, 6584456459134975532, 17460185792418666468, 793703974849869892]), Fq::from_montgomery_limbs([1493013092751501655, 6157234009848897017, 14948235164845831294, 1116239172277392848]), Fq::from_montgomery_limbs([541291017778122597, 4361606389405799905, 13559255135673617904, 164046297400629617]), Fq::from_montgomery_limbs([6157883725635917010, 7921949762718398664, 8097426475493743176, 285172774886131081]), Fq::from_montgomery_limbs([276501516953041810, 15996807350070926146, 1269758076943886300, 195784581070827446])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([4853469952320798393, 17379711604415333498, 11341428304819039080, 766000305508925099]), Fq::from_montgomery_limbs([1723028172270801784, 7846165827796379646, 4636451005692610955, 871151940476972966]), Fq::from_montgomery_limbs([6590646061221323902, 889461654044032879, 1505496877923673922, 752475483640516924]), Fq::from_montgomery_limbs([13045448500706444324, 8361654882120486231, 4205925187373381862, 277826998934433801]), Fq::from_montgomery_limbs([9675553409793389785, 5667173122152825040, 8083271914684780456, 706216661468574727]), Fq::from_montgomery_limbs([14266510371042388064, 7106905440715991100, 10411622989018615279, 894382081849790039])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([9268336790197882301, 12070173591607011265, 7396189305808814103, 6826922221427887]), Fq::from_montgomery_limbs([11481176188982883772, 15479330738046464105, 15874300506335824, 418080356004810461]), Fq::from_montgomery_limbs([8402920895853151075, 11319528131289558551, 11236635718047704076, 590562434419913557]), Fq::from_montgomery_limbs([11942015297507883097, 16315121378556649183, 668425812435475072, 1203236348881767128]), Fq::from_montgomery_limbs([14719743395974511202, 1514583382813202278, 3223906165579006067, 1338589921222659040]), Fq::from_montgomery_limbs([11353873627418368002, 17696069599691683167, 17867255547403463352, 256390082737611698])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([3183181278357516648, 10539132954816790294, 14186140147230647162, 782128376830566716]), Fq::from_montgomery_limbs([24279344590760052, 1500125118480868266, 1805095232159146495, 1156936758956513949]), Fq::from_montgomery_limbs([10537024754772614474, 3289834431146907946, 204955315838625775, 635285322161689619]), Fq::from_montgomery_limbs([10063527467101509243, 6065807056365479935, 17027546583602504025, 991768228369353932]), Fq::from_montgomery_limbs([10809287584503006407, 1968797130899798907, 15335034484681843481, 581199600450356946]), Fq::from_montgomery_limbs([5342411348500260963, 6851928330103451454, 17931963062212165213, 1333165923948214303])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([5362873004958210141, 4780911804231906429, 491658981443450273, 865870945658130370]), Fq::from_montgomery_limbs([16170855628896579013, 16924415594421177943, 18099375624011254510, 1172947874675982311]), Fq::from_montgomery_limbs([2313253813846593553, 6024058999881721714, 3460494784065903603, 200192466049298184]), Fq::from_montgomery_limbs([16495862644170305555, 1027481903728649974, 18424464377133050050, 286370147149132790]), Fq::from_montgomery_limbs([10500420552294712757, 1190864375567816587, 7753792083623713506, 527733109368565721]), Fq::from_montgomery_limbs([14443372038206196537, 7620145268069197030, 14646532763986835342, 456340242357593922])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([9232251606394270216, 14408677736204106911, 13271324872968281, 759107595695446407]), Fq::from_montgomery_limbs([17249519010359595711, 3324593693860748091, 17110518692688522506, 1222951351162422358]), Fq::from_montgomery_limbs([18126276283902025445, 4360757737312030104, 7886535856284373354, 1092174897468921446]), Fq::from_montgomery_limbs([1062163077313937380, 11987404733688401354, 13771857460633546591, 404835587063112873]), Fq::from_montgomery_limbs([16497288776209779034, 2880366049054710506, 253042145042914898, 795216235095539205]), Fq::from_montgomery_limbs([13406148328760919071, 7241933139744138143, 12901549130103097508, 622176358374555103])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([8839697166194087406, 4483906360586614080, 14882309942760908718, 26805057196885842]), Fq::from_montgomery_limbs([7780277578177316464, 8830183239891425324, 17543080001337922949, 763106694028031052]), Fq::from_montgomery_limbs([1380876235740608953, 7727437954586184212, 6573237846455394763, 348129619934932866]), Fq::from_montgomery_limbs([14022759702194409553, 8495575903624052978, 4435568764932750980, 556954649769758600]), Fq::from_montgomery_limbs([10833230885057379503, 14946233534988385740, 3482517598744002245, 312685728556510786]), Fq::from_montgomery_limbs([4935346722124605172, 797590664817406232, 6711744841558593604, 1113832946092370199])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([4507604340829135994, 6192904589647086945, 349044365259597977, 1152686511406973589]), Fq::from_montgomery_limbs([195352152493747630, 5233440319211994798, 932481733874805995, 509755197807725335]), Fq::from_montgomery_limbs([6237574338367694863, 18409691934826828587, 2269618770290486313, 1105546858321591640]), Fq::from_montgomery_limbs([12982330271334867216, 3689728804743182371, 11969860905888785248, 384135728283136906]), Fq::from_montgomery_limbs([18265210337391869731, 11610294943475185851, 7713269183082030658, 64710928906612284]), Fq::from_montgomery_limbs([17581461696584771576, 1251761997536591051, 8677916614754373573, 11467824250957215])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([5293383473840045151, 14232932703686129211, 16580168622608048461, 944952712971843416]), Fq::from_montgomery_limbs([1172918766922903979, 5995995512044846696, 7739257607297521882, 1042510915533280011]), Fq::from_montgomery_limbs([1981724477088009475, 13354315713534102679, 11891854408097089989, 92846148123740243]), Fq::from_montgomery_limbs([976886551936370648, 14904356347049243804, 14591979302472212806, 1213715283121821429]), Fq::from_montgomery_limbs([15587984398787314569, 16826502960315805008, 12894364377505862261, 1260461626778401163]), Fq::from_montgomery_limbs([4959549071568407724, 16406890426995168379, 5205271867547136181, 625367672303411178])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([4469737807624992151, 13646441970050473001, 14103514615210198911, 951934596751743825]), Fq::from_montgomery_limbs([179935223424484463, 2716781758867967994, 13772831748270319508, 559465738003921114]), Fq::from_montgomery_limbs([3732370725359378315, 109679493243276219, 881555622161027305, 772217225730861177]), Fq::from_montgomery_limbs([2034891371688198908, 15927708347683796662, 2835422031008901944, 942335024460335016]), Fq::from_montgomery_limbs([10874231289292346814, 11117313284388646608, 16125883931973538451, 1333477728458259050]), Fq::from_montgomery_limbs([5836661691500937581, 2582555451477250318, 16743568702164980685, 1095040268607012655])])], + w_hat_collection: [Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([6933713838801944433, 16845582094611513195, 18106981831632269118, 1315719765541495999]), Fq::from_montgomery_limbs([11025937787709817432, 2848215840891863663, 12003429085947921194, 123169188111155826]), Fq::from_montgomery_limbs([12625372430371999830, 16677955247940128803, 7323211740492754581, 634092645821649835]), Fq::from_montgomery_limbs([8476375831616065903, 8302751278140753414, 4675397025515049474, 916054888187664134]), Fq::from_montgomery_limbs([10397071512469717592, 5168805500057287779, 15231087545157212262, 795647437775574917]), Fq::from_montgomery_limbs([4753644871978862709, 5862282760667146308, 12460694012157225697, 599558919665641703])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([3525611259680496361, 16850996105995319551, 5895804919214678528, 391214039273829079]), Fq::from_montgomery_limbs([16383982061649260213, 7412768188479417373, 18252968433587413341, 921842098972532091]), Fq::from_montgomery_limbs([4293960317930015621, 15005027020601642292, 14505531830207858927, 1015323632458039193]), Fq::from_montgomery_limbs([6752151532781968377, 16993009794999287001, 14092320031767020691, 1182677145301447547]), Fq::from_montgomery_limbs([16314233041829270002, 3649678206581272066, 11390243497395273567, 313040234242687401]), Fq::from_montgomery_limbs([16897077646049598862, 5408248314355013755, 10936401950030912526, 513592532346930326])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([10142077329767560760, 6792944251304638223, 7902051751595654458, 52562103742172771]), Fq::from_montgomery_limbs([4124245661449561978, 16104205151533781959, 12907591592992771975, 375874492004655234]), Fq::from_montgomery_limbs([721737094669186114, 9206501775775148139, 4450459856140585915, 711734015520322130]), Fq::from_montgomery_limbs([614920776545720184, 9338526590820186332, 3423803905067391290, 1297483125050494498]), Fq::from_montgomery_limbs([5114006628798839509, 10631775008980466663, 3587509331998934684, 1269615621594518563]), Fq::from_montgomery_limbs([10586294365539695697, 13070162917427803989, 5131427260750659378, 185094384545327415])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([15393156556409725569, 12069454178577165134, 10615051884848589576, 627431092634767494]), Fq::from_montgomery_limbs([2254585774072887271, 9054648099999668560, 10092512970859140868, 128794736276163271]), Fq::from_montgomery_limbs([9634188559612410031, 11231916523014098458, 9347609823309203991, 350537733562293921]), Fq::from_montgomery_limbs([712883344164921598, 12267969327296118133, 18415463544294982318, 453347153304216575]), Fq::from_montgomery_limbs([6354724406448162447, 16973074452059542227, 1742850061709863465, 29248222949323830]), Fq::from_montgomery_limbs([5847808690552004737, 2583092622487380856, 16226455529753322167, 622812582439549387])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([8037108896489144647, 11600187371086455875, 14226278393962213262, 1257430093680684711]), Fq::from_montgomery_limbs([17768344430228638036, 12362984821927414562, 8755702286219707347, 1052522743722421089]), Fq::from_montgomery_limbs([6518969013844050226, 10104698889580418215, 12831301188037688559, 783109772397025172]), Fq::from_montgomery_limbs([6181962216281397012, 8791420351320694807, 5845391987758232061, 691946495243473347]), Fq::from_montgomery_limbs([555663508144587651, 2813166513808555896, 9604748549845359549, 1115460934710212864]), Fq::from_montgomery_limbs([638373104524889548, 6961133691969109992, 16899272275885442322, 107354495377389126])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([359839753750440452, 16872903944693818879, 9182594678934428762, 157875028486713218]), Fq::from_montgomery_limbs([18133892901854313763, 2808183347815612802, 13420838164084790320, 592901990662685620]), Fq::from_montgomery_limbs([2972894661558754427, 10007808519010762631, 9092666282720580619, 1045475284031737143]), Fq::from_montgomery_limbs([11312374728773702090, 14199049380673735694, 6883328492121377672, 254205863439515968]), Fq::from_montgomery_limbs([1622439358680448127, 16670668058993745597, 4548903667405006277, 711571731093376968]), Fq::from_montgomery_limbs([17647983290779098291, 516914030435843715, 12098656310263379019, 275469573180901388])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([8548644889741041300, 16958143034062232997, 13155023865968925107, 527671552750155065]), Fq::from_montgomery_limbs([13280891140215524593, 3305529464796220554, 13769067712411857696, 194876564429210557]), Fq::from_montgomery_limbs([4744158468698697612, 16501033922635430369, 13118709481247752005, 455296334218894134]), Fq::from_montgomery_limbs([3276121206714262439, 4384108406151911994, 10320409945935199931, 1129505288669932775]), Fq::from_montgomery_limbs([4802683862047720627, 12048656597166121442, 2985941889978900161, 1215862908384237465]), Fq::from_montgomery_limbs([9878053342652269422, 6952038940472105574, 13204721887023621809, 104559270963520601])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([2884484268998399392, 7516340773367415265, 17967577411328781785, 71104776242823513]), Fq::from_montgomery_limbs([6836357534971200276, 12307486411100090586, 3725741383492541705, 708703587844324306]), Fq::from_montgomery_limbs([16065785508863042824, 13168438874677663185, 10334681499739682637, 537952869573618152]), Fq::from_montgomery_limbs([4276306945181457487, 11319798687621632943, 11337729997070203637, 154843360608516964]), Fq::from_montgomery_limbs([15091173599951556922, 10089665296762720564, 1001320269268178313, 1278999239679089342]), Fq::from_montgomery_limbs([6790806302663889439, 15630966142638650191, 7219114191273641870, 607000211505329118])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([10941156742810682792, 13379581544377778361, 13597487267674595073, 856893196159093362]), Fq::from_montgomery_limbs([12116163542944543584, 10494464956681785456, 5328861516400529745, 1198358765731586889]), Fq::from_montgomery_limbs([18189172451487902278, 4704482581638044529, 984078958545158234, 1214725173814978653]), Fq::from_montgomery_limbs([5693469689620468779, 9572644835043944500, 2366490855072377760, 976822768924111263]), Fq::from_montgomery_limbs([13490986302612722028, 1283285868432826268, 15164008493321253514, 443251753067442416]), Fq::from_montgomery_limbs([13150294025593833313, 5620721896853634047, 4766918037148084086, 1004371804232239176])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([11674076986569886445, 14273565036215986478, 7256033114853758831, 1243175635214446154]), Fq::from_montgomery_limbs([13391657488427814604, 11740905283874021531, 9224412564843665854, 277256927127426063]), Fq::from_montgomery_limbs([9479795538791379585, 12974816116199774846, 12093010719550875010, 5065395771365623]), Fq::from_montgomery_limbs([8817914873159831624, 2104380883716865129, 18076504449817050016, 651566378088004291]), Fq::from_montgomery_limbs([2593549556231375650, 9464329604880807882, 931952291445829364, 1296192193647975938]), Fq::from_montgomery_limbs([6791830127635900713, 5571583372402235342, 5980079258218847792, 609581694037305767])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([3590436137035362796, 6878827383468400586, 2087187619625759972, 366519334389468484]), Fq::from_montgomery_limbs([8466797588269795178, 6233162019605045514, 7818079020321919455, 1299893902682642414]), Fq::from_montgomery_limbs([13213818269144599466, 1289947883313972118, 4059701246652915385, 12056266522820237]), Fq::from_montgomery_limbs([4508800680162331521, 15986068886298500867, 14977838885955851194, 38157078418942241]), Fq::from_montgomery_limbs([13953378503175087488, 2632607770308512210, 13562084469560012417, 245249845748719170]), Fq::from_montgomery_limbs([14192710935721498803, 10423371171643016558, 8787645447508907660, 1222320713106865517])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([11672182316223918869, 6397196540158184432, 16362125278956639955, 487254253940971622]), Fq::from_montgomery_limbs([3466115228336022838, 17336865038830586933, 15011622032603429066, 886109464755529302]), Fq::from_montgomery_limbs([60790403003891626, 11789627958407425130, 18093678967772149866, 163664659042316929]), Fq::from_montgomery_limbs([11752605341201064356, 17735918082592333925, 6652470350194431394, 889452019796415044]), Fq::from_montgomery_limbs([8401712234167110287, 10960633415813906272, 11916450035773002049, 1182232446618175169]), Fq::from_montgomery_limbs([10396262244990196196, 13566621656449952195, 17637374041715454767, 487328172506255483])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([359851191963578459, 6093707674603330913, 12382809233400904418, 822869288595513424]), Fq::from_montgomery_limbs([8685375674428402008, 11116570913984986227, 13141958117760910576, 694631449425721940]), Fq::from_montgomery_limbs([13799808203577028319, 17015236177612766046, 13321925256996230040, 83728605392058044]), Fq::from_montgomery_limbs([11345927491644574710, 6729113552022061366, 489680359452713554, 1063665064872602168]), Fq::from_montgomery_limbs([5144672341518660971, 13584780511637830006, 8111044646642319859, 760808052520956883]), Fq::from_montgomery_limbs([10534617268344014793, 13365424830059569868, 15323686518176324368, 630253372526730391])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([5574736329985492350, 1394240824897034276, 12869158727379905882, 927371660714513620]), Fq::from_montgomery_limbs([6250879616233772588, 14830533363705576088, 11405716231454843078, 302485753651389813]), Fq::from_montgomery_limbs([9376998902591535768, 10870546783769916945, 8867938913668980167, 168036903158516371]), Fq::from_montgomery_limbs([17665300127173928717, 16211022938249470990, 17778018974492488988, 1035038949736118270]), Fq::from_montgomery_limbs([8713486127840843643, 12284089155092108591, 9199322335133216480, 1254936361875119138]), Fq::from_montgomery_limbs([10672903121209769745, 1541284167923703332, 354508315039816196, 1077919680069474774])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([6003956627532398687, 12900385821050494701, 13212436788748797499, 550552294639902063]), Fq::from_montgomery_limbs([14895950277557938580, 3197587119252958842, 1370401976516442748, 185312282262907769]), Fq::from_montgomery_limbs([4334813612319164060, 1249839787510419412, 2014732433360765992, 674486378020601344]), Fq::from_montgomery_limbs([16372536311394952793, 16876000734634230902, 16256142784705290990, 1216045970949193228]), Fq::from_montgomery_limbs([7511261605071474477, 12731027885113475848, 7275278577140348070, 1332751723743282012]), Fq::from_montgomery_limbs([2087120385657061588, 5805219940951110446, 13072060426636966211, 863754038349923743])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([9861938477894648572, 1261863888379893097, 1659273544923639757, 1175309734597332353]), Fq::from_montgomery_limbs([3160898884988868850, 12315548764431121182, 12829922584215852165, 56495588159121736]), Fq::from_montgomery_limbs([9126361106532779429, 8812351712430538764, 16651360315827640335, 488907765340195245]), Fq::from_montgomery_limbs([8831436795438293115, 389432919099331880, 4151373017145697434, 20487081091778889]), Fq::from_montgomery_limbs([1478664308612791336, 8186322499300142837, 14558475073251694928, 808252273304974762]), Fq::from_montgomery_limbs([15607838810385275909, 12674581021244262249, 1909980166381620782, 345071109506949067])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([10897251009229233031, 3820618022447517075, 10985787470877927823, 403556049280121762]), Fq::from_montgomery_limbs([930794418602631676, 4219345337777307051, 12545787195024594643, 727460251993377030]), Fq::from_montgomery_limbs([1295669867887905036, 9507152194066574702, 7109356788802489574, 787002368140653778]), Fq::from_montgomery_limbs([3498224858763889755, 302153864491265874, 14518919122820805288, 961799431413434867]), Fq::from_montgomery_limbs([14579188115252453346, 8486675243511966662, 4198502112353568422, 266466804927785090]), Fq::from_montgomery_limbs([5714787944090956648, 8773050216612558194, 4209799818844007033, 157683362695822804])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([7490636877172818331, 18234545141478570777, 4868926515076353497, 1040485086378507404]), Fq::from_montgomery_limbs([4007494498414670332, 11381886286508088565, 2983212756609056257, 310114683693996305]), Fq::from_montgomery_limbs([9176086588288648852, 1592592270921797535, 4569673380486221672, 1302061240324827715]), Fq::from_montgomery_limbs([16913435421079334086, 1877470558106542334, 3613514508584067134, 934461884972210272]), Fq::from_montgomery_limbs([5267175603942094137, 1748374762382459641, 4882024791077414221, 1068225445733947215]), Fq::from_montgomery_limbs([4248184777234069323, 13346185782403877767, 10153633758750203581, 141684902152107360])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([14329113735110304247, 4241308009922883952, 9772848400881136490, 239381311112673117]), Fq::from_montgomery_limbs([1815346937549645652, 3479767444023955389, 4985298868790684050, 355453443190923870]), Fq::from_montgomery_limbs([5747089878066396614, 5454329989338975845, 12341448373351673623, 1202238166588655979]), Fq::from_montgomery_limbs([9296701061462558971, 17770007858418801719, 9914793610472554336, 1281893899901916554]), Fq::from_montgomery_limbs([3010329870005884069, 2836286366415384158, 2351971757588955099, 425289972726450364]), Fq::from_montgomery_limbs([18291414506166784212, 810246456460775309, 17528761664504541127, 1189494422506112895])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([13873201020652076543, 6243622914124108573, 6903929397781795660, 574766800775597314]), Fq::from_montgomery_limbs([17971358622227978668, 15854652377477090302, 1063842904034816, 989523394960344619]), Fq::from_montgomery_limbs([8015553520299503933, 4607530076716157995, 7439330134573907822, 1104246105186017619]), Fq::from_montgomery_limbs([3986330100644126569, 17707403369263436100, 4053571974764234396, 108842167919011278]), Fq::from_montgomery_limbs([5227388868334111117, 12812207377137498929, 2588198532604965494, 961490407308315800]), Fq::from_montgomery_limbs([7646326553387833689, 12724139924596788661, 629496738895522970, 1201441128237966538])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([14866344307104327368, 4985794825846590702, 853871436616991822, 749367072047711970]), Fq::from_montgomery_limbs([1876020443251361508, 6552070073373315737, 12995514842585856406, 1275392944325677985]), Fq::from_montgomery_limbs([7601514916050054383, 16910631174758870764, 7353760964415941247, 324644049762087391]), Fq::from_montgomery_limbs([16565109856331579529, 458787328687847682, 5878204963586402256, 1322072415305233581]), Fq::from_montgomery_limbs([12729053080732475923, 11510453208755572522, 3723997403677235406, 73363110170067874]), Fq::from_montgomery_limbs([18174997862860579716, 6182018227945955817, 2127647890385770221, 870293941267412601])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([10698372380060816691, 7522180405775599951, 15832604002112875278, 521032436098731379]), Fq::from_montgomery_limbs([15319055731354684350, 1753334646577885863, 4505520717374373397, 984179811150887857]), Fq::from_montgomery_limbs([13141271355432538382, 14700998572061668181, 4549081783230234567, 806347686644718089]), Fq::from_montgomery_limbs([9975557437768999376, 11618707034451291844, 3181936011792873831, 576438052445019413]), Fq::from_montgomery_limbs([16609855326770322939, 13212944030983556053, 3039401190695389047, 1188561968753866414]), Fq::from_montgomery_limbs([10305504178314593273, 14719639554020787850, 2480984582534492384, 221582009878780852])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([13200038943773919312, 14432882432204232972, 3023115969282520533, 343418406639707901]), Fq::from_montgomery_limbs([9327873286332474704, 5954324830215207584, 3873074387113200139, 744988613833241266]), Fq::from_montgomery_limbs([15847102383028666437, 1096370811445384001, 10166653322883901200, 327347038183216223]), Fq::from_montgomery_limbs([17600124854622807025, 15328683957983696187, 3518858654096416419, 638859422450597084]), Fq::from_montgomery_limbs([3012983939074171362, 9083322861410244018, 4322938770639600225, 442252654129847313]), Fq::from_montgomery_limbs([10656857781541021576, 5978481768391996531, 2250259229090183585, 432977302373307667])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([14355870696105147319, 8480124686198992740, 4123496920141395243, 506237667861983638]), Fq::from_montgomery_limbs([12320253406233535520, 8322795092624377756, 9572334243002510406, 1226552575804851889]), Fq::from_montgomery_limbs([9845446342011599085, 17778086686673507324, 5271342849823127028, 1088489886300171520]), Fq::from_montgomery_limbs([10715976971447272221, 1556354685447448032, 16979954691422909924, 386763037013271508]), Fq::from_montgomery_limbs([6180856312104178084, 11877570767790110506, 11499883073784997611, 393033674847566959]), Fq::from_montgomery_limbs([7644299261552751667, 2236838738262968574, 8460748568952358391, 1177808537547336633])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([9135896072628350252, 17288794130611191656, 16136991324140875732, 84153041777780941]), Fq::from_montgomery_limbs([3384444111049248095, 5013442674731807719, 8362856530990022791, 1126331696064245534]), Fq::from_montgomery_limbs([13385137591549846388, 11889738158254938557, 17705852903381913949, 155996115818620695]), Fq::from_montgomery_limbs([15454217037527338314, 9036781253178038581, 12351768307285004715, 776821242022223621]), Fq::from_montgomery_limbs([1200501875000044263, 6384384240290446957, 15639254494736291770, 930709414948460626]), Fq::from_montgomery_limbs([2141846397057350878, 14687259326247822547, 2879743331055932654, 420053148927601148])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([18343404923952179637, 1978770268004633152, 18074842923392944526, 99740808436074128]), Fq::from_montgomery_limbs([16339172153591076879, 13902224968596916829, 10987490026958244901, 480318192898237950]), Fq::from_montgomery_limbs([16708778634825784370, 5310850661772903365, 16720939557594415942, 983754580352601152]), Fq::from_montgomery_limbs([8614768398997670932, 10441907275834816828, 11459906999048618974, 98256766838754326]), Fq::from_montgomery_limbs([5461219359492352050, 8928173417887044164, 5632769833875876015, 938637862379787936]), Fq::from_montgomery_limbs([14478729241761067482, 14593688601059211201, 14567193330233850704, 193411838718316245])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([6244372198079752707, 12764020255605820167, 3597323991837773264, 232811656021755322]), Fq::from_montgomery_limbs([12794321084179091283, 12550727012798192271, 5852541072119985136, 1021072807450583460]), Fq::from_montgomery_limbs([5843482488715644166, 17968652270397807267, 10729147049305849619, 157069170856760481]), Fq::from_montgomery_limbs([16486113458959504396, 3842616654194538021, 16267097259825943411, 595256064535306261]), Fq::from_montgomery_limbs([18403329840356376661, 17180721686489435607, 16602787769632693868, 1218551944743323947]), Fq::from_montgomery_limbs([15792003884980763548, 103687243243986150, 1015407070790759683, 925892726865866689])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([4737231254389322774, 1982930339222313430, 17171322757846703283, 898862720123176395]), Fq::from_montgomery_limbs([15341788185538116478, 15152543049620221847, 11673048694712682284, 322745914045333317]), Fq::from_montgomery_limbs([12638501658486051138, 13136127249934274833, 16835414843273620909, 830854396919510911]), Fq::from_montgomery_limbs([15895567503124768810, 17851680667009624675, 9790662472981446008, 688513180346337911]), Fq::from_montgomery_limbs([7539663061168884957, 14647473521866168085, 14254615857988792976, 4914529917008946]), Fq::from_montgomery_limbs([10355365805280135879, 1713320802629047069, 11781471822278287496, 696018085837035473])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([17208622806574606453, 2131863109694270375, 17267390257687220562, 717142744114900489]), Fq::from_montgomery_limbs([13115781297674767878, 11806487226059857638, 3832559734382202821, 1327223946228164221]), Fq::from_montgomery_limbs([1519942432011064348, 2971486323152134197, 10412234235600737234, 627890410365264901]), Fq::from_montgomery_limbs([10935974904415640609, 3329695497336026013, 13276582814401540013, 624327570851923410]), Fq::from_montgomery_limbs([110740126727160908, 1977000808556019402, 17939216501132184661, 456092178041276768]), Fq::from_montgomery_limbs([13974795879491265452, 16756058358467461957, 18345173225794766341, 1240468105851879043])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([16648425534044120166, 17300631023568278668, 3769987016608299300, 701256036605548976]), Fq::from_montgomery_limbs([9545137723467262343, 5920020285572073751, 5586902085914198509, 1101010118319202051]), Fq::from_montgomery_limbs([1804254836884575917, 5416042091971666706, 2881258114252429182, 68889272174393525]), Fq::from_montgomery_limbs([15468731159921956531, 15872344848072676105, 1678659996910931386, 827142061320044550]), Fq::from_montgomery_limbs([14524351942355153784, 10797623040866138576, 12874995891465211466, 522880520258235794]), Fq::from_montgomery_limbs([3987121765421903331, 10914786903369841306, 14357739193531493338, 159659900263967910])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([1502512509312401925, 17658662731474453106, 12409373669027537750, 369255404008259275]), Fq::from_montgomery_limbs([3933340182670563102, 17988389551284440931, 2662254549780507248, 455350437925171541]), Fq::from_montgomery_limbs([12151336628671687181, 16659863612142679844, 4275242264769905759, 226663222642898029]), Fq::from_montgomery_limbs([16130436743434681682, 11552440823414351188, 4441812352013272663, 1024571907948499450]), Fq::from_montgomery_limbs([6575764606651544368, 3768634045069377030, 18077248345407646289, 1109390810042386997]), Fq::from_montgomery_limbs([14122304828382902866, 7822601784757433157, 15085114466160105232, 454674386781135986])])], + }, + optimized_arc: OptimizedArcMatrix::<39, 7, 273>::new_from_known([Fq::from_montgomery_limbs([15142982440796561447, 11586951767160912790, 2554152473571518408, 1060132733599829191]), Fq::from_montgomery_limbs([5004052621280210368, 17001459709892607063, 7681637351760180567, 370325849830378477]), Fq::from_montgomery_limbs([12700316700887579682, 10527071459591008162, 4649940422809756001, 1164398790994859766]), Fq::from_montgomery_limbs([14166576988026094609, 7313392791454005322, 12003933110859736764, 497349496445067730]), Fq::from_montgomery_limbs([660800666505769101, 8654643871558439567, 14263148622483513593, 820049075817239934]), Fq::from_montgomery_limbs([3633256971691786185, 10090676851691033833, 14588357423182388197, 831634409758195705]), Fq::from_montgomery_limbs([6492287632409988134, 12046607076154115291, 17147959445519551317, 461021671425820687]), Fq::from_montgomery_limbs([14444046072241906262, 11260694318344083229, 15743364178797140854, 866446994798567454]), Fq::from_montgomery_limbs([3641312158605685211, 14157364044999263645, 16784472236570305027, 425843099497195003]), Fq::from_montgomery_limbs([17723864121788076174, 13911937024562874191, 12749454259525933628, 451378649043069085]), Fq::from_montgomery_limbs([12784133990119646353, 17654455838119254543, 14047536069777387226, 645204516252515303]), Fq::from_montgomery_limbs([1959581704190940037, 13929985394687694163, 11022302142929130035, 283707020686355664]), Fq::from_montgomery_limbs([8629032034013359758, 8320916390268264398, 11188435069201519314, 1277918481865788038]), Fq::from_montgomery_limbs([1783621120979741815, 10125702604889014266, 7859706914940359291, 1258189548796714111]), Fq::from_montgomery_limbs([4197085784563434882, 243889206587889894, 328885806087941395, 929695947751686179]), Fq::from_montgomery_limbs([6420634290533400711, 3371757063543007366, 8900632765923820105, 371199850895065588]), Fq::from_montgomery_limbs([9679924820095672851, 5191301328839079795, 1468702730043861612, 1130258788388916276]), Fq::from_montgomery_limbs([14270884667693338729, 18421783881067727877, 702505960635108322, 876601962183112334]), Fq::from_montgomery_limbs([12801928710162774032, 15709283060501093378, 2508615709628312314, 924328772397935430]), Fq::from_montgomery_limbs([9019134492733417932, 4614098400696239641, 291908476903718505, 879711180612784839]), Fq::from_montgomery_limbs([12296479578360854848, 3423354675244851904, 17098596077633953792, 378482623029323224]), Fq::from_montgomery_limbs([13200816203042245771, 15381254577926224952, 14688424257545082743, 884773501591309967]), Fq::from_montgomery_limbs([16263843110415550162, 14001011937262187824, 2325893788175944450, 427344840846697831]), Fq::from_montgomery_limbs([10712788406702291397, 14628016237392831746, 12076323935029775432, 746032296870665924]), Fq::from_montgomery_limbs([7577844083779539683, 8593563853045273470, 6762705862919489296, 1011466592883577533]), Fq::from_montgomery_limbs([10970204418416076913, 4397529361571105931, 15590416832284287611, 432035610777585218]), Fq::from_montgomery_limbs([13604542201065871088, 8000646895858538916, 7463535664974476191, 112496092381655883]), Fq::from_montgomery_limbs([5448941064349247150, 18035446383961421934, 9688851655819494355, 314108334517577725]), Fq::from_montgomery_limbs([13216339084640418338, 18208749029142079159, 2801888902925820506, 1144112407212441278]), Fq::from_montgomery_limbs([7414209360993783553, 9029452093631467477, 10351555314693636524, 588771856204784285]), Fq::from_montgomery_limbs([3108201764764012849, 9316564318794683488, 2890833741230407843, 2976751152949582]), Fq::from_montgomery_limbs([5531824355021026381, 12498142272625928587, 3715194578260983474, 1067798051179441316]), Fq::from_montgomery_limbs([5339344176782059900, 10307852721097022359, 14767036192885737246, 130540287097272817]), Fq::from_montgomery_limbs([7180958399368342439, 128655658219475950, 15207307979599970655, 1124647386318203846]), Fq::from_montgomery_limbs([10677712105355735228, 303877370541742151, 11456613512094797466, 1197130552973396923]), Fq::from_montgomery_limbs([1852186172212255919, 7732103194240143876, 3191072801518998585, 684231033415976440]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12344835392323260771, 2083746688625641780, 9843550839040352981, 651659425757649777]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1110121811836510524, 11074047049180975687, 15444325776340307889, 1176464439067465611]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15910765157617366987, 3536546922624744505, 13839442880050335167, 1052063195754658296]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15883615976440084496, 10513678964631690585, 17274484441634888004, 104967936091342947]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6481049124859745810, 12420828791682339353, 3515061109189248511, 2970636150410785]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9330561373397764193, 15220428410405742122, 3596976591192400082, 1172536306991915045]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11645314245053381169, 12447229279329596583, 2611021837182599503, 1121293333579047218]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5520645742684358372, 4184771738280864541, 4013355666407389724, 651341887764501817]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3861533222480473435, 8229127100534402633, 961020646123781410, 1093771644395281795]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7693571830729430183, 14740278293355277643, 7478396620768437721, 1020903160466582154]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13974629067477558431, 5721400371209900889, 788632258150877276, 1052522919478138392]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4992769493438078027, 6924382181722868018, 8263199750104564483, 169174671387869155]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11416436440841880348, 7910510255652583772, 2772926057469350664, 240489949253278513]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8550478801539329000, 17416455311840648130, 7713828782443004553, 1257322107749939919]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10946761173248535048, 6300893940302812177, 14214574452301493380, 1064839331942993571]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12881919676216378529, 6525643603496459068, 7739411544375049269, 121520118034913063]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14171005468190725795, 807987272814416859, 16062924926726151568, 258817012972523442]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5031548057386859908, 16708231376954786943, 3901002117807196384, 15277199136600693]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3470573257247529570, 3778398720483160839, 4271650771133121672, 366341134231605540]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17671590415686923470, 14797555043330379484, 2826722725742773774, 673498791246184156]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4599390077836288923, 15103704149833090169, 13723271685426770651, 1238708412855247473]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12304403800545959570, 12269595607865918824, 4224309437769311654, 1102826182464027344]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7422908892054624300, 6613469136954082264, 2435694939055735193, 465151622319296864]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9966121319294113392, 1036787719885473593, 16922917099071401564, 957685172296873589]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9346051242088429570, 5881327167233602278, 18366005774591742073, 1234098542793269307]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6556095991079572091, 15800350435028538953, 17490188894945751356, 318651152411458756]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9604843137147166704, 10750667974649036098, 15855520508812075513, 289244356768878157]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9330357980066794783, 17865465819235974796, 9112978452518873031, 700544745156046737]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6722735210481586279, 9213635375899356767, 3419293198746470858, 397188667470959331]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5033510300536938046, 14319156262351107248, 14453339555250931608, 1300088399042594667]), Fq::from_montgomery_limbs([586365878943401533, 10219333061949038245, 7972787616665459187, 1180682599170166362]), Fq::from_montgomery_limbs([8677310049713074877, 6209659062870853276, 6361763165884296788, 1086786531947345096]), Fq::from_montgomery_limbs([4779669491370037827, 13794675476884129106, 2856260482144566523, 815058410432730978]), Fq::from_montgomery_limbs([8349785262387520653, 14703604045323517453, 10665488643511503896, 1190736588532344714]), Fq::from_montgomery_limbs([9753136258891648437, 7592309943578822500, 18234430885873993524, 946608033429176051]), Fq::from_montgomery_limbs([8862120093151408513, 9919781382246740055, 1639967479777957120, 548895009658598348]), Fq::from_montgomery_limbs([13150047014556861649, 9895352886349978940, 607603433543469096, 825078058460205935]), Fq::from_montgomery_limbs([10677514517763000310, 1869057220976501750, 7668490026500068131, 645375934459787109]), Fq::from_montgomery_limbs([8393901821323241932, 7155803376644055598, 5465256629438666110, 467809976924970962]), Fq::from_montgomery_limbs([8008789779293081850, 17333068400582244417, 864473515802821379, 712131972755422562]), Fq::from_montgomery_limbs([5260641048740129119, 11495506189219575805, 1976170684554961654, 583558279245420304]), Fq::from_montgomery_limbs([10607922137491563126, 16997507064637422660, 16243052688991164520, 620318480202596319]), Fq::from_montgomery_limbs([8682850641454705537, 4234371891064954414, 11030571520428482979, 775687601614273649]), Fq::from_montgomery_limbs([12248979915462901096, 1794636648127247975, 16388845185353268388, 1257257804440120883]), Fq::from_montgomery_limbs([17181365213230240819, 3933917789297525218, 774796165591114183, 628159510187755171]), Fq::from_montgomery_limbs([9201407700189177387, 14700424513123193347, 18288661468232834482, 407382537568434540]), Fq::from_montgomery_limbs([11966891449526246216, 6846368159746727324, 5421814018651935761, 1007837491484494646]), Fq::from_montgomery_limbs([3054672449338249840, 772010416012553897, 804919836093674272, 60934971449786311]), Fq::from_montgomery_limbs([3349955854192164124, 12023516821995660430, 14073054570207692346, 391152224081538807]), Fq::from_montgomery_limbs([4393818606630194054, 11894249453630174803, 11407464681452601419, 527342257675756743]), Fq::from_montgomery_limbs([593191207061949875, 394301333075100218, 15992303837511873397, 1258463696198082538]), Fq::from_montgomery_limbs([7392815618978882544, 8600193649781721343, 10001082189003162790, 160465744058402439]), Fq::from_montgomery_limbs([5982722207731997556, 9327097271719907983, 16837081471143367937, 1323283752393867441]), Fq::from_montgomery_limbs([15234580594321690160, 14480758270368693259, 7897576353120019799, 1211836381357568240]), Fq::from_montgomery_limbs([17534396175019205578, 3323788238042131357, 16622036826489890791, 893487708746761741]), Fq::from_montgomery_limbs([3851834168141787069, 11582510337408899680, 15343784808633432566, 461896544402216282]), Fq::from_montgomery_limbs([1182215324455482337, 1943242735522063011, 4144863718139895080, 243576649285589719])]), + } +} From f9116fef4ed6534039873541c867cadafdf321d9 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 2 Apr 2024 18:48:35 -0400 Subject: [PATCH 50/54] poseidon377: rate 7 --- poseidon377/src/hash.rs | 30 +++++++++++++++--------------- poseidon377/src/lib.rs | 13 +++++++------ poseidon377/src/params.rs | 27 +-------------------------- poseidon377/src/params/rate_7.rs | 31 +++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 47 deletions(-) create mode 100644 poseidon377/src/params/rate_7.rs diff --git a/poseidon377/src/hash.rs b/poseidon377/src/hash.rs index 29922ab..98a9cc9 100644 --- a/poseidon377/src/hash.rs +++ b/poseidon377/src/hash.rs @@ -57,21 +57,21 @@ pub fn hash_6(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq, Fq)) -> Fq { ]) } -// /// Hash seven [`Fq`] elements with the provided `domain_separator`. -// pub fn hash_7(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq, Fq, Fq)) -> Fq { -// let params = &crate::RATE_7_PARAMS; -// let mut state = Instance::new(params); -// state.n_to_1_fixed_hash(vec![ -// *domain_separator, -// value.0, -// value.1, -// value.2, -// value.3, -// value.4, -// value.5, -// value.6, -// ]) -// } +/// Hash seven [`Fq`] elements with the provided `domain_separator`. +pub fn hash_7(domain_separator: &Fq, value: (Fq, Fq, Fq, Fq, Fq, Fq, Fq)) -> Fq { + let params = &crate::RATE_7_PARAMS; + let mut state = Instance::new(params); + state.n_to_1_fixed_hash(&[ + *domain_separator, + value.0, + value.1, + value.2, + value.3, + value.4, + value.5, + value.6, + ]) +} #[cfg(test)] mod test { diff --git a/poseidon377/src/lib.rs b/poseidon377/src/lib.rs index f173a66..cf61f1b 100644 --- a/poseidon377/src/lib.rs +++ b/poseidon377/src/lib.rs @@ -4,8 +4,7 @@ mod hash; mod params; -// pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5, hash_6, hash_7}; -pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5, hash_6}; +pub use hash::{hash_1, hash_2, hash_3, hash_4, hash_5, hash_6, hash_7}; /// Parameters for the rate-1 instance of Poseidon. pub const RATE_1_PARAMS: PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> = params::rate_1::rate_1(); @@ -21,15 +20,17 @@ pub const RATE_4_PARAMS: PoseidonParameters<5, 4, 25, 16, 39, 5, 195, 31> = params::rate_4::rate_4(); /// Parameters for the rate-5 instance of Poseidon. -pub static RATE_5_PARAMS: PoseidonParameters<6, 5, 36, 25, 39, 6, 234, 31> = +pub const RATE_5_PARAMS: PoseidonParameters<6, 5, 36, 25, 39, 6, 234, 31> = params::rate_5::rate_5(); /// Parameters for the rate-6 instance of Poseidon. -pub static RATE_6_PARAMS: PoseidonParameters<7, 6, 49, 36, 39, 7, 273, 31> = +pub const RATE_6_PARAMS: PoseidonParameters<7, 6, 49, 36, 39, 7, 273, 31> = params::rate_6::rate_6(); -// /// Parameters for the rate-7 instance of Poseidon. -// pub static RATE_7_PARAMS: Lazy> = Lazy::new(params::rate_7); +/// Parameters for the rate-7 instance of Poseidon. +pub const RATE_7_PARAMS: PoseidonParameters<8, 7, 64, 49, 39, 8, 312, 31> = +params::rate_7::rate_7(); + pub use decaf377::Fq; pub use poseidon_parameters::v1::PoseidonParameters; pub use poseidon_permutation::Instance; diff --git a/poseidon377/src/params.rs b/poseidon377/src/params.rs index 0416c03..26896a2 100644 --- a/poseidon377/src/params.rs +++ b/poseidon377/src/params.rs @@ -4,29 +4,4 @@ pub mod rate_3; pub mod rate_4; pub mod rate_5; pub mod rate_6; - -// /// Parameters for the rate-7 instance of Poseidon. -// pub fn rate_7() -> PoseidonParameters { -// PoseidonParameters { -// M: 128, -// t: 8, -// arc: ArcMatrix::new(39, 8, vec![Fq::from_montgomery_limbs([17670646277747935280, 16706444459999957760, 7654997937391160943, 659194013361630234]), Fq::from_montgomery_limbs([9306410324956668761, 11918867663968452855, 16159669320449336406, 1027263653273380654]), Fq::from_montgomery_limbs([10424544810878645940, 11533042162917906716, 11405431418950019185, 1181592306684207657]), Fq::from_montgomery_limbs([15511314950168773025, 2706584092620486610, 12589344906057924987, 198949415522711747]), Fq::from_montgomery_limbs([6463242934034011456, 4480775049700236083, 1147244402884869561, 251099301522684222]), Fq::from_montgomery_limbs([6076653156556680739, 6058362204127962922, 2609006430585927072, 1274277644859784421]), Fq::from_montgomery_limbs([4034147285618545471, 16309046946281719379, 11732506942908882170, 1141734761043516350]), Fq::from_montgomery_limbs([15181402120606708665, 769117698742393942, 8000709366545785093, 128042919054960870]), Fq::from_montgomery_limbs([1723632755773767909, 7425611528820224114, 3846361608213771012, 1317157014229771878]), Fq::from_montgomery_limbs([1180004570926588292, 9835115993104089813, 255514544102365106, 370024046994873563]), Fq::from_montgomery_limbs([16507101987459533719, 15603514395660572922, 14849362947260167652, 1094669615299361663]), Fq::from_montgomery_limbs([1641419564627940104, 1734977130266781622, 2359844858057393580, 88569664018692634]), Fq::from_montgomery_limbs([16267328831985402574, 4504129177123355587, 2430336937000039615, 182724946762968945]), Fq::from_montgomery_limbs([17793535158928999608, 5634031392654154747, 10364337635238532583, 1179994829791766723]), Fq::from_montgomery_limbs([145700301814233551, 7743364595931833861, 13600389751414362190, 60896176710147956]), Fq::from_montgomery_limbs([17934232373820563709, 6533845630243602776, 15324676632824344806, 193078344538210235]), Fq::from_montgomery_limbs([3358859423299088468, 11840854300859333122, 8971776175135254558, 1017237487419914281]), Fq::from_montgomery_limbs([16328481477177681368, 1582997519876787207, 5731557971602616313, 498420306800783215]), Fq::from_montgomery_limbs([12526989383108933614, 11731194362815364383, 12171285115754354694, 1149426086446852474]), Fq::from_montgomery_limbs([809732533742229508, 9195963923014534752, 11886583635578374853, 1292532069463172705]), Fq::from_montgomery_limbs([15459398930996981001, 17972537529111616674, 6256384561719931081, 1099908904421687269]), Fq::from_montgomery_limbs([6194631511262826563, 5980361634035332899, 6132585703186883039, 1343152289862207638]), Fq::from_montgomery_limbs([13704532277655419198, 9493963458736770267, 12653804519172949169, 218428805830292650]), Fq::from_montgomery_limbs([8013496787819495990, 18081394694809078101, 14689354188530395484, 215594972753885108]), Fq::from_montgomery_limbs([1765918642197202432, 14609627278749496598, 17838479232731490790, 483435431183692300]), Fq::from_montgomery_limbs([16887594024800193480, 1328476430727273505, 17409984215868190656, 1068059229250495642]), Fq::from_montgomery_limbs([15487315671093445122, 4028755842123792652, 14118515559434131307, 600004660835889583]), Fq::from_montgomery_limbs([13620558349664282044, 9072735252525972202, 312787852320488038, 47231029883010665]), Fq::from_montgomery_limbs([9895950479699930991, 1320083262020086701, 9381389112858508819, 928504768072893822]), Fq::from_montgomery_limbs([10747871248019763953, 4479404654791651748, 11550770912037988700, 438216942461032792]), Fq::from_montgomery_limbs([18385142532667962947, 12272398000439779637, 7461987138462771945, 558726769125714997]), Fq::from_montgomery_limbs([14139485618053732983, 8348792317702713313, 367233286875102863, 186067690854023043]), Fq::from_montgomery_limbs([9041249832633195933, 456527929350696070, 3136123267563166118, 862425036609816636]), Fq::from_montgomery_limbs([9876321727332632023, 772451632218152169, 2580763841740601079, 1142028710995573927]), Fq::from_montgomery_limbs([10533796008132988682, 170935373731786369, 14423133339980810247, 95055508444762275]), Fq::from_montgomery_limbs([4649364153559136229, 7934671244579715116, 1725602943667409585, 43552745816587563]), Fq::from_montgomery_limbs([8961999013353095080, 2142418418315880644, 4123910506434734507, 397827113331247074]), Fq::from_montgomery_limbs([2830645454593024582, 16129482998540180384, 14637878185709838570, 838139034347032562]), Fq::from_montgomery_limbs([12946263415316598300, 14878150584739579253, 16849157713730765625, 1119287030817500036]), Fq::from_montgomery_limbs([15997726492611173881, 1184045769764515709, 17570821640390521168, 1030525166811213785]), Fq::from_montgomery_limbs([4265559081433102256, 11769099699992876903, 10631998596214553362, 629920260964559213]), Fq::from_montgomery_limbs([5157337023141684195, 9558723136849813533, 17067637485396248185, 1292601583198374157]), Fq::from_montgomery_limbs([11353399385134117629, 2171806967430036166, 13097746482717663094, 586742781877852644]), Fq::from_montgomery_limbs([1069667428899547423, 10788650400324959681, 5252327185070245031, 819088289991387988]), Fq::from_montgomery_limbs([4718192935689796196, 936436242961860243, 3017815728777383941, 780298204568547665]), Fq::from_montgomery_limbs([4440526970403334531, 4424298208172375576, 10234579833526167822, 505023592953711511]), Fq::from_montgomery_limbs([4918322558939638760, 9690520639912900881, 5542814067313497246, 380973540266134644]), Fq::from_montgomery_limbs([9286878702031291355, 4012311069843170007, 618344267270697646, 472052248696324346]), Fq::from_montgomery_limbs([5515965792241216655, 12550695208348294011, 659754676577929048, 656440060717186789]), Fq::from_montgomery_limbs([8831501139794786744, 7594112778983174926, 8104526671183916999, 495730236370502114]), Fq::from_montgomery_limbs([17540013351656383980, 526615498448493498, 1434949581303472569, 432295170184586654]), Fq::from_montgomery_limbs([16852826829533863229, 16646101864172251902, 17632936959873614814, 109658534507710529]), Fq::from_montgomery_limbs([10636456498263271254, 15109124910717906315, 11668474560270048234, 1296049032043861262]), Fq::from_montgomery_limbs([12825075668663632434, 5819798153387583193, 4880455503263027836, 801173774991292287]), Fq::from_montgomery_limbs([14486651003108579603, 2482031833299980317, 11187840813488772056, 509321777815437929]), Fq::from_montgomery_limbs([8118974380261220505, 16461246043293688641, 13082662763745388975, 1038588716762883494]), Fq::from_montgomery_limbs([5731200332460900228, 8786620433378472829, 13932094144651464518, 488785602167183804]), Fq::from_montgomery_limbs([10524031539917302527, 10788579146719387781, 2127880595616407095, 1059950077979303833]), Fq::from_montgomery_limbs([5949937211870070822, 4596156438811326001, 16863220530278231284, 1206526762260473240]), Fq::from_montgomery_limbs([8254843496528701475, 16430360916832531565, 7205448801338782124, 446338536784822815]), Fq::from_montgomery_limbs([289840651692288450, 17201836854477413895, 13970461968236180401, 1087853954070862964]), Fq::from_montgomery_limbs([580513008010762079, 829478851231913782, 10526131895320013439, 288889415938637383]), Fq::from_montgomery_limbs([9443502181797148323, 7700433399763019139, 6523170715391691579, 690320529397890241]), Fq::from_montgomery_limbs([17385565262285073596, 5652729129833809825, 5754846028854174174, 644301327458204078]), Fq::from_montgomery_limbs([10591125214113881524, 9225725266018596826, 9355747915664481308, 776410040105357079]), Fq::from_montgomery_limbs([9691894789652129853, 14667119801492707274, 4616580392236285481, 911862737929211265]), Fq::from_montgomery_limbs([5328612994946451300, 11901467171940119902, 12066779857870668281, 563430691473174027]), Fq::from_montgomery_limbs([5440290565189005724, 907133565222704805, 17434239031512456810, 1307317854813232623]), Fq::from_montgomery_limbs([1968218328054856894, 2870644718005301826, 11704111566790320318, 859557807871195562]), Fq::from_montgomery_limbs([9665243622030788996, 3894043111862548693, 8651495608452602974, 196890012228714384]), Fq::from_montgomery_limbs([1811318098116764117, 13655150694370398684, 6815946900059011917, 290581066009768770]), Fq::from_montgomery_limbs([5291662797603414486, 9976505778352937130, 18094101094996988099, 1244544548315716916]), Fq::from_montgomery_limbs([9550922411414470754, 2559237915370255061, 4289970449795683516, 700825515431345401]), Fq::from_montgomery_limbs([2966982422777393142, 3218865522692669697, 18384778728203892883, 1101167759984396250]), Fq::from_montgomery_limbs([2248950665261207727, 17785118295943931326, 17515375671127827105, 271356461720641826]), Fq::from_montgomery_limbs([2914870987885463507, 10687584786677185088, 9928447420467895555, 897829002169041990]), Fq::from_montgomery_limbs([9461028554882623448, 3241431013683194658, 4200859715375860214, 247909540912074667]), Fq::from_montgomery_limbs([9484762440333250094, 9154823463484785662, 5077140138132238606, 1217948890232839466]), Fq::from_montgomery_limbs([1721708237225335663, 6589142598549247219, 16963982649759394752, 1325370920515859453]), Fq::from_montgomery_limbs([1581154353773201694, 8859491775898173368, 3478556371389172479, 761951195116054505]), Fq::from_montgomery_limbs([5414431534772354985, 5784939336020461618, 8193906688438115902, 619056837793590578]), Fq::from_montgomery_limbs([5158566907177787182, 510437656260968539, 18375886464296814687, 496771913288779260]), Fq::from_montgomery_limbs([646494282535877757, 12737151480704198413, 5471421123526354063, 634833038935883700]), Fq::from_montgomery_limbs([16181443408673327918, 1926257882480036072, 190463000805340911, 725721205978748339]), Fq::from_montgomery_limbs([7167760716023892074, 5428322849307462840, 14114178188915343377, 442277493806724508]), Fq::from_montgomery_limbs([9842757490151171477, 12090204626601182995, 4235533359914016519, 235018089373226021]), Fq::from_montgomery_limbs([689571657822682190, 10120322490102263749, 15349544629296264734, 879110129942909963]), Fq::from_montgomery_limbs([10848673159730542826, 4254896082380917657, 7095278498028251644, 1283578418017245899]), Fq::from_montgomery_limbs([11397620827145756612, 12197349421718102268, 667097273385403287, 776832025612247811]), Fq::from_montgomery_limbs([9536830619644896323, 4636833749605880653, 12285714887794138165, 1202400709127503383]), Fq::from_montgomery_limbs([12430146514789240945, 4526156431412134307, 513622053209881149, 214778917602192418]), Fq::from_montgomery_limbs([6167098201419516498, 3154640343084703344, 14434779005902723423, 733632272342828673]), Fq::from_montgomery_limbs([18346541912745902187, 17556217100268103816, 14141252440750669936, 569875244889036285]), Fq::from_montgomery_limbs([15618469611711155008, 8545147381062171474, 13019086273197685281, 567609712932306745]), Fq::from_montgomery_limbs([10102215164832802529, 12690048864743685174, 5165853392556586922, 270489738300122432]), Fq::from_montgomery_limbs([11927164480530891201, 14108489374813791633, 13017388607106060581, 850938729783185225]), Fq::from_montgomery_limbs([17624557745440616873, 2058796150101806399, 3985511902134676603, 388277619947822053]), Fq::from_montgomery_limbs([2514382380191783963, 14675210002114941075, 17998140577033030519, 386023351355332372]), Fq::from_montgomery_limbs([10528288814462561256, 8933204649364546390, 14874592129223984742, 399487853473549061]), Fq::from_montgomery_limbs([5664751596212948671, 6514969831451331945, 12061422083014489160, 933043664098111606]), Fq::from_montgomery_limbs([12225851766128513711, 17952953998987374262, 13430826736801915124, 1339971583679078644]), Fq::from_montgomery_limbs([1845651887319106020, 6930431492749731513, 10484176960040080733, 1170790578042537798]), Fq::from_montgomery_limbs([6348862923042548556, 1486875087558341712, 4194544242438091841, 78164005256144789]), Fq::from_montgomery_limbs([14692463016290478473, 9329360702930196569, 1183214256895952754, 471672221434976115]), Fq::from_montgomery_limbs([12425146353419210200, 11291312622557382836, 17924529967710695385, 316781213195510748]), Fq::from_montgomery_limbs([18081335327542674793, 17730828508504228247, 15095343772187852738, 496240897850542584]), Fq::from_montgomery_limbs([6906018396868182531, 7580743900120262926, 1967444667836204859, 273417108766582414]), Fq::from_montgomery_limbs([16469004144906175061, 6719414013547880652, 7667039018964612703, 450462562192687741]), Fq::from_montgomery_limbs([3699459642673757801, 8364096682669340023, 10547343127916338322, 1039413061935527341]), Fq::from_montgomery_limbs([2771106982987870684, 8573563587841378420, 1206719325810700776, 143426260059118164]), Fq::from_montgomery_limbs([4238031571774841747, 10683460310325108305, 10841990503446643706, 1301654934696530594]), Fq::from_montgomery_limbs([5203929344429628388, 16885411007452841607, 17902872474369879449, 255936061345264752]), Fq::from_montgomery_limbs([16419947603551223738, 15661157019396954707, 3821221238374718246, 416126177086460787]), Fq::from_montgomery_limbs([16922553208005265111, 16360160113507055509, 536165461233550481, 608549986932555649]), Fq::from_montgomery_limbs([3592206260685120065, 1954831133507660101, 5600597071609130865, 213648140091026624]), Fq::from_montgomery_limbs([6516082392033585373, 13946838009919256327, 6452501836291584617, 506431739097044218]), Fq::from_montgomery_limbs([5518181572807062513, 292110089321494827, 8886174429861609032, 814625545290394060]), Fq::from_montgomery_limbs([12610347423199665749, 17943367344775386000, 17093121972053566454, 556259058966026962]), Fq::from_montgomery_limbs([5583294814190562448, 18088402493981602497, 15928392856949829098, 901622636021551608]), Fq::from_montgomery_limbs([16249951298748852814, 6111361788233877783, 12919350091432296884, 721226010556420107]), Fq::from_montgomery_limbs([2218172102857239703, 2329323851667514953, 6784983166719863241, 993993486987443276]), Fq::from_montgomery_limbs([14394544906593037198, 15461851001194987466, 12193473059473668298, 358314776306336360]), Fq::from_montgomery_limbs([2603326905829233946, 16916036572436423298, 5790056800663566282, 1283614572025968285]), Fq::from_montgomery_limbs([5913046777942823275, 8211910935104269782, 17190335617208567380, 38682663530408751]), Fq::from_montgomery_limbs([6279799617741999852, 2368459429864835947, 13817854282822876412, 857599403523844060]), Fq::from_montgomery_limbs([13513221728804468015, 11648472211124988287, 16337147311151149281, 1213356362315889859]), Fq::from_montgomery_limbs([6735193215800666100, 13415126246050738636, 6546772491702052570, 864959054725113379]), Fq::from_montgomery_limbs([13946560916675101048, 1305536234013471373, 1996487601117501987, 6637280482434640]), Fq::from_montgomery_limbs([17986217868852303932, 266126649469053928, 4699823734038470617, 1235954369265597233]), Fq::from_montgomery_limbs([9706578390759094801, 4557052655228011544, 6501501161504104166, 300118669717388750]), Fq::from_montgomery_limbs([17271021878237926614, 16508898608489641541, 2510098231880106517, 1253549827753884905]), Fq::from_montgomery_limbs([16081696380667951121, 12546061674505954303, 3027939816911481659, 1326122367352440135]), Fq::from_montgomery_limbs([8750820783999769857, 14131264523532409831, 11860451755197446498, 745462829225755593]), Fq::from_montgomery_limbs([7819519394598054633, 7533208822188068621, 3889432398222336031, 176964346604581200]), Fq::from_montgomery_limbs([13626588278396502750, 15706390030365469804, 12311149232441048374, 610208895283453621]), Fq::from_montgomery_limbs([11094868539621714049, 1330865564750703444, 8208579708506329523, 1146297945936422016]), Fq::from_montgomery_limbs([7814348133249287361, 6078857359953567878, 15411726589694581351, 1299224180894534955]), Fq::from_montgomery_limbs([8835381130778819320, 134779635200388096, 15334224426829348450, 785788572858947262]), Fq::from_montgomery_limbs([16203055023538295629, 13066812413033753111, 13966479479457537321, 675899367132765792]), Fq::from_montgomery_limbs([8545027219899966991, 6186973227993574577, 3038538378161392821, 535103590192673792]), Fq::from_montgomery_limbs([3360320054957481727, 34336684756912399, 3413779266271394009, 764051173981439036]), Fq::from_montgomery_limbs([293023250682873552, 7322391841105288851, 198244575944514326, 656738111777844461]), Fq::from_montgomery_limbs([18423107368729444354, 5597408372052789576, 7207721424788749840, 943687777186537434]), Fq::from_montgomery_limbs([13170086198505174331, 15859783812716989104, 5301807370963313339, 799729083241888205]), Fq::from_montgomery_limbs([17279707292509004232, 10595487011792355137, 12602364184919926920, 311754230366163159]), Fq::from_montgomery_limbs([8130970296785420178, 2169620052609587269, 1837093242073059498, 276242467334991300]), Fq::from_montgomery_limbs([15139243365203952649, 4858541150918282204, 1228673366499097007, 1293322423335373790]), Fq::from_montgomery_limbs([15413937563393284083, 365038001085082591, 11386425434875288889, 291771874675930828]), Fq::from_montgomery_limbs([3865668766578896210, 14190581838784817460, 2274316418059288551, 870991438678094683]), Fq::from_montgomery_limbs([9571157470530489958, 4980823355121973943, 5333320516499456270, 770038796278147152]), Fq::from_montgomery_limbs([16981726629451591296, 5326474426552210602, 1524717641929835760, 219842939123356623]), Fq::from_montgomery_limbs([16039208901368659229, 5184640515669419530, 3080932410472693273, 510043620105971072]), Fq::from_montgomery_limbs([10111763974722315511, 8329709076294929314, 16998679271562967459, 574065224827752177]), Fq::from_montgomery_limbs([8462560254681779659, 10954941970268851750, 14488455499782134046, 963141804021766550]), Fq::from_montgomery_limbs([8265856446621399759, 16247707484341474163, 12400770599134010433, 771647552338284605]), Fq::from_montgomery_limbs([5671942973524499, 18330128788177211715, 4789615159654137053, 622759709526318785]), Fq::from_montgomery_limbs([17479950722059179918, 7049818057003906554, 10084589816123170899, 1193808990238611595]), Fq::from_montgomery_limbs([896116343457540936, 2638281787069340966, 3380620512921535857, 36644632120836151]), Fq::from_montgomery_limbs([2322146546165600970, 271027138366968218, 7162645116150464142, 441026262100973114]), Fq::from_montgomery_limbs([11627404673587174924, 1016523621299971825, 8777376750651265173, 904797647346869914]), Fq::from_montgomery_limbs([2336599983193427372, 18294536733010623722, 1910254562936909612, 288459876244919538]), Fq::from_montgomery_limbs([10866222389981094234, 12754738301243938778, 2023962300189713384, 841827876240589471]), Fq::from_montgomery_limbs([12337869057490259818, 9301235609521246009, 16444168617638171143, 1108049112276481315]), Fq::from_montgomery_limbs([18388904709130326983, 14432270782760350172, 5671872767281599553, 996264049295637410]), Fq::from_montgomery_limbs([2918495984421967960, 15152292474410287951, 16695048790099726675, 206789987868447903]), Fq::from_montgomery_limbs([6798036226759712530, 2524547494567206246, 343094056066178021, 1079202981664139204]), Fq::from_montgomery_limbs([283923512386736187, 6373209277312452652, 11471152742161283191, 352597911054493754]), Fq::from_montgomery_limbs([18344480346791250887, 6055456955702765744, 13357935878541036141, 1170362631105533341]), Fq::from_montgomery_limbs([17978397370482672109, 5066451535613649009, 14053101851847429570, 384003300586620459]), Fq::from_montgomery_limbs([6537240767762022960, 15287887514003130639, 13714824082467376651, 325998042020099848]), Fq::from_montgomery_limbs([4220213521712332659, 17903257264224768614, 14353077305493411978, 1217616808421443849]), Fq::from_montgomery_limbs([6303107750424964008, 10553099269256611636, 5652309430855981542, 809187312341384962]), Fq::from_montgomery_limbs([1467640326258074734, 9958994673877282208, 948807165231437865, 847979042319462524]), Fq::from_montgomery_limbs([14465965197425638820, 1065990778266164589, 2272519010377842609, 171604326652711548]), Fq::from_montgomery_limbs([16535399098764373288, 6722849851726415551, 12327525818310696665, 617153762162922214]), Fq::from_montgomery_limbs([16271640629055517264, 6432350282845335097, 8618264300933865260, 264879473167088472]), Fq::from_montgomery_limbs([9343764438142603568, 4076892716460943411, 4516415268764304436, 15742193002987304]), Fq::from_montgomery_limbs([11522515971258098144, 3066993658503053898, 17512877804099724909, 611356418591586870]), Fq::from_montgomery_limbs([4963578364552643616, 6202702392079615379, 7168882355307838637, 299344600077925413]), Fq::from_montgomery_limbs([14129405866465653759, 354882826696964962, 9660427351909071801, 291149128932052640]), Fq::from_montgomery_limbs([6569686896435195187, 1896994952028172314, 2117936942259387423, 1226223740596210813]), Fq::from_montgomery_limbs([8136826296150976656, 5114560834461259857, 12698438831882127582, 1064812274674793315]), Fq::from_montgomery_limbs([5204762908686848050, 18170247715344035008, 10079839806977450219, 1015117163163578828]), Fq::from_montgomery_limbs([1971186989634095352, 5677558375626169162, 3790083583317699341, 158130166070339790]), Fq::from_montgomery_limbs([9180297996268451616, 10521870846784715198, 11257197750166742798, 1008680790543022462]), Fq::from_montgomery_limbs([15102432377621017232, 824737829862625480, 15733286904587679385, 359217550415334382]), Fq::from_montgomery_limbs([4981259850785194804, 15036275071388584091, 17758791361697138722, 236481669158055589]), Fq::from_montgomery_limbs([3901233362525026592, 12813965168957277386, 5314390603519503713, 998031094116574634]), Fq::from_montgomery_limbs([4078498358432220507, 12075726151602811779, 5342542781210762674, 21775695708843112]), Fq::from_montgomery_limbs([13735056988005095110, 9135371967743228564, 6185376342737833602, 666002395605514749]), Fq::from_montgomery_limbs([18046228494581227779, 8202114407403963695, 4947702695068466084, 788320793950394154]), Fq::from_montgomery_limbs([7218302974216051660, 3228464294576983613, 6671727537595126477, 173754647728010839]), Fq::from_montgomery_limbs([7621257321835633802, 8049874917307223403, 9478314901912088133, 870251875807451739]), Fq::from_montgomery_limbs([5044996355847148919, 273615366352511195, 4942152417670343549, 199398188932346157]), Fq::from_montgomery_limbs([2595093843514271275, 1154391123098543540, 4985894556505531500, 854386142979270925]), Fq::from_montgomery_limbs([12759949881257920813, 1010457605698465717, 5217636609151955807, 817084911938507107]), Fq::from_montgomery_limbs([5979737281050353100, 3539786440569025402, 14471457140846241143, 907982120351578122]), Fq::from_montgomery_limbs([16416626656337038566, 752298127295719085, 866476478245896231, 830777061413161901]), Fq::from_montgomery_limbs([17284526810241082338, 13213233959887135278, 2713075662623866960, 1171532591409183723]), Fq::from_montgomery_limbs([8064354122312926171, 4789249084747322790, 9919523931750221465, 419197152698850604]), Fq::from_montgomery_limbs([16629353489243762868, 11598883503129680580, 278636461422073174, 1203042448092989642]), Fq::from_montgomery_limbs([16545356932968522584, 10146757853340947518, 2437689509695855762, 464048598784979390]), Fq::from_montgomery_limbs([5331959515776232924, 3487514764868921659, 5860818581382620461, 167831223077979532]), Fq::from_montgomery_limbs([2682933818861368295, 7444683236761914337, 2283469126638096803, 272174229926312669]), Fq::from_montgomery_limbs([5483054922977937779, 318986619952765070, 4791617305206485237, 1275035358174361434]), Fq::from_montgomery_limbs([4586602402683656583, 11875566498302421311, 560651239278356123, 130789238180500900]), Fq::from_montgomery_limbs([13475546304629005641, 1809680849885580336, 6148758205685753344, 1015272727127650918]), Fq::from_montgomery_limbs([18199016777093209980, 5614538780880978862, 14532750892253808663, 1120673202287670548]), Fq::from_montgomery_limbs([7979559541587633926, 1549411440381912045, 13170209322716529702, 561270408065407020]), Fq::from_montgomery_limbs([15279595015844449808, 17853680372412830934, 12690878740975697658, 190806245751470341]), Fq::from_montgomery_limbs([1933135302920649522, 2329259343686385217, 5986214093116711712, 437917490927487372]), Fq::from_montgomery_limbs([12529279623600953551, 4004103524068207361, 17383023741426003338, 13318527301206951]), Fq::from_montgomery_limbs([18009701980761163605, 4547817745757475315, 17631087904948254977, 246989508356009632]), Fq::from_montgomery_limbs([14234349688403493927, 2241500746438474640, 1648115951043925356, 529436668472805988]), Fq::from_montgomery_limbs([14111082894836574658, 4098316701848925924, 3720696502600521690, 977251546365326678]), Fq::from_montgomery_limbs([2443616537395128437, 13678987928408466225, 16807254711436855033, 601335544571650468]), Fq::from_montgomery_limbs([12969308795370128797, 1532941629572075493, 9106717660115400778, 1089446992863060197]), Fq::from_montgomery_limbs([16646776755234291239, 15128084475268734564, 11393204553412007553, 838617701679652479]), Fq::from_montgomery_limbs([13260373450845806376, 13305876398081489975, 15328643090518932448, 818860400916977295]), Fq::from_montgomery_limbs([17906146044330204615, 17863342707079833111, 13022629852534083638, 1328181038047481506]), Fq::from_montgomery_limbs([10820137181908478766, 5520339361329099025, 6461544718626485262, 866252272778375002]), Fq::from_montgomery_limbs([14688227483907802311, 2519702212313051686, 8103674382557125023, 689198778502256390]), Fq::from_montgomery_limbs([4422411727383004887, 38494189414052956, 7231885838058987299, 306462357471198280]), Fq::from_montgomery_limbs([8147364543363235664, 5966406127022341654, 9906078756256022488, 1154653879133001463]), Fq::from_montgomery_limbs([17616667317393619629, 8830117592103096180, 10242736408532701810, 367000561528732856]), Fq::from_montgomery_limbs([9905329343001728010, 254719974105054165, 11980601159747742583, 1280526116709693810]), Fq::from_montgomery_limbs([6868659545386222523, 8844781874090119286, 10793326335526947043, 1292404946512391578]), Fq::from_montgomery_limbs([17850102253172036488, 16878929783220491580, 12148612402256632289, 1179496799944407367]), Fq::from_montgomery_limbs([6929880085758156619, 4120392668704643628, 11836473204519946866, 28485748677085595]), Fq::from_montgomery_limbs([7800178991375085209, 14774867153037785291, 11799747171946617460, 602919953250380891]), Fq::from_montgomery_limbs([17054340314101625508, 4698130283999778899, 4742470825260640374, 959009998492737982]), Fq::from_montgomery_limbs([2393186109518086396, 6858067904112781658, 250925929886996803, 813730459239750430]), Fq::from_montgomery_limbs([2218833032329181388, 552395772797949524, 6530705058787819865, 835936496067889425]), Fq::from_montgomery_limbs([3262056243364729906, 11024409760304501943, 1452785405793489479, 142671579891481074]), Fq::from_montgomery_limbs([6735174709999307467, 2125505582074675403, 4509781828031030374, 108593715289115480]), Fq::from_montgomery_limbs([498171931293929377, 12913268518770675643, 1815201461805994707, 946978086066606985]), Fq::from_montgomery_limbs([16200210184230174374, 3713355895827454434, 14718940205181940826, 1064592931466804937]), Fq::from_montgomery_limbs([13536929950841620194, 3713133295284324907, 4736815980159531884, 758794941833570859]), Fq::from_montgomery_limbs([861407446467585047, 12743454769660930162, 7792877431815389510, 943863054041968511]), Fq::from_montgomery_limbs([10460589994003660312, 13699084750678449563, 6912858821101282428, 983481932576822508]), Fq::from_montgomery_limbs([6395189001561693172, 909428077299806733, 14034485419172147354, 892696750070934303]), Fq::from_montgomery_limbs([16314238556028756835, 12721184065200972840, 4215220052710637306, 969581304771032797]), Fq::from_montgomery_limbs([15243970771075793563, 7265733909785546869, 11400286633658577098, 227245542346740687]), Fq::from_montgomery_limbs([2661479521314659209, 14172387955084721030, 12674281103636294869, 1085804564589438497]), Fq::from_montgomery_limbs([18227002291515532973, 15774793184931310359, 6437329245046594308, 396285509955206909]), Fq::from_montgomery_limbs([6914466148291815333, 4167126971788791314, 4527924238135969746, 1300810520025754908]), Fq::from_montgomery_limbs([14395967678844513466, 14422556923576200015, 191387961653560003, 729196198527215531]), Fq::from_montgomery_limbs([7196572830394614073, 16632412363674496211, 16792884878696839152, 457278866683205345]), Fq::from_montgomery_limbs([9831172453260561658, 4633416154293085629, 748737550195349212, 1194104217944615385]), Fq::from_montgomery_limbs([6973573180719962464, 5007888960458011612, 8062128917836753116, 744480032753315017]), Fq::from_montgomery_limbs([16633938277270943002, 664463662401382838, 12794755704372974494, 554917201554530927]), Fq::from_montgomery_limbs([13757343111051456383, 2277523607348509991, 12211485585154160377, 1191938841499200958]), Fq::from_montgomery_limbs([2099651241677249799, 16005931431677972788, 4057176764026877324, 707860945208429696]), Fq::from_montgomery_limbs([2165339887464167998, 7647994110899007446, 5094066233657896225, 709010531879165945]), Fq::from_montgomery_limbs([3831632088851469384, 13057932256077855788, 8222411545973514625, 843256628060293546]), Fq::from_montgomery_limbs([11183603857561726385, 11584937131366886392, 10218687281854749192, 1214449080735682681]), Fq::from_montgomery_limbs([4616248479126876226, 7741252456972311173, 15728165050985347386, 1181171544306467254]), Fq::from_montgomery_limbs([9990077617045592495, 15002413693275212677, 15144228310702885841, 620548150749293884]), Fq::from_montgomery_limbs([11425804337294316958, 7221778875452068210, 12010104440786017368, 1011771244946000970]), Fq::from_montgomery_limbs([5747596481169639613, 1104073856460899094, 9146430142057149431, 765525234705139109]), Fq::from_montgomery_limbs([3812959281946602235, 14465851686889375345, 10322234575416122404, 932678259808721672]), Fq::from_montgomery_limbs([8276661801860095514, 14823492496323764121, 13701004212965117137, 355220593809969742]), Fq::from_montgomery_limbs([2822736401887161227, 7201497867288478670, 17622780267628213622, 1209422737251283832]), Fq::from_montgomery_limbs([6817376778442520781, 4154445874851092990, 16808416654356258571, 874896460001984569]), Fq::from_montgomery_limbs([6944399192847445119, 11369644718917282470, 2667187192361233639, 556544027948695271]), Fq::from_montgomery_limbs([5985721645222736084, 16218645614583785224, 4868776535917705543, 340479768034825225]), Fq::from_montgomery_limbs([423267142339143725, 10672508482801134053, 10023426192840323691, 143702757733007341]), Fq::from_montgomery_limbs([16968412399372724525, 8496071221427589946, 10167242106830249881, 948296106142898645]), Fq::from_montgomery_limbs([6077151186983453387, 15293901317827186404, 14701565635632126093, 255295815714470534]), Fq::from_montgomery_limbs([2340976401132931162, 15060372762537152076, 53380542410648341, 264784757483154853]), Fq::from_montgomery_limbs([18327041937543135548, 9711578301735907982, 14543056172433622210, 917652325595281384]), Fq::from_montgomery_limbs([16912960214874381489, 15496697595960727025, 10003663904717205393, 692183641514800495]), Fq::from_montgomery_limbs([631791826835558467, 6501686441307729051, 3099396544628491613, 61251147299142612]), Fq::from_montgomery_limbs([17691931260195143223, 8098931117406259915, 9971027644422011861, 1136957700009068910]), Fq::from_montgomery_limbs([2062604623511907833, 2446845511672682965, 13161140743748372941, 284099378520214643]), Fq::from_montgomery_limbs([10652315713215424934, 14813440799481647832, 13466669344664711667, 1176746728204537787]), Fq::from_montgomery_limbs([340206030049443520, 12731571821339495677, 14595218864578621848, 861695502136866474]), Fq::from_montgomery_limbs([3281942488953589693, 3787812821549520969, 9952331543838149583, 1038372048519458034]), Fq::from_montgomery_limbs([18390450269856250573, 10364014773689157664, 17543739276626667853, 671606213095247190]), Fq::from_montgomery_limbs([12094846023530852586, 13769932740865047240, 113296399784931588, 214330261285932478]), Fq::from_montgomery_limbs([6374588877936433558, 11607665174546753642, 15847675340170713041, 474145143590361300]), Fq::from_montgomery_limbs([4088002413776997222, 16030858922743461837, 4313473177343544055, 817302900123673764]), Fq::from_montgomery_limbs([18216186189548814543, 5687648301273358200, 6564098766262925833, 235647764529877689]), Fq::from_montgomery_limbs([1421650618584051851, 9669410210003093316, 15430467067773365518, 994269415526604309]), Fq::from_montgomery_limbs([7574559796775011993, 9643962694113220666, 1013275434882478619, 543427156325963008]), Fq::from_montgomery_limbs([4532353768594877907, 2433286855157726742, 15167390808651362948, 914159030044677082]), Fq::from_montgomery_limbs([14155199821083030453, 3642619697360819367, 7765405773737076472, 1202115259646869817]), Fq::from_montgomery_limbs([16335533268534142579, 4358492749042076660, 16385044626223358243, 847268434257421024]), Fq::from_montgomery_limbs([726136436292617217, 4735276118883290434, 6495677390337301519, 1007951275499954400]), Fq::from_montgomery_limbs([1441892049918589996, 16125120862288806381, 5244917656153261337, 108755599353706277]), Fq::from_montgomery_limbs([9330223445766086137, 9406197553353640417, 13281468059023600014, 500503138812404763]), Fq::from_montgomery_limbs([5355456155777194776, 15418542913049291849, 7681885321566295504, 1188094463923126996]), Fq::from_montgomery_limbs([11882193142358058793, 4624069509548102427, 6735235437551193554, 962114122876706035]), Fq::from_montgomery_limbs([1819083831857771980, 8349663267034291058, 14403983179525206765, 942284040773068417]), Fq::from_montgomery_limbs([7024062436534453440, 15203692147142724388, 17082973923084045231, 1191890185052815108]), Fq::from_montgomery_limbs([6672719206476059341, 18362672287252020084, 3555226216430454216, 300718449399370145]), Fq::from_montgomery_limbs([5828458911011841758, 9271852277477872143, 18378348640149073615, 591074353691784318]), Fq::from_montgomery_limbs([15397757499179479361, 1878199828613873660, 4164621900891789384, 558990401377082502]), Fq::from_montgomery_limbs([11069496558892348093, 10253211614498485032, 11458203419889384673, 575447664584685933]), Fq::from_montgomery_limbs([9808353214047792416, 4805184465312945639, 3985871967202506787, 1229730183276593449]), Fq::from_montgomery_limbs([8420435996312062450, 11100705514596499443, 1523101111273631766, 639557004587150270]), Fq::from_montgomery_limbs([15630012259368829028, 15079774099427294323, 16765804689810369633, 834886070512612798]), Fq::from_montgomery_limbs([2000344807995355152, 8654391083188520616, 13301563010992444431, 490951127405891771]), Fq::from_montgomery_limbs([11761875542266860374, 709339183471929228, 17682621289319303167, 570040706396372700]), Fq::from_montgomery_limbs([3366481512891059038, 12720609556939839584, 1707138651265172645, 36940608792331559]), Fq::from_montgomery_limbs([2427334396528044490, 10170194639028880515, 18243990154741074229, 607502491270396977]), Fq::from_montgomery_limbs([6267947100515031640, 14520122887125811439, 6695614471931546770, 251319533602819784]), Fq::from_montgomery_limbs([7663026857490478572, 15777701966597798170, 10617198553182548195, 642318201966621785]), Fq::from_montgomery_limbs([9959998770754152632, 13119241263216166622, 6328810982306793729, 571460896430554998]), Fq::from_montgomery_limbs([12042605027273090048, 14859482580111939906, 11509134713697889199, 561895216440235106]), Fq::from_montgomery_limbs([1156916933025613310, 4529329408550568088, 14286907616576238972, 1309540780962817079]), Fq::from_montgomery_limbs([7510365353910652337, 14538991928012962248, 4644117500717216624, 1340316749461135700])]), -// mds: MdsMatrix::from_elements(vec![Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([13217949757478296855, 18361600593446830079, 18223280994163007859, 471593720435477782])]), -// alpha: Alpha::Exponent(17), -// rounds: RoundNumbers {r_P: 31, r_F: 8}, -// optimized_mds: OptimizedMdsMatrices { -// M_hat: SquareMatrix::new(7, 7, vec![Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([13217949757478296855, 18361600593446830079, 18223280994163007859, 471593720435477782])]), -// v: Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214])]), -// w: Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214])]), -// M_prime: SquareMatrix::new(8, 8, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([13217949757478296855, 18361600593446830079, 18223280994163007859, 471593720435477782])]), -// M_doubleprime: SquareMatrix::new(8, 8, vec![Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([5469465372454405746, 11693688927749785195, 9284229770381589387, 263916402201309764]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8025142443496737775, 1611073224873590596, 1595200312703520851, 268362793599128279]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2646197433325367530, 3327161674116363870, 17523969835882673765, 1224872920276084181]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3531022552160069605, 1044916798369741293, 13484540382795405112, 975392012720575741]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3532672362950129848, 13232567668052949956, 3949082925084889589, 1169300250855119928]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17405909644706202533, 9068195655028130334, 4993737853698066182, 760630245260613434]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10760096219897954109, 15819961273994906871, 12000866060961275644, 494051747708222359]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), -// M_inverse: SquareMatrix::new(8, 8, vec![Fq::from_montgomery_limbs([13084505025340709209, 6658414703856389670, 1229628874832604981, 544699057731131701]), Fq::from_montgomery_limbs([9271504314401065906, 16573554673674659136, 11112785265390720139, 695302674280213266]), Fq::from_montgomery_limbs([17755863455076530065, 714019269282123475, 2516777105896065646, 758853547373067215]), Fq::from_montgomery_limbs([18230149865394473823, 17597653080170983126, 8526134725373349310, 254065511080298010]), Fq::from_montgomery_limbs([12943062609168455850, 4036522178185995734, 13999395164871811986, 158263095242933732]), Fq::from_montgomery_limbs([9727917081763370379, 12523860206965601712, 6438415234309761598, 578292727069385307]), Fq::from_montgomery_limbs([4722164372208948539, 6191995659471889704, 9488304077820150497, 383493821809394045]), Fq::from_montgomery_limbs([6308417298426862088, 11443735935349473316, 5741617995111411363, 1072746374115513684]), Fq::from_montgomery_limbs([9271504314401065906, 16573554673674659136, 11112785265390720139, 695302674280213266]), Fq::from_montgomery_limbs([6461820328084053982, 3713881430924031860, 2384237101556363354, 925204973024161309]), Fq::from_montgomery_limbs([11045222492845432763, 12330616953129622165, 6721295490146207098, 737212261478666249]), Fq::from_montgomery_limbs([17374877272010299584, 12910097275334870758, 11030123918921243889, 999547114982057960]), Fq::from_montgomery_limbs([2710620113890028948, 7440189668352585633, 11434649235474493285, 24415954842353912]), Fq::from_montgomery_limbs([7017296967873341431, 5083670538613016079, 13450510072544819929, 553876772227031394]), Fq::from_montgomery_limbs([13756252569614172144, 10114182252140374927, 8424160399132869901, 370135544443278065]), Fq::from_montgomery_limbs([8192890567029291618, 6189339163642963502, 10515708329663122411, 718287917303790275]), Fq::from_montgomery_limbs([17755863455076530065, 714019269282123475, 2516777105896065646, 758853547373067215]), Fq::from_montgomery_limbs([11045222492845432763, 12330616953129622165, 6721295490146207098, 737212261478666249]), Fq::from_montgomery_limbs([1107303498763469844, 5522738209527454529, 7444362964372879018, 94326278492989394]), Fq::from_montgomery_limbs([17301615911438019293, 6207101570101901683, 6912719408314906153, 670136716188149414]), Fq::from_montgomery_limbs([8052773691804060961, 7894827066734284032, 17737200459541160653, 1344927881702280038]), Fq::from_montgomery_limbs([3579877764578944756, 17358359975581377230, 2902328015395623063, 1076553286270705854]), Fq::from_montgomery_limbs([7922495546740583511, 13377932406425725078, 312087136472518954, 724215661521432074]), Fq::from_montgomery_limbs([14304988956035390969, 2978747834443270582, 211153190861140083, 1101825800236420991]), Fq::from_montgomery_limbs([18230149865394473823, 17597653080170983126, 8526134725373349310, 254065511080298010]), Fq::from_montgomery_limbs([17374877272010299584, 12910097275334870758, 11030123918921243889, 999547114982057960]), Fq::from_montgomery_limbs([17301615911438019293, 6207101570101901683, 6912719408314906153, 670136716188149414]), Fq::from_montgomery_limbs([11280947822772662719, 3998258523005585690, 3083179120639342004, 919842772758514385]), Fq::from_montgomery_limbs([9288629788793402586, 2259376874925369448, 13217169487415398853, 539099117435770765]), Fq::from_montgomery_limbs([8430375547150652021, 1001249403497996831, 16789953243695164761, 1344355087100203329]), Fq::from_montgomery_limbs([527596723520651020, 15187839531048996200, 6255568353483246533, 170911683896477388]), Fq::from_montgomery_limbs([1734565667097520919, 12020388067710193448, 6095663732563761512, 1138214739842689620]), Fq::from_montgomery_limbs([12943062609168455850, 4036522178185995734, 13999395164871811986, 158263095242933732]), Fq::from_montgomery_limbs([2710620113890028948, 7440189668352585633, 11434649235474493285, 24415954842353912]), Fq::from_montgomery_limbs([8052773691804060961, 7894827066734284032, 17737200459541160653, 1344927881702280038]), Fq::from_montgomery_limbs([9288629788793402586, 2259376874925369448, 13217169487415398853, 539099117435770765]), Fq::from_montgomery_limbs([11829305752964125757, 10778200385642703226, 2095381984842221696, 365296429444826263]), Fq::from_montgomery_limbs([9209237328018148115, 9013177660724622161, 13411670809827118984, 1159740245409298491]), Fq::from_montgomery_limbs([1786760175787716883, 16585118128488698423, 3661827234912273881, 1175179421357105610]), Fq::from_montgomery_limbs([6997506992288193640, 3314349379260916067, 10669743096907430976, 828027530724672872]), Fq::from_montgomery_limbs([9727917081763370379, 12523860206965601712, 6438415234309761598, 578292727069385307]), Fq::from_montgomery_limbs([7017296967873341431, 5083670538613016079, 13450510072544819929, 553876772227031394]), Fq::from_montgomery_limbs([3579877764578944756, 17358359975581377230, 2902328015395623063, 1076553286270705854]), Fq::from_montgomery_limbs([8430375547150652021, 1001249403497996831, 16789953243695164761, 1344355087100203329]), Fq::from_montgomery_limbs([9209237328018148115, 9013177660724622161, 13411670809827118984, 1159740245409298491]), Fq::from_montgomery_limbs([2800053360411677182, 7739112841912438666, 4458443078052365313, 1221561517743072277]), Fq::from_montgomery_limbs([5714397546912390046, 7204578223640664713, 3369806468691410388, 19539807714888073]), Fq::from_montgomery_limbs([7912928165080095595, 10691173171385779887, 7900069818404182519, 558654216499734169]), Fq::from_montgomery_limbs([4722164372208948539, 6191995659471889704, 9488304077820150497, 383493821809394045]), Fq::from_montgomery_limbs([13756252569614172144, 10114182252140374927, 8424160399132869901, 370135544443278065]), Fq::from_montgomery_limbs([7922495546740583511, 13377932406425725078, 312087136472518954, 724215661521432074]), Fq::from_montgomery_limbs([527596723520651020, 15187839531048996200, 6255568353483246533, 170911683896477388]), Fq::from_montgomery_limbs([1786760175787716883, 16585118128488698423, 3661827234912273881, 1175179421357105610]), Fq::from_montgomery_limbs([5714397546912390046, 7204578223640664713, 3369806468691410388, 19539807714888073]), Fq::from_montgomery_limbs([11467623733094325177, 12601944683740404995, 14270804009154313170, 1283543454792166291]), Fq::from_montgomery_limbs([1591478553039085540, 13629203225225281079, 9223729349286412660, 541375501705678927]), Fq::from_montgomery_limbs([6308417298426862088, 11443735935349473316, 5741617995111411363, 1072746374115513684]), Fq::from_montgomery_limbs([8192890567029291618, 6189339163642963502, 10515708329663122411, 718287917303790275]), Fq::from_montgomery_limbs([14304988956035390969, 2978747834443270582, 211153190861140083, 1101825800236420991]), Fq::from_montgomery_limbs([1734565667097520919, 12020388067710193448, 6095663732563761512, 1138214739842689620]), Fq::from_montgomery_limbs([6997506992288193640, 3314349379260916067, 10669743096907430976, 828027530724672872]), Fq::from_montgomery_limbs([7912928165080095595, 10691173171385779887, 7900069818404182519, 558654216499734169]), Fq::from_montgomery_limbs([1591478553039085540, 13629203225225281079, 9223729349286412660, 541375501705678927]), Fq::from_montgomery_limbs([1183879673177082740, 4195985459140120089, 6602546398975040286, 268356784116832629])]), -// M_hat_inverse: SquareMatrix::new(7, 7, vec![Fq::from_montgomery_limbs([4596204885914937926, 7838695242625897787, 3035134948628881865, 1207227057562625259]), Fq::from_montgomery_limbs([15896440128761118173, 15649465122428497798, 4384954020081155217, 913236075158308182]), Fq::from_montgomery_limbs([2335397575999068166, 14422783505571319241, 2719190544357073120, 274885737548821162]), Fq::from_montgomery_limbs([9009029437947626511, 7346990291023997455, 3414440920242711508, 50729493538167678]), Fq::from_montgomery_limbs([1147572841630042462, 8929633407603160962, 14641836547291178689, 426104246454882272]), Fq::from_montgomery_limbs([17053865508971679549, 2198382506890441430, 11312636819879946010, 1106661992673439325]), Fq::from_montgomery_limbs([13854198271768011224, 4053309739918946052, 18433076019880982368, 615216866081782140]), Fq::from_montgomery_limbs([15896440128761118173, 15649465122428497798, 4384954020081155217, 913236075158308182]), Fq::from_montgomery_limbs([4761711418629517518, 591743220415883789, 2347216482122737487, 541885199414988935]), Fq::from_montgomery_limbs([16049706050976647208, 9176322874162797755, 12242590547654900654, 61012554895502211]), Fq::from_montgomery_limbs([10907149703911289876, 345335516406280141, 13671249158696272740, 1076200797284812494]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([7820919546658569809, 8474571377527450081, 15463257988737541409, 600187776405677822]), Fq::from_montgomery_limbs([17765856891579054878, 11653192174908829654, 4966200605019140816, 13151716642854399]), Fq::from_montgomery_limbs([2335397575999068166, 14422783505571319241, 2719190544357073120, 274885737548821162]), Fq::from_montgomery_limbs([16049706050976647208, 9176322874162797755, 12242590547654900654, 61012554895502211]), Fq::from_montgomery_limbs([13442108051579804680, 3187031622749351601, 18435466452818364440, 257424390549798158]), Fq::from_montgomery_limbs([14787872399840322022, 11612292071578382904, 2915446897265489403, 1027394734812832541]), Fq::from_montgomery_limbs([14650186278276933856, 11736505343490130034, 4478509448304020774, 790137565622286814]), Fq::from_montgomery_limbs([16227186307902919639, 13050765287152844350, 6672057872444298207, 1120660629979522345]), Fq::from_montgomery_limbs([17280730943809781377, 2101938472365641700, 2221542087098170284, 682975842437066220]), Fq::from_montgomery_limbs([9009029437947626511, 7346990291023997455, 3414440920242711508, 50729493538167678]), Fq::from_montgomery_limbs([10907149703911289876, 345335516406280141, 13671249158696272740, 1076200797284812494]), Fq::from_montgomery_limbs([14787872399840322022, 11612292071578382904, 2915446897265489403, 1027394734812832541]), Fq::from_montgomery_limbs([9754754145024164416, 9500194995930094065, 4605218223030367360, 489015282389927384]), Fq::from_montgomery_limbs([11235823697266068713, 9767911161281654263, 15004902496107301847, 1252504438181231825]), Fq::from_montgomery_limbs([773466991163756584, 6984379341355406564, 2865211391772182450, 1128797324971138943]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([1147572841630042462, 8929633407603160962, 14641836547291178689, 426104246454882272]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([14650186278276933856, 11736505343490130034, 4478509448304020774, 790137565622286814]), Fq::from_montgomery_limbs([11235823697266068713, 9767911161281654263, 15004902496107301847, 1252504438181231825]), Fq::from_montgomery_limbs([10750604789646168140, 372497979918419381, 10429606583776526343, 928966821232337907]), Fq::from_montgomery_limbs([10962493869149920375, 10887885654637674355, 384224715829329873, 165837155970255258]), Fq::from_montgomery_limbs([2645295168975782308, 13863838601458690618, 7409022743292405220, 617686796815916414]), Fq::from_montgomery_limbs([17053865508971679549, 2198382506890441430, 11312636819879946010, 1106661992673439325]), Fq::from_montgomery_limbs([7820919546658569809, 8474571377527450081, 15463257988737541409, 600187776405677822]), Fq::from_montgomery_limbs([16227186307902919639, 13050765287152844350, 6672057872444298207, 1120660629979522345]), Fq::from_montgomery_limbs([773466991163756584, 6984379341355406564, 2865211391772182450, 1128797324971138943]), Fq::from_montgomery_limbs([10962493869149920375, 10887885654637674355, 384224715829329873, 165837155970255258]), Fq::from_montgomery_limbs([17704196732594477900, 7529737242141985421, 3056083190610322131, 537754595320396000]), Fq::from_montgomery_limbs([4588045927327100104, 15273424236288740466, 3730020508107780990, 1184499396891674504]), Fq::from_montgomery_limbs([13854198271768011224, 4053309739918946052, 18433076019880982368, 615216866081782140]), Fq::from_montgomery_limbs([17765856891579054878, 11653192174908829654, 4966200605019140816, 13151716642854399]), Fq::from_montgomery_limbs([17280730943809781377, 2101938472365641700, 2221542087098170284, 682975842437066220]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([2645295168975782308, 13863838601458690618, 7409022743292405220, 617686796815916414]), Fq::from_montgomery_limbs([4588045927327100104, 15273424236288740466, 3730020508107780990, 1184499396891674504]), Fq::from_montgomery_limbs([5513671693009890019, 13840477803572862779, 13148892977164251883, 530785029804846654])]), -// M_00: Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), -// M_i: Matrix::new(8, 8, vec![Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6320288599439722802, 17139790906886685752, 15622446705354855394, 1250967766698858445]), Fq::from_montgomery_limbs([12907953951183108118, 570406863259453574, 9479663564103955646, 1023356057988386223]), Fq::from_montgomery_limbs([5445632916888334837, 1254961675994290676, 17739625680446876718, 887995330051968477]), Fq::from_montgomery_limbs([6322290143919737275, 6221802074515073157, 3956268074861890555, 1230594881276209560]), Fq::from_montgomery_limbs([6707360385690721071, 168555159922046132, 3944622502497320499, 871144945884010465]), Fq::from_montgomery_limbs([2037533433720590943, 11084683233172165964, 9053730132862546054, 793120143512682509]), Fq::from_montgomery_limbs([16034329588701802957, 3903236010590312092, 9048724434495743556, 974216030141738060]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12907953951183108118, 570406863259453574, 9479663564103955646, 1023356057988386223]), Fq::from_montgomery_limbs([2630356400630794821, 484400404306129097, 10294032504232056871, 1245743613753800727]), Fq::from_montgomery_limbs([7020374536790409354, 11449249974296852948, 11812715459389350230, 761793057268134936]), Fq::from_montgomery_limbs([14832891855204883256, 1120380609975889545, 13112310496604860424, 265468754987956357]), Fq::from_montgomery_limbs([1471871698735710625, 5066062283984961905, 18437666505161167766, 732132698348695885]), Fq::from_montgomery_limbs([12165164801578981607, 2595888614156384905, 3065973630931260883, 580278735590489736]), Fq::from_montgomery_limbs([14321853632102951979, 5605761176730605396, 4630454347263185176, 122758557320262262]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5445632916888334837, 1254961675994290676, 17739625680446876718, 887995330051968477]), Fq::from_montgomery_limbs([7020374536790409354, 11449249974296852948, 11812715459389350230, 761793057268134936]), Fq::from_montgomery_limbs([8776438364931459725, 12817858402105398175, 11110959846851041399, 66365362687656724]), Fq::from_montgomery_limbs([8240747731577468633, 14565407531273622630, 3117214821926093855, 377503066268731506]), Fq::from_montgomery_limbs([3910521513192788403, 13982250796740762630, 7488541789654977578, 950543461716681145]), Fq::from_montgomery_limbs([13037154073613592925, 5935342861935913439, 15852552537899162249, 940304910644322576]), Fq::from_montgomery_limbs([6931234819087160937, 3778580043557980929, 15772931149205513556, 42782763261291533]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6322290143919737275, 6221802074515073157, 3956268074861890555, 1230594881276209560]), Fq::from_montgomery_limbs([14832891855204883256, 1120380609975889545, 13112310496604860424, 265468754987956357]), Fq::from_montgomery_limbs([8240747731577468633, 14565407531273622630, 3117214821926093855, 377503066268731506]), Fq::from_montgomery_limbs([11125067532471981344, 14191984257965181085, 12061981722855456559, 593208493053362841]), Fq::from_montgomery_limbs([12343763401003110605, 14101666204297852634, 12890733422632852105, 917529488625337921]), Fq::from_montgomery_limbs([12402063032118952752, 2700777936756282138, 16216549649819784559, 1155661828697936045]), Fq::from_montgomery_limbs([2194969812170857806, 13161078840371575175, 5264735936454844546, 101144700881461918]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6707360385690721071, 168555159922046132, 3944622502497320499, 871144945884010465]), Fq::from_montgomery_limbs([1471871698735710625, 5066062283984961905, 18437666505161167766, 732132698348695885]), Fq::from_montgomery_limbs([3910521513192788403, 13982250796740762630, 7488541789654977578, 950543461716681145]), Fq::from_montgomery_limbs([12343763401003110605, 14101666204297852634, 12890733422632852105, 917529488625337921]), Fq::from_montgomery_limbs([11359111242441949022, 11240352269459571893, 17263815313749644065, 781240072875924051]), Fq::from_montgomery_limbs([16712698548631210778, 8113828394758785535, 9984182942939561022, 781254146059533921]), Fq::from_montgomery_limbs([7404478796369705144, 1939616247903098428, 2043282094878258870, 67588237262069794]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2037533433720590943, 11084683233172165964, 9053730132862546054, 793120143512682509]), Fq::from_montgomery_limbs([12165164801578981607, 2595888614156384905, 3065973630931260883, 580278735590489736]), Fq::from_montgomery_limbs([13037154073613592925, 5935342861935913439, 15852552537899162249, 940304910644322576]), Fq::from_montgomery_limbs([12402063032118952752, 2700777936756282138, 16216549649819784559, 1155661828697936045]), Fq::from_montgomery_limbs([16712698548631210778, 8113828394758785535, 9984182942939561022, 781254146059533921]), Fq::from_montgomery_limbs([6959694198409880686, 10513484520296585955, 17245503495642767610, 326963768321955511]), Fq::from_montgomery_limbs([10751863449412314814, 12531617507536929183, 2333159255918151628, 108101348738232165]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16034329588701802957, 3903236010590312092, 9048724434495743556, 974216030141738060]), Fq::from_montgomery_limbs([14321853632102951979, 5605761176730605396, 4630454347263185176, 122758557320262262]), Fq::from_montgomery_limbs([6931234819087160937, 3778580043557980929, 15772931149205513556, 42782763261291533]), Fq::from_montgomery_limbs([2194969812170857806, 13161078840371575175, 5264735936454844546, 101144700881461918]), Fq::from_montgomery_limbs([7404478796369705144, 1939616247903098428, 2043282094878258870, 67588237262069794]), Fq::from_montgomery_limbs([10751863449412314814, 12531617507536929183, 2333159255918151628, 108101348738232165]), Fq::from_montgomery_limbs([8242539079403140188, 8061347952042345076, 11707135840504604934, 914785475508666052])]), -// v_collection: vec![Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([18366132767879360967, 5431013863214313926, 3325023203464288028, 747241129062195048]), Fq::from_montgomery_limbs([4861545468195100803, 11791803721085820360, 16861242526837808182, 587224779081284519]), Fq::from_montgomery_limbs([6038434302262732315, 17199494462234427620, 17847977008226730647, 613398622514363430]), Fq::from_montgomery_limbs([8422783269805610096, 16656220536572751252, 7918639979705401643, 170910085608382473]), Fq::from_montgomery_limbs([18349346982789927355, 8017591337915184637, 18372658176979362927, 927323834744911125]), Fq::from_montgomery_limbs([6098144161467281354, 2162126959782930019, 8016715582812993181, 87916415604842323]), Fq::from_montgomery_limbs([14926888907449900570, 16034226105739794058, 8242495446855270900, 170857479056428767])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([13761299995988853307, 10330765076738035315, 13655052507848964233, 121839220114831784]), Fq::from_montgomery_limbs([15369322242721768225, 7050142047224256972, 12643665775034470999, 1102328692521833676]), Fq::from_montgomery_limbs([10555474781715655116, 6656109843697517764, 16567476834724252290, 1315407115111807184]), Fq::from_montgomery_limbs([15635518385029844173, 579774923863089338, 4907175580968184975, 679471495325209728]), Fq::from_montgomery_limbs([11185461100085345821, 8221939874744266357, 12287775310123057539, 1019299127883999231]), Fq::from_montgomery_limbs([586274284242963056, 8310909834705600558, 3054222778649762639, 763190023338919332]), Fq::from_montgomery_limbs([6717490082866871699, 9561189803595277803, 2358146706687598339, 229707033421591253])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([9862704231385218313, 13914100249743202263, 10014223727046890158, 679200801234608014]), Fq::from_montgomery_limbs([16286005160576575401, 2766108936000922095, 13859049965904094985, 720362228683248654]), Fq::from_montgomery_limbs([18028696975939559798, 6945291324150110288, 3594371327059432745, 1256526022736975448]), Fq::from_montgomery_limbs([13724722228213474447, 17954541567374385206, 10748596771783277924, 116970063643881223]), Fq::from_montgomery_limbs([17627786090808150672, 7901620020601608720, 1877160764958626418, 756288000881176875]), Fq::from_montgomery_limbs([14537377980409294015, 18005737005152562388, 9571375812741383887, 59753059053707643]), Fq::from_montgomery_limbs([4228748937594043872, 11086846199995865064, 15359245871481193897, 1099589394616459299])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([6835681309479739469, 2522595035308448012, 13579423836020142879, 321430679545810677]), Fq::from_montgomery_limbs([8928134061485321773, 14157720579697729134, 10344780082168020995, 97202987142506800]), Fq::from_montgomery_limbs([3126697640027307204, 1153410184564297189, 4809813821719177551, 994774295722128937]), Fq::from_montgomery_limbs([3918576597698600036, 13183810862438807325, 15214887128855617985, 279159001700097111]), Fq::from_montgomery_limbs([2830967354854515654, 17469509170635724421, 8035672669498122237, 267629026497518109]), Fq::from_montgomery_limbs([13871567487914888086, 5246409741722402492, 16832389611931438025, 1295010963726258350]), Fq::from_montgomery_limbs([17057934674164606699, 6421519839681476555, 2956724044796119398, 327825682992218753])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([4795884052041907920, 14375534011696101577, 2427060550596560456, 393919458849239754]), Fq::from_montgomery_limbs([15372002461943753964, 11342165919824154367, 11980800855746001270, 994521975576249810]), Fq::from_montgomery_limbs([3093026885592381242, 16909708896875106142, 9191689902351332536, 192118286974103755]), Fq::from_montgomery_limbs([2545301077237922815, 15144706238324940883, 6113286606593174468, 372600161316484359]), Fq::from_montgomery_limbs([2142773713360590483, 4755608127774394592, 14813148169732966311, 917761966614679749]), Fq::from_montgomery_limbs([4228649950611283773, 11633437476481650378, 40335982213672820, 963989416626637070]), Fq::from_montgomery_limbs([7391565095119442761, 5231979613403440246, 15148609598356850747, 95369680580052342])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([6221242600163036024, 13151745595003222769, 1880070415953293074, 859483057557051135]), Fq::from_montgomery_limbs([4057704583061373110, 330438596431033553, 11138603368324646862, 567019942240333219]), Fq::from_montgomery_limbs([6808348652855723900, 16038145083514774712, 7335293401571608063, 1256860263027810296]), Fq::from_montgomery_limbs([14712597649859914536, 2461131389363589307, 14971367896336061978, 440886131765627826]), Fq::from_montgomery_limbs([12563821899625315748, 1397025790367362621, 11711011249975071041, 1326491445493487906]), Fq::from_montgomery_limbs([7386366618870533036, 17891650149672567880, 7623078793319051970, 896259535119079804]), Fq::from_montgomery_limbs([10076387373785417531, 11621404135443198278, 2342191148009104794, 1208570082728513479])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([15679839989875735864, 3094159736795405193, 8433247987399569527, 598394739716746812]), Fq::from_montgomery_limbs([13169926426306420693, 1494478164246339314, 1807871555080064306, 341871317105251652]), Fq::from_montgomery_limbs([8871477167695700102, 7124763693791718581, 9576781928097497051, 714519781637518717]), Fq::from_montgomery_limbs([5983131451216637528, 14746501237947100556, 5131581902376092495, 53578888100518755]), Fq::from_montgomery_limbs([4061768962354414816, 11864639021370326188, 865372274790703007, 960248048765553610]), Fq::from_montgomery_limbs([13741178490350281184, 16104064291813496481, 430569565272838614, 1002559943654640050]), Fq::from_montgomery_limbs([2394748621667543278, 9724971631453415812, 4137744279709050144, 1128204720227512009])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([8347131072359520901, 7051906710316929352, 16145803176151958291, 425602845445213918]), Fq::from_montgomery_limbs([1777783046051939958, 9344856863579469212, 15141578180236122558, 1282494716270035254]), Fq::from_montgomery_limbs([9034384578885080751, 4457232682759798992, 2752092198692805323, 133997596024339666]), Fq::from_montgomery_limbs([6632806707492790657, 4419466991289176034, 10545594397744340230, 225792487504094029]), Fq::from_montgomery_limbs([13666870638471858948, 6325954648727450515, 6820384268867641136, 650912658514216838]), Fq::from_montgomery_limbs([18425172866543397587, 460014089142918565, 13475177727189665478, 755199790640816277]), Fq::from_montgomery_limbs([17074816481639390245, 8326625026248068453, 11628221368426774047, 168403074861182097])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([6496117145112017285, 8108611305258852743, 1288333658986417240, 489166257449840915]), Fq::from_montgomery_limbs([5905164426314492425, 14726319284315803257, 15419119459033009106, 748785652021292365]), Fq::from_montgomery_limbs([2903900515980491508, 14518787377368638193, 5737950893394728457, 1246585555966129910]), Fq::from_montgomery_limbs([13545067403644787822, 12929589241462425919, 6328577959723156897, 669792805130642725]), Fq::from_montgomery_limbs([10880665937604410417, 12182942785008105675, 8043148962657686879, 114751567600998309]), Fq::from_montgomery_limbs([475884094757470315, 13519631230544868403, 15555278094421071668, 284046901452720062]), Fq::from_montgomery_limbs([4404185810772829111, 13082485550708084688, 4458404332519456617, 747118566938719314])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([9005422667436345080, 6610327294069915149, 3392047280994887983, 185928194404395622]), Fq::from_montgomery_limbs([5907489245706778002, 2611521107474717810, 15424563447378789128, 1081732924695236796]), Fq::from_montgomery_limbs([6936175948569238427, 16265819354303431672, 9296694820053549015, 380971488662375691]), Fq::from_montgomery_limbs([11847879878992849222, 17246157629192690467, 2240336221502957918, 551120206298529047]), Fq::from_montgomery_limbs([13322826606934505627, 11726197427344458839, 11800080869580456447, 426669602496174268]), Fq::from_montgomery_limbs([6217036164702465819, 14690910531871435703, 13161157531336562298, 732442567722820811]), Fq::from_montgomery_limbs([14882293327891629398, 9369498032959659338, 7000848696812799171, 754562041670533469])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([7595387151201254327, 16626796275200533088, 2940178911825115337, 1184031511121567741]), Fq::from_montgomery_limbs([9948362750111031958, 14209593175711129688, 8446364573948386189, 802006068920106393]), Fq::from_montgomery_limbs([15169311970095301438, 12318244252296365506, 11639105278755798079, 84817162733084173]), Fq::from_montgomery_limbs([5831579622220754273, 10846086049576885619, 15991974831220053526, 756084870377153501]), Fq::from_montgomery_limbs([4538407139413953048, 3210811593774606829, 7928892177512965493, 295438458271184500]), Fq::from_montgomery_limbs([16833512221632219759, 4464061448066183306, 13162091753490675863, 292236190186079508]), Fq::from_montgomery_limbs([13779800725609980259, 9773765625728017659, 15074810316420391540, 950783607166623145])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([15895706787288222123, 9777370406550782832, 1347824831892755594, 1241011767014366278]), Fq::from_montgomery_limbs([12826978362776209042, 10633709265050784734, 17957605540213546613, 887698438045779720]), Fq::from_montgomery_limbs([7324188878915493946, 6492479003127466111, 8377249725203128879, 1000161290003049779]), Fq::from_montgomery_limbs([6704086117324761110, 146265122731217307, 2383903051894120264, 719647807141165334]), Fq::from_montgomery_limbs([1940312057575972126, 17930067253838912265, 317360086895888872, 5748540581767140]), Fq::from_montgomery_limbs([17103257683729273147, 13931874259783487325, 11872224486078756015, 956814895668207498]), Fq::from_montgomery_limbs([13769500095117682353, 516850361598419166, 16964626273259476242, 769634211482580445])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([3113137472185380309, 3788943308088978270, 15570984136244536866, 64143465381601420]), Fq::from_montgomery_limbs([7162163846740423034, 17407158529676601980, 982523548091459495, 1241886141897586570]), Fq::from_montgomery_limbs([14248266967200521181, 12810010597713281838, 15956352259342376510, 1249991327654319042]), Fq::from_montgomery_limbs([14421471441198040024, 4052632755320875533, 10507979567878886533, 966126597683502788]), Fq::from_montgomery_limbs([1330169793100628257, 5902370011388045841, 4268141693837804182, 504954696237745802]), Fq::from_montgomery_limbs([12989224119893885561, 17234018500273188391, 10939008301878322098, 259903928118608299]), Fq::from_montgomery_limbs([10430146681254844704, 16501713083418526441, 1818813698196386223, 290604987547570674])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([2272958606081209500, 2462669223449072253, 9500254477224930595, 45443314528508583]), Fq::from_montgomery_limbs([15776657251710579335, 14822492561927322901, 3903750765721394200, 630182332308162068]), Fq::from_montgomery_limbs([12563868195165779174, 12561252953252587550, 11907364401269631108, 581676404653821486]), Fq::from_montgomery_limbs([148332194159159988, 10068425626588210986, 13535393921505334097, 153553395999465163]), Fq::from_montgomery_limbs([7747426768506042379, 7652171709845608793, 11069887529886935999, 60205371617013159]), Fq::from_montgomery_limbs([9292570341502960523, 3236193786725371597, 8898130554136882239, 1009410450149925646]), Fq::from_montgomery_limbs([12885815634665358426, 15963150787962414249, 4369817253063661209, 642948406974549063])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([1380867230584918716, 16725144872260989882, 11444322500251449972, 837022230218511427]), Fq::from_montgomery_limbs([1087920425360181417, 17141257576042242544, 8987292985620878561, 1110305532217600753]), Fq::from_montgomery_limbs([10359964772262918650, 10077460265989495047, 17578499003187392916, 757342367774183991]), Fq::from_montgomery_limbs([2779779035056260202, 2282975003625087828, 1919400866622348845, 493318954648288095]), Fq::from_montgomery_limbs([15672164960009522373, 3256607523370073938, 13852207222752867333, 1244522698781289416]), Fq::from_montgomery_limbs([12874545038411867774, 1217025423748364582, 75869870772488332, 1001217245879206186]), Fq::from_montgomery_limbs([8523257600072604774, 8621165006673159831, 1464388999950649637, 1217963817687697670])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([15922812187951378322, 4516460162368536866, 15018766830043386765, 1340613465456337965]), Fq::from_montgomery_limbs([287441026936003136, 14764192345714853717, 4173276030750185119, 472111033963352598]), Fq::from_montgomery_limbs([10839733167051473961, 3454260583859678864, 11304905847738494430, 650946296327920383]), Fq::from_montgomery_limbs([9515448149018827481, 3488032113770392732, 10593726245432275549, 583635792309485522]), Fq::from_montgomery_limbs([2742448600840811735, 6652758193289359848, 9635320418424938172, 967821689260084870]), Fq::from_montgomery_limbs([9881468678921411834, 11537438085600848038, 7216253876764370660, 1304070984061260617]), Fq::from_montgomery_limbs([6196769084394513175, 1271040910625745125, 11073763102896512393, 1165794523446068715])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([15799597978241847363, 12818531158251383624, 6963429972659041410, 397194962489148197]), Fq::from_montgomery_limbs([138391674938830183, 6888521073413350790, 13718840433311127770, 1101538822720967029]), Fq::from_montgomery_limbs([12684981053383903956, 5500073381157750545, 4169486943568405011, 879134225324190092]), Fq::from_montgomery_limbs([464851715795247463, 2927900015464510347, 17346267830876442053, 1137028262870600951]), Fq::from_montgomery_limbs([1966072756669882436, 14267740345733608423, 3868025407329923728, 1329300268340841458]), Fq::from_montgomery_limbs([12791556832852048085, 7187847328998161782, 6410129678700860221, 1141843742471101195]), Fq::from_montgomery_limbs([17394082241710727109, 3925707544410201182, 15631236622778680461, 867359934041458160])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([12197981561714622691, 3447558190007550222, 8731482567404865792, 504033851083789168]), Fq::from_montgomery_limbs([15548011549070215821, 18176746913742005334, 6759691930131684149, 748826448544702472]), Fq::from_montgomery_limbs([14426381672075599127, 6754779155763548400, 1569326308679565884, 301254674498691116]), Fq::from_montgomery_limbs([1190926793578469751, 4569874070454135204, 15349066761719847213, 1143729593598143496]), Fq::from_montgomery_limbs([4377698380788322951, 626231241120536954, 5782570196326664329, 794203002404066761]), Fq::from_montgomery_limbs([18203023968026598600, 769509082182406304, 14347905833288757784, 849309248009120890]), Fq::from_montgomery_limbs([6219667569923491560, 12993749535175636460, 9317843769426981121, 466063065647080758])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([12360205003642410439, 12233377474426101645, 8749241487473360725, 771733806369229100]), Fq::from_montgomery_limbs([12909744147344161535, 15270140525914393786, 958053852923168614, 1122903083941798107]), Fq::from_montgomery_limbs([11512594517381251244, 7788994558197263271, 17789727628017887833, 604964920168437514]), Fq::from_montgomery_limbs([11365008776320664479, 7674849678441687585, 10947191902817323894, 745598673291635479]), Fq::from_montgomery_limbs([9298337976025138670, 3504219772802793091, 18423486933153538231, 674863471944898182]), Fq::from_montgomery_limbs([10037370553997808960, 5643541321548796784, 3954322339884102888, 1116686823797890292]), Fq::from_montgomery_limbs([9151115627925470056, 1080688967380275155, 15991630648226528878, 1130423917661403285])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([16294982486276945283, 7049820508618491066, 8145571059898393342, 186002704339584638]), Fq::from_montgomery_limbs([755176559839955182, 11156178401444222993, 14456074258881310686, 278477091367678088]), Fq::from_montgomery_limbs([1257685548905109784, 5141440235439936072, 17862579642779035136, 330137635933850138]), Fq::from_montgomery_limbs([7830781886086349569, 12605497826381107847, 6483908192271317597, 742032532267494998]), Fq::from_montgomery_limbs([15889009530646425854, 4873730462912310136, 2661766248464352916, 886629163939946863]), Fq::from_montgomery_limbs([12291205541312705254, 7759245016766434277, 14282726477924298523, 275206715444074183]), Fq::from_montgomery_limbs([7015277851946876128, 6540146872039720132, 3413400018095950201, 488630649619127768])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([8080067703614789529, 14335022802712765520, 12181558540579879368, 1181883134308686818]), Fq::from_montgomery_limbs([3930610870091700987, 11870595227272460342, 5614691549969018824, 1036838548873476989]), Fq::from_montgomery_limbs([15116537084696928201, 6562302783432438956, 8446888808137423003, 1165521566881319341]), Fq::from_montgomery_limbs([7622363474306732593, 14018499983613194146, 5504535021523794239, 1156251508187455677]), Fq::from_montgomery_limbs([18353812883604490408, 7863175561039540930, 16157508248448358210, 295160799461001215]), Fq::from_montgomery_limbs([9630152100811825815, 18335618989479732132, 8847214215895375728, 938895491334142608]), Fq::from_montgomery_limbs([13116080893996470839, 13627909126954009780, 15760064020863415616, 884515223942721558])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([6687780439253411478, 6719196503388333019, 88771745794551678, 987619641692746386]), Fq::from_montgomery_limbs([18227317062064988196, 14045861136043637767, 16184554390694852575, 168316121892514264]), Fq::from_montgomery_limbs([2567020624281662578, 12408201210305429297, 15172611508502121839, 184308211509770511]), Fq::from_montgomery_limbs([6504349685450813046, 6151032549024957176, 8446915662866336279, 721911887099189465]), Fq::from_montgomery_limbs([3337661731072526341, 2993440831960528581, 1509729075929391927, 478329275350342603]), Fq::from_montgomery_limbs([1009230922039257241, 6930789170818330480, 4189309447677808153, 116099938331986078]), Fq::from_montgomery_limbs([11734050699831527761, 10637489645393719148, 526453959140559372, 879302010498683200])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([4873204063755775221, 9933480403362446589, 9949453296663390065, 246028972103247826]), Fq::from_montgomery_limbs([1486515864865111240, 8186666825731582288, 17298579416284146352, 75432580959795592]), Fq::from_montgomery_limbs([505624159752585300, 400192717675446053, 16830576854563029465, 1083591845791403649]), Fq::from_montgomery_limbs([15707645648143644435, 15104101221834649015, 2714910978190477603, 1152442812583011873]), Fq::from_montgomery_limbs([13680539759561187051, 166623071797346207, 14072328976002035503, 1262049047131890020]), Fq::from_montgomery_limbs([1997216355444588659, 4362151030955817495, 4119100627602964220, 86616090171999332]), Fq::from_montgomery_limbs([2511307420156057573, 14546073810053310617, 2740719298105876931, 1306803605810669667])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([9796594921607316066, 9046940149281062534, 3066668479453506525, 629717731494457650]), Fq::from_montgomery_limbs([15245080183700001743, 17772522498139932944, 1303200707700973869, 1321448515508953860]), Fq::from_montgomery_limbs([15382852889694635458, 13258286043643865801, 9129565020842704924, 647265428745294973]), Fq::from_montgomery_limbs([406339679439528630, 358526789424126981, 15360185281241795369, 402771395127408535]), Fq::from_montgomery_limbs([14729795014613647379, 6659603767330364601, 10382867237853880917, 983014168589450240]), Fq::from_montgomery_limbs([130913533882362207, 3464497722457480940, 6174897712775413536, 362284933576221116]), Fq::from_montgomery_limbs([6802705157024058052, 13442544871481896094, 13780491571272760495, 909644424511448796])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([15361452699552249664, 9640740743000109947, 5568737378741199451, 962844949024683508]), Fq::from_montgomery_limbs([459261181401017545, 7171449908290213843, 15871949118083492196, 158962359341824787]), Fq::from_montgomery_limbs([7906547241546612427, 7911718846541029411, 14951976648354808013, 421942213347946833]), Fq::from_montgomery_limbs([11183093321955941025, 11064782095852757040, 17028937525080502941, 84626144143427215]), Fq::from_montgomery_limbs([15224853022182992564, 6262171785917223470, 16177655818423871790, 1014568265658824394]), Fq::from_montgomery_limbs([625719919361420446, 8380808592474630812, 3431067771421433694, 687333698000967202]), Fq::from_montgomery_limbs([16024186533956349632, 6397405785318083633, 15989828043790400414, 850765743467676249])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([16821206357298616469, 1130392039725774709, 5626389420189454642, 1118339463429080277]), Fq::from_montgomery_limbs([8638502030638568937, 14913248685358382503, 2067471807256194154, 1100154439569300281]), Fq::from_montgomery_limbs([17564526714798056567, 2679133728209391057, 12485118550630518387, 962529009983964522]), Fq::from_montgomery_limbs([4671481911068696338, 11211404871059653651, 4714104003967750529, 460522700989518506]), Fq::from_montgomery_limbs([6601065644493764993, 6108401876661130452, 518511813649845646, 611513774682652448]), Fq::from_montgomery_limbs([2861830270848819795, 16356361265808876600, 12810879004275814176, 1286972374050895235]), Fq::from_montgomery_limbs([15194368129140163866, 4422109454732341537, 16494227980417936974, 290982210272018089])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([17007536869668539214, 3870339684122566773, 7418389053554657334, 263511272051190454]), Fq::from_montgomery_limbs([12410612082473707857, 4040398757796296521, 16094020059960359234, 939075584469470040]), Fq::from_montgomery_limbs([7418236128585187557, 15691596850766474049, 4839121991874976767, 1173030423683112566]), Fq::from_montgomery_limbs([5215564176166340124, 2655381196051933641, 6045374250672288630, 176416756249057657]), Fq::from_montgomery_limbs([13952195320089654608, 13938861125107555897, 13572960470464709581, 247820705708880751]), Fq::from_montgomery_limbs([7397318582807137181, 18043760894393149278, 14776480882092071507, 1134492376276011511]), Fq::from_montgomery_limbs([10024735062566598040, 5074414902312726054, 16541770110513564624, 1319392307629355494])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([17701692352398604469, 12227868835058163041, 6355645072062803626, 46662470597422118]), Fq::from_montgomery_limbs([17486353498011500258, 14688387905134443671, 86673003791736603, 334193962485781999]), Fq::from_montgomery_limbs([2725938978570184818, 12538279414757715369, 4423739824876634382, 990960136859773111]), Fq::from_montgomery_limbs([1658418413165666717, 4481948955101880251, 2380234418157645031, 242453692938449648]), Fq::from_montgomery_limbs([16462799862547279938, 15860491361132810167, 17855590817263886803, 566253932393246465]), Fq::from_montgomery_limbs([7795866114233701913, 671818567137775288, 8587656269292170703, 1248608466500904131]), Fq::from_montgomery_limbs([12734974453986836356, 13876952892523324606, 8958492656376686082, 1219220119207244562])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([16939094048589357804, 27828887622580244, 17879324893769825916, 1323982021311509582]), Fq::from_montgomery_limbs([3829148264852223810, 16344601064097516632, 17405856957400469367, 1015406940125315334]), Fq::from_montgomery_limbs([2496078501178333445, 3431033003985481851, 18046940389757892591, 78803126847324668]), Fq::from_montgomery_limbs([10354574228107355459, 2956204224517963071, 4281810991966937657, 773005109651151512]), Fq::from_montgomery_limbs([11661373254033173032, 7617994408757678472, 3818523458153749994, 1124211529831618075]), Fq::from_montgomery_limbs([5343527255304572547, 18057091451537453565, 7219465431491887651, 438777407253439449]), Fq::from_montgomery_limbs([6944386246740202781, 15457528402087694028, 3684425466632772887, 516255567451219667])]), Matrix::new(1, 7, vec![Fq::from_montgomery_limbs([11265451120049686448, 17733431402661201252, 10181100791013355567, 1222168459125423207]), Fq::from_montgomery_limbs([16541130910067039592, 8550248424255720611, 5388592089365012797, 401807388479450663]), Fq::from_montgomery_limbs([15535862948076515909, 14246335147027067446, 3440553300570031637, 1140798916603065405]), Fq::from_montgomery_limbs([181454369079184993, 10259998444066142751, 13378833995981646023, 1233479771041134216]), Fq::from_montgomery_limbs([16855179079358889281, 15202871199402424660, 10704979988227736970, 1092640973189828568]), Fq::from_montgomery_limbs([8641652447153871125, 14767053670343766852, 14349039701716536407, 776309354634057048]), Fq::from_montgomery_limbs([16709348381005515895, 522436120289473263, 2848448538858947951, 930729981926185853])])], -// w_hat_collection: vec![Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([5469465372454405746, 11693688927749785195, 9284229770381589387, 263916402201309764]), Fq::from_montgomery_limbs([8025142443496737775, 1611073224873590596, 1595200312703520851, 268362793599128279]), Fq::from_montgomery_limbs([2646197433325367530, 3327161674116363870, 17523969835882673765, 1224872920276084181]), Fq::from_montgomery_limbs([3531022552160069605, 1044916798369741293, 13484540382795405112, 975392012720575741]), Fq::from_montgomery_limbs([3532672362950129848, 13232567668052949956, 3949082925084889589, 1169300250855119928]), Fq::from_montgomery_limbs([17405909644706202533, 9068195655028130334, 4993737853698066182, 760630245260613434]), Fq::from_montgomery_limbs([10760096219897954109, 15819961273994906871, 12000866060961275644, 494051747708222359])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([6362811837083607038, 10112120774028974554, 18223478424715278594, 334017453759956923]), Fq::from_montgomery_limbs([9425287269899366801, 11550170751949156528, 13535057945185910331, 481928711879823346]), Fq::from_montgomery_limbs([17472259370242997056, 5455690506444253075, 8901482994501262481, 216965978934341710]), Fq::from_montgomery_limbs([6461374808168440859, 2522061882145442234, 15960549034903032234, 172640120507478914]), Fq::from_montgomery_limbs([15948529219279584260, 15982605346874278694, 6269535640895470052, 598935737770408401]), Fq::from_montgomery_limbs([6387843144535167444, 3817387412721348785, 8453759171668596794, 249153266075439378]), Fq::from_montgomery_limbs([12733356128673768262, 1719659461140646111, 6773786044742649854, 1187765335723023490])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([13381096107094038201, 17813208526318089114, 18335536409132991824, 339697501389957039]), Fq::from_montgomery_limbs([17742161265183589279, 16788867255988109560, 14412857631192854758, 241525962952821929]), Fq::from_montgomery_limbs([3132656462108501803, 7337059831094147936, 10405916960575845901, 228104793330536468]), Fq::from_montgomery_limbs([4603265731852134279, 5399214122633296191, 8344043762552329652, 985455486033881462]), Fq::from_montgomery_limbs([14183899592653698860, 2177269342994828180, 10884678024220653483, 217447665355687992]), Fq::from_montgomery_limbs([11323936221359713158, 3341391736943984982, 17508560691141182274, 13239895022264913]), Fq::from_montgomery_limbs([13840945524485292215, 9974520753931283863, 4195523720400973895, 762227204403897594])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([4114179516470424298, 6425976053490693203, 12882959905974456947, 110103675307258331]), Fq::from_montgomery_limbs([15116210321604905525, 4118549106744296512, 3828886987178664227, 25697701772294022]), Fq::from_montgomery_limbs([17140438063675080897, 14878172760305139023, 16025135762152951507, 855206538655380046]), Fq::from_montgomery_limbs([10902652921411376407, 298732053043081440, 3474200546567636561, 73249755607734230]), Fq::from_montgomery_limbs([10553805817393106605, 11201074828085121396, 245273431044608348, 1118444153373328294]), Fq::from_montgomery_limbs([10914295885365195477, 9781502968861552189, 3016024785085649390, 1070566622248381309]), Fq::from_montgomery_limbs([17207023773498274582, 16270409020606599297, 15615674408609362833, 496415543408113636])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([12908589501999937487, 8065526495594728145, 14801981742319743709, 275346991162297736]), Fq::from_montgomery_limbs([17950935244956210974, 2150016307817314195, 16459867286579284659, 1042519399748946084]), Fq::from_montgomery_limbs([17900103050404502082, 14452186078281849672, 6480606341801761206, 622530813027865777]), Fq::from_montgomery_limbs([6659043465579778142, 5257478652828025077, 4476708827204863480, 16044674601944326]), Fq::from_montgomery_limbs([12982211781831995222, 12049124325752315255, 8705698258631367529, 1297634030024262944]), Fq::from_montgomery_limbs([6491213021781179190, 6621864740150572837, 16900492784527502379, 1222186981051134852]), Fq::from_montgomery_limbs([10406390218848689011, 15713870170786523261, 10757974052401463167, 1094311561986616580])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([7587047764889575280, 11453570134345482138, 6685160859155170229, 1173043895898907255]), Fq::from_montgomery_limbs([16754290437895255736, 9337309604462582506, 12206937090776739366, 420058562194519310]), Fq::from_montgomery_limbs([6762379518159147694, 8708770658919355547, 10850018038610162125, 1008085848049838570]), Fq::from_montgomery_limbs([13364112208667503342, 15694121621742726571, 10880035211673377855, 373642360429768529]), Fq::from_montgomery_limbs([2270999049018193688, 1120874468185376800, 411758025544146420, 1286339318101647584]), Fq::from_montgomery_limbs([6487825500972649335, 16454995602857338429, 5467561124775466727, 878704090415683008]), Fq::from_montgomery_limbs([1065155450424764553, 12374494253224172277, 8660000041795033471, 1111585064452242609])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([13207693125029693018, 4845337225517968099, 6777888238547968314, 1213784418907181141]), Fq::from_montgomery_limbs([8840475980926169942, 2439983533649319439, 10722568534952104178, 237040204857642763]), Fq::from_montgomery_limbs([12845192406743600306, 2989732167685602396, 9737375858921653666, 1230697363927166390]), Fq::from_montgomery_limbs([17347381872588777362, 13861116144606039805, 13092379011701123650, 764219716687899335]), Fq::from_montgomery_limbs([17560394342108123527, 2417597080550067173, 4892519055479234860, 41147728874013821]), Fq::from_montgomery_limbs([16525591378009204013, 15575464991459515509, 8422968616365174468, 411199147172891757]), Fq::from_montgomery_limbs([2381387149440902461, 5412036122050682991, 13528312040883572709, 906698787086289152])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([3906793572005745013, 18158346260651031144, 13885155522309058406, 81682927312739464]), Fq::from_montgomery_limbs([11556601788249882111, 16294603434168644341, 3233905800589936432, 205935519984731]), Fq::from_montgomery_limbs([15060956636956141748, 14545891040349678052, 11359264221189720465, 356824974507480378]), Fq::from_montgomery_limbs([13651037643855144634, 9057349283398801990, 11128939939991098829, 339192257850626331]), Fq::from_montgomery_limbs([13297032679166497156, 9615759066125111838, 17802636590285232697, 561508163130847528]), Fq::from_montgomery_limbs([8397658199708546603, 7714753189153428100, 7790178778963243461, 185139104215370464]), Fq::from_montgomery_limbs([2180790926999539040, 13412426570621087300, 11981287146222961423, 639288905678439923])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([14052035671409641250, 13059764049401289819, 11971569074865081653, 1150074447408905206]), Fq::from_montgomery_limbs([9430708294750522894, 10157980309621419039, 15263989057722108309, 986177323832836397]), Fq::from_montgomery_limbs([16901845294627087710, 3489277370587647922, 16697435307791475526, 77304496269930872]), Fq::from_montgomery_limbs([11082416581543669906, 10393162674600623371, 3285406343096341615, 1301030845466123760]), Fq::from_montgomery_limbs([18004954247480805141, 5840089398123238351, 10933632362911021710, 691842568234993272]), Fq::from_montgomery_limbs([17084441454288473640, 2235549442526480819, 4281084601663253516, 854500520628530615]), Fq::from_montgomery_limbs([15995978179451110635, 5254996480963543781, 12228168137501357375, 768298814850744789])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([14897923782972976882, 14769556083418318998, 1736582590048574781, 834637190815349022]), Fq::from_montgomery_limbs([15951362473351174286, 7550580364442366310, 1142582367377712360, 493901798774432186]), Fq::from_montgomery_limbs([6843713892592087790, 17187186375181169829, 2346758743517403254, 440860120126405528]), Fq::from_montgomery_limbs([16233685001159101924, 3591097020136681981, 3308092724991209243, 753631765436882275]), Fq::from_montgomery_limbs([12817371395153180792, 11781447572225130349, 6186298687319142696, 3684689165947228]), Fq::from_montgomery_limbs([373243522249877820, 14362378102133706173, 11334127490376039043, 1029386563565171794]), Fq::from_montgomery_limbs([3320051586177558481, 3693313581776176503, 4243258718797155237, 280296683627599109])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([15777714567664176983, 13315644392893971158, 17663595314793470728, 277994346352588461]), Fq::from_montgomery_limbs([10698748229571229513, 4993514528007275782, 9851470184989070944, 486473547501834583]), Fq::from_montgomery_limbs([15731541659238915573, 10580160097474154328, 14072730437229004460, 541485168141790138]), Fq::from_montgomery_limbs([3621838382408245781, 5140837518507686846, 692462686779552266, 1071238232671920069]), Fq::from_montgomery_limbs([16903035807706989718, 16402342976729397848, 6638418596135594138, 766006849863633370]), Fq::from_montgomery_limbs([3391835462656069558, 8478240763735883610, 6583767175704093831, 605702159954668519]), Fq::from_montgomery_limbs([13153440956937332187, 8778062398439311613, 14496687227146002795, 1184865635693926839])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([5492025723621450587, 4802310335533070821, 5103778166610184416, 1237824309223979752]), Fq::from_montgomery_limbs([13230781860208750726, 13444089818089484139, 17921412814723519524, 1222680843018701540]), Fq::from_montgomery_limbs([6469994574006187252, 9454411230540098121, 347262197325431191, 486705196263913773]), Fq::from_montgomery_limbs([3947674970632735265, 2916300977963946491, 6881904307166023017, 457112286806257099]), Fq::from_montgomery_limbs([8734203063029639947, 9235030054635977911, 17117573327238268274, 1336943205846791314]), Fq::from_montgomery_limbs([14915061407614767729, 5343187615398945512, 5552119928369165945, 230612833250200287]), Fq::from_montgomery_limbs([15343760251811669074, 11849716817931855852, 12235003752862513196, 1092174591577707855])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([16055670419025007879, 10167255563356161134, 5873677174484181331, 1119183194058634412]), Fq::from_montgomery_limbs([6545073505115712765, 12208880957985144024, 2413898051352165752, 200177087583496979]), Fq::from_montgomery_limbs([10675772825457541870, 13221200307080776964, 8360161479127911800, 166239764386669819]), Fq::from_montgomery_limbs([2006419824145230446, 1298290087846863922, 11954724771700273308, 1258575857924774921]), Fq::from_montgomery_limbs([5182647705377916601, 12490693483304324120, 16433633239279713593, 95750642123415707]), Fq::from_montgomery_limbs([95333990082317168, 17157473840728451869, 10012571168547117601, 89162384671094023]), Fq::from_montgomery_limbs([4909644498074356100, 4736187679400324044, 5882012018493447769, 1092049061252631253])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([7311109856180655396, 11772066066061778775, 4758323204662324777, 424401521788398695]), Fq::from_montgomery_limbs([10327551942056000767, 7896891757351259654, 5415141459879741043, 970729526627356745]), Fq::from_montgomery_limbs([16598021919990022911, 4748198554306289116, 17393884082489388120, 1042289367721564407]), Fq::from_montgomery_limbs([6071815438135838764, 6957160250256416369, 5727172448350823478, 363080876294209892]), Fq::from_montgomery_limbs([9289142807381535883, 17159982138314567248, 17888157697874972247, 525936327365438813]), Fq::from_montgomery_limbs([13845673834923418042, 3021171551531346231, 6196055431827427575, 879039969582851499]), Fq::from_montgomery_limbs([5868202154697212122, 13487005442942356371, 16163257120298149093, 656445568990681140])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([6021369790491535593, 2415914828808962567, 8804789562076458409, 141257607088107152]), Fq::from_montgomery_limbs([8888538666372726960, 417693810472292690, 6625260792856360214, 48639855527887045]), Fq::from_montgomery_limbs([6477686476345016713, 5099365493188187874, 9710843539546247353, 356644031678310872]), Fq::from_montgomery_limbs([514050899336931730, 1305432265166896997, 3022676376566559511, 992533360610514607]), Fq::from_montgomery_limbs([3586775418789355531, 9516764397514990497, 13077440505677103078, 1193605133897764836]), Fq::from_montgomery_limbs([11915336245727353796, 3787026284924392313, 9686187959466848805, 331336880299973516]), Fq::from_montgomery_limbs([13079652964588155522, 3686330961737298646, 12410090506639101095, 1254304946836077906])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([14841602521644800285, 9707581858559806753, 8194272850889842673, 1175777861699186223]), Fq::from_montgomery_limbs([8340457880130547197, 17733479127111148650, 9935013927746385786, 727641041410784864]), Fq::from_montgomery_limbs([15762625424586722564, 3435382265052399320, 8159926067386473340, 197998409655179296]), Fq::from_montgomery_limbs([8605915918798970675, 13692084072552856212, 4328810091072359910, 868588572376767645]), Fq::from_montgomery_limbs([1361081942051675201, 15249716130118278159, 2121941051566676057, 559576702023081922]), Fq::from_montgomery_limbs([10752810451997705936, 2862464874834320603, 10309748098106940300, 1304236557076849780]), Fq::from_montgomery_limbs([2835871431608154484, 1749514314752450621, 2725234542965358215, 1201694229063035252])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([1073940549267563537, 6847045449574399581, 17756819714770896582, 1117463338790312145]), Fq::from_montgomery_limbs([12704094153865092665, 8539050408973245584, 17734788789994913591, 929238621728331350]), Fq::from_montgomery_limbs([10082772236499648827, 15108304350645714070, 3086595294879967436, 1200387991311725607]), Fq::from_montgomery_limbs([5047622605931054175, 7557906648527048263, 9624095609160422424, 45506591031030909]), Fq::from_montgomery_limbs([6965550813182250949, 565066047981282920, 13462964114732145360, 980356066902323608]), Fq::from_montgomery_limbs([15558299170349086309, 1286346204199469533, 3574858446200038472, 851991524979889708]), Fq::from_montgomery_limbs([7325586067383897002, 10233684635542340023, 17557031856919477181, 132029230490414274])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([7217923862445368663, 3794612520606418012, 8670181285195573375, 240971390392704685]), Fq::from_montgomery_limbs([537441915444801171, 3014981172602304732, 1479722163959615169, 155749091741220885]), Fq::from_montgomery_limbs([13062793399299583557, 1159027774347651884, 2336679478816355142, 270200510125259051]), Fq::from_montgomery_limbs([3831694067573543757, 10964370664526245902, 4087998121879874921, 905965084930019006]), Fq::from_montgomery_limbs([13194259065052094927, 388722439697642959, 178624285496351497, 578824842066706531]), Fq::from_montgomery_limbs([17948259725763227950, 9014484167981796209, 6107081279184176814, 69534426400404264]), Fq::from_montgomery_limbs([7978550262967360739, 7491565367832202367, 4365729291374404994, 1335365781615388178])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([10669459440663038789, 6552676677342008487, 13316372054996453680, 550925049999738916]), Fq::from_montgomery_limbs([4419333495078684322, 6927538080001000341, 2225108594758156053, 1079053614093719540]), Fq::from_montgomery_limbs([1972675078636948291, 12089663092664065043, 17766574022138625521, 121432615644490431]), Fq::from_montgomery_limbs([1053520141057629369, 10770912132989963882, 1148187868111152786, 707938827427743885]), Fq::from_montgomery_limbs([3260322753636284964, 10729835216415125135, 716444025392599556, 690504199610876560]), Fq::from_montgomery_limbs([6934370135811844333, 6301658833825444793, 4848235658034124485, 472091301484588447]), Fq::from_montgomery_limbs([9777643377073268806, 791842489813847254, 12448150674843197239, 458910758561278370])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([15803810666230694733, 17547487450377911929, 11906139405746854533, 825285431509255503]), Fq::from_montgomery_limbs([16600353337473024459, 1886864376737549006, 616311009164692973, 639902607392049032]), Fq::from_montgomery_limbs([1680268521087434801, 1091097160854707765, 18087803601592847532, 572438372434779394]), Fq::from_montgomery_limbs([13425154509660903739, 7155042440442144058, 5484293510771639701, 440694050533320954]), Fq::from_montgomery_limbs([18374411341880395201, 14499066397809595914, 13606711309161552316, 988627169135416549]), Fq::from_montgomery_limbs([2227485226860398923, 6037771840516072237, 10092335873046301438, 263890669231622026]), Fq::from_montgomery_limbs([16396442279804673220, 11758563075897600330, 14728620288909029404, 1009629620490761817])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([17746049445618651584, 15474250106095074477, 6808865525843107141, 252069263355480366]), Fq::from_montgomery_limbs([10094119795803932244, 10978354614679659751, 7451382830965148493, 1131617137883762978]), Fq::from_montgomery_limbs([16463020271793267367, 16484453755363327531, 16299428051085732734, 1215317962997421603]), Fq::from_montgomery_limbs([222141886324808295, 13928396678279854231, 10143359980064533818, 815662865945589973]), Fq::from_montgomery_limbs([12231656940181472813, 6572412520702222123, 12613052303172694748, 266113525618574574]), Fq::from_montgomery_limbs([988110300489242272, 2246797931487708434, 10572926100714461647, 903118853801541805]), Fq::from_montgomery_limbs([530795899436597525, 8521163943052335338, 8151289800410686217, 36252124276088895])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([15950738796712300438, 5211784799364900458, 10872161777257884476, 622500837165264302]), Fq::from_montgomery_limbs([1796299668914971469, 10069069742410689124, 17398930418864211639, 571074796095573997]), Fq::from_montgomery_limbs([17415629526903541572, 60522099572337001, 7357276421993594658, 67139681069623750]), Fq::from_montgomery_limbs([3150476614427182634, 11400695529363767640, 9974085938634932190, 201799321821634924]), Fq::from_montgomery_limbs([17211147489720667761, 15454125189814636772, 1785683860014593630, 1234545901167080662]), Fq::from_montgomery_limbs([12917754021603623789, 10145571812631521550, 5237021007548635344, 113519696768852825]), Fq::from_montgomery_limbs([15503258828146475946, 914788767927389955, 8850539145480636682, 452504293017031100])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([3745554364046936255, 4597306622888789154, 5979651250338667136, 1238385628454513051]), Fq::from_montgomery_limbs([3776630884323931547, 3549782146440747750, 5508785071859620867, 701959603932551327]), Fq::from_montgomery_limbs([15669417982403128442, 4987063011318496848, 2675129774208819610, 752856218864954922]), Fq::from_montgomery_limbs([12384169795306075140, 13266521557806758758, 8976316392650036414, 779369456063978984]), Fq::from_montgomery_limbs([7882432423342926513, 17205292058596297059, 11479846445566224721, 1260089851413577942]), Fq::from_montgomery_limbs([14020835325904272518, 10352766579517264043, 15417820050597494655, 621361945178146722]), Fq::from_montgomery_limbs([17051687952810193326, 6871472877919148363, 3489400199188897362, 687766677359196782])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([17382705588788402853, 4598916697035859633, 4518832565581736311, 653080619696360531]), Fq::from_montgomery_limbs([2250500707327888710, 8472537755265510597, 8234912680399854173, 435433220178846885]), Fq::from_montgomery_limbs([11580178681277497490, 5498607256285409706, 4135785859002967214, 1124489661838811902]), Fq::from_montgomery_limbs([17779714097123614458, 8699423459123996923, 15631484148488778752, 909516986337557641]), Fq::from_montgomery_limbs([18163751795979980990, 11867922209368440763, 10515761459427034219, 1332994349752029313]), Fq::from_montgomery_limbs([6467500727988715108, 9306282235622577642, 13541102366651570877, 416775728642319774]), Fq::from_montgomery_limbs([10383099790322168017, 17058343682036470720, 16556281441888606360, 1108176927190266030])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([8622953880956768188, 7398970229585501839, 3084527402086859984, 1314489003639612227]), Fq::from_montgomery_limbs([2647974631426734642, 3924418247812102940, 4184932287519868312, 1194114797716949792]), Fq::from_montgomery_limbs([14598747211696490139, 10879316167117011549, 9287974170985802960, 731429090606059611]), Fq::from_montgomery_limbs([9444556880219125709, 5586056795682328427, 7367116120983861589, 588219877692556070]), Fq::from_montgomery_limbs([10966009764315859760, 10742608081271307349, 3709772539537310986, 497532886403996414]), Fq::from_montgomery_limbs([15416260817024711436, 431667905910500746, 1387964135713748516, 918060216721194080]), Fq::from_montgomery_limbs([11657403806820742348, 10510065601598889238, 8349835292055724063, 502241567933397208])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([5125027997144123095, 7303165910753964935, 10691796975927186405, 1054799562052499765]), Fq::from_montgomery_limbs([3677058682136778866, 2112392306281972958, 6200265695478657913, 720439016775781556]), Fq::from_montgomery_limbs([8272146025997512256, 10341698166702554611, 15851101317909170235, 452521866559100336]), Fq::from_montgomery_limbs([9968119379746477391, 13931547738079661500, 12809160964499846690, 770440521239403115]), Fq::from_montgomery_limbs([11434415940462413800, 16684667769948280834, 17418898698438354203, 1004769570334088081]), Fq::from_montgomery_limbs([3258653721799542419, 3871032496675885535, 15086212796812657551, 548348409520277973]), Fq::from_montgomery_limbs([9315341100800814485, 16973311177794380607, 9399876472392037546, 371744665007363788])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([13784204593688045203, 987916117600213001, 10766183396659311558, 616603627600417345]), Fq::from_montgomery_limbs([16045652418239566399, 8490486261587787544, 17701136459350400996, 200715104605533295]), Fq::from_montgomery_limbs([16284971980816740279, 8206294557799882679, 2790028614836001157, 1230396046687758171]), Fq::from_montgomery_limbs([9870167375285365220, 7246310481239931900, 17367559916410875637, 828013539220163509]), Fq::from_montgomery_limbs([16072962173730053757, 4193938980038706222, 11164976873168367038, 230857852443905890]), Fq::from_montgomery_limbs([7523323272036182261, 7860098358273104019, 14378442365280097332, 1330897076351403427]), Fq::from_montgomery_limbs([5166916295217303780, 12258429519770930476, 7573997247042435361, 682178487313104306])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([2043764091903620445, 4485903403091863087, 7882707843266586726, 32588602135411527]), Fq::from_montgomery_limbs([15445407966754968040, 18357001192960460653, 4704086230082948769, 786939246434391312]), Fq::from_montgomery_limbs([16117366278228333427, 18271129267524238221, 10279609063883049289, 1039698878929789014]), Fq::from_montgomery_limbs([7187518414442758799, 1779717612181090682, 11702580549115117112, 938810897647106356]), Fq::from_montgomery_limbs([17722222577775244941, 9996465098177475040, 6523413930963943566, 594985722442752339]), Fq::from_montgomery_limbs([14942503613037167587, 18043065733746265056, 18350946329946766564, 456482704506596726]), Fq::from_montgomery_limbs([413913659191909137, 6804960474770818549, 11211569852612831192, 29172099643213194])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([12244020429757927595, 7878431481226438368, 15736494002689538032, 952552586365680365]), Fq::from_montgomery_limbs([6811639335636941408, 13087253934833450042, 14243138544038514009, 802500736974958878]), Fq::from_montgomery_limbs([5119841013779673124, 924763452388520667, 13728889174508658116, 1253763325687067827]), Fq::from_montgomery_limbs([15043507624384025219, 14829641103772380163, 3009461704678867396, 937642236989310683]), Fq::from_montgomery_limbs([11671642017952121222, 16541053200478701290, 1980039776401781944, 588963913112990120]), Fq::from_montgomery_limbs([10584858696775764162, 11016739814752144940, 16324314276275577748, 654922621317102495]), Fq::from_montgomery_limbs([3244897877015736117, 11237789704802235882, 15022173147815144257, 40109243059779922])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([13421818826894964525, 6843121314819036302, 177656756133214759, 1219229288475674852]), Fq::from_montgomery_limbs([6718699512784917601, 586674041776306822, 18334677892276409595, 789222582574373919]), Fq::from_montgomery_limbs([2284827956975526833, 6582209151387402444, 16582912253436322211, 341803586231976372]), Fq::from_montgomery_limbs([7256396544134998118, 8214951682602116321, 3245431556959173874, 1245025275513704302]), Fq::from_montgomery_limbs([15432965983836887543, 14720892157109837025, 15495565877696769481, 28040874075986580]), Fq::from_montgomery_limbs([2845048156588876954, 8511864041625766030, 12227720668782503297, 751125685338714507]), Fq::from_montgomery_limbs([16400929974316258476, 14955948068318960184, 10179371694614714547, 1203413977422071153])]), Matrix::new(7, 1, vec![Fq::from_montgomery_limbs([6945749691605470013, 11814685140591736549, 9661986044853389934, 549110123010799116]), Fq::from_montgomery_limbs([10314852142802128718, 16931011931436831749, 6272554436628472312, 613946066674111963]), Fq::from_montgomery_limbs([7885885393747543748, 6205273416854026781, 3045614234898978712, 325443134576651832]), Fq::from_montgomery_limbs([16340716059032367665, 13900104810468791197, 13840116352417324181, 807825755702914983]), Fq::from_montgomery_limbs([11307065830129329386, 17314979792657924564, 1031027443933101440, 670942943796932032]), Fq::from_montgomery_limbs([16427383528817659047, 269318770779983782, 12646967434416881049, 792232402464509209]), Fq::from_montgomery_limbs([5305513183378836911, 3912518176481377699, 15813014949092997837, 717786010393961950])])], -// }, -// optimized_arc: OptimizedArcMatrix::new(39, 8, vec![Fq::from_montgomery_limbs([17670646277747935280, 16706444459999957760, 7654997937391160943, 659194013361630234]), Fq::from_montgomery_limbs([9306410324956668761, 11918867663968452855, 16159669320449336406, 1027263653273380654]), Fq::from_montgomery_limbs([10424544810878645940, 11533042162917906716, 11405431418950019185, 1181592306684207657]), Fq::from_montgomery_limbs([15511314950168773025, 2706584092620486610, 12589344906057924987, 198949415522711747]), Fq::from_montgomery_limbs([6463242934034011456, 4480775049700236083, 1147244402884869561, 251099301522684222]), Fq::from_montgomery_limbs([6076653156556680739, 6058362204127962922, 2609006430585927072, 1274277644859784421]), Fq::from_montgomery_limbs([4034147285618545471, 16309046946281719379, 11732506942908882170, 1141734761043516350]), Fq::from_montgomery_limbs([15181402120606708665, 769117698742393942, 8000709366545785093, 128042919054960870]), Fq::from_montgomery_limbs([1723632755773767909, 7425611528820224114, 3846361608213771012, 1317157014229771878]), Fq::from_montgomery_limbs([1180004570926588292, 9835115993104089813, 255514544102365106, 370024046994873563]), Fq::from_montgomery_limbs([16507101987459533719, 15603514395660572922, 14849362947260167652, 1094669615299361663]), Fq::from_montgomery_limbs([1641419564627940104, 1734977130266781622, 2359844858057393580, 88569664018692634]), Fq::from_montgomery_limbs([16267328831985402574, 4504129177123355587, 2430336937000039615, 182724946762968945]), Fq::from_montgomery_limbs([17793535158928999608, 5634031392654154747, 10364337635238532583, 1179994829791766723]), Fq::from_montgomery_limbs([145700301814233551, 7743364595931833861, 13600389751414362190, 60896176710147956]), Fq::from_montgomery_limbs([17934232373820563709, 6533845630243602776, 15324676632824344806, 193078344538210235]), Fq::from_montgomery_limbs([3358859423299088468, 11840854300859333122, 8971776175135254558, 1017237487419914281]), Fq::from_montgomery_limbs([16328481477177681368, 1582997519876787207, 5731557971602616313, 498420306800783215]), Fq::from_montgomery_limbs([12526989383108933614, 11731194362815364383, 12171285115754354694, 1149426086446852474]), Fq::from_montgomery_limbs([809732533742229508, 9195963923014534752, 11886583635578374853, 1292532069463172705]), Fq::from_montgomery_limbs([15459398930996981001, 17972537529111616674, 6256384561719931081, 1099908904421687269]), Fq::from_montgomery_limbs([6194631511262826563, 5980361634035332899, 6132585703186883039, 1343152289862207638]), Fq::from_montgomery_limbs([13704532277655419198, 9493963458736770267, 12653804519172949169, 218428805830292650]), Fq::from_montgomery_limbs([8013496787819495990, 18081394694809078101, 14689354188530395484, 215594972753885108]), Fq::from_montgomery_limbs([1765918642197202432, 14609627278749496598, 17838479232731490790, 483435431183692300]), Fq::from_montgomery_limbs([16887594024800193480, 1328476430727273505, 17409984215868190656, 1068059229250495642]), Fq::from_montgomery_limbs([15487315671093445122, 4028755842123792652, 14118515559434131307, 600004660835889583]), Fq::from_montgomery_limbs([13620558349664282044, 9072735252525972202, 312787852320488038, 47231029883010665]), Fq::from_montgomery_limbs([9895950479699930991, 1320083262020086701, 9381389112858508819, 928504768072893822]), Fq::from_montgomery_limbs([10747871248019763953, 4479404654791651748, 11550770912037988700, 438216942461032792]), Fq::from_montgomery_limbs([18385142532667962947, 12272398000439779637, 7461987138462771945, 558726769125714997]), Fq::from_montgomery_limbs([14139485618053732983, 8348792317702713313, 367233286875102863, 186067690854023043]), Fq::from_montgomery_limbs([9041249832633195933, 456527929350696070, 3136123267563166118, 862425036609816636]), Fq::from_montgomery_limbs([15124489565605096262, 9591776999407651202, 9949743867591863836, 379301809986101293]), Fq::from_montgomery_limbs([7936212225265692567, 5167873242552786141, 15086007892632579186, 34123317109097916]), Fq::from_montgomery_limbs([11979204740795107684, 9025639229793397244, 5413420333413553932, 863248811490344887]), Fq::from_montgomery_limbs([9695363700834200933, 8045139581671731368, 11369126945536873679, 469549910005852030]), Fq::from_montgomery_limbs([16001389245048329705, 14343919283544642008, 8770282828186128872, 609282374273682689]), Fq::from_montgomery_limbs([3823216797063303082, 1094417965873836739, 128140664081656267, 505393735803371332]), Fq::from_montgomery_limbs([11607694328136514560, 15466463320091898450, 1284330480161723488, 523170093647820661]), Fq::from_montgomery_limbs([6591976781647884526, 13155313999173994351, 5534892153549946238, 596288575025257402]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11245287468508932221, 6475072057356916286, 8955917100198612964, 906270931915685321]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15725649958168108419, 4885330408482380508, 6484207300414290657, 1056573086606426860]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16437212199268506264, 15424576221688158299, 13027006101536779850, 608117920425829987]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17697959731033747413, 881277620659586097, 12999020138550792084, 218994748484938916]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12187347033384567067, 17834331425991885966, 8111171543195993305, 1237278747760332198]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11540996079264122621, 2083205448185058166, 346303233664255773, 67570065514985214]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10393932313960189738, 17658417030509504989, 4494310414388827903, 1083916009420136201]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2630959439345449795, 1305013099304121044, 14958893064556663587, 502133670161114876]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13496177055604370316, 12107925075218853848, 10893831346139387200, 735686689798442157]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12364352345596204590, 12473718848164928984, 2425158662567034925, 904357473540167435]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14250114029266561642, 9657963390342822389, 16617255202449702017, 52229193358824331]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3393942568576243306, 15201405507578251139, 6434177138638406256, 116816845492109945]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14360127524315233155, 4631991403443744392, 10826720762323261633, 1154614674523717146]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14829610837565210361, 7693159893394777397, 13277623225200387185, 263905793180518944]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4366690825327685189, 15770582084981330795, 9277162666554299542, 1073180600510589318]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16303997479448678802, 7666294877889688289, 2209941188570371640, 1162514781528013202]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1444309609555002006, 10573827461364748619, 2213854418060563275, 401298293463815465]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13603143649902644173, 267673648604347469, 14770735498081352270, 897064240488864979]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8455439882916778200, 7244379144226653693, 4901050804550540073, 742531378918583129]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9638569098999723413, 8668710516732565855, 12439587172429553092, 769864205315111320]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10577866480500504509, 15180092538013446632, 5047010252898418108, 950851917894966177]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3189260863075829869, 10864458126965265163, 3908173847970795616, 372196369105917792]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2051981355439501951, 5174689290614735930, 13076787589476369050, 248791600711156417]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18083408695123027967, 12620252496424532716, 15225720090085185173, 1087409511851215366]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1151518846415312778, 2617847070972026268, 11920538756871768189, 372494371299109617]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8129021687746030207, 5089594247705352277, 13404536729495455227, 996268291797137887]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9082481642086184012, 16123562957232930427, 113453873016526172, 1171240835007212511]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9619017927874739465, 12861346968534199922, 6474341695138246789, 329774666529093679]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4828844673239990367, 9237140426585666270, 4472429349292670700, 1211740921942321738]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6374588877936433558, 11607665174546753642, 15847675340170713041, 474145143590361300]), Fq::from_montgomery_limbs([4088002413776997222, 16030858922743461837, 4313473177343544055, 817302900123673764]), Fq::from_montgomery_limbs([18216186189548814543, 5687648301273358200, 6564098766262925833, 235647764529877689]), Fq::from_montgomery_limbs([1421650618584051851, 9669410210003093316, 15430467067773365518, 994269415526604309]), Fq::from_montgomery_limbs([7574559796775011993, 9643962694113220666, 1013275434882478619, 543427156325963008]), Fq::from_montgomery_limbs([4532353768594877907, 2433286855157726742, 15167390808651362948, 914159030044677082]), Fq::from_montgomery_limbs([14155199821083030453, 3642619697360819367, 7765405773737076472, 1202115259646869817]), Fq::from_montgomery_limbs([16335533268534142579, 4358492749042076660, 16385044626223358243, 847268434257421024]), Fq::from_montgomery_limbs([726136436292617217, 4735276118883290434, 6495677390337301519, 1007951275499954400]), Fq::from_montgomery_limbs([1441892049918589996, 16125120862288806381, 5244917656153261337, 108755599353706277]), Fq::from_montgomery_limbs([9330223445766086137, 9406197553353640417, 13281468059023600014, 500503138812404763]), Fq::from_montgomery_limbs([5355456155777194776, 15418542913049291849, 7681885321566295504, 1188094463923126996]), Fq::from_montgomery_limbs([11882193142358058793, 4624069509548102427, 6735235437551193554, 962114122876706035]), Fq::from_montgomery_limbs([1819083831857771980, 8349663267034291058, 14403983179525206765, 942284040773068417]), Fq::from_montgomery_limbs([7024062436534453440, 15203692147142724388, 17082973923084045231, 1191890185052815108]), Fq::from_montgomery_limbs([6672719206476059341, 18362672287252020084, 3555226216430454216, 300718449399370145]), Fq::from_montgomery_limbs([5828458911011841758, 9271852277477872143, 18378348640149073615, 591074353691784318]), Fq::from_montgomery_limbs([15397757499179479361, 1878199828613873660, 4164621900891789384, 558990401377082502]), Fq::from_montgomery_limbs([11069496558892348093, 10253211614498485032, 11458203419889384673, 575447664584685933]), Fq::from_montgomery_limbs([9808353214047792416, 4805184465312945639, 3985871967202506787, 1229730183276593449]), Fq::from_montgomery_limbs([8420435996312062450, 11100705514596499443, 1523101111273631766, 639557004587150270]), Fq::from_montgomery_limbs([15630012259368829028, 15079774099427294323, 16765804689810369633, 834886070512612798]), Fq::from_montgomery_limbs([2000344807995355152, 8654391083188520616, 13301563010992444431, 490951127405891771]), Fq::from_montgomery_limbs([11761875542266860374, 709339183471929228, 17682621289319303167, 570040706396372700]), Fq::from_montgomery_limbs([3366481512891059038, 12720609556939839584, 1707138651265172645, 36940608792331559]), Fq::from_montgomery_limbs([2427334396528044490, 10170194639028880515, 18243990154741074229, 607502491270396977]), Fq::from_montgomery_limbs([6267947100515031640, 14520122887125811439, 6695614471931546770, 251319533602819784]), Fq::from_montgomery_limbs([7663026857490478572, 15777701966597798170, 10617198553182548195, 642318201966621785]), Fq::from_montgomery_limbs([9959998770754152632, 13119241263216166622, 6328810982306793729, 571460896430554998]), Fq::from_montgomery_limbs([12042605027273090048, 14859482580111939906, 11509134713697889199, 561895216440235106]), Fq::from_montgomery_limbs([1156916933025613310, 4529329408550568088, 14286907616576238972, 1309540780962817079]), Fq::from_montgomery_limbs([7510365353910652337, 14538991928012962248, 4644117500717216624, 1340316749461135700])]), -// } -// } +pub mod rate_7; diff --git a/poseidon377/src/params/rate_7.rs b/poseidon377/src/params/rate_7.rs new file mode 100644 index 0000000..e673724 --- /dev/null +++ b/poseidon377/src/params/rate_7.rs @@ -0,0 +1,31 @@ +use decaf377::Fq; +use poseidon_parameters::v1::{ + Alpha, ArcMatrix, Matrix, MdsMatrix, OptimizedArcMatrix, OptimizedMdsMatrices, + PoseidonParameters, RoundNumbers, SquareMatrix, +}; + + +/// Parameters for the rate-7 instance of Poseidon. +pub const fn rate_7() -> PoseidonParameters<8, 7, 64, 49, 39, 8, 312, 31> { + PoseidonParameters { + M: 128, + arc: ArcMatrix::<39, 8, 312>::new_from_known([Fq::from_montgomery_limbs([17670646277747935280, 16706444459999957760, 7654997937391160943, 659194013361630234]), Fq::from_montgomery_limbs([9306410324956668761, 11918867663968452855, 16159669320449336406, 1027263653273380654]), Fq::from_montgomery_limbs([10424544810878645940, 11533042162917906716, 11405431418950019185, 1181592306684207657]), Fq::from_montgomery_limbs([15511314950168773025, 2706584092620486610, 12589344906057924987, 198949415522711747]), Fq::from_montgomery_limbs([6463242934034011456, 4480775049700236083, 1147244402884869561, 251099301522684222]), Fq::from_montgomery_limbs([6076653156556680739, 6058362204127962922, 2609006430585927072, 1274277644859784421]), Fq::from_montgomery_limbs([4034147285618545471, 16309046946281719379, 11732506942908882170, 1141734761043516350]), Fq::from_montgomery_limbs([15181402120606708665, 769117698742393942, 8000709366545785093, 128042919054960870]), Fq::from_montgomery_limbs([1723632755773767909, 7425611528820224114, 3846361608213771012, 1317157014229771878]), Fq::from_montgomery_limbs([1180004570926588292, 9835115993104089813, 255514544102365106, 370024046994873563]), Fq::from_montgomery_limbs([16507101987459533719, 15603514395660572922, 14849362947260167652, 1094669615299361663]), Fq::from_montgomery_limbs([1641419564627940104, 1734977130266781622, 2359844858057393580, 88569664018692634]), Fq::from_montgomery_limbs([16267328831985402574, 4504129177123355587, 2430336937000039615, 182724946762968945]), Fq::from_montgomery_limbs([17793535158928999608, 5634031392654154747, 10364337635238532583, 1179994829791766723]), Fq::from_montgomery_limbs([145700301814233551, 7743364595931833861, 13600389751414362190, 60896176710147956]), Fq::from_montgomery_limbs([17934232373820563709, 6533845630243602776, 15324676632824344806, 193078344538210235]), Fq::from_montgomery_limbs([3358859423299088468, 11840854300859333122, 8971776175135254558, 1017237487419914281]), Fq::from_montgomery_limbs([16328481477177681368, 1582997519876787207, 5731557971602616313, 498420306800783215]), Fq::from_montgomery_limbs([12526989383108933614, 11731194362815364383, 12171285115754354694, 1149426086446852474]), Fq::from_montgomery_limbs([809732533742229508, 9195963923014534752, 11886583635578374853, 1292532069463172705]), Fq::from_montgomery_limbs([15459398930996981001, 17972537529111616674, 6256384561719931081, 1099908904421687269]), Fq::from_montgomery_limbs([6194631511262826563, 5980361634035332899, 6132585703186883039, 1343152289862207638]), Fq::from_montgomery_limbs([13704532277655419198, 9493963458736770267, 12653804519172949169, 218428805830292650]), Fq::from_montgomery_limbs([8013496787819495990, 18081394694809078101, 14689354188530395484, 215594972753885108]), Fq::from_montgomery_limbs([1765918642197202432, 14609627278749496598, 17838479232731490790, 483435431183692300]), Fq::from_montgomery_limbs([16887594024800193480, 1328476430727273505, 17409984215868190656, 1068059229250495642]), Fq::from_montgomery_limbs([15487315671093445122, 4028755842123792652, 14118515559434131307, 600004660835889583]), Fq::from_montgomery_limbs([13620558349664282044, 9072735252525972202, 312787852320488038, 47231029883010665]), Fq::from_montgomery_limbs([9895950479699930991, 1320083262020086701, 9381389112858508819, 928504768072893822]), Fq::from_montgomery_limbs([10747871248019763953, 4479404654791651748, 11550770912037988700, 438216942461032792]), Fq::from_montgomery_limbs([18385142532667962947, 12272398000439779637, 7461987138462771945, 558726769125714997]), Fq::from_montgomery_limbs([14139485618053732983, 8348792317702713313, 367233286875102863, 186067690854023043]), Fq::from_montgomery_limbs([9041249832633195933, 456527929350696070, 3136123267563166118, 862425036609816636]), Fq::from_montgomery_limbs([9876321727332632023, 772451632218152169, 2580763841740601079, 1142028710995573927]), Fq::from_montgomery_limbs([10533796008132988682, 170935373731786369, 14423133339980810247, 95055508444762275]), Fq::from_montgomery_limbs([4649364153559136229, 7934671244579715116, 1725602943667409585, 43552745816587563]), Fq::from_montgomery_limbs([8961999013353095080, 2142418418315880644, 4123910506434734507, 397827113331247074]), Fq::from_montgomery_limbs([2830645454593024582, 16129482998540180384, 14637878185709838570, 838139034347032562]), Fq::from_montgomery_limbs([12946263415316598300, 14878150584739579253, 16849157713730765625, 1119287030817500036]), Fq::from_montgomery_limbs([15997726492611173881, 1184045769764515709, 17570821640390521168, 1030525166811213785]), Fq::from_montgomery_limbs([4265559081433102256, 11769099699992876903, 10631998596214553362, 629920260964559213]), Fq::from_montgomery_limbs([5157337023141684195, 9558723136849813533, 17067637485396248185, 1292601583198374157]), Fq::from_montgomery_limbs([11353399385134117629, 2171806967430036166, 13097746482717663094, 586742781877852644]), Fq::from_montgomery_limbs([1069667428899547423, 10788650400324959681, 5252327185070245031, 819088289991387988]), Fq::from_montgomery_limbs([4718192935689796196, 936436242961860243, 3017815728777383941, 780298204568547665]), Fq::from_montgomery_limbs([4440526970403334531, 4424298208172375576, 10234579833526167822, 505023592953711511]), Fq::from_montgomery_limbs([4918322558939638760, 9690520639912900881, 5542814067313497246, 380973540266134644]), Fq::from_montgomery_limbs([9286878702031291355, 4012311069843170007, 618344267270697646, 472052248696324346]), Fq::from_montgomery_limbs([5515965792241216655, 12550695208348294011, 659754676577929048, 656440060717186789]), Fq::from_montgomery_limbs([8831501139794786744, 7594112778983174926, 8104526671183916999, 495730236370502114]), Fq::from_montgomery_limbs([17540013351656383980, 526615498448493498, 1434949581303472569, 432295170184586654]), Fq::from_montgomery_limbs([16852826829533863229, 16646101864172251902, 17632936959873614814, 109658534507710529]), Fq::from_montgomery_limbs([10636456498263271254, 15109124910717906315, 11668474560270048234, 1296049032043861262]), Fq::from_montgomery_limbs([12825075668663632434, 5819798153387583193, 4880455503263027836, 801173774991292287]), Fq::from_montgomery_limbs([14486651003108579603, 2482031833299980317, 11187840813488772056, 509321777815437929]), Fq::from_montgomery_limbs([8118974380261220505, 16461246043293688641, 13082662763745388975, 1038588716762883494]), Fq::from_montgomery_limbs([5731200332460900228, 8786620433378472829, 13932094144651464518, 488785602167183804]), Fq::from_montgomery_limbs([10524031539917302527, 10788579146719387781, 2127880595616407095, 1059950077979303833]), Fq::from_montgomery_limbs([5949937211870070822, 4596156438811326001, 16863220530278231284, 1206526762260473240]), Fq::from_montgomery_limbs([8254843496528701475, 16430360916832531565, 7205448801338782124, 446338536784822815]), Fq::from_montgomery_limbs([289840651692288450, 17201836854477413895, 13970461968236180401, 1087853954070862964]), Fq::from_montgomery_limbs([580513008010762079, 829478851231913782, 10526131895320013439, 288889415938637383]), Fq::from_montgomery_limbs([9443502181797148323, 7700433399763019139, 6523170715391691579, 690320529397890241]), Fq::from_montgomery_limbs([17385565262285073596, 5652729129833809825, 5754846028854174174, 644301327458204078]), Fq::from_montgomery_limbs([10591125214113881524, 9225725266018596826, 9355747915664481308, 776410040105357079]), Fq::from_montgomery_limbs([9691894789652129853, 14667119801492707274, 4616580392236285481, 911862737929211265]), Fq::from_montgomery_limbs([5328612994946451300, 11901467171940119902, 12066779857870668281, 563430691473174027]), Fq::from_montgomery_limbs([5440290565189005724, 907133565222704805, 17434239031512456810, 1307317854813232623]), Fq::from_montgomery_limbs([1968218328054856894, 2870644718005301826, 11704111566790320318, 859557807871195562]), Fq::from_montgomery_limbs([9665243622030788996, 3894043111862548693, 8651495608452602974, 196890012228714384]), Fq::from_montgomery_limbs([1811318098116764117, 13655150694370398684, 6815946900059011917, 290581066009768770]), Fq::from_montgomery_limbs([5291662797603414486, 9976505778352937130, 18094101094996988099, 1244544548315716916]), Fq::from_montgomery_limbs([9550922411414470754, 2559237915370255061, 4289970449795683516, 700825515431345401]), Fq::from_montgomery_limbs([2966982422777393142, 3218865522692669697, 18384778728203892883, 1101167759984396250]), Fq::from_montgomery_limbs([2248950665261207727, 17785118295943931326, 17515375671127827105, 271356461720641826]), Fq::from_montgomery_limbs([2914870987885463507, 10687584786677185088, 9928447420467895555, 897829002169041990]), Fq::from_montgomery_limbs([9461028554882623448, 3241431013683194658, 4200859715375860214, 247909540912074667]), Fq::from_montgomery_limbs([9484762440333250094, 9154823463484785662, 5077140138132238606, 1217948890232839466]), Fq::from_montgomery_limbs([1721708237225335663, 6589142598549247219, 16963982649759394752, 1325370920515859453]), Fq::from_montgomery_limbs([1581154353773201694, 8859491775898173368, 3478556371389172479, 761951195116054505]), Fq::from_montgomery_limbs([5414431534772354985, 5784939336020461618, 8193906688438115902, 619056837793590578]), Fq::from_montgomery_limbs([5158566907177787182, 510437656260968539, 18375886464296814687, 496771913288779260]), Fq::from_montgomery_limbs([646494282535877757, 12737151480704198413, 5471421123526354063, 634833038935883700]), Fq::from_montgomery_limbs([16181443408673327918, 1926257882480036072, 190463000805340911, 725721205978748339]), Fq::from_montgomery_limbs([7167760716023892074, 5428322849307462840, 14114178188915343377, 442277493806724508]), Fq::from_montgomery_limbs([9842757490151171477, 12090204626601182995, 4235533359914016519, 235018089373226021]), Fq::from_montgomery_limbs([689571657822682190, 10120322490102263749, 15349544629296264734, 879110129942909963]), Fq::from_montgomery_limbs([10848673159730542826, 4254896082380917657, 7095278498028251644, 1283578418017245899]), Fq::from_montgomery_limbs([11397620827145756612, 12197349421718102268, 667097273385403287, 776832025612247811]), Fq::from_montgomery_limbs([9536830619644896323, 4636833749605880653, 12285714887794138165, 1202400709127503383]), Fq::from_montgomery_limbs([12430146514789240945, 4526156431412134307, 513622053209881149, 214778917602192418]), Fq::from_montgomery_limbs([6167098201419516498, 3154640343084703344, 14434779005902723423, 733632272342828673]), Fq::from_montgomery_limbs([18346541912745902187, 17556217100268103816, 14141252440750669936, 569875244889036285]), Fq::from_montgomery_limbs([15618469611711155008, 8545147381062171474, 13019086273197685281, 567609712932306745]), Fq::from_montgomery_limbs([10102215164832802529, 12690048864743685174, 5165853392556586922, 270489738300122432]), Fq::from_montgomery_limbs([11927164480530891201, 14108489374813791633, 13017388607106060581, 850938729783185225]), Fq::from_montgomery_limbs([17624557745440616873, 2058796150101806399, 3985511902134676603, 388277619947822053]), Fq::from_montgomery_limbs([2514382380191783963, 14675210002114941075, 17998140577033030519, 386023351355332372]), Fq::from_montgomery_limbs([10528288814462561256, 8933204649364546390, 14874592129223984742, 399487853473549061]), Fq::from_montgomery_limbs([5664751596212948671, 6514969831451331945, 12061422083014489160, 933043664098111606]), Fq::from_montgomery_limbs([12225851766128513711, 17952953998987374262, 13430826736801915124, 1339971583679078644]), Fq::from_montgomery_limbs([1845651887319106020, 6930431492749731513, 10484176960040080733, 1170790578042537798]), Fq::from_montgomery_limbs([6348862923042548556, 1486875087558341712, 4194544242438091841, 78164005256144789]), Fq::from_montgomery_limbs([14692463016290478473, 9329360702930196569, 1183214256895952754, 471672221434976115]), Fq::from_montgomery_limbs([12425146353419210200, 11291312622557382836, 17924529967710695385, 316781213195510748]), Fq::from_montgomery_limbs([18081335327542674793, 17730828508504228247, 15095343772187852738, 496240897850542584]), Fq::from_montgomery_limbs([6906018396868182531, 7580743900120262926, 1967444667836204859, 273417108766582414]), Fq::from_montgomery_limbs([16469004144906175061, 6719414013547880652, 7667039018964612703, 450462562192687741]), Fq::from_montgomery_limbs([3699459642673757801, 8364096682669340023, 10547343127916338322, 1039413061935527341]), Fq::from_montgomery_limbs([2771106982987870684, 8573563587841378420, 1206719325810700776, 143426260059118164]), Fq::from_montgomery_limbs([4238031571774841747, 10683460310325108305, 10841990503446643706, 1301654934696530594]), Fq::from_montgomery_limbs([5203929344429628388, 16885411007452841607, 17902872474369879449, 255936061345264752]), Fq::from_montgomery_limbs([16419947603551223738, 15661157019396954707, 3821221238374718246, 416126177086460787]), Fq::from_montgomery_limbs([16922553208005265111, 16360160113507055509, 536165461233550481, 608549986932555649]), Fq::from_montgomery_limbs([3592206260685120065, 1954831133507660101, 5600597071609130865, 213648140091026624]), Fq::from_montgomery_limbs([6516082392033585373, 13946838009919256327, 6452501836291584617, 506431739097044218]), Fq::from_montgomery_limbs([5518181572807062513, 292110089321494827, 8886174429861609032, 814625545290394060]), Fq::from_montgomery_limbs([12610347423199665749, 17943367344775386000, 17093121972053566454, 556259058966026962]), Fq::from_montgomery_limbs([5583294814190562448, 18088402493981602497, 15928392856949829098, 901622636021551608]), Fq::from_montgomery_limbs([16249951298748852814, 6111361788233877783, 12919350091432296884, 721226010556420107]), Fq::from_montgomery_limbs([2218172102857239703, 2329323851667514953, 6784983166719863241, 993993486987443276]), Fq::from_montgomery_limbs([14394544906593037198, 15461851001194987466, 12193473059473668298, 358314776306336360]), Fq::from_montgomery_limbs([2603326905829233946, 16916036572436423298, 5790056800663566282, 1283614572025968285]), Fq::from_montgomery_limbs([5913046777942823275, 8211910935104269782, 17190335617208567380, 38682663530408751]), Fq::from_montgomery_limbs([6279799617741999852, 2368459429864835947, 13817854282822876412, 857599403523844060]), Fq::from_montgomery_limbs([13513221728804468015, 11648472211124988287, 16337147311151149281, 1213356362315889859]), Fq::from_montgomery_limbs([6735193215800666100, 13415126246050738636, 6546772491702052570, 864959054725113379]), Fq::from_montgomery_limbs([13946560916675101048, 1305536234013471373, 1996487601117501987, 6637280482434640]), Fq::from_montgomery_limbs([17986217868852303932, 266126649469053928, 4699823734038470617, 1235954369265597233]), Fq::from_montgomery_limbs([9706578390759094801, 4557052655228011544, 6501501161504104166, 300118669717388750]), Fq::from_montgomery_limbs([17271021878237926614, 16508898608489641541, 2510098231880106517, 1253549827753884905]), Fq::from_montgomery_limbs([16081696380667951121, 12546061674505954303, 3027939816911481659, 1326122367352440135]), Fq::from_montgomery_limbs([8750820783999769857, 14131264523532409831, 11860451755197446498, 745462829225755593]), Fq::from_montgomery_limbs([7819519394598054633, 7533208822188068621, 3889432398222336031, 176964346604581200]), Fq::from_montgomery_limbs([13626588278396502750, 15706390030365469804, 12311149232441048374, 610208895283453621]), Fq::from_montgomery_limbs([11094868539621714049, 1330865564750703444, 8208579708506329523, 1146297945936422016]), Fq::from_montgomery_limbs([7814348133249287361, 6078857359953567878, 15411726589694581351, 1299224180894534955]), Fq::from_montgomery_limbs([8835381130778819320, 134779635200388096, 15334224426829348450, 785788572858947262]), Fq::from_montgomery_limbs([16203055023538295629, 13066812413033753111, 13966479479457537321, 675899367132765792]), Fq::from_montgomery_limbs([8545027219899966991, 6186973227993574577, 3038538378161392821, 535103590192673792]), Fq::from_montgomery_limbs([3360320054957481727, 34336684756912399, 3413779266271394009, 764051173981439036]), Fq::from_montgomery_limbs([293023250682873552, 7322391841105288851, 198244575944514326, 656738111777844461]), Fq::from_montgomery_limbs([18423107368729444354, 5597408372052789576, 7207721424788749840, 943687777186537434]), Fq::from_montgomery_limbs([13170086198505174331, 15859783812716989104, 5301807370963313339, 799729083241888205]), Fq::from_montgomery_limbs([17279707292509004232, 10595487011792355137, 12602364184919926920, 311754230366163159]), Fq::from_montgomery_limbs([8130970296785420178, 2169620052609587269, 1837093242073059498, 276242467334991300]), Fq::from_montgomery_limbs([15139243365203952649, 4858541150918282204, 1228673366499097007, 1293322423335373790]), Fq::from_montgomery_limbs([15413937563393284083, 365038001085082591, 11386425434875288889, 291771874675930828]), Fq::from_montgomery_limbs([3865668766578896210, 14190581838784817460, 2274316418059288551, 870991438678094683]), Fq::from_montgomery_limbs([9571157470530489958, 4980823355121973943, 5333320516499456270, 770038796278147152]), Fq::from_montgomery_limbs([16981726629451591296, 5326474426552210602, 1524717641929835760, 219842939123356623]), Fq::from_montgomery_limbs([16039208901368659229, 5184640515669419530, 3080932410472693273, 510043620105971072]), Fq::from_montgomery_limbs([10111763974722315511, 8329709076294929314, 16998679271562967459, 574065224827752177]), Fq::from_montgomery_limbs([8462560254681779659, 10954941970268851750, 14488455499782134046, 963141804021766550]), Fq::from_montgomery_limbs([8265856446621399759, 16247707484341474163, 12400770599134010433, 771647552338284605]), Fq::from_montgomery_limbs([5671942973524499, 18330128788177211715, 4789615159654137053, 622759709526318785]), Fq::from_montgomery_limbs([17479950722059179918, 7049818057003906554, 10084589816123170899, 1193808990238611595]), Fq::from_montgomery_limbs([896116343457540936, 2638281787069340966, 3380620512921535857, 36644632120836151]), Fq::from_montgomery_limbs([2322146546165600970, 271027138366968218, 7162645116150464142, 441026262100973114]), Fq::from_montgomery_limbs([11627404673587174924, 1016523621299971825, 8777376750651265173, 904797647346869914]), Fq::from_montgomery_limbs([2336599983193427372, 18294536733010623722, 1910254562936909612, 288459876244919538]), Fq::from_montgomery_limbs([10866222389981094234, 12754738301243938778, 2023962300189713384, 841827876240589471]), Fq::from_montgomery_limbs([12337869057490259818, 9301235609521246009, 16444168617638171143, 1108049112276481315]), Fq::from_montgomery_limbs([18388904709130326983, 14432270782760350172, 5671872767281599553, 996264049295637410]), Fq::from_montgomery_limbs([2918495984421967960, 15152292474410287951, 16695048790099726675, 206789987868447903]), Fq::from_montgomery_limbs([6798036226759712530, 2524547494567206246, 343094056066178021, 1079202981664139204]), Fq::from_montgomery_limbs([283923512386736187, 6373209277312452652, 11471152742161283191, 352597911054493754]), Fq::from_montgomery_limbs([18344480346791250887, 6055456955702765744, 13357935878541036141, 1170362631105533341]), Fq::from_montgomery_limbs([17978397370482672109, 5066451535613649009, 14053101851847429570, 384003300586620459]), Fq::from_montgomery_limbs([6537240767762022960, 15287887514003130639, 13714824082467376651, 325998042020099848]), Fq::from_montgomery_limbs([4220213521712332659, 17903257264224768614, 14353077305493411978, 1217616808421443849]), Fq::from_montgomery_limbs([6303107750424964008, 10553099269256611636, 5652309430855981542, 809187312341384962]), Fq::from_montgomery_limbs([1467640326258074734, 9958994673877282208, 948807165231437865, 847979042319462524]), Fq::from_montgomery_limbs([14465965197425638820, 1065990778266164589, 2272519010377842609, 171604326652711548]), Fq::from_montgomery_limbs([16535399098764373288, 6722849851726415551, 12327525818310696665, 617153762162922214]), Fq::from_montgomery_limbs([16271640629055517264, 6432350282845335097, 8618264300933865260, 264879473167088472]), Fq::from_montgomery_limbs([9343764438142603568, 4076892716460943411, 4516415268764304436, 15742193002987304]), Fq::from_montgomery_limbs([11522515971258098144, 3066993658503053898, 17512877804099724909, 611356418591586870]), Fq::from_montgomery_limbs([4963578364552643616, 6202702392079615379, 7168882355307838637, 299344600077925413]), Fq::from_montgomery_limbs([14129405866465653759, 354882826696964962, 9660427351909071801, 291149128932052640]), Fq::from_montgomery_limbs([6569686896435195187, 1896994952028172314, 2117936942259387423, 1226223740596210813]), Fq::from_montgomery_limbs([8136826296150976656, 5114560834461259857, 12698438831882127582, 1064812274674793315]), Fq::from_montgomery_limbs([5204762908686848050, 18170247715344035008, 10079839806977450219, 1015117163163578828]), Fq::from_montgomery_limbs([1971186989634095352, 5677558375626169162, 3790083583317699341, 158130166070339790]), Fq::from_montgomery_limbs([9180297996268451616, 10521870846784715198, 11257197750166742798, 1008680790543022462]), Fq::from_montgomery_limbs([15102432377621017232, 824737829862625480, 15733286904587679385, 359217550415334382]), Fq::from_montgomery_limbs([4981259850785194804, 15036275071388584091, 17758791361697138722, 236481669158055589]), Fq::from_montgomery_limbs([3901233362525026592, 12813965168957277386, 5314390603519503713, 998031094116574634]), Fq::from_montgomery_limbs([4078498358432220507, 12075726151602811779, 5342542781210762674, 21775695708843112]), Fq::from_montgomery_limbs([13735056988005095110, 9135371967743228564, 6185376342737833602, 666002395605514749]), Fq::from_montgomery_limbs([18046228494581227779, 8202114407403963695, 4947702695068466084, 788320793950394154]), Fq::from_montgomery_limbs([7218302974216051660, 3228464294576983613, 6671727537595126477, 173754647728010839]), Fq::from_montgomery_limbs([7621257321835633802, 8049874917307223403, 9478314901912088133, 870251875807451739]), Fq::from_montgomery_limbs([5044996355847148919, 273615366352511195, 4942152417670343549, 199398188932346157]), Fq::from_montgomery_limbs([2595093843514271275, 1154391123098543540, 4985894556505531500, 854386142979270925]), Fq::from_montgomery_limbs([12759949881257920813, 1010457605698465717, 5217636609151955807, 817084911938507107]), Fq::from_montgomery_limbs([5979737281050353100, 3539786440569025402, 14471457140846241143, 907982120351578122]), Fq::from_montgomery_limbs([16416626656337038566, 752298127295719085, 866476478245896231, 830777061413161901]), Fq::from_montgomery_limbs([17284526810241082338, 13213233959887135278, 2713075662623866960, 1171532591409183723]), Fq::from_montgomery_limbs([8064354122312926171, 4789249084747322790, 9919523931750221465, 419197152698850604]), Fq::from_montgomery_limbs([16629353489243762868, 11598883503129680580, 278636461422073174, 1203042448092989642]), Fq::from_montgomery_limbs([16545356932968522584, 10146757853340947518, 2437689509695855762, 464048598784979390]), Fq::from_montgomery_limbs([5331959515776232924, 3487514764868921659, 5860818581382620461, 167831223077979532]), Fq::from_montgomery_limbs([2682933818861368295, 7444683236761914337, 2283469126638096803, 272174229926312669]), Fq::from_montgomery_limbs([5483054922977937779, 318986619952765070, 4791617305206485237, 1275035358174361434]), Fq::from_montgomery_limbs([4586602402683656583, 11875566498302421311, 560651239278356123, 130789238180500900]), Fq::from_montgomery_limbs([13475546304629005641, 1809680849885580336, 6148758205685753344, 1015272727127650918]), Fq::from_montgomery_limbs([18199016777093209980, 5614538780880978862, 14532750892253808663, 1120673202287670548]), Fq::from_montgomery_limbs([7979559541587633926, 1549411440381912045, 13170209322716529702, 561270408065407020]), Fq::from_montgomery_limbs([15279595015844449808, 17853680372412830934, 12690878740975697658, 190806245751470341]), Fq::from_montgomery_limbs([1933135302920649522, 2329259343686385217, 5986214093116711712, 437917490927487372]), Fq::from_montgomery_limbs([12529279623600953551, 4004103524068207361, 17383023741426003338, 13318527301206951]), Fq::from_montgomery_limbs([18009701980761163605, 4547817745757475315, 17631087904948254977, 246989508356009632]), Fq::from_montgomery_limbs([14234349688403493927, 2241500746438474640, 1648115951043925356, 529436668472805988]), Fq::from_montgomery_limbs([14111082894836574658, 4098316701848925924, 3720696502600521690, 977251546365326678]), Fq::from_montgomery_limbs([2443616537395128437, 13678987928408466225, 16807254711436855033, 601335544571650468]), Fq::from_montgomery_limbs([12969308795370128797, 1532941629572075493, 9106717660115400778, 1089446992863060197]), Fq::from_montgomery_limbs([16646776755234291239, 15128084475268734564, 11393204553412007553, 838617701679652479]), Fq::from_montgomery_limbs([13260373450845806376, 13305876398081489975, 15328643090518932448, 818860400916977295]), Fq::from_montgomery_limbs([17906146044330204615, 17863342707079833111, 13022629852534083638, 1328181038047481506]), Fq::from_montgomery_limbs([10820137181908478766, 5520339361329099025, 6461544718626485262, 866252272778375002]), Fq::from_montgomery_limbs([14688227483907802311, 2519702212313051686, 8103674382557125023, 689198778502256390]), Fq::from_montgomery_limbs([4422411727383004887, 38494189414052956, 7231885838058987299, 306462357471198280]), Fq::from_montgomery_limbs([8147364543363235664, 5966406127022341654, 9906078756256022488, 1154653879133001463]), Fq::from_montgomery_limbs([17616667317393619629, 8830117592103096180, 10242736408532701810, 367000561528732856]), Fq::from_montgomery_limbs([9905329343001728010, 254719974105054165, 11980601159747742583, 1280526116709693810]), Fq::from_montgomery_limbs([6868659545386222523, 8844781874090119286, 10793326335526947043, 1292404946512391578]), Fq::from_montgomery_limbs([17850102253172036488, 16878929783220491580, 12148612402256632289, 1179496799944407367]), Fq::from_montgomery_limbs([6929880085758156619, 4120392668704643628, 11836473204519946866, 28485748677085595]), Fq::from_montgomery_limbs([7800178991375085209, 14774867153037785291, 11799747171946617460, 602919953250380891]), Fq::from_montgomery_limbs([17054340314101625508, 4698130283999778899, 4742470825260640374, 959009998492737982]), Fq::from_montgomery_limbs([2393186109518086396, 6858067904112781658, 250925929886996803, 813730459239750430]), Fq::from_montgomery_limbs([2218833032329181388, 552395772797949524, 6530705058787819865, 835936496067889425]), Fq::from_montgomery_limbs([3262056243364729906, 11024409760304501943, 1452785405793489479, 142671579891481074]), Fq::from_montgomery_limbs([6735174709999307467, 2125505582074675403, 4509781828031030374, 108593715289115480]), Fq::from_montgomery_limbs([498171931293929377, 12913268518770675643, 1815201461805994707, 946978086066606985]), Fq::from_montgomery_limbs([16200210184230174374, 3713355895827454434, 14718940205181940826, 1064592931466804937]), Fq::from_montgomery_limbs([13536929950841620194, 3713133295284324907, 4736815980159531884, 758794941833570859]), Fq::from_montgomery_limbs([861407446467585047, 12743454769660930162, 7792877431815389510, 943863054041968511]), Fq::from_montgomery_limbs([10460589994003660312, 13699084750678449563, 6912858821101282428, 983481932576822508]), Fq::from_montgomery_limbs([6395189001561693172, 909428077299806733, 14034485419172147354, 892696750070934303]), Fq::from_montgomery_limbs([16314238556028756835, 12721184065200972840, 4215220052710637306, 969581304771032797]), Fq::from_montgomery_limbs([15243970771075793563, 7265733909785546869, 11400286633658577098, 227245542346740687]), Fq::from_montgomery_limbs([2661479521314659209, 14172387955084721030, 12674281103636294869, 1085804564589438497]), Fq::from_montgomery_limbs([18227002291515532973, 15774793184931310359, 6437329245046594308, 396285509955206909]), Fq::from_montgomery_limbs([6914466148291815333, 4167126971788791314, 4527924238135969746, 1300810520025754908]), Fq::from_montgomery_limbs([14395967678844513466, 14422556923576200015, 191387961653560003, 729196198527215531]), Fq::from_montgomery_limbs([7196572830394614073, 16632412363674496211, 16792884878696839152, 457278866683205345]), Fq::from_montgomery_limbs([9831172453260561658, 4633416154293085629, 748737550195349212, 1194104217944615385]), Fq::from_montgomery_limbs([6973573180719962464, 5007888960458011612, 8062128917836753116, 744480032753315017]), Fq::from_montgomery_limbs([16633938277270943002, 664463662401382838, 12794755704372974494, 554917201554530927]), Fq::from_montgomery_limbs([13757343111051456383, 2277523607348509991, 12211485585154160377, 1191938841499200958]), Fq::from_montgomery_limbs([2099651241677249799, 16005931431677972788, 4057176764026877324, 707860945208429696]), Fq::from_montgomery_limbs([2165339887464167998, 7647994110899007446, 5094066233657896225, 709010531879165945]), Fq::from_montgomery_limbs([3831632088851469384, 13057932256077855788, 8222411545973514625, 843256628060293546]), Fq::from_montgomery_limbs([11183603857561726385, 11584937131366886392, 10218687281854749192, 1214449080735682681]), Fq::from_montgomery_limbs([4616248479126876226, 7741252456972311173, 15728165050985347386, 1181171544306467254]), Fq::from_montgomery_limbs([9990077617045592495, 15002413693275212677, 15144228310702885841, 620548150749293884]), Fq::from_montgomery_limbs([11425804337294316958, 7221778875452068210, 12010104440786017368, 1011771244946000970]), Fq::from_montgomery_limbs([5747596481169639613, 1104073856460899094, 9146430142057149431, 765525234705139109]), Fq::from_montgomery_limbs([3812959281946602235, 14465851686889375345, 10322234575416122404, 932678259808721672]), Fq::from_montgomery_limbs([8276661801860095514, 14823492496323764121, 13701004212965117137, 355220593809969742]), Fq::from_montgomery_limbs([2822736401887161227, 7201497867288478670, 17622780267628213622, 1209422737251283832]), Fq::from_montgomery_limbs([6817376778442520781, 4154445874851092990, 16808416654356258571, 874896460001984569]), Fq::from_montgomery_limbs([6944399192847445119, 11369644718917282470, 2667187192361233639, 556544027948695271]), Fq::from_montgomery_limbs([5985721645222736084, 16218645614583785224, 4868776535917705543, 340479768034825225]), Fq::from_montgomery_limbs([423267142339143725, 10672508482801134053, 10023426192840323691, 143702757733007341]), Fq::from_montgomery_limbs([16968412399372724525, 8496071221427589946, 10167242106830249881, 948296106142898645]), Fq::from_montgomery_limbs([6077151186983453387, 15293901317827186404, 14701565635632126093, 255295815714470534]), Fq::from_montgomery_limbs([2340976401132931162, 15060372762537152076, 53380542410648341, 264784757483154853]), Fq::from_montgomery_limbs([18327041937543135548, 9711578301735907982, 14543056172433622210, 917652325595281384]), Fq::from_montgomery_limbs([16912960214874381489, 15496697595960727025, 10003663904717205393, 692183641514800495]), Fq::from_montgomery_limbs([631791826835558467, 6501686441307729051, 3099396544628491613, 61251147299142612]), Fq::from_montgomery_limbs([17691931260195143223, 8098931117406259915, 9971027644422011861, 1136957700009068910]), Fq::from_montgomery_limbs([2062604623511907833, 2446845511672682965, 13161140743748372941, 284099378520214643]), Fq::from_montgomery_limbs([10652315713215424934, 14813440799481647832, 13466669344664711667, 1176746728204537787]), Fq::from_montgomery_limbs([340206030049443520, 12731571821339495677, 14595218864578621848, 861695502136866474]), Fq::from_montgomery_limbs([3281942488953589693, 3787812821549520969, 9952331543838149583, 1038372048519458034]), Fq::from_montgomery_limbs([18390450269856250573, 10364014773689157664, 17543739276626667853, 671606213095247190]), Fq::from_montgomery_limbs([12094846023530852586, 13769932740865047240, 113296399784931588, 214330261285932478]), Fq::from_montgomery_limbs([6374588877936433558, 11607665174546753642, 15847675340170713041, 474145143590361300]), Fq::from_montgomery_limbs([4088002413776997222, 16030858922743461837, 4313473177343544055, 817302900123673764]), Fq::from_montgomery_limbs([18216186189548814543, 5687648301273358200, 6564098766262925833, 235647764529877689]), Fq::from_montgomery_limbs([1421650618584051851, 9669410210003093316, 15430467067773365518, 994269415526604309]), Fq::from_montgomery_limbs([7574559796775011993, 9643962694113220666, 1013275434882478619, 543427156325963008]), Fq::from_montgomery_limbs([4532353768594877907, 2433286855157726742, 15167390808651362948, 914159030044677082]), Fq::from_montgomery_limbs([14155199821083030453, 3642619697360819367, 7765405773737076472, 1202115259646869817]), Fq::from_montgomery_limbs([16335533268534142579, 4358492749042076660, 16385044626223358243, 847268434257421024]), Fq::from_montgomery_limbs([726136436292617217, 4735276118883290434, 6495677390337301519, 1007951275499954400]), Fq::from_montgomery_limbs([1441892049918589996, 16125120862288806381, 5244917656153261337, 108755599353706277]), Fq::from_montgomery_limbs([9330223445766086137, 9406197553353640417, 13281468059023600014, 500503138812404763]), Fq::from_montgomery_limbs([5355456155777194776, 15418542913049291849, 7681885321566295504, 1188094463923126996]), Fq::from_montgomery_limbs([11882193142358058793, 4624069509548102427, 6735235437551193554, 962114122876706035]), Fq::from_montgomery_limbs([1819083831857771980, 8349663267034291058, 14403983179525206765, 942284040773068417]), Fq::from_montgomery_limbs([7024062436534453440, 15203692147142724388, 17082973923084045231, 1191890185052815108]), Fq::from_montgomery_limbs([6672719206476059341, 18362672287252020084, 3555226216430454216, 300718449399370145]), Fq::from_montgomery_limbs([5828458911011841758, 9271852277477872143, 18378348640149073615, 591074353691784318]), Fq::from_montgomery_limbs([15397757499179479361, 1878199828613873660, 4164621900891789384, 558990401377082502]), Fq::from_montgomery_limbs([11069496558892348093, 10253211614498485032, 11458203419889384673, 575447664584685933]), Fq::from_montgomery_limbs([9808353214047792416, 4805184465312945639, 3985871967202506787, 1229730183276593449]), Fq::from_montgomery_limbs([8420435996312062450, 11100705514596499443, 1523101111273631766, 639557004587150270]), Fq::from_montgomery_limbs([15630012259368829028, 15079774099427294323, 16765804689810369633, 834886070512612798]), Fq::from_montgomery_limbs([2000344807995355152, 8654391083188520616, 13301563010992444431, 490951127405891771]), Fq::from_montgomery_limbs([11761875542266860374, 709339183471929228, 17682621289319303167, 570040706396372700]), Fq::from_montgomery_limbs([3366481512891059038, 12720609556939839584, 1707138651265172645, 36940608792331559]), Fq::from_montgomery_limbs([2427334396528044490, 10170194639028880515, 18243990154741074229, 607502491270396977]), Fq::from_montgomery_limbs([6267947100515031640, 14520122887125811439, 6695614471931546770, 251319533602819784]), Fq::from_montgomery_limbs([7663026857490478572, 15777701966597798170, 10617198553182548195, 642318201966621785]), Fq::from_montgomery_limbs([9959998770754152632, 13119241263216166622, 6328810982306793729, 571460896430554998]), Fq::from_montgomery_limbs([12042605027273090048, 14859482580111939906, 11509134713697889199, 561895216440235106]), Fq::from_montgomery_limbs([1156916933025613310, 4529329408550568088, 14286907616576238972, 1309540780962817079]), Fq::from_montgomery_limbs([7510365353910652337, 14538991928012962248, 4644117500717216624, 1340316749461135700])]), + mds: MdsMatrix::<8, 7, 64, 49>::new_from_known([Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([13217949757478296855, 18361600593446830079, 18223280994163007859, 471593720435477782])]), + alpha: Alpha::Exponent(17), + rounds: RoundNumbers {r_P: 31, r_F: 8}, + optimized_mds: OptimizedMdsMatrices { + M_hat: SquareMatrix::<7, 49>::new_from_known([Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([13217949757478296855, 18361600593446830079, 18223280994163007859, 471593720435477782])]), + v: Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214])]), + w: Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214])]), + M_prime: SquareMatrix::<8, 64>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([13217949757478296855, 18361600593446830079, 18223280994163007859, 471593720435477782])]), + M_doubleprime: SquareMatrix::<8, 64>::new_from_known([Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([5469465372454405746, 11693688927749785195, 9284229770381589387, 263916402201309764]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8025142443496737775, 1611073224873590596, 1595200312703520851, 268362793599128279]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2646197433325367530, 3327161674116363870, 17523969835882673765, 1224872920276084181]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3531022552160069605, 1044916798369741293, 13484540382795405112, 975392012720575741]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3532672362950129848, 13232567668052949956, 3949082925084889589, 1169300250855119928]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17405909644706202533, 9068195655028130334, 4993737853698066182, 760630245260613434]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10760096219897954109, 15819961273994906871, 12000866060961275644, 494051747708222359]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), + M_inverse: SquareMatrix::<8, 64>::new_from_known([Fq::from_montgomery_limbs([13084505025340709209, 6658414703856389670, 1229628874832604981, 544699057731131701]), Fq::from_montgomery_limbs([9271504314401065906, 16573554673674659136, 11112785265390720139, 695302674280213266]), Fq::from_montgomery_limbs([17755863455076530065, 714019269282123475, 2516777105896065646, 758853547373067215]), Fq::from_montgomery_limbs([18230149865394473823, 17597653080170983126, 8526134725373349310, 254065511080298010]), Fq::from_montgomery_limbs([12943062609168455850, 4036522178185995734, 13999395164871811986, 158263095242933732]), Fq::from_montgomery_limbs([9727917081763370379, 12523860206965601712, 6438415234309761598, 578292727069385307]), Fq::from_montgomery_limbs([4722164372208948539, 6191995659471889704, 9488304077820150497, 383493821809394045]), Fq::from_montgomery_limbs([6308417298426862088, 11443735935349473316, 5741617995111411363, 1072746374115513684]), Fq::from_montgomery_limbs([9271504314401065906, 16573554673674659136, 11112785265390720139, 695302674280213266]), Fq::from_montgomery_limbs([6461820328084053982, 3713881430924031860, 2384237101556363354, 925204973024161309]), Fq::from_montgomery_limbs([11045222492845432763, 12330616953129622165, 6721295490146207098, 737212261478666249]), Fq::from_montgomery_limbs([17374877272010299584, 12910097275334870758, 11030123918921243889, 999547114982057960]), Fq::from_montgomery_limbs([2710620113890028948, 7440189668352585633, 11434649235474493285, 24415954842353912]), Fq::from_montgomery_limbs([7017296967873341431, 5083670538613016079, 13450510072544819929, 553876772227031394]), Fq::from_montgomery_limbs([13756252569614172144, 10114182252140374927, 8424160399132869901, 370135544443278065]), Fq::from_montgomery_limbs([8192890567029291618, 6189339163642963502, 10515708329663122411, 718287917303790275]), Fq::from_montgomery_limbs([17755863455076530065, 714019269282123475, 2516777105896065646, 758853547373067215]), Fq::from_montgomery_limbs([11045222492845432763, 12330616953129622165, 6721295490146207098, 737212261478666249]), Fq::from_montgomery_limbs([1107303498763469844, 5522738209527454529, 7444362964372879018, 94326278492989394]), Fq::from_montgomery_limbs([17301615911438019293, 6207101570101901683, 6912719408314906153, 670136716188149414]), Fq::from_montgomery_limbs([8052773691804060961, 7894827066734284032, 17737200459541160653, 1344927881702280038]), Fq::from_montgomery_limbs([3579877764578944756, 17358359975581377230, 2902328015395623063, 1076553286270705854]), Fq::from_montgomery_limbs([7922495546740583511, 13377932406425725078, 312087136472518954, 724215661521432074]), Fq::from_montgomery_limbs([14304988956035390969, 2978747834443270582, 211153190861140083, 1101825800236420991]), Fq::from_montgomery_limbs([18230149865394473823, 17597653080170983126, 8526134725373349310, 254065511080298010]), Fq::from_montgomery_limbs([17374877272010299584, 12910097275334870758, 11030123918921243889, 999547114982057960]), Fq::from_montgomery_limbs([17301615911438019293, 6207101570101901683, 6912719408314906153, 670136716188149414]), Fq::from_montgomery_limbs([11280947822772662719, 3998258523005585690, 3083179120639342004, 919842772758514385]), Fq::from_montgomery_limbs([9288629788793402586, 2259376874925369448, 13217169487415398853, 539099117435770765]), Fq::from_montgomery_limbs([8430375547150652021, 1001249403497996831, 16789953243695164761, 1344355087100203329]), Fq::from_montgomery_limbs([527596723520651020, 15187839531048996200, 6255568353483246533, 170911683896477388]), Fq::from_montgomery_limbs([1734565667097520919, 12020388067710193448, 6095663732563761512, 1138214739842689620]), Fq::from_montgomery_limbs([12943062609168455850, 4036522178185995734, 13999395164871811986, 158263095242933732]), Fq::from_montgomery_limbs([2710620113890028948, 7440189668352585633, 11434649235474493285, 24415954842353912]), Fq::from_montgomery_limbs([8052773691804060961, 7894827066734284032, 17737200459541160653, 1344927881702280038]), Fq::from_montgomery_limbs([9288629788793402586, 2259376874925369448, 13217169487415398853, 539099117435770765]), Fq::from_montgomery_limbs([11829305752964125757, 10778200385642703226, 2095381984842221696, 365296429444826263]), Fq::from_montgomery_limbs([9209237328018148115, 9013177660724622161, 13411670809827118984, 1159740245409298491]), Fq::from_montgomery_limbs([1786760175787716883, 16585118128488698423, 3661827234912273881, 1175179421357105610]), Fq::from_montgomery_limbs([6997506992288193640, 3314349379260916067, 10669743096907430976, 828027530724672872]), Fq::from_montgomery_limbs([9727917081763370379, 12523860206965601712, 6438415234309761598, 578292727069385307]), Fq::from_montgomery_limbs([7017296967873341431, 5083670538613016079, 13450510072544819929, 553876772227031394]), Fq::from_montgomery_limbs([3579877764578944756, 17358359975581377230, 2902328015395623063, 1076553286270705854]), Fq::from_montgomery_limbs([8430375547150652021, 1001249403497996831, 16789953243695164761, 1344355087100203329]), Fq::from_montgomery_limbs([9209237328018148115, 9013177660724622161, 13411670809827118984, 1159740245409298491]), Fq::from_montgomery_limbs([2800053360411677182, 7739112841912438666, 4458443078052365313, 1221561517743072277]), Fq::from_montgomery_limbs([5714397546912390046, 7204578223640664713, 3369806468691410388, 19539807714888073]), Fq::from_montgomery_limbs([7912928165080095595, 10691173171385779887, 7900069818404182519, 558654216499734169]), Fq::from_montgomery_limbs([4722164372208948539, 6191995659471889704, 9488304077820150497, 383493821809394045]), Fq::from_montgomery_limbs([13756252569614172144, 10114182252140374927, 8424160399132869901, 370135544443278065]), Fq::from_montgomery_limbs([7922495546740583511, 13377932406425725078, 312087136472518954, 724215661521432074]), Fq::from_montgomery_limbs([527596723520651020, 15187839531048996200, 6255568353483246533, 170911683896477388]), Fq::from_montgomery_limbs([1786760175787716883, 16585118128488698423, 3661827234912273881, 1175179421357105610]), Fq::from_montgomery_limbs([5714397546912390046, 7204578223640664713, 3369806468691410388, 19539807714888073]), Fq::from_montgomery_limbs([11467623733094325177, 12601944683740404995, 14270804009154313170, 1283543454792166291]), Fq::from_montgomery_limbs([1591478553039085540, 13629203225225281079, 9223729349286412660, 541375501705678927]), Fq::from_montgomery_limbs([6308417298426862088, 11443735935349473316, 5741617995111411363, 1072746374115513684]), Fq::from_montgomery_limbs([8192890567029291618, 6189339163642963502, 10515708329663122411, 718287917303790275]), Fq::from_montgomery_limbs([14304988956035390969, 2978747834443270582, 211153190861140083, 1101825800236420991]), Fq::from_montgomery_limbs([1734565667097520919, 12020388067710193448, 6095663732563761512, 1138214739842689620]), Fq::from_montgomery_limbs([6997506992288193640, 3314349379260916067, 10669743096907430976, 828027530724672872]), Fq::from_montgomery_limbs([7912928165080095595, 10691173171385779887, 7900069818404182519, 558654216499734169]), Fq::from_montgomery_limbs([1591478553039085540, 13629203225225281079, 9223729349286412660, 541375501705678927]), Fq::from_montgomery_limbs([1183879673177082740, 4195985459140120089, 6602546398975040286, 268356784116832629])]), + M_hat_inverse: SquareMatrix::<7, 49>::new_from_known([Fq::from_montgomery_limbs([4596204885914937926, 7838695242625897787, 3035134948628881865, 1207227057562625259]), Fq::from_montgomery_limbs([15896440128761118173, 15649465122428497798, 4384954020081155217, 913236075158308182]), Fq::from_montgomery_limbs([2335397575999068166, 14422783505571319241, 2719190544357073120, 274885737548821162]), Fq::from_montgomery_limbs([9009029437947626511, 7346990291023997455, 3414440920242711508, 50729493538167678]), Fq::from_montgomery_limbs([1147572841630042462, 8929633407603160962, 14641836547291178689, 426104246454882272]), Fq::from_montgomery_limbs([17053865508971679549, 2198382506890441430, 11312636819879946010, 1106661992673439325]), Fq::from_montgomery_limbs([13854198271768011224, 4053309739918946052, 18433076019880982368, 615216866081782140]), Fq::from_montgomery_limbs([15896440128761118173, 15649465122428497798, 4384954020081155217, 913236075158308182]), Fq::from_montgomery_limbs([4761711418629517518, 591743220415883789, 2347216482122737487, 541885199414988935]), Fq::from_montgomery_limbs([16049706050976647208, 9176322874162797755, 12242590547654900654, 61012554895502211]), Fq::from_montgomery_limbs([10907149703911289876, 345335516406280141, 13671249158696272740, 1076200797284812494]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([7820919546658569809, 8474571377527450081, 15463257988737541409, 600187776405677822]), Fq::from_montgomery_limbs([17765856891579054878, 11653192174908829654, 4966200605019140816, 13151716642854399]), Fq::from_montgomery_limbs([2335397575999068166, 14422783505571319241, 2719190544357073120, 274885737548821162]), Fq::from_montgomery_limbs([16049706050976647208, 9176322874162797755, 12242590547654900654, 61012554895502211]), Fq::from_montgomery_limbs([13442108051579804680, 3187031622749351601, 18435466452818364440, 257424390549798158]), Fq::from_montgomery_limbs([14787872399840322022, 11612292071578382904, 2915446897265489403, 1027394734812832541]), Fq::from_montgomery_limbs([14650186278276933856, 11736505343490130034, 4478509448304020774, 790137565622286814]), Fq::from_montgomery_limbs([16227186307902919639, 13050765287152844350, 6672057872444298207, 1120660629979522345]), Fq::from_montgomery_limbs([17280730943809781377, 2101938472365641700, 2221542087098170284, 682975842437066220]), Fq::from_montgomery_limbs([9009029437947626511, 7346990291023997455, 3414440920242711508, 50729493538167678]), Fq::from_montgomery_limbs([10907149703911289876, 345335516406280141, 13671249158696272740, 1076200797284812494]), Fq::from_montgomery_limbs([14787872399840322022, 11612292071578382904, 2915446897265489403, 1027394734812832541]), Fq::from_montgomery_limbs([9754754145024164416, 9500194995930094065, 4605218223030367360, 489015282389927384]), Fq::from_montgomery_limbs([11235823697266068713, 9767911161281654263, 15004902496107301847, 1252504438181231825]), Fq::from_montgomery_limbs([773466991163756584, 6984379341355406564, 2865211391772182450, 1128797324971138943]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([1147572841630042462, 8929633407603160962, 14641836547291178689, 426104246454882272]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([14650186278276933856, 11736505343490130034, 4478509448304020774, 790137565622286814]), Fq::from_montgomery_limbs([11235823697266068713, 9767911161281654263, 15004902496107301847, 1252504438181231825]), Fq::from_montgomery_limbs([10750604789646168140, 372497979918419381, 10429606583776526343, 928966821232337907]), Fq::from_montgomery_limbs([10962493869149920375, 10887885654637674355, 384224715829329873, 165837155970255258]), Fq::from_montgomery_limbs([2645295168975782308, 13863838601458690618, 7409022743292405220, 617686796815916414]), Fq::from_montgomery_limbs([17053865508971679549, 2198382506890441430, 11312636819879946010, 1106661992673439325]), Fq::from_montgomery_limbs([7820919546658569809, 8474571377527450081, 15463257988737541409, 600187776405677822]), Fq::from_montgomery_limbs([16227186307902919639, 13050765287152844350, 6672057872444298207, 1120660629979522345]), Fq::from_montgomery_limbs([773466991163756584, 6984379341355406564, 2865211391772182450, 1128797324971138943]), Fq::from_montgomery_limbs([10962493869149920375, 10887885654637674355, 384224715829329873, 165837155970255258]), Fq::from_montgomery_limbs([17704196732594477900, 7529737242141985421, 3056083190610322131, 537754595320396000]), Fq::from_montgomery_limbs([4588045927327100104, 15273424236288740466, 3730020508107780990, 1184499396891674504]), Fq::from_montgomery_limbs([13854198271768011224, 4053309739918946052, 18433076019880982368, 615216866081782140]), Fq::from_montgomery_limbs([17765856891579054878, 11653192174908829654, 4966200605019140816, 13151716642854399]), Fq::from_montgomery_limbs([17280730943809781377, 2101938472365641700, 2221542087098170284, 682975842437066220]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([2645295168975782308, 13863838601458690618, 7409022743292405220, 617686796815916414]), Fq::from_montgomery_limbs([4588045927327100104, 15273424236288740466, 3730020508107780990, 1184499396891674504]), Fq::from_montgomery_limbs([5513671693009890019, 13840477803572862779, 13148892977164251883, 530785029804846654])]), + M_00: Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), + M_i: Matrix::<8, 8, 64>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6320288599439722802, 17139790906886685752, 15622446705354855394, 1250967766698858445]), Fq::from_montgomery_limbs([12907953951183108118, 570406863259453574, 9479663564103955646, 1023356057988386223]), Fq::from_montgomery_limbs([5445632916888334837, 1254961675994290676, 17739625680446876718, 887995330051968477]), Fq::from_montgomery_limbs([6322290143919737275, 6221802074515073157, 3956268074861890555, 1230594881276209560]), Fq::from_montgomery_limbs([6707360385690721071, 168555159922046132, 3944622502497320499, 871144945884010465]), Fq::from_montgomery_limbs([2037533433720590943, 11084683233172165964, 9053730132862546054, 793120143512682509]), Fq::from_montgomery_limbs([16034329588701802957, 3903236010590312092, 9048724434495743556, 974216030141738060]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12907953951183108118, 570406863259453574, 9479663564103955646, 1023356057988386223]), Fq::from_montgomery_limbs([2630356400630794821, 484400404306129097, 10294032504232056871, 1245743613753800727]), Fq::from_montgomery_limbs([7020374536790409354, 11449249974296852948, 11812715459389350230, 761793057268134936]), Fq::from_montgomery_limbs([14832891855204883256, 1120380609975889545, 13112310496604860424, 265468754987956357]), Fq::from_montgomery_limbs([1471871698735710625, 5066062283984961905, 18437666505161167766, 732132698348695885]), Fq::from_montgomery_limbs([12165164801578981607, 2595888614156384905, 3065973630931260883, 580278735590489736]), Fq::from_montgomery_limbs([14321853632102951979, 5605761176730605396, 4630454347263185176, 122758557320262262]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5445632916888334837, 1254961675994290676, 17739625680446876718, 887995330051968477]), Fq::from_montgomery_limbs([7020374536790409354, 11449249974296852948, 11812715459389350230, 761793057268134936]), Fq::from_montgomery_limbs([8776438364931459725, 12817858402105398175, 11110959846851041399, 66365362687656724]), Fq::from_montgomery_limbs([8240747731577468633, 14565407531273622630, 3117214821926093855, 377503066268731506]), Fq::from_montgomery_limbs([3910521513192788403, 13982250796740762630, 7488541789654977578, 950543461716681145]), Fq::from_montgomery_limbs([13037154073613592925, 5935342861935913439, 15852552537899162249, 940304910644322576]), Fq::from_montgomery_limbs([6931234819087160937, 3778580043557980929, 15772931149205513556, 42782763261291533]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6322290143919737275, 6221802074515073157, 3956268074861890555, 1230594881276209560]), Fq::from_montgomery_limbs([14832891855204883256, 1120380609975889545, 13112310496604860424, 265468754987956357]), Fq::from_montgomery_limbs([8240747731577468633, 14565407531273622630, 3117214821926093855, 377503066268731506]), Fq::from_montgomery_limbs([11125067532471981344, 14191984257965181085, 12061981722855456559, 593208493053362841]), Fq::from_montgomery_limbs([12343763401003110605, 14101666204297852634, 12890733422632852105, 917529488625337921]), Fq::from_montgomery_limbs([12402063032118952752, 2700777936756282138, 16216549649819784559, 1155661828697936045]), Fq::from_montgomery_limbs([2194969812170857806, 13161078840371575175, 5264735936454844546, 101144700881461918]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6707360385690721071, 168555159922046132, 3944622502497320499, 871144945884010465]), Fq::from_montgomery_limbs([1471871698735710625, 5066062283984961905, 18437666505161167766, 732132698348695885]), Fq::from_montgomery_limbs([3910521513192788403, 13982250796740762630, 7488541789654977578, 950543461716681145]), Fq::from_montgomery_limbs([12343763401003110605, 14101666204297852634, 12890733422632852105, 917529488625337921]), Fq::from_montgomery_limbs([11359111242441949022, 11240352269459571893, 17263815313749644065, 781240072875924051]), Fq::from_montgomery_limbs([16712698548631210778, 8113828394758785535, 9984182942939561022, 781254146059533921]), Fq::from_montgomery_limbs([7404478796369705144, 1939616247903098428, 2043282094878258870, 67588237262069794]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2037533433720590943, 11084683233172165964, 9053730132862546054, 793120143512682509]), Fq::from_montgomery_limbs([12165164801578981607, 2595888614156384905, 3065973630931260883, 580278735590489736]), Fq::from_montgomery_limbs([13037154073613592925, 5935342861935913439, 15852552537899162249, 940304910644322576]), Fq::from_montgomery_limbs([12402063032118952752, 2700777936756282138, 16216549649819784559, 1155661828697936045]), Fq::from_montgomery_limbs([16712698548631210778, 8113828394758785535, 9984182942939561022, 781254146059533921]), Fq::from_montgomery_limbs([6959694198409880686, 10513484520296585955, 17245503495642767610, 326963768321955511]), Fq::from_montgomery_limbs([10751863449412314814, 12531617507536929183, 2333159255918151628, 108101348738232165]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16034329588701802957, 3903236010590312092, 9048724434495743556, 974216030141738060]), Fq::from_montgomery_limbs([14321853632102951979, 5605761176730605396, 4630454347263185176, 122758557320262262]), Fq::from_montgomery_limbs([6931234819087160937, 3778580043557980929, 15772931149205513556, 42782763261291533]), Fq::from_montgomery_limbs([2194969812170857806, 13161078840371575175, 5264735936454844546, 101144700881461918]), Fq::from_montgomery_limbs([7404478796369705144, 1939616247903098428, 2043282094878258870, 67588237262069794]), Fq::from_montgomery_limbs([10751863449412314814, 12531617507536929183, 2333159255918151628, 108101348738232165]), Fq::from_montgomery_limbs([8242539079403140188, 8061347952042345076, 11707135840504604934, 914785475508666052])]), + v_collection: [Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([18366132767879360967, 5431013863214313926, 3325023203464288028, 747241129062195048]), Fq::from_montgomery_limbs([4861545468195100803, 11791803721085820360, 16861242526837808182, 587224779081284519]), Fq::from_montgomery_limbs([6038434302262732315, 17199494462234427620, 17847977008226730647, 613398622514363430]), Fq::from_montgomery_limbs([8422783269805610096, 16656220536572751252, 7918639979705401643, 170910085608382473]), Fq::from_montgomery_limbs([18349346982789927355, 8017591337915184637, 18372658176979362927, 927323834744911125]), Fq::from_montgomery_limbs([6098144161467281354, 2162126959782930019, 8016715582812993181, 87916415604842323]), Fq::from_montgomery_limbs([14926888907449900570, 16034226105739794058, 8242495446855270900, 170857479056428767])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([13761299995988853307, 10330765076738035315, 13655052507848964233, 121839220114831784]), Fq::from_montgomery_limbs([15369322242721768225, 7050142047224256972, 12643665775034470999, 1102328692521833676]), Fq::from_montgomery_limbs([10555474781715655116, 6656109843697517764, 16567476834724252290, 1315407115111807184]), Fq::from_montgomery_limbs([15635518385029844173, 579774923863089338, 4907175580968184975, 679471495325209728]), Fq::from_montgomery_limbs([11185461100085345821, 8221939874744266357, 12287775310123057539, 1019299127883999231]), Fq::from_montgomery_limbs([586274284242963056, 8310909834705600558, 3054222778649762639, 763190023338919332]), Fq::from_montgomery_limbs([6717490082866871699, 9561189803595277803, 2358146706687598339, 229707033421591253])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([9862704231385218313, 13914100249743202263, 10014223727046890158, 679200801234608014]), Fq::from_montgomery_limbs([16286005160576575401, 2766108936000922095, 13859049965904094985, 720362228683248654]), Fq::from_montgomery_limbs([18028696975939559798, 6945291324150110288, 3594371327059432745, 1256526022736975448]), Fq::from_montgomery_limbs([13724722228213474447, 17954541567374385206, 10748596771783277924, 116970063643881223]), Fq::from_montgomery_limbs([17627786090808150672, 7901620020601608720, 1877160764958626418, 756288000881176875]), Fq::from_montgomery_limbs([14537377980409294015, 18005737005152562388, 9571375812741383887, 59753059053707643]), Fq::from_montgomery_limbs([4228748937594043872, 11086846199995865064, 15359245871481193897, 1099589394616459299])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([6835681309479739469, 2522595035308448012, 13579423836020142879, 321430679545810677]), Fq::from_montgomery_limbs([8928134061485321773, 14157720579697729134, 10344780082168020995, 97202987142506800]), Fq::from_montgomery_limbs([3126697640027307204, 1153410184564297189, 4809813821719177551, 994774295722128937]), Fq::from_montgomery_limbs([3918576597698600036, 13183810862438807325, 15214887128855617985, 279159001700097111]), Fq::from_montgomery_limbs([2830967354854515654, 17469509170635724421, 8035672669498122237, 267629026497518109]), Fq::from_montgomery_limbs([13871567487914888086, 5246409741722402492, 16832389611931438025, 1295010963726258350]), Fq::from_montgomery_limbs([17057934674164606699, 6421519839681476555, 2956724044796119398, 327825682992218753])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([4795884052041907920, 14375534011696101577, 2427060550596560456, 393919458849239754]), Fq::from_montgomery_limbs([15372002461943753964, 11342165919824154367, 11980800855746001270, 994521975576249810]), Fq::from_montgomery_limbs([3093026885592381242, 16909708896875106142, 9191689902351332536, 192118286974103755]), Fq::from_montgomery_limbs([2545301077237922815, 15144706238324940883, 6113286606593174468, 372600161316484359]), Fq::from_montgomery_limbs([2142773713360590483, 4755608127774394592, 14813148169732966311, 917761966614679749]), Fq::from_montgomery_limbs([4228649950611283773, 11633437476481650378, 40335982213672820, 963989416626637070]), Fq::from_montgomery_limbs([7391565095119442761, 5231979613403440246, 15148609598356850747, 95369680580052342])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([6221242600163036024, 13151745595003222769, 1880070415953293074, 859483057557051135]), Fq::from_montgomery_limbs([4057704583061373110, 330438596431033553, 11138603368324646862, 567019942240333219]), Fq::from_montgomery_limbs([6808348652855723900, 16038145083514774712, 7335293401571608063, 1256860263027810296]), Fq::from_montgomery_limbs([14712597649859914536, 2461131389363589307, 14971367896336061978, 440886131765627826]), Fq::from_montgomery_limbs([12563821899625315748, 1397025790367362621, 11711011249975071041, 1326491445493487906]), Fq::from_montgomery_limbs([7386366618870533036, 17891650149672567880, 7623078793319051970, 896259535119079804]), Fq::from_montgomery_limbs([10076387373785417531, 11621404135443198278, 2342191148009104794, 1208570082728513479])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([15679839989875735864, 3094159736795405193, 8433247987399569527, 598394739716746812]), Fq::from_montgomery_limbs([13169926426306420693, 1494478164246339314, 1807871555080064306, 341871317105251652]), Fq::from_montgomery_limbs([8871477167695700102, 7124763693791718581, 9576781928097497051, 714519781637518717]), Fq::from_montgomery_limbs([5983131451216637528, 14746501237947100556, 5131581902376092495, 53578888100518755]), Fq::from_montgomery_limbs([4061768962354414816, 11864639021370326188, 865372274790703007, 960248048765553610]), Fq::from_montgomery_limbs([13741178490350281184, 16104064291813496481, 430569565272838614, 1002559943654640050]), Fq::from_montgomery_limbs([2394748621667543278, 9724971631453415812, 4137744279709050144, 1128204720227512009])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([8347131072359520901, 7051906710316929352, 16145803176151958291, 425602845445213918]), Fq::from_montgomery_limbs([1777783046051939958, 9344856863579469212, 15141578180236122558, 1282494716270035254]), Fq::from_montgomery_limbs([9034384578885080751, 4457232682759798992, 2752092198692805323, 133997596024339666]), Fq::from_montgomery_limbs([6632806707492790657, 4419466991289176034, 10545594397744340230, 225792487504094029]), Fq::from_montgomery_limbs([13666870638471858948, 6325954648727450515, 6820384268867641136, 650912658514216838]), Fq::from_montgomery_limbs([18425172866543397587, 460014089142918565, 13475177727189665478, 755199790640816277]), Fq::from_montgomery_limbs([17074816481639390245, 8326625026248068453, 11628221368426774047, 168403074861182097])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([6496117145112017285, 8108611305258852743, 1288333658986417240, 489166257449840915]), Fq::from_montgomery_limbs([5905164426314492425, 14726319284315803257, 15419119459033009106, 748785652021292365]), Fq::from_montgomery_limbs([2903900515980491508, 14518787377368638193, 5737950893394728457, 1246585555966129910]), Fq::from_montgomery_limbs([13545067403644787822, 12929589241462425919, 6328577959723156897, 669792805130642725]), Fq::from_montgomery_limbs([10880665937604410417, 12182942785008105675, 8043148962657686879, 114751567600998309]), Fq::from_montgomery_limbs([475884094757470315, 13519631230544868403, 15555278094421071668, 284046901452720062]), Fq::from_montgomery_limbs([4404185810772829111, 13082485550708084688, 4458404332519456617, 747118566938719314])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([9005422667436345080, 6610327294069915149, 3392047280994887983, 185928194404395622]), Fq::from_montgomery_limbs([5907489245706778002, 2611521107474717810, 15424563447378789128, 1081732924695236796]), Fq::from_montgomery_limbs([6936175948569238427, 16265819354303431672, 9296694820053549015, 380971488662375691]), Fq::from_montgomery_limbs([11847879878992849222, 17246157629192690467, 2240336221502957918, 551120206298529047]), Fq::from_montgomery_limbs([13322826606934505627, 11726197427344458839, 11800080869580456447, 426669602496174268]), Fq::from_montgomery_limbs([6217036164702465819, 14690910531871435703, 13161157531336562298, 732442567722820811]), Fq::from_montgomery_limbs([14882293327891629398, 9369498032959659338, 7000848696812799171, 754562041670533469])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([7595387151201254327, 16626796275200533088, 2940178911825115337, 1184031511121567741]), Fq::from_montgomery_limbs([9948362750111031958, 14209593175711129688, 8446364573948386189, 802006068920106393]), Fq::from_montgomery_limbs([15169311970095301438, 12318244252296365506, 11639105278755798079, 84817162733084173]), Fq::from_montgomery_limbs([5831579622220754273, 10846086049576885619, 15991974831220053526, 756084870377153501]), Fq::from_montgomery_limbs([4538407139413953048, 3210811593774606829, 7928892177512965493, 295438458271184500]), Fq::from_montgomery_limbs([16833512221632219759, 4464061448066183306, 13162091753490675863, 292236190186079508]), Fq::from_montgomery_limbs([13779800725609980259, 9773765625728017659, 15074810316420391540, 950783607166623145])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([15895706787288222123, 9777370406550782832, 1347824831892755594, 1241011767014366278]), Fq::from_montgomery_limbs([12826978362776209042, 10633709265050784734, 17957605540213546613, 887698438045779720]), Fq::from_montgomery_limbs([7324188878915493946, 6492479003127466111, 8377249725203128879, 1000161290003049779]), Fq::from_montgomery_limbs([6704086117324761110, 146265122731217307, 2383903051894120264, 719647807141165334]), Fq::from_montgomery_limbs([1940312057575972126, 17930067253838912265, 317360086895888872, 5748540581767140]), Fq::from_montgomery_limbs([17103257683729273147, 13931874259783487325, 11872224486078756015, 956814895668207498]), Fq::from_montgomery_limbs([13769500095117682353, 516850361598419166, 16964626273259476242, 769634211482580445])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([3113137472185380309, 3788943308088978270, 15570984136244536866, 64143465381601420]), Fq::from_montgomery_limbs([7162163846740423034, 17407158529676601980, 982523548091459495, 1241886141897586570]), Fq::from_montgomery_limbs([14248266967200521181, 12810010597713281838, 15956352259342376510, 1249991327654319042]), Fq::from_montgomery_limbs([14421471441198040024, 4052632755320875533, 10507979567878886533, 966126597683502788]), Fq::from_montgomery_limbs([1330169793100628257, 5902370011388045841, 4268141693837804182, 504954696237745802]), Fq::from_montgomery_limbs([12989224119893885561, 17234018500273188391, 10939008301878322098, 259903928118608299]), Fq::from_montgomery_limbs([10430146681254844704, 16501713083418526441, 1818813698196386223, 290604987547570674])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([2272958606081209500, 2462669223449072253, 9500254477224930595, 45443314528508583]), Fq::from_montgomery_limbs([15776657251710579335, 14822492561927322901, 3903750765721394200, 630182332308162068]), Fq::from_montgomery_limbs([12563868195165779174, 12561252953252587550, 11907364401269631108, 581676404653821486]), Fq::from_montgomery_limbs([148332194159159988, 10068425626588210986, 13535393921505334097, 153553395999465163]), Fq::from_montgomery_limbs([7747426768506042379, 7652171709845608793, 11069887529886935999, 60205371617013159]), Fq::from_montgomery_limbs([9292570341502960523, 3236193786725371597, 8898130554136882239, 1009410450149925646]), Fq::from_montgomery_limbs([12885815634665358426, 15963150787962414249, 4369817253063661209, 642948406974549063])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([1380867230584918716, 16725144872260989882, 11444322500251449972, 837022230218511427]), Fq::from_montgomery_limbs([1087920425360181417, 17141257576042242544, 8987292985620878561, 1110305532217600753]), Fq::from_montgomery_limbs([10359964772262918650, 10077460265989495047, 17578499003187392916, 757342367774183991]), Fq::from_montgomery_limbs([2779779035056260202, 2282975003625087828, 1919400866622348845, 493318954648288095]), Fq::from_montgomery_limbs([15672164960009522373, 3256607523370073938, 13852207222752867333, 1244522698781289416]), Fq::from_montgomery_limbs([12874545038411867774, 1217025423748364582, 75869870772488332, 1001217245879206186]), Fq::from_montgomery_limbs([8523257600072604774, 8621165006673159831, 1464388999950649637, 1217963817687697670])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([15922812187951378322, 4516460162368536866, 15018766830043386765, 1340613465456337965]), Fq::from_montgomery_limbs([287441026936003136, 14764192345714853717, 4173276030750185119, 472111033963352598]), Fq::from_montgomery_limbs([10839733167051473961, 3454260583859678864, 11304905847738494430, 650946296327920383]), Fq::from_montgomery_limbs([9515448149018827481, 3488032113770392732, 10593726245432275549, 583635792309485522]), Fq::from_montgomery_limbs([2742448600840811735, 6652758193289359848, 9635320418424938172, 967821689260084870]), Fq::from_montgomery_limbs([9881468678921411834, 11537438085600848038, 7216253876764370660, 1304070984061260617]), Fq::from_montgomery_limbs([6196769084394513175, 1271040910625745125, 11073763102896512393, 1165794523446068715])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([15799597978241847363, 12818531158251383624, 6963429972659041410, 397194962489148197]), Fq::from_montgomery_limbs([138391674938830183, 6888521073413350790, 13718840433311127770, 1101538822720967029]), Fq::from_montgomery_limbs([12684981053383903956, 5500073381157750545, 4169486943568405011, 879134225324190092]), Fq::from_montgomery_limbs([464851715795247463, 2927900015464510347, 17346267830876442053, 1137028262870600951]), Fq::from_montgomery_limbs([1966072756669882436, 14267740345733608423, 3868025407329923728, 1329300268340841458]), Fq::from_montgomery_limbs([12791556832852048085, 7187847328998161782, 6410129678700860221, 1141843742471101195]), Fq::from_montgomery_limbs([17394082241710727109, 3925707544410201182, 15631236622778680461, 867359934041458160])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([12197981561714622691, 3447558190007550222, 8731482567404865792, 504033851083789168]), Fq::from_montgomery_limbs([15548011549070215821, 18176746913742005334, 6759691930131684149, 748826448544702472]), Fq::from_montgomery_limbs([14426381672075599127, 6754779155763548400, 1569326308679565884, 301254674498691116]), Fq::from_montgomery_limbs([1190926793578469751, 4569874070454135204, 15349066761719847213, 1143729593598143496]), Fq::from_montgomery_limbs([4377698380788322951, 626231241120536954, 5782570196326664329, 794203002404066761]), Fq::from_montgomery_limbs([18203023968026598600, 769509082182406304, 14347905833288757784, 849309248009120890]), Fq::from_montgomery_limbs([6219667569923491560, 12993749535175636460, 9317843769426981121, 466063065647080758])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([12360205003642410439, 12233377474426101645, 8749241487473360725, 771733806369229100]), Fq::from_montgomery_limbs([12909744147344161535, 15270140525914393786, 958053852923168614, 1122903083941798107]), Fq::from_montgomery_limbs([11512594517381251244, 7788994558197263271, 17789727628017887833, 604964920168437514]), Fq::from_montgomery_limbs([11365008776320664479, 7674849678441687585, 10947191902817323894, 745598673291635479]), Fq::from_montgomery_limbs([9298337976025138670, 3504219772802793091, 18423486933153538231, 674863471944898182]), Fq::from_montgomery_limbs([10037370553997808960, 5643541321548796784, 3954322339884102888, 1116686823797890292]), Fq::from_montgomery_limbs([9151115627925470056, 1080688967380275155, 15991630648226528878, 1130423917661403285])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([16294982486276945283, 7049820508618491066, 8145571059898393342, 186002704339584638]), Fq::from_montgomery_limbs([755176559839955182, 11156178401444222993, 14456074258881310686, 278477091367678088]), Fq::from_montgomery_limbs([1257685548905109784, 5141440235439936072, 17862579642779035136, 330137635933850138]), Fq::from_montgomery_limbs([7830781886086349569, 12605497826381107847, 6483908192271317597, 742032532267494998]), Fq::from_montgomery_limbs([15889009530646425854, 4873730462912310136, 2661766248464352916, 886629163939946863]), Fq::from_montgomery_limbs([12291205541312705254, 7759245016766434277, 14282726477924298523, 275206715444074183]), Fq::from_montgomery_limbs([7015277851946876128, 6540146872039720132, 3413400018095950201, 488630649619127768])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([8080067703614789529, 14335022802712765520, 12181558540579879368, 1181883134308686818]), Fq::from_montgomery_limbs([3930610870091700987, 11870595227272460342, 5614691549969018824, 1036838548873476989]), Fq::from_montgomery_limbs([15116537084696928201, 6562302783432438956, 8446888808137423003, 1165521566881319341]), Fq::from_montgomery_limbs([7622363474306732593, 14018499983613194146, 5504535021523794239, 1156251508187455677]), Fq::from_montgomery_limbs([18353812883604490408, 7863175561039540930, 16157508248448358210, 295160799461001215]), Fq::from_montgomery_limbs([9630152100811825815, 18335618989479732132, 8847214215895375728, 938895491334142608]), Fq::from_montgomery_limbs([13116080893996470839, 13627909126954009780, 15760064020863415616, 884515223942721558])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([6687780439253411478, 6719196503388333019, 88771745794551678, 987619641692746386]), Fq::from_montgomery_limbs([18227317062064988196, 14045861136043637767, 16184554390694852575, 168316121892514264]), Fq::from_montgomery_limbs([2567020624281662578, 12408201210305429297, 15172611508502121839, 184308211509770511]), Fq::from_montgomery_limbs([6504349685450813046, 6151032549024957176, 8446915662866336279, 721911887099189465]), Fq::from_montgomery_limbs([3337661731072526341, 2993440831960528581, 1509729075929391927, 478329275350342603]), Fq::from_montgomery_limbs([1009230922039257241, 6930789170818330480, 4189309447677808153, 116099938331986078]), Fq::from_montgomery_limbs([11734050699831527761, 10637489645393719148, 526453959140559372, 879302010498683200])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([4873204063755775221, 9933480403362446589, 9949453296663390065, 246028972103247826]), Fq::from_montgomery_limbs([1486515864865111240, 8186666825731582288, 17298579416284146352, 75432580959795592]), Fq::from_montgomery_limbs([505624159752585300, 400192717675446053, 16830576854563029465, 1083591845791403649]), Fq::from_montgomery_limbs([15707645648143644435, 15104101221834649015, 2714910978190477603, 1152442812583011873]), Fq::from_montgomery_limbs([13680539759561187051, 166623071797346207, 14072328976002035503, 1262049047131890020]), Fq::from_montgomery_limbs([1997216355444588659, 4362151030955817495, 4119100627602964220, 86616090171999332]), Fq::from_montgomery_limbs([2511307420156057573, 14546073810053310617, 2740719298105876931, 1306803605810669667])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([9796594921607316066, 9046940149281062534, 3066668479453506525, 629717731494457650]), Fq::from_montgomery_limbs([15245080183700001743, 17772522498139932944, 1303200707700973869, 1321448515508953860]), Fq::from_montgomery_limbs([15382852889694635458, 13258286043643865801, 9129565020842704924, 647265428745294973]), Fq::from_montgomery_limbs([406339679439528630, 358526789424126981, 15360185281241795369, 402771395127408535]), Fq::from_montgomery_limbs([14729795014613647379, 6659603767330364601, 10382867237853880917, 983014168589450240]), Fq::from_montgomery_limbs([130913533882362207, 3464497722457480940, 6174897712775413536, 362284933576221116]), Fq::from_montgomery_limbs([6802705157024058052, 13442544871481896094, 13780491571272760495, 909644424511448796])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([15361452699552249664, 9640740743000109947, 5568737378741199451, 962844949024683508]), Fq::from_montgomery_limbs([459261181401017545, 7171449908290213843, 15871949118083492196, 158962359341824787]), Fq::from_montgomery_limbs([7906547241546612427, 7911718846541029411, 14951976648354808013, 421942213347946833]), Fq::from_montgomery_limbs([11183093321955941025, 11064782095852757040, 17028937525080502941, 84626144143427215]), Fq::from_montgomery_limbs([15224853022182992564, 6262171785917223470, 16177655818423871790, 1014568265658824394]), Fq::from_montgomery_limbs([625719919361420446, 8380808592474630812, 3431067771421433694, 687333698000967202]), Fq::from_montgomery_limbs([16024186533956349632, 6397405785318083633, 15989828043790400414, 850765743467676249])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([16821206357298616469, 1130392039725774709, 5626389420189454642, 1118339463429080277]), Fq::from_montgomery_limbs([8638502030638568937, 14913248685358382503, 2067471807256194154, 1100154439569300281]), Fq::from_montgomery_limbs([17564526714798056567, 2679133728209391057, 12485118550630518387, 962529009983964522]), Fq::from_montgomery_limbs([4671481911068696338, 11211404871059653651, 4714104003967750529, 460522700989518506]), Fq::from_montgomery_limbs([6601065644493764993, 6108401876661130452, 518511813649845646, 611513774682652448]), Fq::from_montgomery_limbs([2861830270848819795, 16356361265808876600, 12810879004275814176, 1286972374050895235]), Fq::from_montgomery_limbs([15194368129140163866, 4422109454732341537, 16494227980417936974, 290982210272018089])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([17007536869668539214, 3870339684122566773, 7418389053554657334, 263511272051190454]), Fq::from_montgomery_limbs([12410612082473707857, 4040398757796296521, 16094020059960359234, 939075584469470040]), Fq::from_montgomery_limbs([7418236128585187557, 15691596850766474049, 4839121991874976767, 1173030423683112566]), Fq::from_montgomery_limbs([5215564176166340124, 2655381196051933641, 6045374250672288630, 176416756249057657]), Fq::from_montgomery_limbs([13952195320089654608, 13938861125107555897, 13572960470464709581, 247820705708880751]), Fq::from_montgomery_limbs([7397318582807137181, 18043760894393149278, 14776480882092071507, 1134492376276011511]), Fq::from_montgomery_limbs([10024735062566598040, 5074414902312726054, 16541770110513564624, 1319392307629355494])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([17701692352398604469, 12227868835058163041, 6355645072062803626, 46662470597422118]), Fq::from_montgomery_limbs([17486353498011500258, 14688387905134443671, 86673003791736603, 334193962485781999]), Fq::from_montgomery_limbs([2725938978570184818, 12538279414757715369, 4423739824876634382, 990960136859773111]), Fq::from_montgomery_limbs([1658418413165666717, 4481948955101880251, 2380234418157645031, 242453692938449648]), Fq::from_montgomery_limbs([16462799862547279938, 15860491361132810167, 17855590817263886803, 566253932393246465]), Fq::from_montgomery_limbs([7795866114233701913, 671818567137775288, 8587656269292170703, 1248608466500904131]), Fq::from_montgomery_limbs([12734974453986836356, 13876952892523324606, 8958492656376686082, 1219220119207244562])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([16939094048589357804, 27828887622580244, 17879324893769825916, 1323982021311509582]), Fq::from_montgomery_limbs([3829148264852223810, 16344601064097516632, 17405856957400469367, 1015406940125315334]), Fq::from_montgomery_limbs([2496078501178333445, 3431033003985481851, 18046940389757892591, 78803126847324668]), Fq::from_montgomery_limbs([10354574228107355459, 2956204224517963071, 4281810991966937657, 773005109651151512]), Fq::from_montgomery_limbs([11661373254033173032, 7617994408757678472, 3818523458153749994, 1124211529831618075]), Fq::from_montgomery_limbs([5343527255304572547, 18057091451537453565, 7219465431491887651, 438777407253439449]), Fq::from_montgomery_limbs([6944386246740202781, 15457528402087694028, 3684425466632772887, 516255567451219667])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([11265451120049686448, 17733431402661201252, 10181100791013355567, 1222168459125423207]), Fq::from_montgomery_limbs([16541130910067039592, 8550248424255720611, 5388592089365012797, 401807388479450663]), Fq::from_montgomery_limbs([15535862948076515909, 14246335147027067446, 3440553300570031637, 1140798916603065405]), Fq::from_montgomery_limbs([181454369079184993, 10259998444066142751, 13378833995981646023, 1233479771041134216]), Fq::from_montgomery_limbs([16855179079358889281, 15202871199402424660, 10704979988227736970, 1092640973189828568]), Fq::from_montgomery_limbs([8641652447153871125, 14767053670343766852, 14349039701716536407, 776309354634057048]), Fq::from_montgomery_limbs([16709348381005515895, 522436120289473263, 2848448538858947951, 930729981926185853])])], + w_hat_collection: [Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([5469465372454405746, 11693688927749785195, 9284229770381589387, 263916402201309764]), Fq::from_montgomery_limbs([8025142443496737775, 1611073224873590596, 1595200312703520851, 268362793599128279]), Fq::from_montgomery_limbs([2646197433325367530, 3327161674116363870, 17523969835882673765, 1224872920276084181]), Fq::from_montgomery_limbs([3531022552160069605, 1044916798369741293, 13484540382795405112, 975392012720575741]), Fq::from_montgomery_limbs([3532672362950129848, 13232567668052949956, 3949082925084889589, 1169300250855119928]), Fq::from_montgomery_limbs([17405909644706202533, 9068195655028130334, 4993737853698066182, 760630245260613434]), Fq::from_montgomery_limbs([10760096219897954109, 15819961273994906871, 12000866060961275644, 494051747708222359])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([6362811837083607038, 10112120774028974554, 18223478424715278594, 334017453759956923]), Fq::from_montgomery_limbs([9425287269899366801, 11550170751949156528, 13535057945185910331, 481928711879823346]), Fq::from_montgomery_limbs([17472259370242997056, 5455690506444253075, 8901482994501262481, 216965978934341710]), Fq::from_montgomery_limbs([6461374808168440859, 2522061882145442234, 15960549034903032234, 172640120507478914]), Fq::from_montgomery_limbs([15948529219279584260, 15982605346874278694, 6269535640895470052, 598935737770408401]), Fq::from_montgomery_limbs([6387843144535167444, 3817387412721348785, 8453759171668596794, 249153266075439378]), Fq::from_montgomery_limbs([12733356128673768262, 1719659461140646111, 6773786044742649854, 1187765335723023490])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([13381096107094038201, 17813208526318089114, 18335536409132991824, 339697501389957039]), Fq::from_montgomery_limbs([17742161265183589279, 16788867255988109560, 14412857631192854758, 241525962952821929]), Fq::from_montgomery_limbs([3132656462108501803, 7337059831094147936, 10405916960575845901, 228104793330536468]), Fq::from_montgomery_limbs([4603265731852134279, 5399214122633296191, 8344043762552329652, 985455486033881462]), Fq::from_montgomery_limbs([14183899592653698860, 2177269342994828180, 10884678024220653483, 217447665355687992]), Fq::from_montgomery_limbs([11323936221359713158, 3341391736943984982, 17508560691141182274, 13239895022264913]), Fq::from_montgomery_limbs([13840945524485292215, 9974520753931283863, 4195523720400973895, 762227204403897594])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([4114179516470424298, 6425976053490693203, 12882959905974456947, 110103675307258331]), Fq::from_montgomery_limbs([15116210321604905525, 4118549106744296512, 3828886987178664227, 25697701772294022]), Fq::from_montgomery_limbs([17140438063675080897, 14878172760305139023, 16025135762152951507, 855206538655380046]), Fq::from_montgomery_limbs([10902652921411376407, 298732053043081440, 3474200546567636561, 73249755607734230]), Fq::from_montgomery_limbs([10553805817393106605, 11201074828085121396, 245273431044608348, 1118444153373328294]), Fq::from_montgomery_limbs([10914295885365195477, 9781502968861552189, 3016024785085649390, 1070566622248381309]), Fq::from_montgomery_limbs([17207023773498274582, 16270409020606599297, 15615674408609362833, 496415543408113636])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([12908589501999937487, 8065526495594728145, 14801981742319743709, 275346991162297736]), Fq::from_montgomery_limbs([17950935244956210974, 2150016307817314195, 16459867286579284659, 1042519399748946084]), Fq::from_montgomery_limbs([17900103050404502082, 14452186078281849672, 6480606341801761206, 622530813027865777]), Fq::from_montgomery_limbs([6659043465579778142, 5257478652828025077, 4476708827204863480, 16044674601944326]), Fq::from_montgomery_limbs([12982211781831995222, 12049124325752315255, 8705698258631367529, 1297634030024262944]), Fq::from_montgomery_limbs([6491213021781179190, 6621864740150572837, 16900492784527502379, 1222186981051134852]), Fq::from_montgomery_limbs([10406390218848689011, 15713870170786523261, 10757974052401463167, 1094311561986616580])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([7587047764889575280, 11453570134345482138, 6685160859155170229, 1173043895898907255]), Fq::from_montgomery_limbs([16754290437895255736, 9337309604462582506, 12206937090776739366, 420058562194519310]), Fq::from_montgomery_limbs([6762379518159147694, 8708770658919355547, 10850018038610162125, 1008085848049838570]), Fq::from_montgomery_limbs([13364112208667503342, 15694121621742726571, 10880035211673377855, 373642360429768529]), Fq::from_montgomery_limbs([2270999049018193688, 1120874468185376800, 411758025544146420, 1286339318101647584]), Fq::from_montgomery_limbs([6487825500972649335, 16454995602857338429, 5467561124775466727, 878704090415683008]), Fq::from_montgomery_limbs([1065155450424764553, 12374494253224172277, 8660000041795033471, 1111585064452242609])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([13207693125029693018, 4845337225517968099, 6777888238547968314, 1213784418907181141]), Fq::from_montgomery_limbs([8840475980926169942, 2439983533649319439, 10722568534952104178, 237040204857642763]), Fq::from_montgomery_limbs([12845192406743600306, 2989732167685602396, 9737375858921653666, 1230697363927166390]), Fq::from_montgomery_limbs([17347381872588777362, 13861116144606039805, 13092379011701123650, 764219716687899335]), Fq::from_montgomery_limbs([17560394342108123527, 2417597080550067173, 4892519055479234860, 41147728874013821]), Fq::from_montgomery_limbs([16525591378009204013, 15575464991459515509, 8422968616365174468, 411199147172891757]), Fq::from_montgomery_limbs([2381387149440902461, 5412036122050682991, 13528312040883572709, 906698787086289152])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([3906793572005745013, 18158346260651031144, 13885155522309058406, 81682927312739464]), Fq::from_montgomery_limbs([11556601788249882111, 16294603434168644341, 3233905800589936432, 205935519984731]), Fq::from_montgomery_limbs([15060956636956141748, 14545891040349678052, 11359264221189720465, 356824974507480378]), Fq::from_montgomery_limbs([13651037643855144634, 9057349283398801990, 11128939939991098829, 339192257850626331]), Fq::from_montgomery_limbs([13297032679166497156, 9615759066125111838, 17802636590285232697, 561508163130847528]), Fq::from_montgomery_limbs([8397658199708546603, 7714753189153428100, 7790178778963243461, 185139104215370464]), Fq::from_montgomery_limbs([2180790926999539040, 13412426570621087300, 11981287146222961423, 639288905678439923])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([14052035671409641250, 13059764049401289819, 11971569074865081653, 1150074447408905206]), Fq::from_montgomery_limbs([9430708294750522894, 10157980309621419039, 15263989057722108309, 986177323832836397]), Fq::from_montgomery_limbs([16901845294627087710, 3489277370587647922, 16697435307791475526, 77304496269930872]), Fq::from_montgomery_limbs([11082416581543669906, 10393162674600623371, 3285406343096341615, 1301030845466123760]), Fq::from_montgomery_limbs([18004954247480805141, 5840089398123238351, 10933632362911021710, 691842568234993272]), Fq::from_montgomery_limbs([17084441454288473640, 2235549442526480819, 4281084601663253516, 854500520628530615]), Fq::from_montgomery_limbs([15995978179451110635, 5254996480963543781, 12228168137501357375, 768298814850744789])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([14897923782972976882, 14769556083418318998, 1736582590048574781, 834637190815349022]), Fq::from_montgomery_limbs([15951362473351174286, 7550580364442366310, 1142582367377712360, 493901798774432186]), Fq::from_montgomery_limbs([6843713892592087790, 17187186375181169829, 2346758743517403254, 440860120126405528]), Fq::from_montgomery_limbs([16233685001159101924, 3591097020136681981, 3308092724991209243, 753631765436882275]), Fq::from_montgomery_limbs([12817371395153180792, 11781447572225130349, 6186298687319142696, 3684689165947228]), Fq::from_montgomery_limbs([373243522249877820, 14362378102133706173, 11334127490376039043, 1029386563565171794]), Fq::from_montgomery_limbs([3320051586177558481, 3693313581776176503, 4243258718797155237, 280296683627599109])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([15777714567664176983, 13315644392893971158, 17663595314793470728, 277994346352588461]), Fq::from_montgomery_limbs([10698748229571229513, 4993514528007275782, 9851470184989070944, 486473547501834583]), Fq::from_montgomery_limbs([15731541659238915573, 10580160097474154328, 14072730437229004460, 541485168141790138]), Fq::from_montgomery_limbs([3621838382408245781, 5140837518507686846, 692462686779552266, 1071238232671920069]), Fq::from_montgomery_limbs([16903035807706989718, 16402342976729397848, 6638418596135594138, 766006849863633370]), Fq::from_montgomery_limbs([3391835462656069558, 8478240763735883610, 6583767175704093831, 605702159954668519]), Fq::from_montgomery_limbs([13153440956937332187, 8778062398439311613, 14496687227146002795, 1184865635693926839])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([5492025723621450587, 4802310335533070821, 5103778166610184416, 1237824309223979752]), Fq::from_montgomery_limbs([13230781860208750726, 13444089818089484139, 17921412814723519524, 1222680843018701540]), Fq::from_montgomery_limbs([6469994574006187252, 9454411230540098121, 347262197325431191, 486705196263913773]), Fq::from_montgomery_limbs([3947674970632735265, 2916300977963946491, 6881904307166023017, 457112286806257099]), Fq::from_montgomery_limbs([8734203063029639947, 9235030054635977911, 17117573327238268274, 1336943205846791314]), Fq::from_montgomery_limbs([14915061407614767729, 5343187615398945512, 5552119928369165945, 230612833250200287]), Fq::from_montgomery_limbs([15343760251811669074, 11849716817931855852, 12235003752862513196, 1092174591577707855])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([16055670419025007879, 10167255563356161134, 5873677174484181331, 1119183194058634412]), Fq::from_montgomery_limbs([6545073505115712765, 12208880957985144024, 2413898051352165752, 200177087583496979]), Fq::from_montgomery_limbs([10675772825457541870, 13221200307080776964, 8360161479127911800, 166239764386669819]), Fq::from_montgomery_limbs([2006419824145230446, 1298290087846863922, 11954724771700273308, 1258575857924774921]), Fq::from_montgomery_limbs([5182647705377916601, 12490693483304324120, 16433633239279713593, 95750642123415707]), Fq::from_montgomery_limbs([95333990082317168, 17157473840728451869, 10012571168547117601, 89162384671094023]), Fq::from_montgomery_limbs([4909644498074356100, 4736187679400324044, 5882012018493447769, 1092049061252631253])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([7311109856180655396, 11772066066061778775, 4758323204662324777, 424401521788398695]), Fq::from_montgomery_limbs([10327551942056000767, 7896891757351259654, 5415141459879741043, 970729526627356745]), Fq::from_montgomery_limbs([16598021919990022911, 4748198554306289116, 17393884082489388120, 1042289367721564407]), Fq::from_montgomery_limbs([6071815438135838764, 6957160250256416369, 5727172448350823478, 363080876294209892]), Fq::from_montgomery_limbs([9289142807381535883, 17159982138314567248, 17888157697874972247, 525936327365438813]), Fq::from_montgomery_limbs([13845673834923418042, 3021171551531346231, 6196055431827427575, 879039969582851499]), Fq::from_montgomery_limbs([5868202154697212122, 13487005442942356371, 16163257120298149093, 656445568990681140])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([6021369790491535593, 2415914828808962567, 8804789562076458409, 141257607088107152]), Fq::from_montgomery_limbs([8888538666372726960, 417693810472292690, 6625260792856360214, 48639855527887045]), Fq::from_montgomery_limbs([6477686476345016713, 5099365493188187874, 9710843539546247353, 356644031678310872]), Fq::from_montgomery_limbs([514050899336931730, 1305432265166896997, 3022676376566559511, 992533360610514607]), Fq::from_montgomery_limbs([3586775418789355531, 9516764397514990497, 13077440505677103078, 1193605133897764836]), Fq::from_montgomery_limbs([11915336245727353796, 3787026284924392313, 9686187959466848805, 331336880299973516]), Fq::from_montgomery_limbs([13079652964588155522, 3686330961737298646, 12410090506639101095, 1254304946836077906])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([14841602521644800285, 9707581858559806753, 8194272850889842673, 1175777861699186223]), Fq::from_montgomery_limbs([8340457880130547197, 17733479127111148650, 9935013927746385786, 727641041410784864]), Fq::from_montgomery_limbs([15762625424586722564, 3435382265052399320, 8159926067386473340, 197998409655179296]), Fq::from_montgomery_limbs([8605915918798970675, 13692084072552856212, 4328810091072359910, 868588572376767645]), Fq::from_montgomery_limbs([1361081942051675201, 15249716130118278159, 2121941051566676057, 559576702023081922]), Fq::from_montgomery_limbs([10752810451997705936, 2862464874834320603, 10309748098106940300, 1304236557076849780]), Fq::from_montgomery_limbs([2835871431608154484, 1749514314752450621, 2725234542965358215, 1201694229063035252])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([1073940549267563537, 6847045449574399581, 17756819714770896582, 1117463338790312145]), Fq::from_montgomery_limbs([12704094153865092665, 8539050408973245584, 17734788789994913591, 929238621728331350]), Fq::from_montgomery_limbs([10082772236499648827, 15108304350645714070, 3086595294879967436, 1200387991311725607]), Fq::from_montgomery_limbs([5047622605931054175, 7557906648527048263, 9624095609160422424, 45506591031030909]), Fq::from_montgomery_limbs([6965550813182250949, 565066047981282920, 13462964114732145360, 980356066902323608]), Fq::from_montgomery_limbs([15558299170349086309, 1286346204199469533, 3574858446200038472, 851991524979889708]), Fq::from_montgomery_limbs([7325586067383897002, 10233684635542340023, 17557031856919477181, 132029230490414274])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([7217923862445368663, 3794612520606418012, 8670181285195573375, 240971390392704685]), Fq::from_montgomery_limbs([537441915444801171, 3014981172602304732, 1479722163959615169, 155749091741220885]), Fq::from_montgomery_limbs([13062793399299583557, 1159027774347651884, 2336679478816355142, 270200510125259051]), Fq::from_montgomery_limbs([3831694067573543757, 10964370664526245902, 4087998121879874921, 905965084930019006]), Fq::from_montgomery_limbs([13194259065052094927, 388722439697642959, 178624285496351497, 578824842066706531]), Fq::from_montgomery_limbs([17948259725763227950, 9014484167981796209, 6107081279184176814, 69534426400404264]), Fq::from_montgomery_limbs([7978550262967360739, 7491565367832202367, 4365729291374404994, 1335365781615388178])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([10669459440663038789, 6552676677342008487, 13316372054996453680, 550925049999738916]), Fq::from_montgomery_limbs([4419333495078684322, 6927538080001000341, 2225108594758156053, 1079053614093719540]), Fq::from_montgomery_limbs([1972675078636948291, 12089663092664065043, 17766574022138625521, 121432615644490431]), Fq::from_montgomery_limbs([1053520141057629369, 10770912132989963882, 1148187868111152786, 707938827427743885]), Fq::from_montgomery_limbs([3260322753636284964, 10729835216415125135, 716444025392599556, 690504199610876560]), Fq::from_montgomery_limbs([6934370135811844333, 6301658833825444793, 4848235658034124485, 472091301484588447]), Fq::from_montgomery_limbs([9777643377073268806, 791842489813847254, 12448150674843197239, 458910758561278370])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([15803810666230694733, 17547487450377911929, 11906139405746854533, 825285431509255503]), Fq::from_montgomery_limbs([16600353337473024459, 1886864376737549006, 616311009164692973, 639902607392049032]), Fq::from_montgomery_limbs([1680268521087434801, 1091097160854707765, 18087803601592847532, 572438372434779394]), Fq::from_montgomery_limbs([13425154509660903739, 7155042440442144058, 5484293510771639701, 440694050533320954]), Fq::from_montgomery_limbs([18374411341880395201, 14499066397809595914, 13606711309161552316, 988627169135416549]), Fq::from_montgomery_limbs([2227485226860398923, 6037771840516072237, 10092335873046301438, 263890669231622026]), Fq::from_montgomery_limbs([16396442279804673220, 11758563075897600330, 14728620288909029404, 1009629620490761817])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([17746049445618651584, 15474250106095074477, 6808865525843107141, 252069263355480366]), Fq::from_montgomery_limbs([10094119795803932244, 10978354614679659751, 7451382830965148493, 1131617137883762978]), Fq::from_montgomery_limbs([16463020271793267367, 16484453755363327531, 16299428051085732734, 1215317962997421603]), Fq::from_montgomery_limbs([222141886324808295, 13928396678279854231, 10143359980064533818, 815662865945589973]), Fq::from_montgomery_limbs([12231656940181472813, 6572412520702222123, 12613052303172694748, 266113525618574574]), Fq::from_montgomery_limbs([988110300489242272, 2246797931487708434, 10572926100714461647, 903118853801541805]), Fq::from_montgomery_limbs([530795899436597525, 8521163943052335338, 8151289800410686217, 36252124276088895])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([15950738796712300438, 5211784799364900458, 10872161777257884476, 622500837165264302]), Fq::from_montgomery_limbs([1796299668914971469, 10069069742410689124, 17398930418864211639, 571074796095573997]), Fq::from_montgomery_limbs([17415629526903541572, 60522099572337001, 7357276421993594658, 67139681069623750]), Fq::from_montgomery_limbs([3150476614427182634, 11400695529363767640, 9974085938634932190, 201799321821634924]), Fq::from_montgomery_limbs([17211147489720667761, 15454125189814636772, 1785683860014593630, 1234545901167080662]), Fq::from_montgomery_limbs([12917754021603623789, 10145571812631521550, 5237021007548635344, 113519696768852825]), Fq::from_montgomery_limbs([15503258828146475946, 914788767927389955, 8850539145480636682, 452504293017031100])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([3745554364046936255, 4597306622888789154, 5979651250338667136, 1238385628454513051]), Fq::from_montgomery_limbs([3776630884323931547, 3549782146440747750, 5508785071859620867, 701959603932551327]), Fq::from_montgomery_limbs([15669417982403128442, 4987063011318496848, 2675129774208819610, 752856218864954922]), Fq::from_montgomery_limbs([12384169795306075140, 13266521557806758758, 8976316392650036414, 779369456063978984]), Fq::from_montgomery_limbs([7882432423342926513, 17205292058596297059, 11479846445566224721, 1260089851413577942]), Fq::from_montgomery_limbs([14020835325904272518, 10352766579517264043, 15417820050597494655, 621361945178146722]), Fq::from_montgomery_limbs([17051687952810193326, 6871472877919148363, 3489400199188897362, 687766677359196782])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([17382705588788402853, 4598916697035859633, 4518832565581736311, 653080619696360531]), Fq::from_montgomery_limbs([2250500707327888710, 8472537755265510597, 8234912680399854173, 435433220178846885]), Fq::from_montgomery_limbs([11580178681277497490, 5498607256285409706, 4135785859002967214, 1124489661838811902]), Fq::from_montgomery_limbs([17779714097123614458, 8699423459123996923, 15631484148488778752, 909516986337557641]), Fq::from_montgomery_limbs([18163751795979980990, 11867922209368440763, 10515761459427034219, 1332994349752029313]), Fq::from_montgomery_limbs([6467500727988715108, 9306282235622577642, 13541102366651570877, 416775728642319774]), Fq::from_montgomery_limbs([10383099790322168017, 17058343682036470720, 16556281441888606360, 1108176927190266030])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([8622953880956768188, 7398970229585501839, 3084527402086859984, 1314489003639612227]), Fq::from_montgomery_limbs([2647974631426734642, 3924418247812102940, 4184932287519868312, 1194114797716949792]), Fq::from_montgomery_limbs([14598747211696490139, 10879316167117011549, 9287974170985802960, 731429090606059611]), Fq::from_montgomery_limbs([9444556880219125709, 5586056795682328427, 7367116120983861589, 588219877692556070]), Fq::from_montgomery_limbs([10966009764315859760, 10742608081271307349, 3709772539537310986, 497532886403996414]), Fq::from_montgomery_limbs([15416260817024711436, 431667905910500746, 1387964135713748516, 918060216721194080]), Fq::from_montgomery_limbs([11657403806820742348, 10510065601598889238, 8349835292055724063, 502241567933397208])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([5125027997144123095, 7303165910753964935, 10691796975927186405, 1054799562052499765]), Fq::from_montgomery_limbs([3677058682136778866, 2112392306281972958, 6200265695478657913, 720439016775781556]), Fq::from_montgomery_limbs([8272146025997512256, 10341698166702554611, 15851101317909170235, 452521866559100336]), Fq::from_montgomery_limbs([9968119379746477391, 13931547738079661500, 12809160964499846690, 770440521239403115]), Fq::from_montgomery_limbs([11434415940462413800, 16684667769948280834, 17418898698438354203, 1004769570334088081]), Fq::from_montgomery_limbs([3258653721799542419, 3871032496675885535, 15086212796812657551, 548348409520277973]), Fq::from_montgomery_limbs([9315341100800814485, 16973311177794380607, 9399876472392037546, 371744665007363788])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([13784204593688045203, 987916117600213001, 10766183396659311558, 616603627600417345]), Fq::from_montgomery_limbs([16045652418239566399, 8490486261587787544, 17701136459350400996, 200715104605533295]), Fq::from_montgomery_limbs([16284971980816740279, 8206294557799882679, 2790028614836001157, 1230396046687758171]), Fq::from_montgomery_limbs([9870167375285365220, 7246310481239931900, 17367559916410875637, 828013539220163509]), Fq::from_montgomery_limbs([16072962173730053757, 4193938980038706222, 11164976873168367038, 230857852443905890]), Fq::from_montgomery_limbs([7523323272036182261, 7860098358273104019, 14378442365280097332, 1330897076351403427]), Fq::from_montgomery_limbs([5166916295217303780, 12258429519770930476, 7573997247042435361, 682178487313104306])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([2043764091903620445, 4485903403091863087, 7882707843266586726, 32588602135411527]), Fq::from_montgomery_limbs([15445407966754968040, 18357001192960460653, 4704086230082948769, 786939246434391312]), Fq::from_montgomery_limbs([16117366278228333427, 18271129267524238221, 10279609063883049289, 1039698878929789014]), Fq::from_montgomery_limbs([7187518414442758799, 1779717612181090682, 11702580549115117112, 938810897647106356]), Fq::from_montgomery_limbs([17722222577775244941, 9996465098177475040, 6523413930963943566, 594985722442752339]), Fq::from_montgomery_limbs([14942503613037167587, 18043065733746265056, 18350946329946766564, 456482704506596726]), Fq::from_montgomery_limbs([413913659191909137, 6804960474770818549, 11211569852612831192, 29172099643213194])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([12244020429757927595, 7878431481226438368, 15736494002689538032, 952552586365680365]), Fq::from_montgomery_limbs([6811639335636941408, 13087253934833450042, 14243138544038514009, 802500736974958878]), Fq::from_montgomery_limbs([5119841013779673124, 924763452388520667, 13728889174508658116, 1253763325687067827]), Fq::from_montgomery_limbs([15043507624384025219, 14829641103772380163, 3009461704678867396, 937642236989310683]), Fq::from_montgomery_limbs([11671642017952121222, 16541053200478701290, 1980039776401781944, 588963913112990120]), Fq::from_montgomery_limbs([10584858696775764162, 11016739814752144940, 16324314276275577748, 654922621317102495]), Fq::from_montgomery_limbs([3244897877015736117, 11237789704802235882, 15022173147815144257, 40109243059779922])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([13421818826894964525, 6843121314819036302, 177656756133214759, 1219229288475674852]), Fq::from_montgomery_limbs([6718699512784917601, 586674041776306822, 18334677892276409595, 789222582574373919]), Fq::from_montgomery_limbs([2284827956975526833, 6582209151387402444, 16582912253436322211, 341803586231976372]), Fq::from_montgomery_limbs([7256396544134998118, 8214951682602116321, 3245431556959173874, 1245025275513704302]), Fq::from_montgomery_limbs([15432965983836887543, 14720892157109837025, 15495565877696769481, 28040874075986580]), Fq::from_montgomery_limbs([2845048156588876954, 8511864041625766030, 12227720668782503297, 751125685338714507]), Fq::from_montgomery_limbs([16400929974316258476, 14955948068318960184, 10179371694614714547, 1203413977422071153])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([6945749691605470013, 11814685140591736549, 9661986044853389934, 549110123010799116]), Fq::from_montgomery_limbs([10314852142802128718, 16931011931436831749, 6272554436628472312, 613946066674111963]), Fq::from_montgomery_limbs([7885885393747543748, 6205273416854026781, 3045614234898978712, 325443134576651832]), Fq::from_montgomery_limbs([16340716059032367665, 13900104810468791197, 13840116352417324181, 807825755702914983]), Fq::from_montgomery_limbs([11307065830129329386, 17314979792657924564, 1031027443933101440, 670942943796932032]), Fq::from_montgomery_limbs([16427383528817659047, 269318770779983782, 12646967434416881049, 792232402464509209]), Fq::from_montgomery_limbs([5305513183378836911, 3912518176481377699, 15813014949092997837, 717786010393961950])])], + }, + optimized_arc: OptimizedArcMatrix::<39, 8, 312>::new_from_known([Fq::from_montgomery_limbs([17670646277747935280, 16706444459999957760, 7654997937391160943, 659194013361630234]), Fq::from_montgomery_limbs([9306410324956668761, 11918867663968452855, 16159669320449336406, 1027263653273380654]), Fq::from_montgomery_limbs([10424544810878645940, 11533042162917906716, 11405431418950019185, 1181592306684207657]), Fq::from_montgomery_limbs([15511314950168773025, 2706584092620486610, 12589344906057924987, 198949415522711747]), Fq::from_montgomery_limbs([6463242934034011456, 4480775049700236083, 1147244402884869561, 251099301522684222]), Fq::from_montgomery_limbs([6076653156556680739, 6058362204127962922, 2609006430585927072, 1274277644859784421]), Fq::from_montgomery_limbs([4034147285618545471, 16309046946281719379, 11732506942908882170, 1141734761043516350]), Fq::from_montgomery_limbs([15181402120606708665, 769117698742393942, 8000709366545785093, 128042919054960870]), Fq::from_montgomery_limbs([1723632755773767909, 7425611528820224114, 3846361608213771012, 1317157014229771878]), Fq::from_montgomery_limbs([1180004570926588292, 9835115993104089813, 255514544102365106, 370024046994873563]), Fq::from_montgomery_limbs([16507101987459533719, 15603514395660572922, 14849362947260167652, 1094669615299361663]), Fq::from_montgomery_limbs([1641419564627940104, 1734977130266781622, 2359844858057393580, 88569664018692634]), Fq::from_montgomery_limbs([16267328831985402574, 4504129177123355587, 2430336937000039615, 182724946762968945]), Fq::from_montgomery_limbs([17793535158928999608, 5634031392654154747, 10364337635238532583, 1179994829791766723]), Fq::from_montgomery_limbs([145700301814233551, 7743364595931833861, 13600389751414362190, 60896176710147956]), Fq::from_montgomery_limbs([17934232373820563709, 6533845630243602776, 15324676632824344806, 193078344538210235]), Fq::from_montgomery_limbs([3358859423299088468, 11840854300859333122, 8971776175135254558, 1017237487419914281]), Fq::from_montgomery_limbs([16328481477177681368, 1582997519876787207, 5731557971602616313, 498420306800783215]), Fq::from_montgomery_limbs([12526989383108933614, 11731194362815364383, 12171285115754354694, 1149426086446852474]), Fq::from_montgomery_limbs([809732533742229508, 9195963923014534752, 11886583635578374853, 1292532069463172705]), Fq::from_montgomery_limbs([15459398930996981001, 17972537529111616674, 6256384561719931081, 1099908904421687269]), Fq::from_montgomery_limbs([6194631511262826563, 5980361634035332899, 6132585703186883039, 1343152289862207638]), Fq::from_montgomery_limbs([13704532277655419198, 9493963458736770267, 12653804519172949169, 218428805830292650]), Fq::from_montgomery_limbs([8013496787819495990, 18081394694809078101, 14689354188530395484, 215594972753885108]), Fq::from_montgomery_limbs([1765918642197202432, 14609627278749496598, 17838479232731490790, 483435431183692300]), Fq::from_montgomery_limbs([16887594024800193480, 1328476430727273505, 17409984215868190656, 1068059229250495642]), Fq::from_montgomery_limbs([15487315671093445122, 4028755842123792652, 14118515559434131307, 600004660835889583]), Fq::from_montgomery_limbs([13620558349664282044, 9072735252525972202, 312787852320488038, 47231029883010665]), Fq::from_montgomery_limbs([9895950479699930991, 1320083262020086701, 9381389112858508819, 928504768072893822]), Fq::from_montgomery_limbs([10747871248019763953, 4479404654791651748, 11550770912037988700, 438216942461032792]), Fq::from_montgomery_limbs([18385142532667962947, 12272398000439779637, 7461987138462771945, 558726769125714997]), Fq::from_montgomery_limbs([14139485618053732983, 8348792317702713313, 367233286875102863, 186067690854023043]), Fq::from_montgomery_limbs([9041249832633195933, 456527929350696070, 3136123267563166118, 862425036609816636]), Fq::from_montgomery_limbs([15124489565605096262, 9591776999407651202, 9949743867591863836, 379301809986101293]), Fq::from_montgomery_limbs([7936212225265692567, 5167873242552786141, 15086007892632579186, 34123317109097916]), Fq::from_montgomery_limbs([11979204740795107684, 9025639229793397244, 5413420333413553932, 863248811490344887]), Fq::from_montgomery_limbs([9695363700834200933, 8045139581671731368, 11369126945536873679, 469549910005852030]), Fq::from_montgomery_limbs([16001389245048329705, 14343919283544642008, 8770282828186128872, 609282374273682689]), Fq::from_montgomery_limbs([3823216797063303082, 1094417965873836739, 128140664081656267, 505393735803371332]), Fq::from_montgomery_limbs([11607694328136514560, 15466463320091898450, 1284330480161723488, 523170093647820661]), Fq::from_montgomery_limbs([6591976781647884526, 13155313999173994351, 5534892153549946238, 596288575025257402]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11245287468508932221, 6475072057356916286, 8955917100198612964, 906270931915685321]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15725649958168108419, 4885330408482380508, 6484207300414290657, 1056573086606426860]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16437212199268506264, 15424576221688158299, 13027006101536779850, 608117920425829987]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17697959731033747413, 881277620659586097, 12999020138550792084, 218994748484938916]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12187347033384567067, 17834331425991885966, 8111171543195993305, 1237278747760332198]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11540996079264122621, 2083205448185058166, 346303233664255773, 67570065514985214]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10393932313960189738, 17658417030509504989, 4494310414388827903, 1083916009420136201]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2630959439345449795, 1305013099304121044, 14958893064556663587, 502133670161114876]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13496177055604370316, 12107925075218853848, 10893831346139387200, 735686689798442157]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12364352345596204590, 12473718848164928984, 2425158662567034925, 904357473540167435]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14250114029266561642, 9657963390342822389, 16617255202449702017, 52229193358824331]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3393942568576243306, 15201405507578251139, 6434177138638406256, 116816845492109945]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14360127524315233155, 4631991403443744392, 10826720762323261633, 1154614674523717146]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14829610837565210361, 7693159893394777397, 13277623225200387185, 263905793180518944]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4366690825327685189, 15770582084981330795, 9277162666554299542, 1073180600510589318]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16303997479448678802, 7666294877889688289, 2209941188570371640, 1162514781528013202]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1444309609555002006, 10573827461364748619, 2213854418060563275, 401298293463815465]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13603143649902644173, 267673648604347469, 14770735498081352270, 897064240488864979]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8455439882916778200, 7244379144226653693, 4901050804550540073, 742531378918583129]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9638569098999723413, 8668710516732565855, 12439587172429553092, 769864205315111320]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10577866480500504509, 15180092538013446632, 5047010252898418108, 950851917894966177]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3189260863075829869, 10864458126965265163, 3908173847970795616, 372196369105917792]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2051981355439501951, 5174689290614735930, 13076787589476369050, 248791600711156417]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18083408695123027967, 12620252496424532716, 15225720090085185173, 1087409511851215366]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1151518846415312778, 2617847070972026268, 11920538756871768189, 372494371299109617]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8129021687746030207, 5089594247705352277, 13404536729495455227, 996268291797137887]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9082481642086184012, 16123562957232930427, 113453873016526172, 1171240835007212511]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9619017927874739465, 12861346968534199922, 6474341695138246789, 329774666529093679]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4828844673239990367, 9237140426585666270, 4472429349292670700, 1211740921942321738]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6374588877936433558, 11607665174546753642, 15847675340170713041, 474145143590361300]), Fq::from_montgomery_limbs([4088002413776997222, 16030858922743461837, 4313473177343544055, 817302900123673764]), Fq::from_montgomery_limbs([18216186189548814543, 5687648301273358200, 6564098766262925833, 235647764529877689]), Fq::from_montgomery_limbs([1421650618584051851, 9669410210003093316, 15430467067773365518, 994269415526604309]), Fq::from_montgomery_limbs([7574559796775011993, 9643962694113220666, 1013275434882478619, 543427156325963008]), Fq::from_montgomery_limbs([4532353768594877907, 2433286855157726742, 15167390808651362948, 914159030044677082]), Fq::from_montgomery_limbs([14155199821083030453, 3642619697360819367, 7765405773737076472, 1202115259646869817]), Fq::from_montgomery_limbs([16335533268534142579, 4358492749042076660, 16385044626223358243, 847268434257421024]), Fq::from_montgomery_limbs([726136436292617217, 4735276118883290434, 6495677390337301519, 1007951275499954400]), Fq::from_montgomery_limbs([1441892049918589996, 16125120862288806381, 5244917656153261337, 108755599353706277]), Fq::from_montgomery_limbs([9330223445766086137, 9406197553353640417, 13281468059023600014, 500503138812404763]), Fq::from_montgomery_limbs([5355456155777194776, 15418542913049291849, 7681885321566295504, 1188094463923126996]), Fq::from_montgomery_limbs([11882193142358058793, 4624069509548102427, 6735235437551193554, 962114122876706035]), Fq::from_montgomery_limbs([1819083831857771980, 8349663267034291058, 14403983179525206765, 942284040773068417]), Fq::from_montgomery_limbs([7024062436534453440, 15203692147142724388, 17082973923084045231, 1191890185052815108]), Fq::from_montgomery_limbs([6672719206476059341, 18362672287252020084, 3555226216430454216, 300718449399370145]), Fq::from_montgomery_limbs([5828458911011841758, 9271852277477872143, 18378348640149073615, 591074353691784318]), Fq::from_montgomery_limbs([15397757499179479361, 1878199828613873660, 4164621900891789384, 558990401377082502]), Fq::from_montgomery_limbs([11069496558892348093, 10253211614498485032, 11458203419889384673, 575447664584685933]), Fq::from_montgomery_limbs([9808353214047792416, 4805184465312945639, 3985871967202506787, 1229730183276593449]), Fq::from_montgomery_limbs([8420435996312062450, 11100705514596499443, 1523101111273631766, 639557004587150270]), Fq::from_montgomery_limbs([15630012259368829028, 15079774099427294323, 16765804689810369633, 834886070512612798]), Fq::from_montgomery_limbs([2000344807995355152, 8654391083188520616, 13301563010992444431, 490951127405891771]), Fq::from_montgomery_limbs([11761875542266860374, 709339183471929228, 17682621289319303167, 570040706396372700]), Fq::from_montgomery_limbs([3366481512891059038, 12720609556939839584, 1707138651265172645, 36940608792331559]), Fq::from_montgomery_limbs([2427334396528044490, 10170194639028880515, 18243990154741074229, 607502491270396977]), Fq::from_montgomery_limbs([6267947100515031640, 14520122887125811439, 6695614471931546770, 251319533602819784]), Fq::from_montgomery_limbs([7663026857490478572, 15777701966597798170, 10617198553182548195, 642318201966621785]), Fq::from_montgomery_limbs([9959998770754152632, 13119241263216166622, 6328810982306793729, 571460896430554998]), Fq::from_montgomery_limbs([12042605027273090048, 14859482580111939906, 11509134713697889199, 561895216440235106]), Fq::from_montgomery_limbs([1156916933025613310, 4529329408550568088, 14286907616576238972, 1309540780962817079]), Fq::from_montgomery_limbs([7510365353910652337, 14538991928012962248, 4644117500717216624, 1340316749461135700])]), + } +} From 9b6eddf5c811d3c6237677fc13c5b80cada6d6ca Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Tue, 2 Apr 2024 18:54:00 -0400 Subject: [PATCH 51/54] poseidon377: r1cs --- poseidon377/src/lib.rs | 4 ++-- poseidon377/src/r1cs.rs | 14 +++++++------- poseidon377/tests/r1cs.rs | 12 +++++------- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/poseidon377/src/lib.rs b/poseidon377/src/lib.rs index cf61f1b..b19940a 100644 --- a/poseidon377/src/lib.rs +++ b/poseidon377/src/lib.rs @@ -35,5 +35,5 @@ pub use decaf377::Fq; pub use poseidon_parameters::v1::PoseidonParameters; pub use poseidon_permutation::Instance; -// #[cfg(feature = "r1cs")] -// pub mod r1cs; +#[cfg(feature = "r1cs")] +pub mod r1cs; diff --git a/poseidon377/src/r1cs.rs b/poseidon377/src/r1cs.rs index 7dd1cd6..0c0c48c 100644 --- a/poseidon377/src/r1cs.rs +++ b/poseidon377/src/r1cs.rs @@ -12,7 +12,7 @@ pub fn hash_1( Ok(InstanceVar::n_to_1_fixed_hash( crate::RATE_1_PARAMS.clone(), cs.clone(), - vec![domain_separator.clone(), value], + [domain_separator.clone(), value], )) } @@ -24,7 +24,7 @@ pub fn hash_2( Ok(InstanceVar::n_to_1_fixed_hash( crate::RATE_2_PARAMS.clone(), cs.clone(), - vec![domain_separator.clone(), value.0, value.1], + [domain_separator.clone(), value.0, value.1], )) } @@ -36,7 +36,7 @@ pub fn hash_3( Ok(InstanceVar::n_to_1_fixed_hash( crate::RATE_3_PARAMS.clone(), cs.clone(), - vec![domain_separator.clone(), value.0, value.1, value.2], + [domain_separator.clone(), value.0, value.1, value.2], )) } @@ -48,7 +48,7 @@ pub fn hash_4( Ok(InstanceVar::n_to_1_fixed_hash( crate::RATE_4_PARAMS.clone(), cs.clone(), - vec![domain_separator.clone(), value.0, value.1, value.2, value.3], + [domain_separator.clone(), value.0, value.1, value.2, value.3], )) } @@ -60,7 +60,7 @@ pub fn hash_5( Ok(InstanceVar::n_to_1_fixed_hash( crate::RATE_5_PARAMS.clone(), cs.clone(), - vec![ + [ domain_separator.clone(), value.0, value.1, @@ -79,7 +79,7 @@ pub fn hash_6( Ok(InstanceVar::n_to_1_fixed_hash( crate::RATE_6_PARAMS.clone(), cs.clone(), - vec![ + [ domain_separator.clone(), value.0, value.1, @@ -99,7 +99,7 @@ pub fn hash_7( Ok(InstanceVar::n_to_1_fixed_hash( crate::RATE_7_PARAMS.clone(), cs.clone(), - vec![ + [ domain_separator.clone(), value.0, value.1, diff --git a/poseidon377/tests/r1cs.rs b/poseidon377/tests/r1cs.rs index aaec18c..b82a7e4 100644 --- a/poseidon377/tests/r1cs.rs +++ b/poseidon377/tests/r1cs.rs @@ -1,4 +1,3 @@ -use ark_ff::PrimeField; use ark_groth16::{r1cs_to_qap::LibsnarkReduction, Groth16, ProvingKey, VerifyingKey}; use ark_r1cs_std::prelude::{AllocVar, EqGadget}; use ark_relations::r1cs::{ConstraintSynthesizer, ToConstraintField}; @@ -7,12 +6,11 @@ use decaf377::{ r1cs::{CountConstraints, FqVar}, Bls12_377, Fq, }; -use once_cell::sync::Lazy; use proptest::prelude::*; use rand_core::OsRng; // This is a domain separator we'll use as a constant in our circuits below. -static DOMAIN_SEP: Lazy = Lazy::new(|| Fq::from(666u64)); +const DOMAIN_SEP: Fq = Fq::from_montgomery_limbs([15545862963729521748, 8301038308012579564, 6940338389606830037, 431207966161902270]); /// The maximum fixed-width Poseidon hash exposed to downstream users of this crate. const MAX_WIDTH_POSEIDON_HASH: usize = 7; @@ -49,7 +47,7 @@ impl ConstraintSynthesizer for PreimageCircuit { preimage_vars.push(preimage_var); } - let domain_separator_var = FqVar::new_constant(cs.clone(), *DOMAIN_SEP)?; + let domain_separator_var = FqVar::new_constant(cs.clone(), DOMAIN_SEP)?; // Add all public inputs let mut hash_output_vars = Vec::new(); for hash_output in self.hash_outputs { @@ -165,7 +163,7 @@ fn groth16_hash_proof_happy_path(v1 in fq_strategy(), v2 in fq_strategy(), v3 in let mut rng = OsRng; let preimages = [v1, v2, v3, v4, v5, v6, v7]; - let mut hash_outputs = [Fq::zero(); MAX_WIDTH_POSEIDON_HASH]; + let mut hash_outputs = [Fq::from(0u64); MAX_WIDTH_POSEIDON_HASH]; hash_outputs[0] = poseidon377::hash_1(&DOMAIN_SEP, preimages[0]); hash_outputs[1] = poseidon377::hash_2(&DOMAIN_SEP, (preimages[0], preimages[1])); hash_outputs[2] = poseidon377::hash_3(&DOMAIN_SEP, (preimages[0], preimages[1], preimages[2])); @@ -198,7 +196,7 @@ fn groth16_hash_proof_unhappy_path(v1 in fq_strategy(), v2 in fq_strategy(), v3 let mut rng = OsRng; let preimages = [v1, v2, v3, v4, v5, v6, v7]; - let mut hash_outputs = [Fq::zero(); MAX_WIDTH_POSEIDON_HASH]; + let mut hash_outputs = [Fq::from(0u64); MAX_WIDTH_POSEIDON_HASH]; hash_outputs[0] = poseidon377::hash_1(&DOMAIN_SEP, preimages[0]); hash_outputs[1] = poseidon377::hash_2(&DOMAIN_SEP, (preimages[0], preimages[1])); hash_outputs[2] = poseidon377::hash_3(&DOMAIN_SEP, (preimages[0], preimages[1], preimages[2])); @@ -215,7 +213,7 @@ fn groth16_hash_proof_unhappy_path(v1 in fq_strategy(), v2 in fq_strategy(), v3 // Verifier POV let processed_pvk = Groth16::::process_vk(&vk).expect("can process verifying key"); - let public_inputs = [(hash_outputs[0] + Fq::one()); MAX_WIDTH_POSEIDON_HASH].to_field_elements().unwrap(); + let public_inputs = [(hash_outputs[0] + Fq::from(1u64)); MAX_WIDTH_POSEIDON_HASH].to_field_elements().unwrap(); let proof_result = Groth16::::verify_with_processed_vk(&processed_pvk, &public_inputs, &proof).unwrap(); From 0afde62284a97c185fa4a89a3a2c4645088d5852 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 3 Apr 2024 12:10:40 -0400 Subject: [PATCH 52/54] use released version of decaf377 --- Cargo.toml | 4 ++-- poseidon-consistency/Cargo.toml | 8 ++++---- poseidon-parameters/Cargo.toml | 2 +- poseidon-paramgen/Cargo.toml | 6 +++--- poseidon-permutation/Cargo.toml | 2 +- poseidon377/Cargo.toml | 4 ++-- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index fdd4016..acf5ebc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,9 +2,9 @@ members = [ "poseidon377", -# "poseidon-paramgen", + # "poseidon-paramgen" # Temporarily excluded until refactored "poseidon-permutation", - "poseidon-consistency", + # "poseidon-consistency", # Temporarily excluded until paramgen is refactored "poseidon-parameters", ] diff --git a/poseidon-consistency/Cargo.toml b/poseidon-consistency/Cargo.toml index 9e340cb..0e74074 100644 --- a/poseidon-consistency/Cargo.toml +++ b/poseidon-consistency/Cargo.toml @@ -8,10 +8,10 @@ license = "MIT OR Apache-2.0" repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] -poseidon-parameters = { path = "../poseidon-parameters" } -poseidon-paramgen = { path = "../poseidon-paramgen", default-features = false } +poseidon-parameters = { path = "../poseidon-parameters", default-features = false } +#poseidon-paramgen = { path = "../poseidon-paramgen", default-features = false } poseidon-permutation = { path="../poseidon-permutation", default-features = false } -decaf377 = { git = "https://github.com/penumbra-zone/decaf377.git", branch="for-poseidon377", default-features = false } +decaf377 = { version="0.9", default-features = false } [dev-dependencies] criterion = { version = "0.4", features=["html_reports"] } @@ -19,7 +19,7 @@ ark-ff = "0.4" ark-ed-on-bls12-377 = "0.4" num-bigint = "0.4" proptest = "1" -rand_core = { version = "0.6.3", features = ["getrandom"] } +rand_core = { version = "0.6.3", default-features=false } rand_chacha = "0.3" once_cell = "1.8" diff --git a/poseidon-parameters/Cargo.toml b/poseidon-parameters/Cargo.toml index f1918cf..dd32115 100644 --- a/poseidon-parameters/Cargo.toml +++ b/poseidon-parameters/Cargo.toml @@ -9,7 +9,7 @@ keywords = ["no_std"] repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] -decaf377 = { git = "https://github.com/penumbra-zone/decaf377.git", branch="for-poseidon377", default-features = false } +decaf377 = { version="0.9", default-features = false } [dev-dependencies] ark-ff = { version = "^0.4.0", default-features = false } diff --git a/poseidon-paramgen/Cargo.toml b/poseidon-paramgen/Cargo.toml index a41e7a3..9e2f102 100644 --- a/poseidon-paramgen/Cargo.toml +++ b/poseidon-paramgen/Cargo.toml @@ -15,12 +15,12 @@ getrandom = { version = "0.2", default-features = false, features = ["js"] } merlin = { version = "3.0", default-features = false } num = { version = "0.4", default-features = false } num-bigint = { version = "0.4", default-features = false } -rand_core = { version = "0.6.3", default-features = false, features = ["getrandom"] } +# rand_core = { version = "0.6.3", default-features = false } poseidon-parameters = { path = "../poseidon-parameters", default-features = false, version = "1.0" } [dev-dependencies] -decaf377 = { git = "https://github.com/penumbra-zone/decaf377.git", branch="for-poseidon377", default-features = false } +decaf377 = { version="0.9", default-features = false } ark-bn254 = "0.4" ark-ed-on-bls12-377 = "0.4" ark-ed-on-bls12-381 = "0.4" @@ -34,7 +34,7 @@ std = [ "merlin/std", "num/std", "num-bigint/std", - "rand_core/std", +# "rand_core/std", "getrandom/std", "poseidon-parameters/std", diff --git a/poseidon-permutation/Cargo.toml b/poseidon-permutation/Cargo.toml index b67c0ae..1bb54f5 100644 --- a/poseidon-permutation/Cargo.toml +++ b/poseidon-permutation/Cargo.toml @@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0" repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] -decaf377 = { git = "https://github.com/penumbra-zone/decaf377.git", branch="for-poseidon377", default-features = false } +decaf377 = { version="0.9", default-features = false } ark-ff = { version = "0.4", default-features = false, optional=true } ark-std = { version = "^0.4.0", default-features = false, optional=true } ark-r1cs-std = {version = "0.4", default-features = false, optional=true } diff --git a/poseidon377/Cargo.toml b/poseidon377/Cargo.toml index 538d2d7..f2d251d 100644 --- a/poseidon377/Cargo.toml +++ b/poseidon377/Cargo.toml @@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0" repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] -decaf377 = { git = "https://github.com/penumbra-zone/decaf377.git", branch="for-poseidon377", default-features = false } +decaf377 = { version="0.9", default-features = false } poseidon-parameters = { version="1.0", path = "../poseidon-parameters", default-features = false } poseidon-permutation = { version="1.0", path = "../poseidon-permutation", default-features = false } @@ -24,7 +24,7 @@ ark-serialize = { version = "0.4", default_features = false, optional=true } [dev-dependencies] ark-ed-on-bls12-381 = "0.4" proptest = "1" -rand_core = { version = "0.6.3", features = ["getrandom"] } +rand_core = { version = "0.6.3", default-features=false } rand_chacha = "0.3" ark-ff = "0.4" From 37b37d8023bc34a6977177ef35863f428b3009cb Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 3 Apr 2024 12:36:52 -0400 Subject: [PATCH 53/54] rustfmt --- poseidon377/src/lib.rs | 2 +- poseidon377/src/params/rate_2.rs | 2314 ++++++++- poseidon377/src/params/rate_3.rs | 3246 ++++++++++++- poseidon377/src/params/rate_4.rs | 4252 ++++++++++++++++- poseidon377/src/params/rate_5.rs | 5317 ++++++++++++++++++++- poseidon377/src/params/rate_6.rs | 6426 ++++++++++++++++++++++++- poseidon377/src/params/rate_7.rs | 7612 +++++++++++++++++++++++++++++- poseidon377/tests/r1cs.rs | 7 +- 8 files changed, 29076 insertions(+), 100 deletions(-) diff --git a/poseidon377/src/lib.rs b/poseidon377/src/lib.rs index b19940a..863ce74 100644 --- a/poseidon377/src/lib.rs +++ b/poseidon377/src/lib.rs @@ -29,7 +29,7 @@ pub const RATE_6_PARAMS: PoseidonParameters<7, 6, 49, 36, 39, 7, 273, 31> = /// Parameters for the rate-7 instance of Poseidon. pub const RATE_7_PARAMS: PoseidonParameters<8, 7, 64, 49, 39, 8, 312, 31> = -params::rate_7::rate_7(); + params::rate_7::rate_7(); pub use decaf377::Fq; pub use poseidon_parameters::v1::PoseidonParameters; diff --git a/poseidon377/src/params/rate_2.rs b/poseidon377/src/params/rate_2.rs index d871ac9..213fe31 100644 --- a/poseidon377/src/params/rate_2.rs +++ b/poseidon377/src/params/rate_2.rs @@ -8,23 +8,2305 @@ use poseidon_parameters::v1::{ pub const fn rate_2() -> PoseidonParameters<3, 2, 9, 4, 39, 3, 117, 31> { PoseidonParameters { M: 128, - arc: ArcMatrix::<39, 3, 117>::new_from_known([Fq::from_montgomery_limbs([13532052565085671856, 13175575834742130482, 14571043277169067394, 1128324334676141805]), Fq::from_montgomery_limbs([10586567975029405298, 5987505274649066590, 9663655893165983133, 381788629769180835]), Fq::from_montgomery_limbs([7404335995308317606, 10342209374602516054, 14679697400509748167, 1259991645283011647]), Fq::from_montgomery_limbs([12711294721892819516, 8412935995118692797, 7069737649526067295, 549549236990677487]), Fq::from_montgomery_limbs([128694122049037398, 15825223235256271389, 74647683628497806, 403759781237802093]), Fq::from_montgomery_limbs([3501552524290051296, 10688664658423588201, 8345653809557910120, 766292783896459938]), Fq::from_montgomery_limbs([13998055823902745235, 15535161481341849823, 9848874496394823215, 579121379437172744]), Fq::from_montgomery_limbs([16363263235454987811, 9117252686821547535, 4794867261658414781, 418411818796950741]), Fq::from_montgomery_limbs([3710344964675021293, 13957371261080223237, 15195218532629186765, 760708816844813378]), Fq::from_montgomery_limbs([16135673103471103205, 13943139040297964408, 12037506718934223099, 1187380734246932890]), Fq::from_montgomery_limbs([11326210002632211732, 2893415499386035614, 2949171194607212014, 568849018592141776]), Fq::from_montgomery_limbs([13925494990768706056, 13969996543019858204, 13457764640058086886, 114396439087701688]), Fq::from_montgomery_limbs([16351586607272228519, 6269966282891300082, 12490381894697744781, 834648274293416263]), Fq::from_montgomery_limbs([1437979443977545600, 14767193465362841311, 11074881595123675812, 1204201379421269428]), Fq::from_montgomery_limbs([5230240271406271908, 16847766581152362930, 1712847198165617791, 311937423231086981]), Fq::from_montgomery_limbs([3645836740283016323, 15685198898945208452, 1980971647688859029, 176967089015698342]), Fq::from_montgomery_limbs([7550143813701248311, 18291556615524985846, 8534400014086995148, 500430429779017952]), Fq::from_montgomery_limbs([596957473479108084, 6324092840533510915, 4811101589352947098, 76518932650696039]), Fq::from_montgomery_limbs([336812235439984799, 13522610888312181094, 10501405696980879642, 449669351326561391]), Fq::from_montgomery_limbs([12592523411743912820, 3924222765120111350, 5699458771760954386, 892267873608702453]), Fq::from_montgomery_limbs([12993017322389395630, 5952902593915102432, 5247111021983199097, 470467609253978097]), Fq::from_montgomery_limbs([7244663031809848522, 3071554415549245091, 2773295222867337766, 1090905641165090834]), Fq::from_montgomery_limbs([9981097535495148290, 12930981823992014491, 9629464214154256600, 308026108875661910]), Fq::from_montgomery_limbs([12850815434424207307, 8847171669624931211, 16288364336002865240, 954936779594025677]), Fq::from_montgomery_limbs([11236881576270168641, 15414742267201110956, 7825767860878753872, 721136380245447153]), Fq::from_montgomery_limbs([2832704701681877466, 7235621408572302496, 11812570847329545593, 792455748001887640]), Fq::from_montgomery_limbs([3432713492718273410, 6465506654245539380, 8827139003294513485, 992550877185604089]), Fq::from_montgomery_limbs([9728786934890323565, 10584002864733096791, 2293345482796697755, 180937419315601034]), Fq::from_montgomery_limbs([13822678097673121251, 4948809415032161320, 15691917123613077102, 683890210553461269]), Fq::from_montgomery_limbs([9002390647260096239, 10448673368926307125, 17815937281103619895, 1097505426950771788]), Fq::from_montgomery_limbs([13908365267431289868, 3370079770970658040, 15308027316557057295, 1308145822882463267]), Fq::from_montgomery_limbs([7831189882886479452, 4689238810753296883, 13159502922430301346, 27611585919074368]), Fq::from_montgomery_limbs([14912709676120752020, 10115204646384083757, 10138309295115926582, 223210301540489796]), Fq::from_montgomery_limbs([12627294687244820632, 2059848305109767326, 1888484742856066068, 1272834063475208138]), Fq::from_montgomery_limbs([6115210324513801758, 10929870666119062300, 11707806468269326656, 949025326858793021]), Fq::from_montgomery_limbs([7061826933729287205, 1126603583829494325, 5469143638052028670, 1033665004945948695]), Fq::from_montgomery_limbs([11008930476894918520, 11381807375074895164, 2844592577512486485, 1128817316316311928]), Fq::from_montgomery_limbs([5300558244079945539, 8283037415518590201, 11038807277807240648, 1178232107582202545]), Fq::from_montgomery_limbs([11862022433031293870, 8913994378642882666, 9450763413034135432, 77958396662445698]), Fq::from_montgomery_limbs([17688402066322086519, 524036851070457942, 14909117109897886121, 557290224371677333]), Fq::from_montgomery_limbs([1875815915909501089, 10678692213853973640, 15989623299920327105, 428879321377057641]), Fq::from_montgomery_limbs([1082841901890716129, 12068516826131602351, 7102481379375591007, 906616535867466859]), Fq::from_montgomery_limbs([17613918888580330287, 6204465427334198417, 9436344365449852604, 655489186886697]), Fq::from_montgomery_limbs([17585284967658841164, 80944379680805043, 2698615756683481750, 351188921018806563]), Fq::from_montgomery_limbs([15687615037958784071, 2186404284346347770, 5652967689160162635, 1056583988063876017]), Fq::from_montgomery_limbs([13107987562409563672, 3871322351409280978, 8803804680465229381, 1030040159656924298]), Fq::from_montgomery_limbs([16684869482081657339, 10281204171444660632, 1624958597982547757, 386745834466917047]), Fq::from_montgomery_limbs([6970896123209894127, 7830160530923913939, 17422861911349199859, 623374110284783712]), Fq::from_montgomery_limbs([4331844870617545742, 520046082233107649, 5594606953430693091, 249698853373994073]), Fq::from_montgomery_limbs([6680837442175120485, 6814766854525276712, 6556825746309967179, 570042050188335199]), Fq::from_montgomery_limbs([15436728868072851979, 10638387680273826288, 16379320772832534606, 822954407147775124]), Fq::from_montgomery_limbs([11837214986206518455, 596921394620411645, 13159256680099246054, 1277661308547494330]), Fq::from_montgomery_limbs([13679203667889812546, 11676386286470050129, 8357354920215222534, 456950010799870038]), Fq::from_montgomery_limbs([2229876009761017392, 13089694557765213339, 16529665410348556997, 1200161010593736391]), Fq::from_montgomery_limbs([16005321486742773520, 8650710416750881700, 12927174790925866955, 1318630719916273524]), Fq::from_montgomery_limbs([11180409359961118236, 7275623093671008389, 11439214005189014436, 975533040864102009]), Fq::from_montgomery_limbs([1493684412606064445, 1600586062110688441, 6392169949497859284, 320645276436957806]), Fq::from_montgomery_limbs([18076284763174743111, 15528272241931714086, 1987806618344857317, 81963683463344143]), Fq::from_montgomery_limbs([2380106604330211947, 13999809284604519871, 17117752833631344354, 928049684624129249]), Fq::from_montgomery_limbs([16709180677553116618, 15078892089982505559, 12839669848886637777, 1151522444646802538]), Fq::from_montgomery_limbs([1024922389916170464, 4633605473275241115, 8890730306179887903, 1145679956560153579]), Fq::from_montgomery_limbs([2689026397641652069, 13435392347048733438, 4613843849026450873, 644769297929746792]), Fq::from_montgomery_limbs([1477469845453362358, 8875949790662885201, 7478581831156986579, 67083263015332207]), Fq::from_montgomery_limbs([1506147123099314810, 6546355754774050650, 13235191534515389566, 573446483563428911]), Fq::from_montgomery_limbs([11592075759296992527, 11495396924055153811, 17020953547937729115, 326913902434578022]), Fq::from_montgomery_limbs([10523148363065643749, 13492540919508068783, 17386067260199896807, 528704601527288393]), Fq::from_montgomery_limbs([9127950768740932108, 15914409702651500773, 11784570023787002367, 340904789729663175]), Fq::from_montgomery_limbs([6245027322171754000, 15663478768566472378, 11402185558701422250, 36675236290199327]), Fq::from_montgomery_limbs([6063749964881818939, 10257461935793181106, 942936442940111744, 540037121922249544]), Fq::from_montgomery_limbs([12968659316148036261, 14899520595018177284, 3836336888070673001, 941781069635905693]), Fq::from_montgomery_limbs([126228530830236165, 5499407626081829044, 14133761497400979158, 1184006332035149871]), Fq::from_montgomery_limbs([5031808939874245057, 12620452215680194384, 1600289362926216464, 1200752349590914751]), Fq::from_montgomery_limbs([13105110393340809165, 7101636223400183860, 1455202496382111435, 1040366751489349639]), Fq::from_montgomery_limbs([2247493102747455874, 3444719793324110884, 17343476723736941016, 460423680466113922]), Fq::from_montgomery_limbs([18230610362649795022, 4850929477447852354, 2999970116929109994, 374491266534684371]), Fq::from_montgomery_limbs([205446930692894616, 10625340386042781881, 2267554848789579110, 805571592523062224]), Fq::from_montgomery_limbs([9554436490539537540, 3781982688039156286, 12732806211783679988, 207650560800307204]), Fq::from_montgomery_limbs([14608069410708161069, 15150367565152858757, 7976963546254869682, 1302080053778539832]), Fq::from_montgomery_limbs([5668581368285301758, 1481024316238442280, 14073619068562930813, 157011518856032932]), Fq::from_montgomery_limbs([10782685697581511660, 656395425526716484, 12429361742269361127, 1218629948585201369]), Fq::from_montgomery_limbs([9945724486634605933, 5559580130460001707, 4958363795583827901, 1086630389709013647]), Fq::from_montgomery_limbs([6214153618072836629, 6297284130475637236, 3341157682715609955, 687805559853576127]), Fq::from_montgomery_limbs([17561648631049166744, 4193461398377217711, 17499970945040917083, 352506169960283993]), Fq::from_montgomery_limbs([1122765646603573063, 1498611916106521677, 10924305234288949443, 728326887801130515]), Fq::from_montgomery_limbs([5800850628186966207, 4398317517906769115, 9597227115480831972, 526197039749009419]), Fq::from_montgomery_limbs([5159263173914965708, 8792786795115987428, 3124972989790777106, 1052873249848825660]), Fq::from_montgomery_limbs([1668691385020369393, 4311283499155522888, 13095876963782085960, 334904475460146335]), Fq::from_montgomery_limbs([14551884987824763154, 5459630410931408158, 838248742615457530, 355270342663742218]), Fq::from_montgomery_limbs([13811707083670026157, 17980420357872171335, 15680078942835361627, 508494405154027190]), Fq::from_montgomery_limbs([259245969673242010, 12143818002017916372, 9104957694955299615, 588078921942677607]), Fq::from_montgomery_limbs([1402823264425646775, 17394328405754534008, 8594536777296298084, 589743092826427286]), Fq::from_montgomery_limbs([17525191514318164285, 3032947818017798651, 8010733640330629183, 18263345896298111]), Fq::from_montgomery_limbs([2324591806430845335, 3802314283763375525, 5802980770825972296, 1172121386066784655]), Fq::from_montgomery_limbs([3481957081013606129, 7174433466077666272, 18298661318322644558, 779600890592950522]), Fq::from_montgomery_limbs([12191117132876429501, 13984916474435046850, 15993612081836470001, 982264150805006675]), Fq::from_montgomery_limbs([5832216401942411966, 14563514500329138886, 4063839581877579762, 988127094162723498]), Fq::from_montgomery_limbs([9980296771901734820, 8406919274419375318, 7382848308758481422, 288106649508594049]), Fq::from_montgomery_limbs([15311094169366877824, 8845543297515843004, 5111676196784685495, 854309633222289538]), Fq::from_montgomery_limbs([11805299538225612753, 2464747910811709980, 7821113581135412494, 698716086285897944]), Fq::from_montgomery_limbs([14453145658534747007, 17272254080461340124, 10230451546974640772, 626243697059407772]), Fq::from_montgomery_limbs([11287978532447653494, 18279346120194159177, 2333031913403775389, 200338723139384832]), Fq::from_montgomery_limbs([12366653650419860061, 16274230817774725784, 4516721510516055669, 75055982532212210]), Fq::from_montgomery_limbs([388555674032981681, 6567318722554709379, 2086741448191262667, 908777123569794972]), Fq::from_montgomery_limbs([9649589442582163437, 13541178269507352071, 14258536536571968121, 575215969686158075]), Fq::from_montgomery_limbs([597836451158842199, 1858657668022201800, 504852646431126025, 351889211223645499]), Fq::from_montgomery_limbs([8710335429210318089, 15939765460477572548, 13493874982974354172, 1195299757590572308]), Fq::from_montgomery_limbs([16720044796621311460, 6297107607479107816, 15666086360782481298, 946070823657072210]), Fq::from_montgomery_limbs([5216764590966106189, 18330556132248987975, 14778046174865524185, 601592383999400705]), Fq::from_montgomery_limbs([12284358746189003172, 15796822047553990474, 10249807758448272935, 1260540691182942177]), Fq::from_montgomery_limbs([14671741496053748797, 15956144823383552989, 8978105115308257315, 1129739098292337641]), Fq::from_montgomery_limbs([16528885559305010985, 14885472285663731653, 8692450371018254777, 875854298006252122]), Fq::from_montgomery_limbs([11216935928075429441, 7088545516130524118, 3510979311098449529, 980345967679074250]), Fq::from_montgomery_limbs([8480849792218315917, 11146529356407982510, 4204845623809735650, 554809226012522197]), Fq::from_montgomery_limbs([9465397404983425896, 1339596460298740670, 2695000812316794677, 164270174202044235]), Fq::from_montgomery_limbs([12807958353199166386, 2607509355362673632, 9510828759520576266, 306232379852697998]), Fq::from_montgomery_limbs([14216260065142834520, 8830790711865643815, 7264415235010871052, 905551093713836953]), Fq::from_montgomery_limbs([1392129315389772974, 3163495863255052347, 5961497987857813198, 47707649459794917])]), - mds: MdsMatrix::<3, 2, 9, 4>::new_from_known([Fq::from_montgomery_limbs([15302903146332116305, 8895355854553175376, 548696419140371791, 319366418254432479]), Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), + arc: ArcMatrix::<39, 3, 117>::new_from_known([ + Fq::from_montgomery_limbs([ + 13532052565085671856, + 13175575834742130482, + 14571043277169067394, + 1128324334676141805, + ]), + Fq::from_montgomery_limbs([ + 10586567975029405298, + 5987505274649066590, + 9663655893165983133, + 381788629769180835, + ]), + Fq::from_montgomery_limbs([ + 7404335995308317606, + 10342209374602516054, + 14679697400509748167, + 1259991645283011647, + ]), + Fq::from_montgomery_limbs([ + 12711294721892819516, + 8412935995118692797, + 7069737649526067295, + 549549236990677487, + ]), + Fq::from_montgomery_limbs([ + 128694122049037398, + 15825223235256271389, + 74647683628497806, + 403759781237802093, + ]), + Fq::from_montgomery_limbs([ + 3501552524290051296, + 10688664658423588201, + 8345653809557910120, + 766292783896459938, + ]), + Fq::from_montgomery_limbs([ + 13998055823902745235, + 15535161481341849823, + 9848874496394823215, + 579121379437172744, + ]), + Fq::from_montgomery_limbs([ + 16363263235454987811, + 9117252686821547535, + 4794867261658414781, + 418411818796950741, + ]), + Fq::from_montgomery_limbs([ + 3710344964675021293, + 13957371261080223237, + 15195218532629186765, + 760708816844813378, + ]), + Fq::from_montgomery_limbs([ + 16135673103471103205, + 13943139040297964408, + 12037506718934223099, + 1187380734246932890, + ]), + Fq::from_montgomery_limbs([ + 11326210002632211732, + 2893415499386035614, + 2949171194607212014, + 568849018592141776, + ]), + Fq::from_montgomery_limbs([ + 13925494990768706056, + 13969996543019858204, + 13457764640058086886, + 114396439087701688, + ]), + Fq::from_montgomery_limbs([ + 16351586607272228519, + 6269966282891300082, + 12490381894697744781, + 834648274293416263, + ]), + Fq::from_montgomery_limbs([ + 1437979443977545600, + 14767193465362841311, + 11074881595123675812, + 1204201379421269428, + ]), + Fq::from_montgomery_limbs([ + 5230240271406271908, + 16847766581152362930, + 1712847198165617791, + 311937423231086981, + ]), + Fq::from_montgomery_limbs([ + 3645836740283016323, + 15685198898945208452, + 1980971647688859029, + 176967089015698342, + ]), + Fq::from_montgomery_limbs([ + 7550143813701248311, + 18291556615524985846, + 8534400014086995148, + 500430429779017952, + ]), + Fq::from_montgomery_limbs([ + 596957473479108084, + 6324092840533510915, + 4811101589352947098, + 76518932650696039, + ]), + Fq::from_montgomery_limbs([ + 336812235439984799, + 13522610888312181094, + 10501405696980879642, + 449669351326561391, + ]), + Fq::from_montgomery_limbs([ + 12592523411743912820, + 3924222765120111350, + 5699458771760954386, + 892267873608702453, + ]), + Fq::from_montgomery_limbs([ + 12993017322389395630, + 5952902593915102432, + 5247111021983199097, + 470467609253978097, + ]), + Fq::from_montgomery_limbs([ + 7244663031809848522, + 3071554415549245091, + 2773295222867337766, + 1090905641165090834, + ]), + Fq::from_montgomery_limbs([ + 9981097535495148290, + 12930981823992014491, + 9629464214154256600, + 308026108875661910, + ]), + Fq::from_montgomery_limbs([ + 12850815434424207307, + 8847171669624931211, + 16288364336002865240, + 954936779594025677, + ]), + Fq::from_montgomery_limbs([ + 11236881576270168641, + 15414742267201110956, + 7825767860878753872, + 721136380245447153, + ]), + Fq::from_montgomery_limbs([ + 2832704701681877466, + 7235621408572302496, + 11812570847329545593, + 792455748001887640, + ]), + Fq::from_montgomery_limbs([ + 3432713492718273410, + 6465506654245539380, + 8827139003294513485, + 992550877185604089, + ]), + Fq::from_montgomery_limbs([ + 9728786934890323565, + 10584002864733096791, + 2293345482796697755, + 180937419315601034, + ]), + Fq::from_montgomery_limbs([ + 13822678097673121251, + 4948809415032161320, + 15691917123613077102, + 683890210553461269, + ]), + Fq::from_montgomery_limbs([ + 9002390647260096239, + 10448673368926307125, + 17815937281103619895, + 1097505426950771788, + ]), + Fq::from_montgomery_limbs([ + 13908365267431289868, + 3370079770970658040, + 15308027316557057295, + 1308145822882463267, + ]), + Fq::from_montgomery_limbs([ + 7831189882886479452, + 4689238810753296883, + 13159502922430301346, + 27611585919074368, + ]), + Fq::from_montgomery_limbs([ + 14912709676120752020, + 10115204646384083757, + 10138309295115926582, + 223210301540489796, + ]), + Fq::from_montgomery_limbs([ + 12627294687244820632, + 2059848305109767326, + 1888484742856066068, + 1272834063475208138, + ]), + Fq::from_montgomery_limbs([ + 6115210324513801758, + 10929870666119062300, + 11707806468269326656, + 949025326858793021, + ]), + Fq::from_montgomery_limbs([ + 7061826933729287205, + 1126603583829494325, + 5469143638052028670, + 1033665004945948695, + ]), + Fq::from_montgomery_limbs([ + 11008930476894918520, + 11381807375074895164, + 2844592577512486485, + 1128817316316311928, + ]), + Fq::from_montgomery_limbs([ + 5300558244079945539, + 8283037415518590201, + 11038807277807240648, + 1178232107582202545, + ]), + Fq::from_montgomery_limbs([ + 11862022433031293870, + 8913994378642882666, + 9450763413034135432, + 77958396662445698, + ]), + Fq::from_montgomery_limbs([ + 17688402066322086519, + 524036851070457942, + 14909117109897886121, + 557290224371677333, + ]), + Fq::from_montgomery_limbs([ + 1875815915909501089, + 10678692213853973640, + 15989623299920327105, + 428879321377057641, + ]), + Fq::from_montgomery_limbs([ + 1082841901890716129, + 12068516826131602351, + 7102481379375591007, + 906616535867466859, + ]), + Fq::from_montgomery_limbs([ + 17613918888580330287, + 6204465427334198417, + 9436344365449852604, + 655489186886697, + ]), + Fq::from_montgomery_limbs([ + 17585284967658841164, + 80944379680805043, + 2698615756683481750, + 351188921018806563, + ]), + Fq::from_montgomery_limbs([ + 15687615037958784071, + 2186404284346347770, + 5652967689160162635, + 1056583988063876017, + ]), + Fq::from_montgomery_limbs([ + 13107987562409563672, + 3871322351409280978, + 8803804680465229381, + 1030040159656924298, + ]), + Fq::from_montgomery_limbs([ + 16684869482081657339, + 10281204171444660632, + 1624958597982547757, + 386745834466917047, + ]), + Fq::from_montgomery_limbs([ + 6970896123209894127, + 7830160530923913939, + 17422861911349199859, + 623374110284783712, + ]), + Fq::from_montgomery_limbs([ + 4331844870617545742, + 520046082233107649, + 5594606953430693091, + 249698853373994073, + ]), + Fq::from_montgomery_limbs([ + 6680837442175120485, + 6814766854525276712, + 6556825746309967179, + 570042050188335199, + ]), + Fq::from_montgomery_limbs([ + 15436728868072851979, + 10638387680273826288, + 16379320772832534606, + 822954407147775124, + ]), + Fq::from_montgomery_limbs([ + 11837214986206518455, + 596921394620411645, + 13159256680099246054, + 1277661308547494330, + ]), + Fq::from_montgomery_limbs([ + 13679203667889812546, + 11676386286470050129, + 8357354920215222534, + 456950010799870038, + ]), + Fq::from_montgomery_limbs([ + 2229876009761017392, + 13089694557765213339, + 16529665410348556997, + 1200161010593736391, + ]), + Fq::from_montgomery_limbs([ + 16005321486742773520, + 8650710416750881700, + 12927174790925866955, + 1318630719916273524, + ]), + Fq::from_montgomery_limbs([ + 11180409359961118236, + 7275623093671008389, + 11439214005189014436, + 975533040864102009, + ]), + Fq::from_montgomery_limbs([ + 1493684412606064445, + 1600586062110688441, + 6392169949497859284, + 320645276436957806, + ]), + Fq::from_montgomery_limbs([ + 18076284763174743111, + 15528272241931714086, + 1987806618344857317, + 81963683463344143, + ]), + Fq::from_montgomery_limbs([ + 2380106604330211947, + 13999809284604519871, + 17117752833631344354, + 928049684624129249, + ]), + Fq::from_montgomery_limbs([ + 16709180677553116618, + 15078892089982505559, + 12839669848886637777, + 1151522444646802538, + ]), + Fq::from_montgomery_limbs([ + 1024922389916170464, + 4633605473275241115, + 8890730306179887903, + 1145679956560153579, + ]), + Fq::from_montgomery_limbs([ + 2689026397641652069, + 13435392347048733438, + 4613843849026450873, + 644769297929746792, + ]), + Fq::from_montgomery_limbs([ + 1477469845453362358, + 8875949790662885201, + 7478581831156986579, + 67083263015332207, + ]), + Fq::from_montgomery_limbs([ + 1506147123099314810, + 6546355754774050650, + 13235191534515389566, + 573446483563428911, + ]), + Fq::from_montgomery_limbs([ + 11592075759296992527, + 11495396924055153811, + 17020953547937729115, + 326913902434578022, + ]), + Fq::from_montgomery_limbs([ + 10523148363065643749, + 13492540919508068783, + 17386067260199896807, + 528704601527288393, + ]), + Fq::from_montgomery_limbs([ + 9127950768740932108, + 15914409702651500773, + 11784570023787002367, + 340904789729663175, + ]), + Fq::from_montgomery_limbs([ + 6245027322171754000, + 15663478768566472378, + 11402185558701422250, + 36675236290199327, + ]), + Fq::from_montgomery_limbs([ + 6063749964881818939, + 10257461935793181106, + 942936442940111744, + 540037121922249544, + ]), + Fq::from_montgomery_limbs([ + 12968659316148036261, + 14899520595018177284, + 3836336888070673001, + 941781069635905693, + ]), + Fq::from_montgomery_limbs([ + 126228530830236165, + 5499407626081829044, + 14133761497400979158, + 1184006332035149871, + ]), + Fq::from_montgomery_limbs([ + 5031808939874245057, + 12620452215680194384, + 1600289362926216464, + 1200752349590914751, + ]), + Fq::from_montgomery_limbs([ + 13105110393340809165, + 7101636223400183860, + 1455202496382111435, + 1040366751489349639, + ]), + Fq::from_montgomery_limbs([ + 2247493102747455874, + 3444719793324110884, + 17343476723736941016, + 460423680466113922, + ]), + Fq::from_montgomery_limbs([ + 18230610362649795022, + 4850929477447852354, + 2999970116929109994, + 374491266534684371, + ]), + Fq::from_montgomery_limbs([ + 205446930692894616, + 10625340386042781881, + 2267554848789579110, + 805571592523062224, + ]), + Fq::from_montgomery_limbs([ + 9554436490539537540, + 3781982688039156286, + 12732806211783679988, + 207650560800307204, + ]), + Fq::from_montgomery_limbs([ + 14608069410708161069, + 15150367565152858757, + 7976963546254869682, + 1302080053778539832, + ]), + Fq::from_montgomery_limbs([ + 5668581368285301758, + 1481024316238442280, + 14073619068562930813, + 157011518856032932, + ]), + Fq::from_montgomery_limbs([ + 10782685697581511660, + 656395425526716484, + 12429361742269361127, + 1218629948585201369, + ]), + Fq::from_montgomery_limbs([ + 9945724486634605933, + 5559580130460001707, + 4958363795583827901, + 1086630389709013647, + ]), + Fq::from_montgomery_limbs([ + 6214153618072836629, + 6297284130475637236, + 3341157682715609955, + 687805559853576127, + ]), + Fq::from_montgomery_limbs([ + 17561648631049166744, + 4193461398377217711, + 17499970945040917083, + 352506169960283993, + ]), + Fq::from_montgomery_limbs([ + 1122765646603573063, + 1498611916106521677, + 10924305234288949443, + 728326887801130515, + ]), + Fq::from_montgomery_limbs([ + 5800850628186966207, + 4398317517906769115, + 9597227115480831972, + 526197039749009419, + ]), + Fq::from_montgomery_limbs([ + 5159263173914965708, + 8792786795115987428, + 3124972989790777106, + 1052873249848825660, + ]), + Fq::from_montgomery_limbs([ + 1668691385020369393, + 4311283499155522888, + 13095876963782085960, + 334904475460146335, + ]), + Fq::from_montgomery_limbs([ + 14551884987824763154, + 5459630410931408158, + 838248742615457530, + 355270342663742218, + ]), + Fq::from_montgomery_limbs([ + 13811707083670026157, + 17980420357872171335, + 15680078942835361627, + 508494405154027190, + ]), + Fq::from_montgomery_limbs([ + 259245969673242010, + 12143818002017916372, + 9104957694955299615, + 588078921942677607, + ]), + Fq::from_montgomery_limbs([ + 1402823264425646775, + 17394328405754534008, + 8594536777296298084, + 589743092826427286, + ]), + Fq::from_montgomery_limbs([ + 17525191514318164285, + 3032947818017798651, + 8010733640330629183, + 18263345896298111, + ]), + Fq::from_montgomery_limbs([ + 2324591806430845335, + 3802314283763375525, + 5802980770825972296, + 1172121386066784655, + ]), + Fq::from_montgomery_limbs([ + 3481957081013606129, + 7174433466077666272, + 18298661318322644558, + 779600890592950522, + ]), + Fq::from_montgomery_limbs([ + 12191117132876429501, + 13984916474435046850, + 15993612081836470001, + 982264150805006675, + ]), + Fq::from_montgomery_limbs([ + 5832216401942411966, + 14563514500329138886, + 4063839581877579762, + 988127094162723498, + ]), + Fq::from_montgomery_limbs([ + 9980296771901734820, + 8406919274419375318, + 7382848308758481422, + 288106649508594049, + ]), + Fq::from_montgomery_limbs([ + 15311094169366877824, + 8845543297515843004, + 5111676196784685495, + 854309633222289538, + ]), + Fq::from_montgomery_limbs([ + 11805299538225612753, + 2464747910811709980, + 7821113581135412494, + 698716086285897944, + ]), + Fq::from_montgomery_limbs([ + 14453145658534747007, + 17272254080461340124, + 10230451546974640772, + 626243697059407772, + ]), + Fq::from_montgomery_limbs([ + 11287978532447653494, + 18279346120194159177, + 2333031913403775389, + 200338723139384832, + ]), + Fq::from_montgomery_limbs([ + 12366653650419860061, + 16274230817774725784, + 4516721510516055669, + 75055982532212210, + ]), + Fq::from_montgomery_limbs([ + 388555674032981681, + 6567318722554709379, + 2086741448191262667, + 908777123569794972, + ]), + Fq::from_montgomery_limbs([ + 9649589442582163437, + 13541178269507352071, + 14258536536571968121, + 575215969686158075, + ]), + Fq::from_montgomery_limbs([ + 597836451158842199, + 1858657668022201800, + 504852646431126025, + 351889211223645499, + ]), + Fq::from_montgomery_limbs([ + 8710335429210318089, + 15939765460477572548, + 13493874982974354172, + 1195299757590572308, + ]), + Fq::from_montgomery_limbs([ + 16720044796621311460, + 6297107607479107816, + 15666086360782481298, + 946070823657072210, + ]), + Fq::from_montgomery_limbs([ + 5216764590966106189, + 18330556132248987975, + 14778046174865524185, + 601592383999400705, + ]), + Fq::from_montgomery_limbs([ + 12284358746189003172, + 15796822047553990474, + 10249807758448272935, + 1260540691182942177, + ]), + Fq::from_montgomery_limbs([ + 14671741496053748797, + 15956144823383552989, + 8978105115308257315, + 1129739098292337641, + ]), + Fq::from_montgomery_limbs([ + 16528885559305010985, + 14885472285663731653, + 8692450371018254777, + 875854298006252122, + ]), + Fq::from_montgomery_limbs([ + 11216935928075429441, + 7088545516130524118, + 3510979311098449529, + 980345967679074250, + ]), + Fq::from_montgomery_limbs([ + 8480849792218315917, + 11146529356407982510, + 4204845623809735650, + 554809226012522197, + ]), + Fq::from_montgomery_limbs([ + 9465397404983425896, + 1339596460298740670, + 2695000812316794677, + 164270174202044235, + ]), + Fq::from_montgomery_limbs([ + 12807958353199166386, + 2607509355362673632, + 9510828759520576266, + 306232379852697998, + ]), + Fq::from_montgomery_limbs([ + 14216260065142834520, + 8830790711865643815, + 7264415235010871052, + 905551093713836953, + ]), + Fq::from_montgomery_limbs([ + 1392129315389772974, + 3163495863255052347, + 5961497987857813198, + 47707649459794917, + ]), + ]), + mds: MdsMatrix::<3, 2, 9, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 15302903146332116305, + 8895355854553175376, + 548696419140371791, + 319366418254432479, + ]), + Fq::from_montgomery_limbs([ + 16270238816294404093, + 17510165790819614716, + 15988650198697570299, + 575844906362867708, + ]), + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 16270238816294404093, + 17510165790819614716, + 15988650198697570299, + 575844906362867708, + ]), + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + ]), alpha: Alpha::Exponent(17), - rounds: RoundNumbers {r_P: 31, r_F: 8}, + rounds: RoundNumbers { r_P: 31, r_F: 8 }, optimized_mds: OptimizedMdsMatrices { - M_hat: SquareMatrix::<2, 4>::new_from_known([Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), - v: Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846])]), - w: Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846])]), - M_prime: SquareMatrix::<3, 9>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), - M_doubleprime: SquareMatrix::<3, 9>::new_from_known([Fq::from_montgomery_limbs([15302903146332116305, 8895355854553175376, 548696419140371791, 319366418254432479]), Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([7147916296078753751, 11795755565450264533, 9448453213491875784, 183737022913545514]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10406805428937057924, 14160037477503257835, 7036231764655967476, 1082136417579874198]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), - M_inverse: SquareMatrix::<3, 9>::new_from_known([Fq::from_montgomery_limbs([4383832024780107759, 7223259317565124429, 5707462847421561422, 885057472408297272]), Fq::from_montgomery_limbs([6746251504312660021, 9699181025413837338, 15260914163925889303, 35388324151454979]), Fq::from_montgomery_limbs([5008847210566114882, 8801394942975925486, 18175922902442652272, 916924432575702892]), Fq::from_montgomery_limbs([6746251504312660021, 9699181025413837338, 15260914163925889303, 35388324151454979]), Fq::from_montgomery_limbs([15450583684112934333, 18216376800760520619, 4209613945072000948, 155813436852978744]), Fq::from_montgomery_limbs([9834172736316928124, 189466111752828136, 13335900722961176546, 530999546582786085]), Fq::from_montgomery_limbs([5008847210566114882, 8801394942975925486, 18175922902442652272, 916924432575702892]), Fq::from_montgomery_limbs([9834172736316928124, 189466111752828136, 13335900722961176546, 530999546582786085]), Fq::from_montgomery_limbs([11796616273943571364, 15542379905239984210, 1578039792447016471, 947030710751083834])]), - M_hat_inverse: SquareMatrix::<2, 4>::new_from_known([Fq::from_montgomery_limbs([17242594123341362780, 10420431729582929402, 13098868289430565627, 261978409307343683]), Fq::from_montgomery_limbs([4962966789362289472, 13671436036280945585, 17033622650389008176, 591212102933547967]), Fq::from_montgomery_limbs([4962966789362289472, 13671436036280945585, 17033622650389008176, 591212102933547967]), Fq::from_montgomery_limbs([2148639234720789121, 15880825911856067065, 16042722653708983750, 635825847167915836])]), - M_00: Fq::from_montgomery_limbs([15302903146332116305, 8895355854553175376, 548696419140371791, 319366418254432479]), - M_i: Matrix::<3, 3, 9>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16360065460916622652, 6825609680461496913, 5558627326231064465, 128471165991923814]), Fq::from_montgomery_limbs([7428548079683657885, 9054293525864294989, 16239738740266557642, 509891970840567989]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7428548079683657885, 9054293525864294989, 16239738740266557642, 509891970840567989]), Fq::from_montgomery_limbs([1051461353787812132, 3723993058108873740, 15567687070894540562, 722382702096971016])]), - v_collection: [Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([3072474957567996411, 7632850653899625657, 6867324839353272651, 1129105644996777990])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([11749409346063797401, 13847779958722295463, 5230051856842938218, 809528761888529318]), Fq::from_montgomery_limbs([16538317435082867476, 140673227072662684, 4917458456429054520, 951347002169384040])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([8049501819868988169, 4640840621228515661, 5281323386686467274, 1217317166531385469]), Fq::from_montgomery_limbs([15861181624207003323, 10871450011713172103, 4492382029642778046, 495041570025076744])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([491531644685882947, 16236469504155238438, 13405996466460073108, 191442324574972544]), Fq::from_montgomery_limbs([14234832595612208455, 16711171142020806901, 9818085755212544560, 433758843793119660])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([8692243294689566788, 17131754811489911037, 16082421295010554115, 245109642615998458]), Fq::from_montgomery_limbs([12752747264486126419, 12936758402746978248, 7901753820298393242, 1086817638717069074])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([716899015486837574, 12929955716143301332, 6296181173922398814, 95630164573893864]), Fq::from_montgomery_limbs([10771615223994036552, 12477611863199363886, 5019464732542008653, 260172239809303582])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([2083749357590716775, 7802489018239475310, 4719252491703553508, 331544147020630716]), Fq::from_montgomery_limbs([11839081110669849836, 16458332811546812068, 4108523134706353886, 1014020374083768583])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([11143510974855252250, 1906425947937085984, 2407368748249553491, 504368299222388920]), Fq::from_montgomery_limbs([8041950831366606113, 14611771049638947187, 11221299042990583579, 744635656555856530])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([15987773674750471853, 7582780421302456968, 3513070142855093124, 449192997718482772]), Fq::from_montgomery_limbs([1698389311466971615, 4208825745762883192, 17737380562723619127, 1023230515994865951])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([15719775543772287808, 4711976878746234330, 9616083067266331949, 1291758636403773818]), Fq::from_montgomery_limbs([11511319411419341690, 4611804125723845050, 17905923766281011346, 701498562864789906])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([6775959117219461845, 7248217303083744152, 8323273847079805491, 1272121734883668680]), Fq::from_montgomery_limbs([15960231410259949054, 831075562495169556, 666337526106305827, 827994946738712632])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([3075648154561933440, 4787490504369527279, 2103456873768609578, 930535653041788534]), Fq::from_montgomery_limbs([13632064958207562507, 2403612539570381736, 9671114344743639907, 554518676653218341])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([16017511834618514656, 10675130055946071909, 4737919029540133580, 682111021257012783]), Fq::from_montgomery_limbs([4054052073615595653, 15900491953977945207, 9657244812600116702, 746793989576728670])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([11427159084253523216, 8137374149736453962, 493707633722255071, 574786622341431128]), Fq::from_montgomery_limbs([3016813624761290833, 9410383431703917657, 207322790806709582, 604735846059941483])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([13182715603850996122, 1385581621557644096, 15928797776098706943, 1247128249672542744]), Fq::from_montgomery_limbs([12343557143080639521, 10608577464123341465, 8700628699767163855, 822798305869360351])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([15640932130097417474, 2198144264546084253, 15157422365823566225, 162345305798039707]), Fq::from_montgomery_limbs([15379897571473551238, 13605062526804796454, 1262497433072300524, 325397323402951460])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([11985517729662602408, 11378058393967136140, 10784471266494716066, 355758022531067864]), Fq::from_montgomery_limbs([15749607349459966392, 10347221607350790242, 16868641356169832097, 9481912848277140])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([5070404887673962603, 7505346455783472838, 11581801124979799833, 162417281360137989]), Fq::from_montgomery_limbs([14359230556911256253, 4739001612305070282, 615167045189603842, 893440173159515387])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([6892861075705566142, 16405352091222855583, 9442037024015442096, 943715695188578421]), Fq::from_montgomery_limbs([2681738006276381668, 13590338127726729778, 9006319668283998389, 571100162557721724])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([7926076457258912989, 15568541251154450028, 15222738110907421829, 194241141418124411]), Fq::from_montgomery_limbs([3900695082401480226, 13241392216815987825, 6715445016875356020, 559176536870193173])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([4273472679882108688, 7043568940286842511, 9096453621609771899, 490785749945503317]), Fq::from_montgomery_limbs([2078179201499171590, 16327227019578678368, 17980150213785344661, 1297383831585962991])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([14728670056946621521, 17042639142917167694, 2971308019248556661, 314387788586761162]), Fq::from_montgomery_limbs([14126190491907727041, 8208403354023925517, 4660262216078686939, 971808842720812284])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([12606246547610594540, 9049616062023318605, 11742190485797839027, 90317661102003606]), Fq::from_montgomery_limbs([7135240500841828540, 8166637984141883895, 4762161495768731224, 1056050894881259133])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([11752411941768010421, 2371987101660996229, 7910923918069285785, 283757372746488803]), Fq::from_montgomery_limbs([14169661373594066352, 10756814747639910216, 4179402566370914468, 294039297137006515])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([12380990947758453459, 15919689303377847053, 4451172135381562238, 643870172347401539]), Fq::from_montgomery_limbs([16919934541410985772, 12894445305080351094, 3222976969400102992, 1274426454940711344])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([17739117012754232566, 7855016506876230601, 10199750748041585788, 610234517763900211]), Fq::from_montgomery_limbs([14969807057009266193, 9743543989422659962, 265344874800963549, 193281162476465682])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([9334899116745497567, 1443910720530394642, 15242704534506362012, 557844541838643008]), Fq::from_montgomery_limbs([12596150337841453197, 17941854592742713998, 9536226961205720981, 193378317632915294])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([2145847197367443746, 3494461491303192245, 8559536859052153255, 188641306996153597]), Fq::from_montgomery_limbs([6619736277081498517, 16354589870583930111, 5727794428272011445, 472934899434235719])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([15229354881950810050, 13117262548706587, 18434975406822541359, 430449497798843798]), Fq::from_montgomery_limbs([4585061371183060684, 14866599352008180181, 17851236730068556506, 483368166519918339])]), Matrix::<1, 2, 2>::new_from_known([Fq::from_montgomery_limbs([16121753970412208543, 9309799407998260359, 13316268079574695590, 1332560915242838761]), Fq::from_montgomery_limbs([5320180137128926885, 4585099896596608821, 4959026927695406777, 12672238118064834])])], - w_hat_collection: [Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([7147916296078753751, 11795755565450264533, 9448453213491875784, 183737022913545514]), Fq::from_montgomery_limbs([10406805428937057924, 14160037477503257835, 7036231764655967476, 1082136417579874198])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([18050286569012579189, 12701735779500542307, 16028299840828156173, 889670182449753716]), Fq::from_montgomery_limbs([17537805078915517156, 3881567050914191905, 15320666583506005360, 34817918541568626])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([639651884569206475, 3208454571154516477, 5589814573911893755, 812188059462663385]), Fq::from_montgomery_limbs([6035414598134387451, 221157594769622514, 1246867853953039854, 865666459554075403])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([10986953500964328689, 4552354314624673085, 10130711827018722177, 726464205504256466]), Fq::from_montgomery_limbs([14592704253024955499, 4367720503141755092, 3264507028823567377, 503642346381621716])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([6929349916420721052, 7263465717590274222, 16428445137775857828, 783617578238482410]), Fq::from_montgomery_limbs([1105466080997706678, 15638892732603802885, 15163494631828844812, 1265995546038282468])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([12695614650926966465, 7645153902251269333, 15007858904354383754, 303173888887641556]), Fq::from_montgomery_limbs([13532111267254117566, 453207663850979705, 1118439931840184625, 1109223913114108441])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([1127605964966272093, 459071588792078574, 17569200668490318799, 556567547339769587]), Fq::from_montgomery_limbs([743383751775379478, 2152757563916176356, 18215266305796881375, 613050128242856475])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([7479292154348380014, 12505834466797528681, 7061175132070981799, 1037799745298480638]), Fq::from_montgomery_limbs([4733881782580367683, 13385554219210821909, 11595152338390400937, 1286877367267536722])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([10482398298648703137, 13154284141257785070, 12900892582326783232, 1312370380898727254]), Fq::from_montgomery_limbs([7694076120856540521, 15146007605344947747, 3193830018416013595, 78000754372621570])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([5244970134326960239, 15516929113764341255, 17564742414096943825, 565809721348112173]), Fq::from_montgomery_limbs([5301582977685139465, 1069505112975002608, 16894882112854195663, 1006960914609031286])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([933807009911564028, 17655717523721777752, 659854032695183391, 696948171193839726]), Fq::from_montgomery_limbs([14431054331145497962, 17304755953697263142, 1213662370814867240, 406071929554987935])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([12663120994246797343, 2294330459533986298, 12312665243517552316, 1162434858386655769]), Fq::from_montgomery_limbs([14926635415117511105, 17764138882091983380, 9845162467394310721, 365262529860339315])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([14453117806705169688, 15371763008771329739, 859830826361086373, 695666911485789237]), Fq::from_montgomery_limbs([4372294882149658880, 8953368466178039118, 7175551968845157174, 1296799522059563299])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([10743785724983518030, 11011793084410944909, 4710170432674399868, 872985210632843618]), Fq::from_montgomery_limbs([17034928244178709962, 7064630411064620365, 11395663509669588708, 435858474778976283])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([376125808430990068, 3949770427712474479, 1831829189608085506, 1033600417294508604]), Fq::from_montgomery_limbs([10474175416970714387, 7638666470072040137, 15323998975775188709, 499861799254400548])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([1311503503152331198, 10444356300795820152, 14006643509954394380, 360275028297029580]), Fq::from_montgomery_limbs([8848990081142010576, 3767709270230096287, 3203373808160299103, 388150987057922534])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([10527714796170242821, 10614707629823438759, 2166835449751899854, 826442630247846539]), Fq::from_montgomery_limbs([6013609006746740436, 17829255150171580013, 4865370498689675602, 631806865209492278])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([15407698184224138641, 13892993523782417432, 11074522626536989473, 1282147673049091223]), Fq::from_montgomery_limbs([13566156582579433121, 10666124267110644787, 17585510383615080517, 460461758314188289])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([242069913640544639, 8584725967717195423, 8673969491922319906, 906855204727712918]), Fq::from_montgomery_limbs([7507622872789915132, 8838834878197495556, 4143887577251148647, 147314013318059527])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([739343839918695474, 15137511284934501835, 8206744331706291412, 460517726754831566]), Fq::from_montgomery_limbs([5332098194526476884, 17462053065946204764, 17109918215020530224, 45500621783055396])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([7181843829067274762, 93170180385149654, 16601265500332534068, 692920224266685092]), Fq::from_montgomery_limbs([17373541931105532396, 11757401236546761356, 8986928677878657520, 855377794858428568])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([16770152912401058713, 7784323106136704842, 3166414142982631778, 252798645948426673]), Fq::from_montgomery_limbs([9867428128375842792, 6330871821464522409, 2509737650104409073, 87377932535113034])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([9620378538351684400, 16259903847898782084, 14224517332394904862, 248783024579596034]), Fq::from_montgomery_limbs([15289486933546124534, 5057961130890228616, 5618412873763815158, 1218252246195044797])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([18285461524892798097, 1312649631515945874, 2702563113361998981, 156990921411102370]), Fq::from_montgomery_limbs([16897672275046167563, 14631253948673542966, 7825433188494427672, 497140819371349325])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([5586425496410891559, 3860435103896432777, 15075562942840298887, 539774915240951994]), Fq::from_montgomery_limbs([18444236515588467614, 2138469830557977395, 8290712504743660259, 832327778452741186])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([15144610075012749322, 11801332079357554718, 11652842602527962385, 396912768209767018]), Fq::from_montgomery_limbs([10639969620247737667, 7334159324553590340, 15063492084884778567, 878961650630548788])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([18348264072788817511, 8009061068808737218, 6097418426121505352, 1211183153837556564]), Fq::from_montgomery_limbs([17198860156343170394, 2167538157704278478, 10949270097435223366, 928056824653534234])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([10634763804674129031, 9612181115928191305, 7893421171473086290, 251268211819044542]), Fq::from_montgomery_limbs([12969986235926373418, 712178654575523278, 3830673788986900912, 1046343437814522982])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([4298621992800380154, 4055578536241120435, 9617612244989535309, 382604375840733162]), Fq::from_montgomery_limbs([18067399474523304446, 12223555489918789755, 9993950631657703109, 1048484019905387459])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([13058818877006642653, 18414014235319212231, 14027764563566307518, 703825358964196766]), Fq::from_montgomery_limbs([9830948603405623404, 3341559968925646454, 12259602563968066179, 912923676012093495])]), Matrix::<2, 1, 2>::new_from_known([Fq::from_montgomery_limbs([8043127764066461437, 14803670394754936674, 15225608398783219441, 893330814736280447]), Fq::from_montgomery_limbs([4386126239109851849, 12096965878015338652, 13672154659709754401, 191338360587662586])])], - }, - optimized_arc: OptimizedArcMatrix::<39, 3, 117>::new_from_known([Fq::from_montgomery_limbs([13532052565085671856, 13175575834742130482, 14571043277169067394, 1128324334676141805]), Fq::from_montgomery_limbs([10586567975029405298, 5987505274649066590, 9663655893165983133, 381788629769180835]), Fq::from_montgomery_limbs([7404335995308317606, 10342209374602516054, 14679697400509748167, 1259991645283011647]), Fq::from_montgomery_limbs([12711294721892819516, 8412935995118692797, 7069737649526067295, 549549236990677487]), Fq::from_montgomery_limbs([128694122049037398, 15825223235256271389, 74647683628497806, 403759781237802093]), Fq::from_montgomery_limbs([3501552524290051296, 10688664658423588201, 8345653809557910120, 766292783896459938]), Fq::from_montgomery_limbs([13998055823902745235, 15535161481341849823, 9848874496394823215, 579121379437172744]), Fq::from_montgomery_limbs([16363263235454987811, 9117252686821547535, 4794867261658414781, 418411818796950741]), Fq::from_montgomery_limbs([3710344964675021293, 13957371261080223237, 15195218532629186765, 760708816844813378]), Fq::from_montgomery_limbs([16135673103471103205, 13943139040297964408, 12037506718934223099, 1187380734246932890]), Fq::from_montgomery_limbs([11326210002632211732, 2893415499386035614, 2949171194607212014, 568849018592141776]), Fq::from_montgomery_limbs([13925494990768706056, 13969996543019858204, 13457764640058086886, 114396439087701688]), Fq::from_montgomery_limbs([16351586607272228519, 6269966282891300082, 12490381894697744781, 834648274293416263]), Fq::from_montgomery_limbs([8699206025130866823, 13848489523222436720, 17766508449394109403, 431734376631208559]), Fq::from_montgomery_limbs([14700415236695759193, 989025675687828871, 13240672964496825486, 748003865243962980]), Fq::from_montgomery_limbs([9214232780783070449, 14602960282866682732, 11429301634278273897, 1184931746603958427]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16918226576727530642, 1752255981222787988, 8817230776216477202, 44114642545061535]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17686129245176609251, 9674361899119805900, 9621008306276981352, 1255623840056121919]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10364230610752960663, 23910044943574860, 13406278639865106346, 1187183151912921258]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([248381449107176191, 10056558558812610353, 2935304612801451247, 120643143760647643]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3742705574147487793, 4686024809709633429, 16670792739934718940, 963767567248511600]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13818431717487898976, 12602204397986520132, 12877538805399868553, 707732823673573212]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1195524900235019800, 10255957893776983045, 17449323294835632168, 1338958398006622846]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([561235443935255932, 15462505627668153377, 15246107413854263254, 504727735813765489]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5653045592293015958, 3671862246408432263, 7122935779684396291, 7330594669677847]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16480412187204912644, 2983094841853066492, 7734631524643537613, 311160218197782574]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6090779872384130856, 3292296244344624559, 14896131539665449347, 1294066060635586937]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4370576169448893808, 12445091387328652898, 4928931422125126888, 1290627573012356056]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12051840169477196739, 3885157525438683377, 15460563848822265709, 371728860504033938]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12236751112463919400, 10461860001193096708, 18252891305864475627, 422909291039524709]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18089753698150707757, 11984889148538027693, 14464882633247838012, 989393623597663020]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5947035363582041005, 10165882087299872929, 17463545041843069654, 661760845006520055]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12977803574308926045, 11603755933737030579, 13169368374394024728, 264871768182436351]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14419631251839461179, 11301211733526246620, 15903366283781829327, 773728645355215118]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8308101026985166387, 7726119298360373485, 10162441497855384077, 189302244249177174]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12797668472951431300, 13827763415857474023, 14698122219544096234, 1231082431746263546]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9036419769160652203, 14179415714825094519, 1197988233308979514, 1215761277179828327]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4698260184489833131, 10279668321438795791, 12410250074379293741, 1217500461705392747]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12177225652612451477, 6323252679960824348, 2982537087474808916, 1265097794155080401]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10936589967746372713, 1315336780394893005, 11802358065708482185, 926000082171380579]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9602562037821535541, 6086973874915377682, 14393911822211896593, 197271477318300291]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([702050427916060493, 13537318979711565901, 15026546140525067500, 581472194808990332]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16536035763574678680, 10430337823398608412, 14603639842087973366, 184743670576012836]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([703457789642747182, 14826807143913517966, 278957441362419559, 572670923489064055]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11986568387549799012, 17060314952512548206, 5848465513240015059, 844014096680008996]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8710335429210318089, 15939765460477572548, 13493874982974354172, 1195299757590572308]), Fq::from_montgomery_limbs([16720044796621311460, 6297107607479107816, 15666086360782481298, 946070823657072210]), Fq::from_montgomery_limbs([5216764590966106189, 18330556132248987975, 14778046174865524185, 601592383999400705]), Fq::from_montgomery_limbs([12284358746189003172, 15796822047553990474, 10249807758448272935, 1260540691182942177]), Fq::from_montgomery_limbs([14671741496053748797, 15956144823383552989, 8978105115308257315, 1129739098292337641]), Fq::from_montgomery_limbs([16528885559305010985, 14885472285663731653, 8692450371018254777, 875854298006252122]), Fq::from_montgomery_limbs([11216935928075429441, 7088545516130524118, 3510979311098449529, 980345967679074250]), Fq::from_montgomery_limbs([8480849792218315917, 11146529356407982510, 4204845623809735650, 554809226012522197]), Fq::from_montgomery_limbs([9465397404983425896, 1339596460298740670, 2695000812316794677, 164270174202044235]), Fq::from_montgomery_limbs([12807958353199166386, 2607509355362673632, 9510828759520576266, 306232379852697998]), Fq::from_montgomery_limbs([14216260065142834520, 8830790711865643815, 7264415235010871052, 905551093713836953]), Fq::from_montgomery_limbs([1392129315389772974, 3163495863255052347, 5961497987857813198, 47707649459794917])]), + M_hat: SquareMatrix::<2, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + ]), + v: Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 16270238816294404093, + 17510165790819614716, + 15988650198697570299, + 575844906362867708, + ]), + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + ]), + w: Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 16270238816294404093, + 17510165790819614716, + 15988650198697570299, + 575844906362867708, + ]), + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + ]), + M_prime: SquareMatrix::<3, 9>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + ]), + M_doubleprime: SquareMatrix::<3, 9>::new_from_known([ + Fq::from_montgomery_limbs([ + 15302903146332116305, + 8895355854553175376, + 548696419140371791, + 319366418254432479, + ]), + Fq::from_montgomery_limbs([ + 16270238816294404093, + 17510165790819614716, + 15988650198697570299, + 575844906362867708, + ]), + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 7147916296078753751, + 11795755565450264533, + 9448453213491875784, + 183737022913545514, + ]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10406805428937057924, + 14160037477503257835, + 7036231764655967476, + 1082136417579874198, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + ]), + M_inverse: SquareMatrix::<3, 9>::new_from_known([ + Fq::from_montgomery_limbs([ + 4383832024780107759, + 7223259317565124429, + 5707462847421561422, + 885057472408297272, + ]), + Fq::from_montgomery_limbs([ + 6746251504312660021, + 9699181025413837338, + 15260914163925889303, + 35388324151454979, + ]), + Fq::from_montgomery_limbs([ + 5008847210566114882, + 8801394942975925486, + 18175922902442652272, + 916924432575702892, + ]), + Fq::from_montgomery_limbs([ + 6746251504312660021, + 9699181025413837338, + 15260914163925889303, + 35388324151454979, + ]), + Fq::from_montgomery_limbs([ + 15450583684112934333, + 18216376800760520619, + 4209613945072000948, + 155813436852978744, + ]), + Fq::from_montgomery_limbs([ + 9834172736316928124, + 189466111752828136, + 13335900722961176546, + 530999546582786085, + ]), + Fq::from_montgomery_limbs([ + 5008847210566114882, + 8801394942975925486, + 18175922902442652272, + 916924432575702892, + ]), + Fq::from_montgomery_limbs([ + 9834172736316928124, + 189466111752828136, + 13335900722961176546, + 530999546582786085, + ]), + Fq::from_montgomery_limbs([ + 11796616273943571364, + 15542379905239984210, + 1578039792447016471, + 947030710751083834, + ]), + ]), + M_hat_inverse: SquareMatrix::<2, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 17242594123341362780, + 10420431729582929402, + 13098868289430565627, + 261978409307343683, + ]), + Fq::from_montgomery_limbs([ + 4962966789362289472, + 13671436036280945585, + 17033622650389008176, + 591212102933547967, + ]), + Fq::from_montgomery_limbs([ + 4962966789362289472, + 13671436036280945585, + 17033622650389008176, + 591212102933547967, + ]), + Fq::from_montgomery_limbs([ + 2148639234720789121, + 15880825911856067065, + 16042722653708983750, + 635825847167915836, + ]), + ]), + M_00: Fq::from_montgomery_limbs([ + 15302903146332116305, + 8895355854553175376, + 548696419140371791, + 319366418254432479, + ]), + M_i: Matrix::<3, 3, 9>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16360065460916622652, + 6825609680461496913, + 5558627326231064465, + 128471165991923814, + ]), + Fq::from_montgomery_limbs([ + 7428548079683657885, + 9054293525864294989, + 16239738740266557642, + 509891970840567989, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7428548079683657885, + 9054293525864294989, + 16239738740266557642, + 509891970840567989, + ]), + Fq::from_montgomery_limbs([ + 1051461353787812132, + 3723993058108873740, + 15567687070894540562, + 722382702096971016, + ]), + ]), + v_collection: [ + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 16270238816294404093, + 17510165790819614716, + 15988650198697570299, + 575844906362867708, + ]), + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 3072474957567996411, + 7632850653899625657, + 6867324839353272651, + 1129105644996777990, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 11749409346063797401, + 13847779958722295463, + 5230051856842938218, + 809528761888529318, + ]), + Fq::from_montgomery_limbs([ + 16538317435082867476, + 140673227072662684, + 4917458456429054520, + 951347002169384040, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 8049501819868988169, + 4640840621228515661, + 5281323386686467274, + 1217317166531385469, + ]), + Fq::from_montgomery_limbs([ + 15861181624207003323, + 10871450011713172103, + 4492382029642778046, + 495041570025076744, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 491531644685882947, + 16236469504155238438, + 13405996466460073108, + 191442324574972544, + ]), + Fq::from_montgomery_limbs([ + 14234832595612208455, + 16711171142020806901, + 9818085755212544560, + 433758843793119660, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 8692243294689566788, + 17131754811489911037, + 16082421295010554115, + 245109642615998458, + ]), + Fq::from_montgomery_limbs([ + 12752747264486126419, + 12936758402746978248, + 7901753820298393242, + 1086817638717069074, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 716899015486837574, + 12929955716143301332, + 6296181173922398814, + 95630164573893864, + ]), + Fq::from_montgomery_limbs([ + 10771615223994036552, + 12477611863199363886, + 5019464732542008653, + 260172239809303582, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 2083749357590716775, + 7802489018239475310, + 4719252491703553508, + 331544147020630716, + ]), + Fq::from_montgomery_limbs([ + 11839081110669849836, + 16458332811546812068, + 4108523134706353886, + 1014020374083768583, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 11143510974855252250, + 1906425947937085984, + 2407368748249553491, + 504368299222388920, + ]), + Fq::from_montgomery_limbs([ + 8041950831366606113, + 14611771049638947187, + 11221299042990583579, + 744635656555856530, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 15987773674750471853, + 7582780421302456968, + 3513070142855093124, + 449192997718482772, + ]), + Fq::from_montgomery_limbs([ + 1698389311466971615, + 4208825745762883192, + 17737380562723619127, + 1023230515994865951, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 15719775543772287808, + 4711976878746234330, + 9616083067266331949, + 1291758636403773818, + ]), + Fq::from_montgomery_limbs([ + 11511319411419341690, + 4611804125723845050, + 17905923766281011346, + 701498562864789906, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 6775959117219461845, + 7248217303083744152, + 8323273847079805491, + 1272121734883668680, + ]), + Fq::from_montgomery_limbs([ + 15960231410259949054, + 831075562495169556, + 666337526106305827, + 827994946738712632, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 3075648154561933440, + 4787490504369527279, + 2103456873768609578, + 930535653041788534, + ]), + Fq::from_montgomery_limbs([ + 13632064958207562507, + 2403612539570381736, + 9671114344743639907, + 554518676653218341, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 16017511834618514656, + 10675130055946071909, + 4737919029540133580, + 682111021257012783, + ]), + Fq::from_montgomery_limbs([ + 4054052073615595653, + 15900491953977945207, + 9657244812600116702, + 746793989576728670, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 11427159084253523216, + 8137374149736453962, + 493707633722255071, + 574786622341431128, + ]), + Fq::from_montgomery_limbs([ + 3016813624761290833, + 9410383431703917657, + 207322790806709582, + 604735846059941483, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 13182715603850996122, + 1385581621557644096, + 15928797776098706943, + 1247128249672542744, + ]), + Fq::from_montgomery_limbs([ + 12343557143080639521, + 10608577464123341465, + 8700628699767163855, + 822798305869360351, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 15640932130097417474, + 2198144264546084253, + 15157422365823566225, + 162345305798039707, + ]), + Fq::from_montgomery_limbs([ + 15379897571473551238, + 13605062526804796454, + 1262497433072300524, + 325397323402951460, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 11985517729662602408, + 11378058393967136140, + 10784471266494716066, + 355758022531067864, + ]), + Fq::from_montgomery_limbs([ + 15749607349459966392, + 10347221607350790242, + 16868641356169832097, + 9481912848277140, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 5070404887673962603, + 7505346455783472838, + 11581801124979799833, + 162417281360137989, + ]), + Fq::from_montgomery_limbs([ + 14359230556911256253, + 4739001612305070282, + 615167045189603842, + 893440173159515387, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 6892861075705566142, + 16405352091222855583, + 9442037024015442096, + 943715695188578421, + ]), + Fq::from_montgomery_limbs([ + 2681738006276381668, + 13590338127726729778, + 9006319668283998389, + 571100162557721724, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 7926076457258912989, + 15568541251154450028, + 15222738110907421829, + 194241141418124411, + ]), + Fq::from_montgomery_limbs([ + 3900695082401480226, + 13241392216815987825, + 6715445016875356020, + 559176536870193173, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 4273472679882108688, + 7043568940286842511, + 9096453621609771899, + 490785749945503317, + ]), + Fq::from_montgomery_limbs([ + 2078179201499171590, + 16327227019578678368, + 17980150213785344661, + 1297383831585962991, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 14728670056946621521, + 17042639142917167694, + 2971308019248556661, + 314387788586761162, + ]), + Fq::from_montgomery_limbs([ + 14126190491907727041, + 8208403354023925517, + 4660262216078686939, + 971808842720812284, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 12606246547610594540, + 9049616062023318605, + 11742190485797839027, + 90317661102003606, + ]), + Fq::from_montgomery_limbs([ + 7135240500841828540, + 8166637984141883895, + 4762161495768731224, + 1056050894881259133, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 11752411941768010421, + 2371987101660996229, + 7910923918069285785, + 283757372746488803, + ]), + Fq::from_montgomery_limbs([ + 14169661373594066352, + 10756814747639910216, + 4179402566370914468, + 294039297137006515, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 12380990947758453459, + 15919689303377847053, + 4451172135381562238, + 643870172347401539, + ]), + Fq::from_montgomery_limbs([ + 16919934541410985772, + 12894445305080351094, + 3222976969400102992, + 1274426454940711344, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 17739117012754232566, + 7855016506876230601, + 10199750748041585788, + 610234517763900211, + ]), + Fq::from_montgomery_limbs([ + 14969807057009266193, + 9743543989422659962, + 265344874800963549, + 193281162476465682, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 9334899116745497567, + 1443910720530394642, + 15242704534506362012, + 557844541838643008, + ]), + Fq::from_montgomery_limbs([ + 12596150337841453197, + 17941854592742713998, + 9536226961205720981, + 193378317632915294, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 2145847197367443746, + 3494461491303192245, + 8559536859052153255, + 188641306996153597, + ]), + Fq::from_montgomery_limbs([ + 6619736277081498517, + 16354589870583930111, + 5727794428272011445, + 472934899434235719, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 15229354881950810050, + 13117262548706587, + 18434975406822541359, + 430449497798843798, + ]), + Fq::from_montgomery_limbs([ + 4585061371183060684, + 14866599352008180181, + 17851236730068556506, + 483368166519918339, + ]), + ]), + Matrix::<1, 2, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 16121753970412208543, + 9309799407998260359, + 13316268079574695590, + 1332560915242838761, + ]), + Fq::from_montgomery_limbs([ + 5320180137128926885, + 4585099896596608821, + 4959026927695406777, + 12672238118064834, + ]), + ]), + ], + w_hat_collection: [ + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 7147916296078753751, + 11795755565450264533, + 9448453213491875784, + 183737022913545514, + ]), + Fq::from_montgomery_limbs([ + 10406805428937057924, + 14160037477503257835, + 7036231764655967476, + 1082136417579874198, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 18050286569012579189, + 12701735779500542307, + 16028299840828156173, + 889670182449753716, + ]), + Fq::from_montgomery_limbs([ + 17537805078915517156, + 3881567050914191905, + 15320666583506005360, + 34817918541568626, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 639651884569206475, + 3208454571154516477, + 5589814573911893755, + 812188059462663385, + ]), + Fq::from_montgomery_limbs([ + 6035414598134387451, + 221157594769622514, + 1246867853953039854, + 865666459554075403, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 10986953500964328689, + 4552354314624673085, + 10130711827018722177, + 726464205504256466, + ]), + Fq::from_montgomery_limbs([ + 14592704253024955499, + 4367720503141755092, + 3264507028823567377, + 503642346381621716, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 6929349916420721052, + 7263465717590274222, + 16428445137775857828, + 783617578238482410, + ]), + Fq::from_montgomery_limbs([ + 1105466080997706678, + 15638892732603802885, + 15163494631828844812, + 1265995546038282468, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 12695614650926966465, + 7645153902251269333, + 15007858904354383754, + 303173888887641556, + ]), + Fq::from_montgomery_limbs([ + 13532111267254117566, + 453207663850979705, + 1118439931840184625, + 1109223913114108441, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 1127605964966272093, + 459071588792078574, + 17569200668490318799, + 556567547339769587, + ]), + Fq::from_montgomery_limbs([ + 743383751775379478, + 2152757563916176356, + 18215266305796881375, + 613050128242856475, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 7479292154348380014, + 12505834466797528681, + 7061175132070981799, + 1037799745298480638, + ]), + Fq::from_montgomery_limbs([ + 4733881782580367683, + 13385554219210821909, + 11595152338390400937, + 1286877367267536722, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 10482398298648703137, + 13154284141257785070, + 12900892582326783232, + 1312370380898727254, + ]), + Fq::from_montgomery_limbs([ + 7694076120856540521, + 15146007605344947747, + 3193830018416013595, + 78000754372621570, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 5244970134326960239, + 15516929113764341255, + 17564742414096943825, + 565809721348112173, + ]), + Fq::from_montgomery_limbs([ + 5301582977685139465, + 1069505112975002608, + 16894882112854195663, + 1006960914609031286, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 933807009911564028, + 17655717523721777752, + 659854032695183391, + 696948171193839726, + ]), + Fq::from_montgomery_limbs([ + 14431054331145497962, + 17304755953697263142, + 1213662370814867240, + 406071929554987935, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 12663120994246797343, + 2294330459533986298, + 12312665243517552316, + 1162434858386655769, + ]), + Fq::from_montgomery_limbs([ + 14926635415117511105, + 17764138882091983380, + 9845162467394310721, + 365262529860339315, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 14453117806705169688, + 15371763008771329739, + 859830826361086373, + 695666911485789237, + ]), + Fq::from_montgomery_limbs([ + 4372294882149658880, + 8953368466178039118, + 7175551968845157174, + 1296799522059563299, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 10743785724983518030, + 11011793084410944909, + 4710170432674399868, + 872985210632843618, + ]), + Fq::from_montgomery_limbs([ + 17034928244178709962, + 7064630411064620365, + 11395663509669588708, + 435858474778976283, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 376125808430990068, + 3949770427712474479, + 1831829189608085506, + 1033600417294508604, + ]), + Fq::from_montgomery_limbs([ + 10474175416970714387, + 7638666470072040137, + 15323998975775188709, + 499861799254400548, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 1311503503152331198, + 10444356300795820152, + 14006643509954394380, + 360275028297029580, + ]), + Fq::from_montgomery_limbs([ + 8848990081142010576, + 3767709270230096287, + 3203373808160299103, + 388150987057922534, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 10527714796170242821, + 10614707629823438759, + 2166835449751899854, + 826442630247846539, + ]), + Fq::from_montgomery_limbs([ + 6013609006746740436, + 17829255150171580013, + 4865370498689675602, + 631806865209492278, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 15407698184224138641, + 13892993523782417432, + 11074522626536989473, + 1282147673049091223, + ]), + Fq::from_montgomery_limbs([ + 13566156582579433121, + 10666124267110644787, + 17585510383615080517, + 460461758314188289, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 242069913640544639, + 8584725967717195423, + 8673969491922319906, + 906855204727712918, + ]), + Fq::from_montgomery_limbs([ + 7507622872789915132, + 8838834878197495556, + 4143887577251148647, + 147314013318059527, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 739343839918695474, + 15137511284934501835, + 8206744331706291412, + 460517726754831566, + ]), + Fq::from_montgomery_limbs([ + 5332098194526476884, + 17462053065946204764, + 17109918215020530224, + 45500621783055396, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 7181843829067274762, + 93170180385149654, + 16601265500332534068, + 692920224266685092, + ]), + Fq::from_montgomery_limbs([ + 17373541931105532396, + 11757401236546761356, + 8986928677878657520, + 855377794858428568, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 16770152912401058713, + 7784323106136704842, + 3166414142982631778, + 252798645948426673, + ]), + Fq::from_montgomery_limbs([ + 9867428128375842792, + 6330871821464522409, + 2509737650104409073, + 87377932535113034, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 9620378538351684400, + 16259903847898782084, + 14224517332394904862, + 248783024579596034, + ]), + Fq::from_montgomery_limbs([ + 15289486933546124534, + 5057961130890228616, + 5618412873763815158, + 1218252246195044797, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 18285461524892798097, + 1312649631515945874, + 2702563113361998981, + 156990921411102370, + ]), + Fq::from_montgomery_limbs([ + 16897672275046167563, + 14631253948673542966, + 7825433188494427672, + 497140819371349325, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 5586425496410891559, + 3860435103896432777, + 15075562942840298887, + 539774915240951994, + ]), + Fq::from_montgomery_limbs([ + 18444236515588467614, + 2138469830557977395, + 8290712504743660259, + 832327778452741186, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 15144610075012749322, + 11801332079357554718, + 11652842602527962385, + 396912768209767018, + ]), + Fq::from_montgomery_limbs([ + 10639969620247737667, + 7334159324553590340, + 15063492084884778567, + 878961650630548788, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 18348264072788817511, + 8009061068808737218, + 6097418426121505352, + 1211183153837556564, + ]), + Fq::from_montgomery_limbs([ + 17198860156343170394, + 2167538157704278478, + 10949270097435223366, + 928056824653534234, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 10634763804674129031, + 9612181115928191305, + 7893421171473086290, + 251268211819044542, + ]), + Fq::from_montgomery_limbs([ + 12969986235926373418, + 712178654575523278, + 3830673788986900912, + 1046343437814522982, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 4298621992800380154, + 4055578536241120435, + 9617612244989535309, + 382604375840733162, + ]), + Fq::from_montgomery_limbs([ + 18067399474523304446, + 12223555489918789755, + 9993950631657703109, + 1048484019905387459, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 13058818877006642653, + 18414014235319212231, + 14027764563566307518, + 703825358964196766, + ]), + Fq::from_montgomery_limbs([ + 9830948603405623404, + 3341559968925646454, + 12259602563968066179, + 912923676012093495, + ]), + ]), + Matrix::<2, 1, 2>::new_from_known([ + Fq::from_montgomery_limbs([ + 8043127764066461437, + 14803670394754936674, + 15225608398783219441, + 893330814736280447, + ]), + Fq::from_montgomery_limbs([ + 4386126239109851849, + 12096965878015338652, + 13672154659709754401, + 191338360587662586, + ]), + ]), + ], + }, + optimized_arc: OptimizedArcMatrix::<39, 3, 117>::new_from_known([ + Fq::from_montgomery_limbs([ + 13532052565085671856, + 13175575834742130482, + 14571043277169067394, + 1128324334676141805, + ]), + Fq::from_montgomery_limbs([ + 10586567975029405298, + 5987505274649066590, + 9663655893165983133, + 381788629769180835, + ]), + Fq::from_montgomery_limbs([ + 7404335995308317606, + 10342209374602516054, + 14679697400509748167, + 1259991645283011647, + ]), + Fq::from_montgomery_limbs([ + 12711294721892819516, + 8412935995118692797, + 7069737649526067295, + 549549236990677487, + ]), + Fq::from_montgomery_limbs([ + 128694122049037398, + 15825223235256271389, + 74647683628497806, + 403759781237802093, + ]), + Fq::from_montgomery_limbs([ + 3501552524290051296, + 10688664658423588201, + 8345653809557910120, + 766292783896459938, + ]), + Fq::from_montgomery_limbs([ + 13998055823902745235, + 15535161481341849823, + 9848874496394823215, + 579121379437172744, + ]), + Fq::from_montgomery_limbs([ + 16363263235454987811, + 9117252686821547535, + 4794867261658414781, + 418411818796950741, + ]), + Fq::from_montgomery_limbs([ + 3710344964675021293, + 13957371261080223237, + 15195218532629186765, + 760708816844813378, + ]), + Fq::from_montgomery_limbs([ + 16135673103471103205, + 13943139040297964408, + 12037506718934223099, + 1187380734246932890, + ]), + Fq::from_montgomery_limbs([ + 11326210002632211732, + 2893415499386035614, + 2949171194607212014, + 568849018592141776, + ]), + Fq::from_montgomery_limbs([ + 13925494990768706056, + 13969996543019858204, + 13457764640058086886, + 114396439087701688, + ]), + Fq::from_montgomery_limbs([ + 16351586607272228519, + 6269966282891300082, + 12490381894697744781, + 834648274293416263, + ]), + Fq::from_montgomery_limbs([ + 8699206025130866823, + 13848489523222436720, + 17766508449394109403, + 431734376631208559, + ]), + Fq::from_montgomery_limbs([ + 14700415236695759193, + 989025675687828871, + 13240672964496825486, + 748003865243962980, + ]), + Fq::from_montgomery_limbs([ + 9214232780783070449, + 14602960282866682732, + 11429301634278273897, + 1184931746603958427, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16918226576727530642, + 1752255981222787988, + 8817230776216477202, + 44114642545061535, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17686129245176609251, + 9674361899119805900, + 9621008306276981352, + 1255623840056121919, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10364230610752960663, + 23910044943574860, + 13406278639865106346, + 1187183151912921258, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 248381449107176191, + 10056558558812610353, + 2935304612801451247, + 120643143760647643, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3742705574147487793, + 4686024809709633429, + 16670792739934718940, + 963767567248511600, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 13818431717487898976, + 12602204397986520132, + 12877538805399868553, + 707732823673573212, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 1195524900235019800, + 10255957893776983045, + 17449323294835632168, + 1338958398006622846, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 561235443935255932, + 15462505627668153377, + 15246107413854263254, + 504727735813765489, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5653045592293015958, + 3671862246408432263, + 7122935779684396291, + 7330594669677847, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16480412187204912644, + 2983094841853066492, + 7734631524643537613, + 311160218197782574, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6090779872384130856, + 3292296244344624559, + 14896131539665449347, + 1294066060635586937, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4370576169448893808, + 12445091387328652898, + 4928931422125126888, + 1290627573012356056, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12051840169477196739, + 3885157525438683377, + 15460563848822265709, + 371728860504033938, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12236751112463919400, + 10461860001193096708, + 18252891305864475627, + 422909291039524709, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 18089753698150707757, + 11984889148538027693, + 14464882633247838012, + 989393623597663020, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5947035363582041005, + 10165882087299872929, + 17463545041843069654, + 661760845006520055, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12977803574308926045, + 11603755933737030579, + 13169368374394024728, + 264871768182436351, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 14419631251839461179, + 11301211733526246620, + 15903366283781829327, + 773728645355215118, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 8308101026985166387, + 7726119298360373485, + 10162441497855384077, + 189302244249177174, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12797668472951431300, + 13827763415857474023, + 14698122219544096234, + 1231082431746263546, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9036419769160652203, + 14179415714825094519, + 1197988233308979514, + 1215761277179828327, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4698260184489833131, + 10279668321438795791, + 12410250074379293741, + 1217500461705392747, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12177225652612451477, + 6323252679960824348, + 2982537087474808916, + 1265097794155080401, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10936589967746372713, + 1315336780394893005, + 11802358065708482185, + 926000082171380579, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9602562037821535541, + 6086973874915377682, + 14393911822211896593, + 197271477318300291, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 702050427916060493, + 13537318979711565901, + 15026546140525067500, + 581472194808990332, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16536035763574678680, + 10430337823398608412, + 14603639842087973366, + 184743670576012836, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 703457789642747182, + 14826807143913517966, + 278957441362419559, + 572670923489064055, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11986568387549799012, + 17060314952512548206, + 5848465513240015059, + 844014096680008996, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 8710335429210318089, + 15939765460477572548, + 13493874982974354172, + 1195299757590572308, + ]), + Fq::from_montgomery_limbs([ + 16720044796621311460, + 6297107607479107816, + 15666086360782481298, + 946070823657072210, + ]), + Fq::from_montgomery_limbs([ + 5216764590966106189, + 18330556132248987975, + 14778046174865524185, + 601592383999400705, + ]), + Fq::from_montgomery_limbs([ + 12284358746189003172, + 15796822047553990474, + 10249807758448272935, + 1260540691182942177, + ]), + Fq::from_montgomery_limbs([ + 14671741496053748797, + 15956144823383552989, + 8978105115308257315, + 1129739098292337641, + ]), + Fq::from_montgomery_limbs([ + 16528885559305010985, + 14885472285663731653, + 8692450371018254777, + 875854298006252122, + ]), + Fq::from_montgomery_limbs([ + 11216935928075429441, + 7088545516130524118, + 3510979311098449529, + 980345967679074250, + ]), + Fq::from_montgomery_limbs([ + 8480849792218315917, + 11146529356407982510, + 4204845623809735650, + 554809226012522197, + ]), + Fq::from_montgomery_limbs([ + 9465397404983425896, + 1339596460298740670, + 2695000812316794677, + 164270174202044235, + ]), + Fq::from_montgomery_limbs([ + 12807958353199166386, + 2607509355362673632, + 9510828759520576266, + 306232379852697998, + ]), + Fq::from_montgomery_limbs([ + 14216260065142834520, + 8830790711865643815, + 7264415235010871052, + 905551093713836953, + ]), + Fq::from_montgomery_limbs([ + 1392129315389772974, + 3163495863255052347, + 5961497987857813198, + 47707649459794917, + ]), + ]), } } diff --git a/poseidon377/src/params/rate_3.rs b/poseidon377/src/params/rate_3.rs index 07ef28f..93e8cf6 100644 --- a/poseidon377/src/params/rate_3.rs +++ b/poseidon377/src/params/rate_3.rs @@ -8,23 +8,3237 @@ use poseidon_parameters::v1::{ pub const fn rate_3() -> PoseidonParameters<4, 3, 16, 9, 39, 4, 156, 31> { PoseidonParameters { M: 128, - arc: ArcMatrix::<39, 4, 156>::new_from_known([Fq::from_montgomery_limbs([15748480026335769443, 10026984616551622801, 2063724428730618452, 1110463257231131824]), Fq::from_montgomery_limbs([9405142820695944635, 11887146523697465657, 7764829263011233272, 10688178588086322]), Fq::from_montgomery_limbs([7160766575090090422, 13093321275956005400, 4459692368517809830, 1324823328343033307]), Fq::from_montgomery_limbs([8967803866417976527, 10882703683899587484, 12604355713142717837, 913362872025451921]), Fq::from_montgomery_limbs([15434913893282099231, 3277411989792281453, 17050922401305883749, 1246396795570595652]), Fq::from_montgomery_limbs([16287493285262395377, 5813955731335134269, 4301474317614585594, 257520225036445364]), Fq::from_montgomery_limbs([6906749939426292513, 6186370802689597769, 13121713652409052978, 974279291569484389]), Fq::from_montgomery_limbs([8879700369639612352, 13618625792929032624, 3907123048620659133, 13234475218016492]), Fq::from_montgomery_limbs([8645743306703223161, 2649437454338131787, 1563690154181407289, 1014186398941703531]), Fq::from_montgomery_limbs([3215833110701720679, 2309636887892103305, 8098930435412331037, 874663616929857835]), Fq::from_montgomery_limbs([12979468067887852608, 5086746922420764336, 15129738790560069297, 751939553752695744]), Fq::from_montgomery_limbs([2977455406847333432, 16814711076234176662, 2052393181081329017, 1025504667378050833]), Fq::from_montgomery_limbs([7769933776177646251, 18381610027802955757, 14883656026535111760, 810712025708758153]), Fq::from_montgomery_limbs([17772168373864941552, 6465821213265847266, 13630379320513469760, 377801609900980707]), Fq::from_montgomery_limbs([15796194027949120118, 344995813018918925, 1773993772309248477, 495371203446902105]), Fq::from_montgomery_limbs([2372367672613269254, 1881994507861568925, 12499063082888296383, 198183890354307133]), Fq::from_montgomery_limbs([8560339202466452135, 4674741842794783289, 2295938056459737653, 1305584587019963566]), Fq::from_montgomery_limbs([15461653997367792205, 5090711996373026875, 11075299042609757676, 357873227640910306]), Fq::from_montgomery_limbs([13214321932666947005, 16528230236252211216, 1734602115269476888, 818804650790090647]), Fq::from_montgomery_limbs([3074208048728389137, 15294693683882801473, 8267213793554472185, 939723642447579953]), Fq::from_montgomery_limbs([7608844071812963093, 3353589238160526207, 1067027003640137200, 792698467630664137]), Fq::from_montgomery_limbs([2391877978401333891, 3445084574946968197, 5867047100623880462, 384653842732542416]), Fq::from_montgomery_limbs([13914996210513565866, 8700856800201437460, 10425054275786134234, 541663540168055488]), Fq::from_montgomery_limbs([14596932606745167054, 16496367856477422743, 3083425729320663120, 1085256212719522319]), Fq::from_montgomery_limbs([2801764879250151374, 12953139825024524798, 4394381772409440172, 830313299202608738]), Fq::from_montgomery_limbs([13075739450270366768, 9659330049829153230, 12704212718639626523, 379597176451908972]), Fq::from_montgomery_limbs([9001536902225952463, 6674549463409581165, 3938882380056074877, 470816176925644781]), Fq::from_montgomery_limbs([5294884807833067443, 14704992853616613201, 11757098272470647345, 665189038743785081]), Fq::from_montgomery_limbs([18065518746286947233, 11431857512891870190, 7287431282350112106, 995640933596957099]), Fq::from_montgomery_limbs([15052981787521128144, 7858896385113452253, 5947479460571918718, 325110107616048024]), Fq::from_montgomery_limbs([8613576755313845653, 13985454223970503802, 5789054661699635475, 985740677230137068]), Fq::from_montgomery_limbs([3926674414459183479, 15125652309946021274, 7647466298927812509, 538639589943257540]), Fq::from_montgomery_limbs([13088032312231323780, 5311715134728782442, 9012071499019100799, 1330544433302886302]), Fq::from_montgomery_limbs([3664690074919872926, 1742673068665566813, 17290766138005523036, 1336141459748487725]), Fq::from_montgomery_limbs([16701892693656888438, 5154406097941234252, 2366974417176707806, 154891066872919950]), Fq::from_montgomery_limbs([8557542807233937796, 15959352071512430351, 4990793324727743483, 1293908698860086179]), Fq::from_montgomery_limbs([15073124381299855142, 16058294570821288175, 6075369664645776758, 87903751159999429]), Fq::from_montgomery_limbs([260728936241443673, 368587472503844932, 2223560135924572606, 805228060621005528]), Fq::from_montgomery_limbs([7269287363866321270, 2522156147731399548, 13054616534728649482, 931053562448615214]), Fq::from_montgomery_limbs([4160721187467010576, 15149513473553012866, 15656814560183579945, 1001129190706658794]), Fq::from_montgomery_limbs([14658651187247608250, 12880504629543941444, 10429384779372580470, 1161303852698833077]), Fq::from_montgomery_limbs([1235937067845588009, 7263495784070768735, 1030907402673138059, 112249256173393847]), Fq::from_montgomery_limbs([9458598589591766548, 11826210343318171415, 5267632108497983083, 878978097354051448]), Fq::from_montgomery_limbs([9349450799754247443, 5592311323302686001, 8710868002211880477, 339828983129180906]), Fq::from_montgomery_limbs([17187343190949067712, 4809921206309548539, 1654263325380555971, 1029486713709570633]), Fq::from_montgomery_limbs([7644765658684612346, 13218702097576502896, 16500195852294632749, 1306030386106155137]), Fq::from_montgomery_limbs([3505773913815738861, 4811121454898644532, 6220593478751174597, 617955371370962677]), Fq::from_montgomery_limbs([15743683183886237853, 5364535566544930778, 13962926219706156342, 279010990417402073]), Fq::from_montgomery_limbs([5534551911701805251, 16755407359921259948, 11104629150013572555, 814043341910345398]), Fq::from_montgomery_limbs([8944448190814835116, 15456464214992510712, 8458597289994495014, 1265792487860718358]), Fq::from_montgomery_limbs([3488692111583557919, 13331987553376721589, 18402338094634938868, 1065887348732752750]), Fq::from_montgomery_limbs([9073355603731228680, 14479691350704356281, 12891384335089494102, 794286481590472402]), Fq::from_montgomery_limbs([837263131188576340, 12622228587018704025, 17555140662019162595, 116065994774231082]), Fq::from_montgomery_limbs([14557259484417606169, 4562566277830260822, 4089084236598109790, 503526388329690921]), Fq::from_montgomery_limbs([4425139792333247996, 17192910803843537440, 6327001334305018300, 1189405791856364044]), Fq::from_montgomery_limbs([600163066110636331, 12319630319416791292, 4537854761219498244, 33425175842117417]), Fq::from_montgomery_limbs([6516037169436621352, 5864705901197391949, 9864817317342287359, 931460564657389579]), Fq::from_montgomery_limbs([11238491471364916474, 18217352394306774045, 8369866412509597036, 1044188737560722381]), Fq::from_montgomery_limbs([15194113841410138763, 9713698855149445572, 840830724179458009, 574399528344548482]), Fq::from_montgomery_limbs([10094044208972451177, 14820311408839650250, 832731916797264605, 1078999540214538853]), Fq::from_montgomery_limbs([16122314034306189535, 9724832477076262589, 15428406989180491409, 739923283713385548]), Fq::from_montgomery_limbs([990447045496888008, 3954312775585670686, 14414097128339264209, 1160784537044385327]), Fq::from_montgomery_limbs([12790567186406766562, 9540692660342267401, 12022170182251744455, 1252399210348847836]), Fq::from_montgomery_limbs([7494400281462281059, 13969110066704963391, 6054746240150948073, 950110029163098453]), Fq::from_montgomery_limbs([10519706033512544620, 1273243870837414124, 6743773117001565585, 464260752488464109]), Fq::from_montgomery_limbs([6644031355037466023, 1291805761807358108, 6551243450297799793, 489432277343575283]), Fq::from_montgomery_limbs([3733838584259262811, 7236713087991210405, 12126920741789203222, 522094252622775454]), Fq::from_montgomery_limbs([18303517822547932992, 2807195054210467784, 13159641576753772587, 855829353333514728]), Fq::from_montgomery_limbs([4449128923636887467, 13611412613163493515, 12025336169373281333, 1332896560863403205]), Fq::from_montgomery_limbs([1957451185913453258, 11039336564323764549, 12727456287856679131, 228326154778309814]), Fq::from_montgomery_limbs([11338427901906828980, 109935761989873387, 12048120310880045899, 1308994518812657297]), Fq::from_montgomery_limbs([4699060152260570516, 11811201865491436236, 16537310942924896508, 1030678137510996087]), Fq::from_montgomery_limbs([12646006819083654452, 12494391672709859571, 16266030119791019994, 719740245520971856]), Fq::from_montgomery_limbs([3201794059715843426, 7659470317574241049, 9031647908161946781, 363148928753677985]), Fq::from_montgomery_limbs([11915502048720601469, 5772846818657644116, 14815308031156385389, 35923403898725028]), Fq::from_montgomery_limbs([170799290955765955, 1257452554540755479, 154144376612152799, 1049253778390741684]), Fq::from_montgomery_limbs([12436956446014067805, 12495488261233549050, 15098105238157791389, 981323126540180488]), Fq::from_montgomery_limbs([17100349351086466568, 15199087629262610106, 2857850399247819097, 933629509856035794]), Fq::from_montgomery_limbs([4893555085527448580, 9471095916978593903, 15023640703244453163, 410519582864510926]), Fq::from_montgomery_limbs([17697020347608707279, 18087907458231569196, 3102461787435620980, 62537999126012536]), Fq::from_montgomery_limbs([362067899505874664, 14616460120599181344, 15083851369654439268, 631595353512390885]), Fq::from_montgomery_limbs([1608981123540692261, 8134210797420893342, 15670126385653615755, 1081728063194062498]), Fq::from_montgomery_limbs([4703704396738392227, 9402972062611023321, 6453958957721258724, 851572793112159638]), Fq::from_montgomery_limbs([14824233911337383260, 4597555368896294115, 13023979643520645931, 1222004100879652500]), Fq::from_montgomery_limbs([2891695900391958118, 5796773624231764530, 15491428749654748662, 1093937749145502896]), Fq::from_montgomery_limbs([10646550323399881070, 1003826136171019194, 8409333161078783785, 585473798721331047]), Fq::from_montgomery_limbs([10406448549383730564, 6135682111734731503, 11700407245549915604, 1085967648121639010]), Fq::from_montgomery_limbs([1292557270730948407, 18351657967081052852, 2678776828196945632, 959596399484615466]), Fq::from_montgomery_limbs([17438835186806351279, 5684764232294129700, 10157135796976222869, 221407997194324483]), Fq::from_montgomery_limbs([7271080368260971730, 12425374983903708199, 12363525356310613233, 1110769717996073345]), Fq::from_montgomery_limbs([8776284918006632977, 15535513105129775867, 4863301670678022317, 606408823553952292]), Fq::from_montgomery_limbs([5066052630199551249, 15751267872424382675, 13216457812319899775, 20357134061436216]), Fq::from_montgomery_limbs([13075702753995571952, 11742969640320942289, 17235366015989204124, 1150175744034062515]), Fq::from_montgomery_limbs([5797072079034365870, 17544469376997963633, 14801627417863273010, 1279229494278656541]), Fq::from_montgomery_limbs([7831938700179984096, 17180774215462038883, 4412793878621746257, 1256681412857074070]), Fq::from_montgomery_limbs([12968148811839764483, 16811480840776650012, 8602422769386693728, 382111204094941728]), Fq::from_montgomery_limbs([13318317749693537082, 3768328516420896241, 142206933916635569, 26627989124778159]), Fq::from_montgomery_limbs([11933334459503099726, 1065153861357867533, 11936439423614846055, 1149053547479723905]), Fq::from_montgomery_limbs([2631481992765688259, 16002912452516972398, 2790213850442440167, 971241800259043027]), Fq::from_montgomery_limbs([13004331011283795828, 14189721912689256843, 6652832565990539996, 452227668495405848]), Fq::from_montgomery_limbs([11639365468700302967, 13626754345549226066, 5122223316448852115, 1295194052532032537]), Fq::from_montgomery_limbs([12503775634034454216, 12484320064934540173, 6283031731499175779, 1142971827879478463]), Fq::from_montgomery_limbs([18442309574762645474, 16043706756922086064, 1203583357081319117, 289542689638807443]), Fq::from_montgomery_limbs([13599874590406072599, 12311290605935601867, 1953047606734609742, 893071755833526513]), Fq::from_montgomery_limbs([5038580414622442104, 7706592482679500096, 14281875320180208754, 1311692136942617770]), Fq::from_montgomery_limbs([9116924453968593592, 4695211437329644351, 122131672006113022, 460639526001551111]), Fq::from_montgomery_limbs([612695102453556953, 17430917114440300568, 3712227006774104749, 434565107124519036]), Fq::from_montgomery_limbs([2711460600386692082, 5084507891975000066, 8709631773769875914, 701012049286425866]), Fq::from_montgomery_limbs([11255000280507413421, 5698447525751632608, 12610021548558458685, 1327688989507972423]), Fq::from_montgomery_limbs([13754440516467115564, 4761751981327990235, 9432675603353781856, 1033668598466658556]), Fq::from_montgomery_limbs([2955363287632570334, 7600733227996025654, 12027057950170385287, 940571561931822742]), Fq::from_montgomery_limbs([9703552155773020694, 5742947530758499792, 15763297443315122579, 930801506499582622]), Fq::from_montgomery_limbs([12461619637026250391, 11019870465191278910, 15873529414143589982, 972447937818380498]), Fq::from_montgomery_limbs([14971502483088783044, 7994961046161658478, 1775531898359432051, 206771972563020622]), Fq::from_montgomery_limbs([4978085183441894637, 6786252161551953403, 1597833793868027214, 752497765450057609]), Fq::from_montgomery_limbs([8931448885295850487, 14900305553280237157, 2562728536608668150, 820070530770563815]), Fq::from_montgomery_limbs([11091196606428717904, 4420547532075463625, 6826607115289893546, 339509882889855264]), Fq::from_montgomery_limbs([17256856864641998223, 7372887677193499350, 3097849850460902989, 1011516479262752115]), Fq::from_montgomery_limbs([9808600647888735916, 8803141348520645434, 18015342816914135198, 7277772948085899]), Fq::from_montgomery_limbs([4255905157964142682, 17462645559877710531, 3560989839800268196, 1096116226462923784]), Fq::from_montgomery_limbs([4532426149332308403, 5237561599212546024, 9574446344492571337, 1288985425094911641]), Fq::from_montgomery_limbs([1967144278589690647, 13201768465226207499, 11675172852243609220, 79359524195858682]), Fq::from_montgomery_limbs([17074450551687194476, 16589227351082498259, 5830030722038791303, 89110035164054224]), Fq::from_montgomery_limbs([3452204926739135764, 5895291203558274423, 3429941105331217419, 412361227440985099]), Fq::from_montgomery_limbs([13210175262635268816, 10104864748580005346, 8240781084290164303, 168682271830987859]), Fq::from_montgomery_limbs([11525437706352653758, 15971301990722544967, 11793391563239286407, 916031980478624773]), Fq::from_montgomery_limbs([4389204516004340807, 12441134604525330513, 4580143368417059639, 517606274666844106]), Fq::from_montgomery_limbs([6072537589623190443, 14275421712964513977, 2053999455871445365, 139159162484497428]), Fq::from_montgomery_limbs([2238091790845791439, 11897799578864713665, 10598112979470640955, 1188516484791317810]), Fq::from_montgomery_limbs([13761995375578127219, 14445881686168874002, 8730842343343508106, 75023619749953264]), Fq::from_montgomery_limbs([1876841868458551114, 9237020881271725184, 16194471067922316805, 1271526124614314943]), Fq::from_montgomery_limbs([14877699808508013807, 12080680751297116426, 594057086705046692, 93241042719742539]), Fq::from_montgomery_limbs([12830970035552954850, 16724821255552997190, 6657724498740869088, 1006163239038875246]), Fq::from_montgomery_limbs([4789503842637643824, 15837144161010273010, 14535004913645399525, 386886467210416122]), Fq::from_montgomery_limbs([4113769938336656446, 12767551034851750890, 6208225444974425038, 384107338921112388]), Fq::from_montgomery_limbs([1457177616745477196, 5817007768895882090, 18403435531988633091, 233268311946882765]), Fq::from_montgomery_limbs([8504687346089992934, 12196813988838752019, 4423978201234255224, 103085384776574023]), Fq::from_montgomery_limbs([12001393905996299420, 7906247193177979514, 2548978637445902098, 508311140484542625]), Fq::from_montgomery_limbs([12545595986735188293, 5025452441931542801, 9681010628496985355, 969281160594328671]), Fq::from_montgomery_limbs([4476642231459795365, 10130322522288542164, 5504810838816131115, 942197574992353703]), Fq::from_montgomery_limbs([12725269033496721580, 6143157215985784613, 2563593607564735516, 641845243083026263]), Fq::from_montgomery_limbs([16567470293191015474, 17979338546951754349, 679740711221916675, 389452091580807800]), Fq::from_montgomery_limbs([11781729507075158888, 16614033708022660131, 8066891565891024775, 1321986181569835272]), Fq::from_montgomery_limbs([15263301520898366582, 5379961920461128458, 5298170819253721050, 871089269493660926]), Fq::from_montgomery_limbs([5741830111596365525, 11415264909554107470, 8692411149271156415, 108534814929374467]), Fq::from_montgomery_limbs([14889457972591320596, 4443631419689297602, 9576604194859673886, 55036543682599971]), Fq::from_montgomery_limbs([15281837068987139929, 16419105318903348956, 3445836523780143538, 1293417868939267170]), Fq::from_montgomery_limbs([17836346323317710151, 12227034928325499140, 2533213127903144227, 888374169811671044]), Fq::from_montgomery_limbs([17190507118724296154, 11902410769486810674, 1884965616619903297, 288715797041361057]), Fq::from_montgomery_limbs([3698781841092321912, 12743575315417669826, 2170730182690456487, 1222843211331174337]), Fq::from_montgomery_limbs([4016814140820935108, 7695810038153355283, 9484931309805354358, 1136167194218052037]), Fq::from_montgomery_limbs([14104529875826633218, 4636945317611530138, 9502367629041549061, 1255556235831136969]), Fq::from_montgomery_limbs([3761991760077630951, 15074729225518792210, 17745896690436879228, 1023440924724847735]), Fq::from_montgomery_limbs([15850125405934611308, 14029919305144561597, 18399969854542387983, 1223450657234113398]), Fq::from_montgomery_limbs([15153111831948502891, 17514853580286890635, 16559251203856754825, 921126073718956725]), Fq::from_montgomery_limbs([14464801899277986702, 11416622266096337177, 5506399331882969115, 210576422101801202])]), - mds: MdsMatrix::<4, 3, 16, 9>::new_from_known([Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122])]), + arc: ArcMatrix::<39, 4, 156>::new_from_known([ + Fq::from_montgomery_limbs([ + 15748480026335769443, + 10026984616551622801, + 2063724428730618452, + 1110463257231131824, + ]), + Fq::from_montgomery_limbs([ + 9405142820695944635, + 11887146523697465657, + 7764829263011233272, + 10688178588086322, + ]), + Fq::from_montgomery_limbs([ + 7160766575090090422, + 13093321275956005400, + 4459692368517809830, + 1324823328343033307, + ]), + Fq::from_montgomery_limbs([ + 8967803866417976527, + 10882703683899587484, + 12604355713142717837, + 913362872025451921, + ]), + Fq::from_montgomery_limbs([ + 15434913893282099231, + 3277411989792281453, + 17050922401305883749, + 1246396795570595652, + ]), + Fq::from_montgomery_limbs([ + 16287493285262395377, + 5813955731335134269, + 4301474317614585594, + 257520225036445364, + ]), + Fq::from_montgomery_limbs([ + 6906749939426292513, + 6186370802689597769, + 13121713652409052978, + 974279291569484389, + ]), + Fq::from_montgomery_limbs([ + 8879700369639612352, + 13618625792929032624, + 3907123048620659133, + 13234475218016492, + ]), + Fq::from_montgomery_limbs([ + 8645743306703223161, + 2649437454338131787, + 1563690154181407289, + 1014186398941703531, + ]), + Fq::from_montgomery_limbs([ + 3215833110701720679, + 2309636887892103305, + 8098930435412331037, + 874663616929857835, + ]), + Fq::from_montgomery_limbs([ + 12979468067887852608, + 5086746922420764336, + 15129738790560069297, + 751939553752695744, + ]), + Fq::from_montgomery_limbs([ + 2977455406847333432, + 16814711076234176662, + 2052393181081329017, + 1025504667378050833, + ]), + Fq::from_montgomery_limbs([ + 7769933776177646251, + 18381610027802955757, + 14883656026535111760, + 810712025708758153, + ]), + Fq::from_montgomery_limbs([ + 17772168373864941552, + 6465821213265847266, + 13630379320513469760, + 377801609900980707, + ]), + Fq::from_montgomery_limbs([ + 15796194027949120118, + 344995813018918925, + 1773993772309248477, + 495371203446902105, + ]), + Fq::from_montgomery_limbs([ + 2372367672613269254, + 1881994507861568925, + 12499063082888296383, + 198183890354307133, + ]), + Fq::from_montgomery_limbs([ + 8560339202466452135, + 4674741842794783289, + 2295938056459737653, + 1305584587019963566, + ]), + Fq::from_montgomery_limbs([ + 15461653997367792205, + 5090711996373026875, + 11075299042609757676, + 357873227640910306, + ]), + Fq::from_montgomery_limbs([ + 13214321932666947005, + 16528230236252211216, + 1734602115269476888, + 818804650790090647, + ]), + Fq::from_montgomery_limbs([ + 3074208048728389137, + 15294693683882801473, + 8267213793554472185, + 939723642447579953, + ]), + Fq::from_montgomery_limbs([ + 7608844071812963093, + 3353589238160526207, + 1067027003640137200, + 792698467630664137, + ]), + Fq::from_montgomery_limbs([ + 2391877978401333891, + 3445084574946968197, + 5867047100623880462, + 384653842732542416, + ]), + Fq::from_montgomery_limbs([ + 13914996210513565866, + 8700856800201437460, + 10425054275786134234, + 541663540168055488, + ]), + Fq::from_montgomery_limbs([ + 14596932606745167054, + 16496367856477422743, + 3083425729320663120, + 1085256212719522319, + ]), + Fq::from_montgomery_limbs([ + 2801764879250151374, + 12953139825024524798, + 4394381772409440172, + 830313299202608738, + ]), + Fq::from_montgomery_limbs([ + 13075739450270366768, + 9659330049829153230, + 12704212718639626523, + 379597176451908972, + ]), + Fq::from_montgomery_limbs([ + 9001536902225952463, + 6674549463409581165, + 3938882380056074877, + 470816176925644781, + ]), + Fq::from_montgomery_limbs([ + 5294884807833067443, + 14704992853616613201, + 11757098272470647345, + 665189038743785081, + ]), + Fq::from_montgomery_limbs([ + 18065518746286947233, + 11431857512891870190, + 7287431282350112106, + 995640933596957099, + ]), + Fq::from_montgomery_limbs([ + 15052981787521128144, + 7858896385113452253, + 5947479460571918718, + 325110107616048024, + ]), + Fq::from_montgomery_limbs([ + 8613576755313845653, + 13985454223970503802, + 5789054661699635475, + 985740677230137068, + ]), + Fq::from_montgomery_limbs([ + 3926674414459183479, + 15125652309946021274, + 7647466298927812509, + 538639589943257540, + ]), + Fq::from_montgomery_limbs([ + 13088032312231323780, + 5311715134728782442, + 9012071499019100799, + 1330544433302886302, + ]), + Fq::from_montgomery_limbs([ + 3664690074919872926, + 1742673068665566813, + 17290766138005523036, + 1336141459748487725, + ]), + Fq::from_montgomery_limbs([ + 16701892693656888438, + 5154406097941234252, + 2366974417176707806, + 154891066872919950, + ]), + Fq::from_montgomery_limbs([ + 8557542807233937796, + 15959352071512430351, + 4990793324727743483, + 1293908698860086179, + ]), + Fq::from_montgomery_limbs([ + 15073124381299855142, + 16058294570821288175, + 6075369664645776758, + 87903751159999429, + ]), + Fq::from_montgomery_limbs([ + 260728936241443673, + 368587472503844932, + 2223560135924572606, + 805228060621005528, + ]), + Fq::from_montgomery_limbs([ + 7269287363866321270, + 2522156147731399548, + 13054616534728649482, + 931053562448615214, + ]), + Fq::from_montgomery_limbs([ + 4160721187467010576, + 15149513473553012866, + 15656814560183579945, + 1001129190706658794, + ]), + Fq::from_montgomery_limbs([ + 14658651187247608250, + 12880504629543941444, + 10429384779372580470, + 1161303852698833077, + ]), + Fq::from_montgomery_limbs([ + 1235937067845588009, + 7263495784070768735, + 1030907402673138059, + 112249256173393847, + ]), + Fq::from_montgomery_limbs([ + 9458598589591766548, + 11826210343318171415, + 5267632108497983083, + 878978097354051448, + ]), + Fq::from_montgomery_limbs([ + 9349450799754247443, + 5592311323302686001, + 8710868002211880477, + 339828983129180906, + ]), + Fq::from_montgomery_limbs([ + 17187343190949067712, + 4809921206309548539, + 1654263325380555971, + 1029486713709570633, + ]), + Fq::from_montgomery_limbs([ + 7644765658684612346, + 13218702097576502896, + 16500195852294632749, + 1306030386106155137, + ]), + Fq::from_montgomery_limbs([ + 3505773913815738861, + 4811121454898644532, + 6220593478751174597, + 617955371370962677, + ]), + Fq::from_montgomery_limbs([ + 15743683183886237853, + 5364535566544930778, + 13962926219706156342, + 279010990417402073, + ]), + Fq::from_montgomery_limbs([ + 5534551911701805251, + 16755407359921259948, + 11104629150013572555, + 814043341910345398, + ]), + Fq::from_montgomery_limbs([ + 8944448190814835116, + 15456464214992510712, + 8458597289994495014, + 1265792487860718358, + ]), + Fq::from_montgomery_limbs([ + 3488692111583557919, + 13331987553376721589, + 18402338094634938868, + 1065887348732752750, + ]), + Fq::from_montgomery_limbs([ + 9073355603731228680, + 14479691350704356281, + 12891384335089494102, + 794286481590472402, + ]), + Fq::from_montgomery_limbs([ + 837263131188576340, + 12622228587018704025, + 17555140662019162595, + 116065994774231082, + ]), + Fq::from_montgomery_limbs([ + 14557259484417606169, + 4562566277830260822, + 4089084236598109790, + 503526388329690921, + ]), + Fq::from_montgomery_limbs([ + 4425139792333247996, + 17192910803843537440, + 6327001334305018300, + 1189405791856364044, + ]), + Fq::from_montgomery_limbs([ + 600163066110636331, + 12319630319416791292, + 4537854761219498244, + 33425175842117417, + ]), + Fq::from_montgomery_limbs([ + 6516037169436621352, + 5864705901197391949, + 9864817317342287359, + 931460564657389579, + ]), + Fq::from_montgomery_limbs([ + 11238491471364916474, + 18217352394306774045, + 8369866412509597036, + 1044188737560722381, + ]), + Fq::from_montgomery_limbs([ + 15194113841410138763, + 9713698855149445572, + 840830724179458009, + 574399528344548482, + ]), + Fq::from_montgomery_limbs([ + 10094044208972451177, + 14820311408839650250, + 832731916797264605, + 1078999540214538853, + ]), + Fq::from_montgomery_limbs([ + 16122314034306189535, + 9724832477076262589, + 15428406989180491409, + 739923283713385548, + ]), + Fq::from_montgomery_limbs([ + 990447045496888008, + 3954312775585670686, + 14414097128339264209, + 1160784537044385327, + ]), + Fq::from_montgomery_limbs([ + 12790567186406766562, + 9540692660342267401, + 12022170182251744455, + 1252399210348847836, + ]), + Fq::from_montgomery_limbs([ + 7494400281462281059, + 13969110066704963391, + 6054746240150948073, + 950110029163098453, + ]), + Fq::from_montgomery_limbs([ + 10519706033512544620, + 1273243870837414124, + 6743773117001565585, + 464260752488464109, + ]), + Fq::from_montgomery_limbs([ + 6644031355037466023, + 1291805761807358108, + 6551243450297799793, + 489432277343575283, + ]), + Fq::from_montgomery_limbs([ + 3733838584259262811, + 7236713087991210405, + 12126920741789203222, + 522094252622775454, + ]), + Fq::from_montgomery_limbs([ + 18303517822547932992, + 2807195054210467784, + 13159641576753772587, + 855829353333514728, + ]), + Fq::from_montgomery_limbs([ + 4449128923636887467, + 13611412613163493515, + 12025336169373281333, + 1332896560863403205, + ]), + Fq::from_montgomery_limbs([ + 1957451185913453258, + 11039336564323764549, + 12727456287856679131, + 228326154778309814, + ]), + Fq::from_montgomery_limbs([ + 11338427901906828980, + 109935761989873387, + 12048120310880045899, + 1308994518812657297, + ]), + Fq::from_montgomery_limbs([ + 4699060152260570516, + 11811201865491436236, + 16537310942924896508, + 1030678137510996087, + ]), + Fq::from_montgomery_limbs([ + 12646006819083654452, + 12494391672709859571, + 16266030119791019994, + 719740245520971856, + ]), + Fq::from_montgomery_limbs([ + 3201794059715843426, + 7659470317574241049, + 9031647908161946781, + 363148928753677985, + ]), + Fq::from_montgomery_limbs([ + 11915502048720601469, + 5772846818657644116, + 14815308031156385389, + 35923403898725028, + ]), + Fq::from_montgomery_limbs([ + 170799290955765955, + 1257452554540755479, + 154144376612152799, + 1049253778390741684, + ]), + Fq::from_montgomery_limbs([ + 12436956446014067805, + 12495488261233549050, + 15098105238157791389, + 981323126540180488, + ]), + Fq::from_montgomery_limbs([ + 17100349351086466568, + 15199087629262610106, + 2857850399247819097, + 933629509856035794, + ]), + Fq::from_montgomery_limbs([ + 4893555085527448580, + 9471095916978593903, + 15023640703244453163, + 410519582864510926, + ]), + Fq::from_montgomery_limbs([ + 17697020347608707279, + 18087907458231569196, + 3102461787435620980, + 62537999126012536, + ]), + Fq::from_montgomery_limbs([ + 362067899505874664, + 14616460120599181344, + 15083851369654439268, + 631595353512390885, + ]), + Fq::from_montgomery_limbs([ + 1608981123540692261, + 8134210797420893342, + 15670126385653615755, + 1081728063194062498, + ]), + Fq::from_montgomery_limbs([ + 4703704396738392227, + 9402972062611023321, + 6453958957721258724, + 851572793112159638, + ]), + Fq::from_montgomery_limbs([ + 14824233911337383260, + 4597555368896294115, + 13023979643520645931, + 1222004100879652500, + ]), + Fq::from_montgomery_limbs([ + 2891695900391958118, + 5796773624231764530, + 15491428749654748662, + 1093937749145502896, + ]), + Fq::from_montgomery_limbs([ + 10646550323399881070, + 1003826136171019194, + 8409333161078783785, + 585473798721331047, + ]), + Fq::from_montgomery_limbs([ + 10406448549383730564, + 6135682111734731503, + 11700407245549915604, + 1085967648121639010, + ]), + Fq::from_montgomery_limbs([ + 1292557270730948407, + 18351657967081052852, + 2678776828196945632, + 959596399484615466, + ]), + Fq::from_montgomery_limbs([ + 17438835186806351279, + 5684764232294129700, + 10157135796976222869, + 221407997194324483, + ]), + Fq::from_montgomery_limbs([ + 7271080368260971730, + 12425374983903708199, + 12363525356310613233, + 1110769717996073345, + ]), + Fq::from_montgomery_limbs([ + 8776284918006632977, + 15535513105129775867, + 4863301670678022317, + 606408823553952292, + ]), + Fq::from_montgomery_limbs([ + 5066052630199551249, + 15751267872424382675, + 13216457812319899775, + 20357134061436216, + ]), + Fq::from_montgomery_limbs([ + 13075702753995571952, + 11742969640320942289, + 17235366015989204124, + 1150175744034062515, + ]), + Fq::from_montgomery_limbs([ + 5797072079034365870, + 17544469376997963633, + 14801627417863273010, + 1279229494278656541, + ]), + Fq::from_montgomery_limbs([ + 7831938700179984096, + 17180774215462038883, + 4412793878621746257, + 1256681412857074070, + ]), + Fq::from_montgomery_limbs([ + 12968148811839764483, + 16811480840776650012, + 8602422769386693728, + 382111204094941728, + ]), + Fq::from_montgomery_limbs([ + 13318317749693537082, + 3768328516420896241, + 142206933916635569, + 26627989124778159, + ]), + Fq::from_montgomery_limbs([ + 11933334459503099726, + 1065153861357867533, + 11936439423614846055, + 1149053547479723905, + ]), + Fq::from_montgomery_limbs([ + 2631481992765688259, + 16002912452516972398, + 2790213850442440167, + 971241800259043027, + ]), + Fq::from_montgomery_limbs([ + 13004331011283795828, + 14189721912689256843, + 6652832565990539996, + 452227668495405848, + ]), + Fq::from_montgomery_limbs([ + 11639365468700302967, + 13626754345549226066, + 5122223316448852115, + 1295194052532032537, + ]), + Fq::from_montgomery_limbs([ + 12503775634034454216, + 12484320064934540173, + 6283031731499175779, + 1142971827879478463, + ]), + Fq::from_montgomery_limbs([ + 18442309574762645474, + 16043706756922086064, + 1203583357081319117, + 289542689638807443, + ]), + Fq::from_montgomery_limbs([ + 13599874590406072599, + 12311290605935601867, + 1953047606734609742, + 893071755833526513, + ]), + Fq::from_montgomery_limbs([ + 5038580414622442104, + 7706592482679500096, + 14281875320180208754, + 1311692136942617770, + ]), + Fq::from_montgomery_limbs([ + 9116924453968593592, + 4695211437329644351, + 122131672006113022, + 460639526001551111, + ]), + Fq::from_montgomery_limbs([ + 612695102453556953, + 17430917114440300568, + 3712227006774104749, + 434565107124519036, + ]), + Fq::from_montgomery_limbs([ + 2711460600386692082, + 5084507891975000066, + 8709631773769875914, + 701012049286425866, + ]), + Fq::from_montgomery_limbs([ + 11255000280507413421, + 5698447525751632608, + 12610021548558458685, + 1327688989507972423, + ]), + Fq::from_montgomery_limbs([ + 13754440516467115564, + 4761751981327990235, + 9432675603353781856, + 1033668598466658556, + ]), + Fq::from_montgomery_limbs([ + 2955363287632570334, + 7600733227996025654, + 12027057950170385287, + 940571561931822742, + ]), + Fq::from_montgomery_limbs([ + 9703552155773020694, + 5742947530758499792, + 15763297443315122579, + 930801506499582622, + ]), + Fq::from_montgomery_limbs([ + 12461619637026250391, + 11019870465191278910, + 15873529414143589982, + 972447937818380498, + ]), + Fq::from_montgomery_limbs([ + 14971502483088783044, + 7994961046161658478, + 1775531898359432051, + 206771972563020622, + ]), + Fq::from_montgomery_limbs([ + 4978085183441894637, + 6786252161551953403, + 1597833793868027214, + 752497765450057609, + ]), + Fq::from_montgomery_limbs([ + 8931448885295850487, + 14900305553280237157, + 2562728536608668150, + 820070530770563815, + ]), + Fq::from_montgomery_limbs([ + 11091196606428717904, + 4420547532075463625, + 6826607115289893546, + 339509882889855264, + ]), + Fq::from_montgomery_limbs([ + 17256856864641998223, + 7372887677193499350, + 3097849850460902989, + 1011516479262752115, + ]), + Fq::from_montgomery_limbs([ + 9808600647888735916, + 8803141348520645434, + 18015342816914135198, + 7277772948085899, + ]), + Fq::from_montgomery_limbs([ + 4255905157964142682, + 17462645559877710531, + 3560989839800268196, + 1096116226462923784, + ]), + Fq::from_montgomery_limbs([ + 4532426149332308403, + 5237561599212546024, + 9574446344492571337, + 1288985425094911641, + ]), + Fq::from_montgomery_limbs([ + 1967144278589690647, + 13201768465226207499, + 11675172852243609220, + 79359524195858682, + ]), + Fq::from_montgomery_limbs([ + 17074450551687194476, + 16589227351082498259, + 5830030722038791303, + 89110035164054224, + ]), + Fq::from_montgomery_limbs([ + 3452204926739135764, + 5895291203558274423, + 3429941105331217419, + 412361227440985099, + ]), + Fq::from_montgomery_limbs([ + 13210175262635268816, + 10104864748580005346, + 8240781084290164303, + 168682271830987859, + ]), + Fq::from_montgomery_limbs([ + 11525437706352653758, + 15971301990722544967, + 11793391563239286407, + 916031980478624773, + ]), + Fq::from_montgomery_limbs([ + 4389204516004340807, + 12441134604525330513, + 4580143368417059639, + 517606274666844106, + ]), + Fq::from_montgomery_limbs([ + 6072537589623190443, + 14275421712964513977, + 2053999455871445365, + 139159162484497428, + ]), + Fq::from_montgomery_limbs([ + 2238091790845791439, + 11897799578864713665, + 10598112979470640955, + 1188516484791317810, + ]), + Fq::from_montgomery_limbs([ + 13761995375578127219, + 14445881686168874002, + 8730842343343508106, + 75023619749953264, + ]), + Fq::from_montgomery_limbs([ + 1876841868458551114, + 9237020881271725184, + 16194471067922316805, + 1271526124614314943, + ]), + Fq::from_montgomery_limbs([ + 14877699808508013807, + 12080680751297116426, + 594057086705046692, + 93241042719742539, + ]), + Fq::from_montgomery_limbs([ + 12830970035552954850, + 16724821255552997190, + 6657724498740869088, + 1006163239038875246, + ]), + Fq::from_montgomery_limbs([ + 4789503842637643824, + 15837144161010273010, + 14535004913645399525, + 386886467210416122, + ]), + Fq::from_montgomery_limbs([ + 4113769938336656446, + 12767551034851750890, + 6208225444974425038, + 384107338921112388, + ]), + Fq::from_montgomery_limbs([ + 1457177616745477196, + 5817007768895882090, + 18403435531988633091, + 233268311946882765, + ]), + Fq::from_montgomery_limbs([ + 8504687346089992934, + 12196813988838752019, + 4423978201234255224, + 103085384776574023, + ]), + Fq::from_montgomery_limbs([ + 12001393905996299420, + 7906247193177979514, + 2548978637445902098, + 508311140484542625, + ]), + Fq::from_montgomery_limbs([ + 12545595986735188293, + 5025452441931542801, + 9681010628496985355, + 969281160594328671, + ]), + Fq::from_montgomery_limbs([ + 4476642231459795365, + 10130322522288542164, + 5504810838816131115, + 942197574992353703, + ]), + Fq::from_montgomery_limbs([ + 12725269033496721580, + 6143157215985784613, + 2563593607564735516, + 641845243083026263, + ]), + Fq::from_montgomery_limbs([ + 16567470293191015474, + 17979338546951754349, + 679740711221916675, + 389452091580807800, + ]), + Fq::from_montgomery_limbs([ + 11781729507075158888, + 16614033708022660131, + 8066891565891024775, + 1321986181569835272, + ]), + Fq::from_montgomery_limbs([ + 15263301520898366582, + 5379961920461128458, + 5298170819253721050, + 871089269493660926, + ]), + Fq::from_montgomery_limbs([ + 5741830111596365525, + 11415264909554107470, + 8692411149271156415, + 108534814929374467, + ]), + Fq::from_montgomery_limbs([ + 14889457972591320596, + 4443631419689297602, + 9576604194859673886, + 55036543682599971, + ]), + Fq::from_montgomery_limbs([ + 15281837068987139929, + 16419105318903348956, + 3445836523780143538, + 1293417868939267170, + ]), + Fq::from_montgomery_limbs([ + 17836346323317710151, + 12227034928325499140, + 2533213127903144227, + 888374169811671044, + ]), + Fq::from_montgomery_limbs([ + 17190507118724296154, + 11902410769486810674, + 1884965616619903297, + 288715797041361057, + ]), + Fq::from_montgomery_limbs([ + 3698781841092321912, + 12743575315417669826, + 2170730182690456487, + 1222843211331174337, + ]), + Fq::from_montgomery_limbs([ + 4016814140820935108, + 7695810038153355283, + 9484931309805354358, + 1136167194218052037, + ]), + Fq::from_montgomery_limbs([ + 14104529875826633218, + 4636945317611530138, + 9502367629041549061, + 1255556235831136969, + ]), + Fq::from_montgomery_limbs([ + 3761991760077630951, + 15074729225518792210, + 17745896690436879228, + 1023440924724847735, + ]), + Fq::from_montgomery_limbs([ + 15850125405934611308, + 14029919305144561597, + 18399969854542387983, + 1223450657234113398, + ]), + Fq::from_montgomery_limbs([ + 15153111831948502891, + 17514853580286890635, + 16559251203856754825, + 921126073718956725, + ]), + Fq::from_montgomery_limbs([ + 14464801899277986702, + 11416622266096337177, + 5506399331882969115, + 210576422101801202, + ]), + ]), + mds: MdsMatrix::<4, 3, 16, 9>::new_from_known([ + Fq::from_montgomery_limbs([ + 16270238816294404093, + 17510165790819614716, + 15988650198697570299, + 575844906362867708, + ]), + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + ]), alpha: Alpha::Exponent(17), - rounds: RoundNumbers {r_P: 31, r_F: 8}, + rounds: RoundNumbers { r_P: 31, r_F: 8 }, optimized_mds: OptimizedMdsMatrices { - M_hat: SquareMatrix::<3, 9>::new_from_known([Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122])]), - v: Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), - w: Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), - M_prime: SquareMatrix::<4, 16>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122])]), - M_doubleprime: SquareMatrix::<4, 16>::new_from_known([Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([3912868093747842187, 13891638599538547029, 10034520463596988736, 24923162524038143]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12940192809323646256, 10063211937356421632, 16102475073289099807, 635255441558029483]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13439545502292733320, 8210365196597573290, 10798232243990715182, 209985169044052016]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), - M_inverse: SquareMatrix::<4, 16>::new_from_known([Fq::from_montgomery_limbs([9007339992229280139, 10326424826243116856, 5092355938437508509, 1003135009120454797]), Fq::from_montgomery_limbs([3793860473594899407, 15568206114553404763, 16793548156181542160, 297017364836875886]), Fq::from_montgomery_limbs([13118704239553060426, 7548360664834135031, 15187305571267045479, 227114138088772868]), Fq::from_montgomery_limbs([2709900338282071005, 579150611132688193, 11995391540129672972, 212155260597768490]), Fq::from_montgomery_limbs([3793860473594899407, 15568206114553404763, 16793548156181542160, 297017364836875886]), Fq::from_montgomery_limbs([928445210678486263, 8868160626470841658, 3755794146411517614, 1205473917191967362]), Fq::from_montgomery_limbs([10094677827265099397, 10861765592258933950, 11901484874902647424, 945996443767726300]), Fq::from_montgomery_limbs([5126644488318323641, 9647529625230561771, 1074775780748510466, 567785345221932172]), Fq::from_montgomery_limbs([13118704239553060426, 7548360664834135031, 15187305571267045479, 227114138088772868]), Fq::from_montgomery_limbs([10094677827265099397, 10861765592258933950, 11901484874902647424, 945996443767726300]), Fq::from_montgomery_limbs([824862419246658903, 16129767034744593238, 2170701329025733649, 1301512370243790878]), Fq::from_montgomery_limbs([3590917015388128985, 13161152940282392610, 1559289252300983907, 436823818333081923]), Fq::from_montgomery_limbs([2709900338282071005, 579150611132688193, 11995391540129672972, 212155260597768490]), Fq::from_montgomery_limbs([5126644488318323641, 9647529625230561771, 1074775780748510466, 567785345221932172]), Fq::from_montgomery_limbs([3590917015388128985, 13161152940282392610, 1559289252300983907, 436823818333081923]), Fq::from_montgomery_limbs([7790664405396569236, 15096721329668270063, 11927867068824539342, 454228276177545737])]), - M_hat_inverse: SquareMatrix::<3, 9>::new_from_known([Fq::from_montgomery_limbs([3075677070517273610, 12935975526496926241, 5413643861495614409, 209652601170259502]), Fq::from_montgomery_limbs([5785577408799344615, 13515126137629614434, 17409035401625287381, 421807861768027992]), Fq::from_montgomery_limbs([17408664359600548624, 17034391550693366562, 14790887709711326522, 240850225403047528]), Fq::from_montgomery_limbs([5785577408799344615, 13515126137629614434, 17409035401625287381, 421807861768027992]), Fq::from_montgomery_limbs([6563011294473575235, 14911990801343518815, 5387840296410814352, 742514872555164941]), Fq::from_montgomery_limbs([3251880405938485206, 8073678362843046478, 14394469848155607566, 254586312717322188]), Fq::from_montgomery_limbs([17408664359600548624, 17034391550693366562, 14790887709711326522, 240850225403047528]), Fq::from_montgomery_limbs([3251880405938485206, 8073678362843046478, 14394469848155607566, 254586312717322188]), Fq::from_montgomery_limbs([13824643481143691730, 14179537619338997380, 15459123094703748781, 28520280494317649])]), - M_00: Fq::from_montgomery_limbs([16270238816294404093, 17510165790819614716, 15988650198697570299, 575844906362867708]), - M_i: Matrix::<4, 4, 16>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15179341900948762797, 11777292160962496113, 5824707706538620273, 936937875498611239]), Fq::from_montgomery_limbs([1606954441813089504, 12826102157655983484, 14966661657048055395, 819162019713750967]), Fq::from_montgomery_limbs([18056108788388345532, 17234016165201706377, 6789576351003995708, 125032483782692849]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1606954441813089504, 12826102157655983484, 14966661657048055395, 819162019713750967]), Fq::from_montgomery_limbs([11752092954103863583, 5034202175795696722, 3707413120985258698, 30603057527914360]), Fq::from_montgomery_limbs([9883657716457256646, 10991555415607003281, 6328965851154270623, 1087433766327205373]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18056108788388345532, 17234016165201706377, 6789576351003995708, 125032483782692849]), Fq::from_montgomery_limbs([9883657716457256646, 10991555415607003281, 6328965851154270623, 1087433766327205373]), Fq::from_montgomery_limbs([9018019125940148120, 4443737769172605648, 9114883657740606330, 325721335091457982])]), - v_collection: [Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([3544248464247567155, 2397127324301944422, 9674390580977628774, 1114449731390581691]), Fq::from_montgomery_limbs([10793968004403082763, 14776098320186757028, 3926381262294758649, 695945431440508002]), Fq::from_montgomery_limbs([2462384498404250202, 12590306298374345930, 11038784733069574134, 419995880141749771])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([13532986407775683895, 9476195915097473266, 1008114724683017572, 545860035442724601]), Fq::from_montgomery_limbs([16204216982352313226, 12925674836598514697, 6751896652466221822, 941483813900869065]), Fq::from_montgomery_limbs([17313019480228630806, 566130559971125633, 11091260944862748358, 830377232140527827])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([13653317352261633777, 10493929866956769626, 8396755137825041221, 1146048882209297127]), Fq::from_montgomery_limbs([4132278932442914408, 14861671218963566328, 7959790402925606057, 1318243553399078199]), Fq::from_montgomery_limbs([13456767915419596367, 17246911423899751971, 5711218416857391278, 35403035103928169])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([12907160498704673184, 12152379198293294711, 9252679699965582400, 1224554265731421992]), Fq::from_montgomery_limbs([13419199242664167498, 13891452473958728318, 13543072901518191311, 1037106053989502131]), Fq::from_montgomery_limbs([16666897222883125359, 12131730689573449836, 13003710399516055414, 648272461984720515])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([13991351580088989461, 17864339801785851041, 11695126599066872867, 921749339582652232]), Fq::from_montgomery_limbs([11906579800297278037, 11470441940361903448, 15097374289742739909, 275174984759910272]), Fq::from_montgomery_limbs([18232546040145726314, 14147307759659284922, 991776681097878315, 1065560959455072221])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([3117800866767190184, 1873664776760606669, 13118797281780700540, 918694694774008673]), Fq::from_montgomery_limbs([16198059297050513347, 8432506190058226772, 9370514214732897655, 212402421053033076]), Fq::from_montgomery_limbs([2518782581476945766, 6771388879653376635, 1394823901821599775, 786725020056686548])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([4999125751846201369, 9316583554979616827, 11717167420397718381, 1066546495878431233]), Fq::from_montgomery_limbs([1873871365393108203, 11936414467331150546, 11113449918732250015, 317274884289334993]), Fq::from_montgomery_limbs([5753682051272078512, 3471409429911499297, 5526758011092646462, 1323229023757477097])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([2662759502586109043, 1695416312126819095, 1012723056571339871, 933004606031207884]), Fq::from_montgomery_limbs([16642301735251917773, 1183412391970839036, 3358256470522122468, 496531810743047820]), Fq::from_montgomery_limbs([14229377213726726413, 17261160081985153069, 9576276288950416830, 700741200569462595])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([6784297665956970408, 11357803791388406129, 11332180445619439434, 1106781037719016960]), Fq::from_montgomery_limbs([73464770077821962, 229820375535861605, 4835258747884954879, 991229687813626051]), Fq::from_montgomery_limbs([10226838402609267711, 357277105338386461, 10898037771405216876, 738876256175427730])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([12081508766912259869, 15930347767913903841, 8853663281043083447, 10038595465753804]), Fq::from_montgomery_limbs([112737203409514332, 16114412090287437958, 6856032020202317595, 113207183629292293]), Fq::from_montgomery_limbs([16338645855580340203, 2107869018362076089, 12567383037519742350, 815641356564041922])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([12125233544299543001, 11893476647476625145, 15457331543628022009, 800448530217165123]), Fq::from_montgomery_limbs([16675745322148137368, 1493849644880660500, 8185984318393084462, 138242285432587533]), Fq::from_montgomery_limbs([17724307965454702231, 4807522038799077672, 8746642154843823745, 883881308868446414])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([5656989936467702279, 3451526239075705633, 12473714456419681817, 720076561380511801]), Fq::from_montgomery_limbs([2752710254647861908, 11030634120397179297, 7520710074325720708, 849095153678924863]), Fq::from_montgomery_limbs([15714192245785854425, 1934486269946887645, 249860026764225808, 1186606499687026685])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([1065442882426850105, 18187640339393109068, 8850384031746892082, 317569289072515041]), Fq::from_montgomery_limbs([1837681773828322091, 10850972211403707738, 336406577412961307, 885368386317519809]), Fq::from_montgomery_limbs([15758214746904074141, 11583431684684102838, 7662385228843486433, 217065657978291661])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([2532634061285367793, 4387885387692314654, 12158131981630891597, 230565483900354414]), Fq::from_montgomery_limbs([13346419382798549501, 18280976687063744023, 5606331118089126185, 273578743992252446]), Fq::from_montgomery_limbs([17577657789855982030, 9630457784692257422, 12902853055721181839, 36459624765202074])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([9935908372408102992, 14641284087709280054, 17684292083487177951, 1155088959507788459]), Fq::from_montgomery_limbs([541701721303367728, 3959174565794182274, 18151179085562458542, 340776254243440974]), Fq::from_montgomery_limbs([17690336527687088662, 10937885152973991052, 3836836874424836886, 1090509013794447238])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([12310573214022515884, 3043141462744167127, 7406092407251694082, 9160197655286166]), Fq::from_montgomery_limbs([5101804845510497503, 7081024525590050191, 11990249650950760548, 264716438448155623]), Fq::from_montgomery_limbs([14013782434072143361, 18031550597362521222, 4176916092795610844, 1008783913934215313])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([5197923006462389769, 10850213912970425984, 6236288807254229677, 381647096775612803]), Fq::from_montgomery_limbs([16904562081938006603, 1107639524721847015, 12857487247803522951, 271937989000148046]), Fq::from_montgomery_limbs([7013951325055848953, 17628406277137302222, 10293198099660764650, 1028289934164465192])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([9440252581760876632, 13906337780931242750, 7219961419517025615, 863594454449643923]), Fq::from_montgomery_limbs([12415229001429896965, 11797271759794076948, 1936084790537971337, 467019200964667988]), Fq::from_montgomery_limbs([13553333187067381210, 1913316352777824197, 2458517210763467943, 416174277494956025])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([7868885723930814728, 3969684852222006688, 847603129181085226, 823204710257787357]), Fq::from_montgomery_limbs([2624306993317474736, 1804999503475194353, 13323117091522537138, 113213718216814537]), Fq::from_montgomery_limbs([13028853788877299982, 16207030875451345887, 2928890708384561735, 948835740600760535])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([10332479856281518610, 5461907926022368118, 7566281008880752185, 864542613737871414]), Fq::from_montgomery_limbs([11550343341750412987, 1921332364560602185, 10690162369512005698, 600190744590186860]), Fq::from_montgomery_limbs([11343163367577472637, 7523233831279170268, 14378595658429552329, 120678106820511750])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([1497803481831246817, 7312638636652871954, 34925480233639111, 44726202564591048]), Fq::from_montgomery_limbs([6152756361006073958, 6090155380815116625, 6481578954979806710, 476190110671401465]), Fq::from_montgomery_limbs([18102241645952999143, 12827175776728527569, 10917946848969687318, 1031360619507992497])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([10479806376196948796, 1250933353292865403, 9714052636425979898, 724896984716198201]), Fq::from_montgomery_limbs([3536451958691514845, 3820878089540374661, 1602865878357815152, 303292371629072230]), Fq::from_montgomery_limbs([2647458017961703424, 14255003531541688237, 9264134941484745925, 1144438898154277748])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([14896674334234435047, 6601140327636410720, 11594733032791631077, 947808208377648736]), Fq::from_montgomery_limbs([93857753711709862, 17114219253807441153, 16571911382240086620, 644986335071170285]), Fq::from_montgomery_limbs([11491045973623638105, 5832623718891215316, 4637897368334583442, 1270136782835782403])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([12059760086965268413, 2104859632417338119, 3074047925029609319, 208685506241841351]), Fq::from_montgomery_limbs([507458650320731749, 9076652763882528689, 10828995108044982790, 52861166057592230]), Fq::from_montgomery_limbs([5221245564257429544, 602546441039285868, 15463515802777952068, 500262458682360187])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([7894603091209534363, 5963299443776147743, 13622917766282071553, 713444535504669723]), Fq::from_montgomery_limbs([4707822806056225947, 13008601324591260598, 6664196336989843628, 361594494120552721]), Fq::from_montgomery_limbs([7234555332968855468, 13223173585719696534, 305242624856210053, 317409461914184558])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([11052531972415731524, 6240249964832493008, 4690512975789608724, 274300931659090955]), Fq::from_montgomery_limbs([12865203614941348009, 13629535421935003532, 14381802801123693296, 1108602536075241162]), Fq::from_montgomery_limbs([5342089493189303187, 11299417329134660514, 10437815285599784456, 224625807758727328])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([9419019633707904193, 17287104400249488354, 2449834218878066498, 880784160362712225]), Fq::from_montgomery_limbs([1290387194510150606, 300217878573287348, 14712510331530271944, 675169241465258261]), Fq::from_montgomery_limbs([4319449301091482228, 6604997191961440301, 3677473832318302588, 1226257433999087430])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([9534885027294214845, 4233504142154122132, 671184154419538440, 588715198189399632]), Fq::from_montgomery_limbs([7834331777517711657, 12046762886677754640, 12085017871628461830, 1280695769450865349]), Fq::from_montgomery_limbs([17051048636914562332, 9931763496822042016, 812132922227142181, 1215806818267015733])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([10248407954863227910, 6765342538198222232, 3376905111922655053, 689295470605671650]), Fq::from_montgomery_limbs([852480703421168492, 12355793660799378618, 6731311636032405498, 552777249330804449]), Fq::from_montgomery_limbs([1991623127336121727, 6505031450361927139, 15924460190557187785, 1320271660125443798])]), Matrix::<1, 3, 3>::new_from_known([Fq::from_montgomery_limbs([17438135180680113454, 12154982230827864980, 10857096699189529725, 334861850663499479]), Fq::from_montgomery_limbs([12624059910780607141, 14938141535714956518, 10243410760322861612, 175466020402160466]), Fq::from_montgomery_limbs([11857086838875231849, 16760011700969259517, 8560727830203057188, 152554536976681898])])], - w_hat_collection: [Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([3912868093747842187, 13891638599538547029, 10034520463596988736, 24923162524038143]), Fq::from_montgomery_limbs([12940192809323646256, 10063211937356421632, 16102475073289099807, 635255441558029483]), Fq::from_montgomery_limbs([13439545502292733320, 8210365196597573290, 10798232243990715182, 209985169044052016])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([5751631526606014397, 8462191803631620224, 10509863267471683158, 447861109114791478]), Fq::from_montgomery_limbs([1437717886047567450, 16559126213892176045, 11375302712551931442, 1010730393746897317]), Fq::from_montgomery_limbs([1032470319927068309, 9033645067614029358, 18086293033601348125, 304884835659797125])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([10030163671426435897, 10038896509362625400, 11411437429949289797, 606845429174704889]), Fq::from_montgomery_limbs([13498048305505589045, 14368156343173972859, 5751396272374329581, 1272023166617958572]), Fq::from_montgomery_limbs([9805803927184323301, 13425206131835998785, 13841345243897428245, 615350201809158017])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([14956193223177978026, 4328965669156513709, 1332264507148878686, 908612595539291972]), Fq::from_montgomery_limbs([15512085810689995447, 1278811290279093247, 9713635222980865549, 89918473543807263]), Fq::from_montgomery_limbs([10908982736163998884, 10522718116611575026, 15481410495350859749, 209345561210183580])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([11298966019883739719, 3737954136375979756, 15666428783954356951, 93322090349950905]), Fq::from_montgomery_limbs([10237667835076512281, 12325953953570405613, 12285254403281429040, 507107093264211690]), Fq::from_montgomery_limbs([14936641530723543297, 12684654093637137182, 6573648560098330931, 479128193670708215])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([4665624059074225901, 569773391663140707, 8039376161136700750, 305908263293765813]), Fq::from_montgomery_limbs([12181552876023559131, 7764448317943448064, 10288520924018884818, 1103852203169073095]), Fq::from_montgomery_limbs([15135999239214672948, 10790616626797062588, 17724896909590777918, 1127104704406195421])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([6486714260719829146, 11040751111500249834, 8958297661837625585, 504881187176923268]), Fq::from_montgomery_limbs([9943503409323924620, 9519655296534470798, 10031214880424175980, 880224541550113700]), Fq::from_montgomery_limbs([2137123775246483621, 14575781645937393202, 6082200831828333306, 319693495256136311])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([18213874187166503017, 7357620257182256357, 12753979462901781784, 653327632081049969]), Fq::from_montgomery_limbs([5648402480861501803, 1298801804080198935, 16361566576947818947, 92096317293783223]), Fq::from_montgomery_limbs([17945395108017238106, 3498558197841053284, 7092504945026653103, 372132312547601421])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([15622147422254947733, 250116726000401472, 8318204049018604061, 866935352572882912]), Fq::from_montgomery_limbs([18241804623807754966, 4053430455599371737, 4911593924672747195, 915087345052626509]), Fq::from_montgomery_limbs([4269143728338544596, 14357201884344458328, 903006646797065399, 462454343275509581])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([16493823488007719206, 14779329128742765495, 18378884619527915493, 360610956997885799]), Fq::from_montgomery_limbs([8231956009608211607, 2237272948977110346, 11234918376541957482, 211807215316292218]), Fq::from_montgomery_limbs([4694295422393950539, 494515799644279017, 16377559543581347883, 1023664249665260398])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([269632147881481827, 17676834172042717446, 13502391546248246285, 158178875674850167]), Fq::from_montgomery_limbs([854535799571654664, 4436276133137563398, 12250035363748361097, 569847052981690503]), Fq::from_montgomery_limbs([8356573900420286918, 3943111982741005596, 6690528014909196681, 100899612597296936])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([12053108327360532468, 2215278670095839574, 18310257358516903189, 507153778977982696]), Fq::from_montgomery_limbs([15548327836627863789, 11669395097045425760, 16626297677851084169, 692658363999722441]), Fq::from_montgomery_limbs([5590241427234064239, 15193192965574703365, 7643293374071077424, 502287078265137211])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([7121109350102790552, 3842989306298966953, 15442678426893498207, 43682019324253859]), Fq::from_montgomery_limbs([8543065120635606147, 17618464589270231617, 4296924638616724859, 409105874035239827]), Fq::from_montgomery_limbs([12676854185827013572, 13888077538347807744, 7139127667431143175, 1225243047885808896])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([4347759847866483265, 5855881520281836030, 5505541235252858831, 976243446170017999]), Fq::from_montgomery_limbs([1880808402247115426, 943890821775946445, 12000264441794154793, 12973763854532988]), Fq::from_montgomery_limbs([8496845738719301602, 11057791601996073401, 18430915991403133806, 442312408397388928])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([4597591998391646042, 17549544536524741100, 7632675978077243758, 789227364575351796]), Fq::from_montgomery_limbs([6247914330752058188, 17379927947827819186, 459262613159719376, 17669136651242999]), Fq::from_montgomery_limbs([4416622626270946808, 9011173931926497864, 2385315687804767815, 1100085754679242026])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([2858027675101851698, 15199707771225336894, 6912007903404713737, 1195736020550467109]), Fq::from_montgomery_limbs([16536374087395040861, 11905207237145903612, 6114638606661711198, 227197704829902271]), Fq::from_montgomery_limbs([3076102373056113184, 9532492163005512122, 6930666801042367372, 359947620632631939])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([9440427530838662463, 13085976282871216533, 11609820600896955445, 51192596107359503]), Fq::from_montgomery_limbs([17890235474475849352, 12861769158994967907, 17199388852287681020, 1318104728008794611]), Fq::from_montgomery_limbs([9609805589266211410, 1670962659820459283, 9562963939311936174, 688275382419503341])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([11167389070307520429, 13977359843749392350, 18441644755473839422, 290366407278115355]), Fq::from_montgomery_limbs([12443632002797775505, 4654520606670285598, 7306556664291017650, 1327633699432541153]), Fq::from_montgomery_limbs([8092706722129444827, 3658752323492067072, 4793508300996597563, 747223853807345138])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([2950573641865927995, 8127787636945490240, 13677031676353641065, 158618420355845681]), Fq::from_montgomery_limbs([11307462183326711698, 4564920402521666764, 14622180354087693631, 1336492508958389172]), Fq::from_montgomery_limbs([4173008676431506498, 17674916393358760276, 12680688896701595449, 968385841042257188])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([15472538886056214069, 16032473331676368569, 16841883688877890652, 857731186179030920]), Fq::from_montgomery_limbs([3288920438915728986, 5565335638237954732, 16168717028973711379, 557711450924669146]), Fq::from_montgomery_limbs([2265592654319698024, 3205443269480017209, 18001932803255029483, 256652906325487142])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([281001495283692254, 13790290956215242906, 864387281468051063, 1176693997057782923]), Fq::from_montgomery_limbs([5123560649935846987, 5199616350359672235, 1101436586367673740, 39975262197625469]), Fq::from_montgomery_limbs([6484555314181403346, 13702935644386089262, 1070288899201945043, 1275458004049976710])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([98165037936801382, 7473654891184825762, 349134079485996919, 938092578927267223]), Fq::from_montgomery_limbs([14188791834503488423, 18250342088521722141, 2040654749291153960, 926512896204558398]), Fq::from_montgomery_limbs([15224380743676270964, 10786962884449555555, 11361613959686699022, 1210280746834414029])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([11759988830619476554, 8373507443143532317, 3120367880452859596, 1169296147393250270]), Fq::from_montgomery_limbs([2846578710538047768, 1316160842247957353, 13088400622784413268, 408653118294756083]), Fq::from_montgomery_limbs([17205667740934035850, 3622944266683523375, 9638129797382886543, 994379064072552476])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([10882825922057764254, 14418568533897154353, 491214512167095700, 433897962559667772]), Fq::from_montgomery_limbs([35128611736586842, 16389786149729784671, 10083558142637806972, 137127276176467702]), Fq::from_montgomery_limbs([6798031404470581862, 17848651283256458296, 16222358536010933656, 803683331342998490])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([6972405454939855920, 4552281101007467397, 7264795943490057443, 864688899960148444]), Fq::from_montgomery_limbs([13927481061475209845, 15489762958527206567, 6189983331269957882, 547789234607264680]), Fq::from_montgomery_limbs([3562534859757502067, 1843985785467419577, 4386226263096503262, 1115671597351053159])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([12278022351526165705, 17770191387101388710, 10802565891039662934, 1075900781773362211]), Fq::from_montgomery_limbs([9958371080654925973, 11831887817395699647, 1304723427562418477, 354927743406208632]), Fq::from_montgomery_limbs([7902693975921282234, 10693029805943046522, 8006364623005626891, 336833334808426575])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([16076162621220796497, 11613654344612125103, 18364396485836487261, 865751367130059847]), Fq::from_montgomery_limbs([177169936881514673, 15617655321830945408, 2675644582344792450, 813774581927626127]), Fq::from_montgomery_limbs([10024256268223083204, 4626025808735980516, 15602381466554927909, 372989881235976309])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([15323355670275250642, 18066772602049731907, 11033816093504217490, 425723417069229499]), Fq::from_montgomery_limbs([13530227036238294143, 4726864651116558793, 11836084010804535503, 345580619383028526]), Fq::from_montgomery_limbs([9033276785296979553, 8015158493901738529, 7685612975844433499, 646369922266692941])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([6106858674192767659, 6489383503992760141, 15104627566688873842, 967007977448094027]), Fq::from_montgomery_limbs([15940025338744316838, 9550216566045214897, 11499601007486969156, 519967031225120334]), Fq::from_montgomery_limbs([4457318900167954816, 12351443184813817360, 14113262131954548168, 753463690543950206])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([1881864483835241252, 13219574080686529684, 10918646441166728772, 345526905812511168]), Fq::from_montgomery_limbs([16713317497695859602, 11594535032725047066, 8614425525972045100, 729458370408931167]), Fq::from_montgomery_limbs([2382365843901650484, 13640386342346411833, 2679421435014953531, 1060573086709931927])]), Matrix::<3, 1, 3>::new_from_known([Fq::from_montgomery_limbs([17434826777667612735, 2365065059007002287, 12113557410986701552, 486906253608904981]), Fq::from_montgomery_limbs([15422260981332801416, 11687068808662228912, 15340447593430286694, 1095477751721025581]), Fq::from_montgomery_limbs([3067136625363818837, 15414947239083578872, 4357451922062335136, 670849424861114413])])], - }, - optimized_arc: OptimizedArcMatrix::<39, 4, 156>::new_from_known([Fq::from_montgomery_limbs([15748480026335769443, 10026984616551622801, 2063724428730618452, 1110463257231131824]), Fq::from_montgomery_limbs([9405142820695944635, 11887146523697465657, 7764829263011233272, 10688178588086322]), Fq::from_montgomery_limbs([7160766575090090422, 13093321275956005400, 4459692368517809830, 1324823328343033307]), Fq::from_montgomery_limbs([8967803866417976527, 10882703683899587484, 12604355713142717837, 913362872025451921]), Fq::from_montgomery_limbs([15434913893282099231, 3277411989792281453, 17050922401305883749, 1246396795570595652]), Fq::from_montgomery_limbs([16287493285262395377, 5813955731335134269, 4301474317614585594, 257520225036445364]), Fq::from_montgomery_limbs([6906749939426292513, 6186370802689597769, 13121713652409052978, 974279291569484389]), Fq::from_montgomery_limbs([8879700369639612352, 13618625792929032624, 3907123048620659133, 13234475218016492]), Fq::from_montgomery_limbs([8645743306703223161, 2649437454338131787, 1563690154181407289, 1014186398941703531]), Fq::from_montgomery_limbs([3215833110701720679, 2309636887892103305, 8098930435412331037, 874663616929857835]), Fq::from_montgomery_limbs([12979468067887852608, 5086746922420764336, 15129738790560069297, 751939553752695744]), Fq::from_montgomery_limbs([2977455406847333432, 16814711076234176662, 2052393181081329017, 1025504667378050833]), Fq::from_montgomery_limbs([7769933776177646251, 18381610027802955757, 14883656026535111760, 810712025708758153]), Fq::from_montgomery_limbs([17772168373864941552, 6465821213265847266, 13630379320513469760, 377801609900980707]), Fq::from_montgomery_limbs([15796194027949120118, 344995813018918925, 1773993772309248477, 495371203446902105]), Fq::from_montgomery_limbs([2372367672613269254, 1881994507861568925, 12499063082888296383, 198183890354307133]), Fq::from_montgomery_limbs([8560339202466452135, 4674741842794783289, 2295938056459737653, 1305584587019963566]), Fq::from_montgomery_limbs([5894698623250752231, 11196686474075291940, 319786488005502847, 976772307367475705]), Fq::from_montgomery_limbs([9900044152758269451, 6382301581301578495, 486281876073250633, 71881436776511649]), Fq::from_montgomery_limbs([8858083304247561548, 5671107377399080192, 14186551763070529190, 1191940751561414494]), Fq::from_montgomery_limbs([11388935853995478114, 12687122290317818660, 14863371661788062147, 1158919028776138907]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10994187684158036079, 6365622770188053181, 9403760573784657161, 1146936259121378165]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10359734611031618397, 6788070320086383195, 6870540987465879902, 1154055204589981421]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6567270162376125909, 13203968161919606288, 7529228388954710988, 1019437133634541415]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17083543156205069093, 11374420946242035033, 18049715002122120090, 906131070047943878]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2206466804129196608, 7840059231658610949, 18148556368765089670, 985832054058842554]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15160443716672326145, 3977221634341810924, 11902494952164999188, 990146605314032630]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15193334268554411388, 16206854972517382356, 12905310888333022888, 513326483567402639]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5576504557462251248, 8125452713587662843, 16486629117159905898, 293174270601514481]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17062406856052799045, 4903125714753109748, 8990920239472029770, 936892459427742133]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6584002420364695129, 10284681536623141870, 7366280281192288180, 305633769889978939]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6566050072214065144, 10806265958907184854, 2902594108468871307, 927316604280713413]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9252557727477672981, 3306161630265918351, 179799263786823209, 104291884324148129]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16542259604895379638, 11861465458652059930, 2193746946143577162, 159871979033281704]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1973639865256742476, 12494642903985355205, 12678561251384262826, 1063132847474762378]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16335431452481000471, 3819468482480263699, 13079543972531520553, 161635515931478039]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6649676330206378374, 170192309920289600, 12660537932851201431, 875374125882958636]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18237532705140415183, 5538703501092204277, 12946255801995328124, 1087375767378395044]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1012766659404803227, 13885920911268862504, 11108883550523828802, 162298092776208930]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2714322473297105009, 249945166940002912, 12698583590562308965, 394261012891088761]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11185042895155911424, 15268539255422683750, 7532909772946377585, 463947154991508934]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2052933093431843614, 1295021459124440371, 8148559147565678653, 89295276853247542]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12899268934677529381, 16307080267150235665, 10898130171280001197, 518068384980908314]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([993244798968596356, 11096685116364920579, 8750430116109558950, 9308397748705116]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5953598583374622076, 16232619257237216458, 17798149940250628730, 654505929641861550]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11857053641605556992, 4354078495412090273, 4158908777158450718, 1170888300956232550]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12321182200541779000, 10436914785964154798, 4712843605747406852, 790686269705752315]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11380659121996065200, 7281347105742142276, 13205980178228421104, 804622887165645998]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5152043905886227057, 17756682668953288347, 10695990401739553448, 1061486419247893614]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13186025127373894323, 16210743521572602678, 17903754729019377882, 874061397244045546]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12725269033496721580, 6143157215985784613, 2563593607564735516, 641845243083026263]), Fq::from_montgomery_limbs([16567470293191015474, 17979338546951754349, 679740711221916675, 389452091580807800]), Fq::from_montgomery_limbs([11781729507075158888, 16614033708022660131, 8066891565891024775, 1321986181569835272]), Fq::from_montgomery_limbs([15263301520898366582, 5379961920461128458, 5298170819253721050, 871089269493660926]), Fq::from_montgomery_limbs([5741830111596365525, 11415264909554107470, 8692411149271156415, 108534814929374467]), Fq::from_montgomery_limbs([14889457972591320596, 4443631419689297602, 9576604194859673886, 55036543682599971]), Fq::from_montgomery_limbs([15281837068987139929, 16419105318903348956, 3445836523780143538, 1293417868939267170]), Fq::from_montgomery_limbs([17836346323317710151, 12227034928325499140, 2533213127903144227, 888374169811671044]), Fq::from_montgomery_limbs([17190507118724296154, 11902410769486810674, 1884965616619903297, 288715797041361057]), Fq::from_montgomery_limbs([3698781841092321912, 12743575315417669826, 2170730182690456487, 1222843211331174337]), Fq::from_montgomery_limbs([4016814140820935108, 7695810038153355283, 9484931309805354358, 1136167194218052037]), Fq::from_montgomery_limbs([14104529875826633218, 4636945317611530138, 9502367629041549061, 1255556235831136969]), Fq::from_montgomery_limbs([3761991760077630951, 15074729225518792210, 17745896690436879228, 1023440924724847735]), Fq::from_montgomery_limbs([15850125405934611308, 14029919305144561597, 18399969854542387983, 1223450657234113398]), Fq::from_montgomery_limbs([15153111831948502891, 17514853580286890635, 16559251203856754825, 921126073718956725]), Fq::from_montgomery_limbs([14464801899277986702, 11416622266096337177, 5506399331882969115, 210576422101801202])]), + M_hat: SquareMatrix::<3, 9>::new_from_known([ + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + ]), + v: Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + ]), + w: Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + ]), + M_prime: SquareMatrix::<4, 16>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + ]), + M_doubleprime: SquareMatrix::<4, 16>::new_from_known([ + Fq::from_montgomery_limbs([ + 16270238816294404093, + 17510165790819614716, + 15988650198697570299, + 575844906362867708, + ]), + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 3912868093747842187, + 13891638599538547029, + 10034520463596988736, + 24923162524038143, + ]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12940192809323646256, + 10063211937356421632, + 16102475073289099807, + 635255441558029483, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 13439545502292733320, + 8210365196597573290, + 10798232243990715182, + 209985169044052016, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + ]), + M_inverse: SquareMatrix::<4, 16>::new_from_known([ + Fq::from_montgomery_limbs([ + 9007339992229280139, + 10326424826243116856, + 5092355938437508509, + 1003135009120454797, + ]), + Fq::from_montgomery_limbs([ + 3793860473594899407, + 15568206114553404763, + 16793548156181542160, + 297017364836875886, + ]), + Fq::from_montgomery_limbs([ + 13118704239553060426, + 7548360664834135031, + 15187305571267045479, + 227114138088772868, + ]), + Fq::from_montgomery_limbs([ + 2709900338282071005, + 579150611132688193, + 11995391540129672972, + 212155260597768490, + ]), + Fq::from_montgomery_limbs([ + 3793860473594899407, + 15568206114553404763, + 16793548156181542160, + 297017364836875886, + ]), + Fq::from_montgomery_limbs([ + 928445210678486263, + 8868160626470841658, + 3755794146411517614, + 1205473917191967362, + ]), + Fq::from_montgomery_limbs([ + 10094677827265099397, + 10861765592258933950, + 11901484874902647424, + 945996443767726300, + ]), + Fq::from_montgomery_limbs([ + 5126644488318323641, + 9647529625230561771, + 1074775780748510466, + 567785345221932172, + ]), + Fq::from_montgomery_limbs([ + 13118704239553060426, + 7548360664834135031, + 15187305571267045479, + 227114138088772868, + ]), + Fq::from_montgomery_limbs([ + 10094677827265099397, + 10861765592258933950, + 11901484874902647424, + 945996443767726300, + ]), + Fq::from_montgomery_limbs([ + 824862419246658903, + 16129767034744593238, + 2170701329025733649, + 1301512370243790878, + ]), + Fq::from_montgomery_limbs([ + 3590917015388128985, + 13161152940282392610, + 1559289252300983907, + 436823818333081923, + ]), + Fq::from_montgomery_limbs([ + 2709900338282071005, + 579150611132688193, + 11995391540129672972, + 212155260597768490, + ]), + Fq::from_montgomery_limbs([ + 5126644488318323641, + 9647529625230561771, + 1074775780748510466, + 567785345221932172, + ]), + Fq::from_montgomery_limbs([ + 3590917015388128985, + 13161152940282392610, + 1559289252300983907, + 436823818333081923, + ]), + Fq::from_montgomery_limbs([ + 7790664405396569236, + 15096721329668270063, + 11927867068824539342, + 454228276177545737, + ]), + ]), + M_hat_inverse: SquareMatrix::<3, 9>::new_from_known([ + Fq::from_montgomery_limbs([ + 3075677070517273610, + 12935975526496926241, + 5413643861495614409, + 209652601170259502, + ]), + Fq::from_montgomery_limbs([ + 5785577408799344615, + 13515126137629614434, + 17409035401625287381, + 421807861768027992, + ]), + Fq::from_montgomery_limbs([ + 17408664359600548624, + 17034391550693366562, + 14790887709711326522, + 240850225403047528, + ]), + Fq::from_montgomery_limbs([ + 5785577408799344615, + 13515126137629614434, + 17409035401625287381, + 421807861768027992, + ]), + Fq::from_montgomery_limbs([ + 6563011294473575235, + 14911990801343518815, + 5387840296410814352, + 742514872555164941, + ]), + Fq::from_montgomery_limbs([ + 3251880405938485206, + 8073678362843046478, + 14394469848155607566, + 254586312717322188, + ]), + Fq::from_montgomery_limbs([ + 17408664359600548624, + 17034391550693366562, + 14790887709711326522, + 240850225403047528, + ]), + Fq::from_montgomery_limbs([ + 3251880405938485206, + 8073678362843046478, + 14394469848155607566, + 254586312717322188, + ]), + Fq::from_montgomery_limbs([ + 13824643481143691730, + 14179537619338997380, + 15459123094703748781, + 28520280494317649, + ]), + ]), + M_00: Fq::from_montgomery_limbs([ + 16270238816294404093, + 17510165790819614716, + 15988650198697570299, + 575844906362867708, + ]), + M_i: Matrix::<4, 4, 16>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 15179341900948762797, + 11777292160962496113, + 5824707706538620273, + 936937875498611239, + ]), + Fq::from_montgomery_limbs([ + 1606954441813089504, + 12826102157655983484, + 14966661657048055395, + 819162019713750967, + ]), + Fq::from_montgomery_limbs([ + 18056108788388345532, + 17234016165201706377, + 6789576351003995708, + 125032483782692849, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 1606954441813089504, + 12826102157655983484, + 14966661657048055395, + 819162019713750967, + ]), + Fq::from_montgomery_limbs([ + 11752092954103863583, + 5034202175795696722, + 3707413120985258698, + 30603057527914360, + ]), + Fq::from_montgomery_limbs([ + 9883657716457256646, + 10991555415607003281, + 6328965851154270623, + 1087433766327205373, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 18056108788388345532, + 17234016165201706377, + 6789576351003995708, + 125032483782692849, + ]), + Fq::from_montgomery_limbs([ + 9883657716457256646, + 10991555415607003281, + 6328965851154270623, + 1087433766327205373, + ]), + Fq::from_montgomery_limbs([ + 9018019125940148120, + 4443737769172605648, + 9114883657740606330, + 325721335091457982, + ]), + ]), + v_collection: [ + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 3544248464247567155, + 2397127324301944422, + 9674390580977628774, + 1114449731390581691, + ]), + Fq::from_montgomery_limbs([ + 10793968004403082763, + 14776098320186757028, + 3926381262294758649, + 695945431440508002, + ]), + Fq::from_montgomery_limbs([ + 2462384498404250202, + 12590306298374345930, + 11038784733069574134, + 419995880141749771, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 13532986407775683895, + 9476195915097473266, + 1008114724683017572, + 545860035442724601, + ]), + Fq::from_montgomery_limbs([ + 16204216982352313226, + 12925674836598514697, + 6751896652466221822, + 941483813900869065, + ]), + Fq::from_montgomery_limbs([ + 17313019480228630806, + 566130559971125633, + 11091260944862748358, + 830377232140527827, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 13653317352261633777, + 10493929866956769626, + 8396755137825041221, + 1146048882209297127, + ]), + Fq::from_montgomery_limbs([ + 4132278932442914408, + 14861671218963566328, + 7959790402925606057, + 1318243553399078199, + ]), + Fq::from_montgomery_limbs([ + 13456767915419596367, + 17246911423899751971, + 5711218416857391278, + 35403035103928169, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 12907160498704673184, + 12152379198293294711, + 9252679699965582400, + 1224554265731421992, + ]), + Fq::from_montgomery_limbs([ + 13419199242664167498, + 13891452473958728318, + 13543072901518191311, + 1037106053989502131, + ]), + Fq::from_montgomery_limbs([ + 16666897222883125359, + 12131730689573449836, + 13003710399516055414, + 648272461984720515, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 13991351580088989461, + 17864339801785851041, + 11695126599066872867, + 921749339582652232, + ]), + Fq::from_montgomery_limbs([ + 11906579800297278037, + 11470441940361903448, + 15097374289742739909, + 275174984759910272, + ]), + Fq::from_montgomery_limbs([ + 18232546040145726314, + 14147307759659284922, + 991776681097878315, + 1065560959455072221, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 3117800866767190184, + 1873664776760606669, + 13118797281780700540, + 918694694774008673, + ]), + Fq::from_montgomery_limbs([ + 16198059297050513347, + 8432506190058226772, + 9370514214732897655, + 212402421053033076, + ]), + Fq::from_montgomery_limbs([ + 2518782581476945766, + 6771388879653376635, + 1394823901821599775, + 786725020056686548, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 4999125751846201369, + 9316583554979616827, + 11717167420397718381, + 1066546495878431233, + ]), + Fq::from_montgomery_limbs([ + 1873871365393108203, + 11936414467331150546, + 11113449918732250015, + 317274884289334993, + ]), + Fq::from_montgomery_limbs([ + 5753682051272078512, + 3471409429911499297, + 5526758011092646462, + 1323229023757477097, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 2662759502586109043, + 1695416312126819095, + 1012723056571339871, + 933004606031207884, + ]), + Fq::from_montgomery_limbs([ + 16642301735251917773, + 1183412391970839036, + 3358256470522122468, + 496531810743047820, + ]), + Fq::from_montgomery_limbs([ + 14229377213726726413, + 17261160081985153069, + 9576276288950416830, + 700741200569462595, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 6784297665956970408, + 11357803791388406129, + 11332180445619439434, + 1106781037719016960, + ]), + Fq::from_montgomery_limbs([ + 73464770077821962, + 229820375535861605, + 4835258747884954879, + 991229687813626051, + ]), + Fq::from_montgomery_limbs([ + 10226838402609267711, + 357277105338386461, + 10898037771405216876, + 738876256175427730, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 12081508766912259869, + 15930347767913903841, + 8853663281043083447, + 10038595465753804, + ]), + Fq::from_montgomery_limbs([ + 112737203409514332, + 16114412090287437958, + 6856032020202317595, + 113207183629292293, + ]), + Fq::from_montgomery_limbs([ + 16338645855580340203, + 2107869018362076089, + 12567383037519742350, + 815641356564041922, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 12125233544299543001, + 11893476647476625145, + 15457331543628022009, + 800448530217165123, + ]), + Fq::from_montgomery_limbs([ + 16675745322148137368, + 1493849644880660500, + 8185984318393084462, + 138242285432587533, + ]), + Fq::from_montgomery_limbs([ + 17724307965454702231, + 4807522038799077672, + 8746642154843823745, + 883881308868446414, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 5656989936467702279, + 3451526239075705633, + 12473714456419681817, + 720076561380511801, + ]), + Fq::from_montgomery_limbs([ + 2752710254647861908, + 11030634120397179297, + 7520710074325720708, + 849095153678924863, + ]), + Fq::from_montgomery_limbs([ + 15714192245785854425, + 1934486269946887645, + 249860026764225808, + 1186606499687026685, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 1065442882426850105, + 18187640339393109068, + 8850384031746892082, + 317569289072515041, + ]), + Fq::from_montgomery_limbs([ + 1837681773828322091, + 10850972211403707738, + 336406577412961307, + 885368386317519809, + ]), + Fq::from_montgomery_limbs([ + 15758214746904074141, + 11583431684684102838, + 7662385228843486433, + 217065657978291661, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 2532634061285367793, + 4387885387692314654, + 12158131981630891597, + 230565483900354414, + ]), + Fq::from_montgomery_limbs([ + 13346419382798549501, + 18280976687063744023, + 5606331118089126185, + 273578743992252446, + ]), + Fq::from_montgomery_limbs([ + 17577657789855982030, + 9630457784692257422, + 12902853055721181839, + 36459624765202074, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 9935908372408102992, + 14641284087709280054, + 17684292083487177951, + 1155088959507788459, + ]), + Fq::from_montgomery_limbs([ + 541701721303367728, + 3959174565794182274, + 18151179085562458542, + 340776254243440974, + ]), + Fq::from_montgomery_limbs([ + 17690336527687088662, + 10937885152973991052, + 3836836874424836886, + 1090509013794447238, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 12310573214022515884, + 3043141462744167127, + 7406092407251694082, + 9160197655286166, + ]), + Fq::from_montgomery_limbs([ + 5101804845510497503, + 7081024525590050191, + 11990249650950760548, + 264716438448155623, + ]), + Fq::from_montgomery_limbs([ + 14013782434072143361, + 18031550597362521222, + 4176916092795610844, + 1008783913934215313, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 5197923006462389769, + 10850213912970425984, + 6236288807254229677, + 381647096775612803, + ]), + Fq::from_montgomery_limbs([ + 16904562081938006603, + 1107639524721847015, + 12857487247803522951, + 271937989000148046, + ]), + Fq::from_montgomery_limbs([ + 7013951325055848953, + 17628406277137302222, + 10293198099660764650, + 1028289934164465192, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 9440252581760876632, + 13906337780931242750, + 7219961419517025615, + 863594454449643923, + ]), + Fq::from_montgomery_limbs([ + 12415229001429896965, + 11797271759794076948, + 1936084790537971337, + 467019200964667988, + ]), + Fq::from_montgomery_limbs([ + 13553333187067381210, + 1913316352777824197, + 2458517210763467943, + 416174277494956025, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 7868885723930814728, + 3969684852222006688, + 847603129181085226, + 823204710257787357, + ]), + Fq::from_montgomery_limbs([ + 2624306993317474736, + 1804999503475194353, + 13323117091522537138, + 113213718216814537, + ]), + Fq::from_montgomery_limbs([ + 13028853788877299982, + 16207030875451345887, + 2928890708384561735, + 948835740600760535, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 10332479856281518610, + 5461907926022368118, + 7566281008880752185, + 864542613737871414, + ]), + Fq::from_montgomery_limbs([ + 11550343341750412987, + 1921332364560602185, + 10690162369512005698, + 600190744590186860, + ]), + Fq::from_montgomery_limbs([ + 11343163367577472637, + 7523233831279170268, + 14378595658429552329, + 120678106820511750, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 1497803481831246817, + 7312638636652871954, + 34925480233639111, + 44726202564591048, + ]), + Fq::from_montgomery_limbs([ + 6152756361006073958, + 6090155380815116625, + 6481578954979806710, + 476190110671401465, + ]), + Fq::from_montgomery_limbs([ + 18102241645952999143, + 12827175776728527569, + 10917946848969687318, + 1031360619507992497, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 10479806376196948796, + 1250933353292865403, + 9714052636425979898, + 724896984716198201, + ]), + Fq::from_montgomery_limbs([ + 3536451958691514845, + 3820878089540374661, + 1602865878357815152, + 303292371629072230, + ]), + Fq::from_montgomery_limbs([ + 2647458017961703424, + 14255003531541688237, + 9264134941484745925, + 1144438898154277748, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 14896674334234435047, + 6601140327636410720, + 11594733032791631077, + 947808208377648736, + ]), + Fq::from_montgomery_limbs([ + 93857753711709862, + 17114219253807441153, + 16571911382240086620, + 644986335071170285, + ]), + Fq::from_montgomery_limbs([ + 11491045973623638105, + 5832623718891215316, + 4637897368334583442, + 1270136782835782403, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 12059760086965268413, + 2104859632417338119, + 3074047925029609319, + 208685506241841351, + ]), + Fq::from_montgomery_limbs([ + 507458650320731749, + 9076652763882528689, + 10828995108044982790, + 52861166057592230, + ]), + Fq::from_montgomery_limbs([ + 5221245564257429544, + 602546441039285868, + 15463515802777952068, + 500262458682360187, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 7894603091209534363, + 5963299443776147743, + 13622917766282071553, + 713444535504669723, + ]), + Fq::from_montgomery_limbs([ + 4707822806056225947, + 13008601324591260598, + 6664196336989843628, + 361594494120552721, + ]), + Fq::from_montgomery_limbs([ + 7234555332968855468, + 13223173585719696534, + 305242624856210053, + 317409461914184558, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 11052531972415731524, + 6240249964832493008, + 4690512975789608724, + 274300931659090955, + ]), + Fq::from_montgomery_limbs([ + 12865203614941348009, + 13629535421935003532, + 14381802801123693296, + 1108602536075241162, + ]), + Fq::from_montgomery_limbs([ + 5342089493189303187, + 11299417329134660514, + 10437815285599784456, + 224625807758727328, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 9419019633707904193, + 17287104400249488354, + 2449834218878066498, + 880784160362712225, + ]), + Fq::from_montgomery_limbs([ + 1290387194510150606, + 300217878573287348, + 14712510331530271944, + 675169241465258261, + ]), + Fq::from_montgomery_limbs([ + 4319449301091482228, + 6604997191961440301, + 3677473832318302588, + 1226257433999087430, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 9534885027294214845, + 4233504142154122132, + 671184154419538440, + 588715198189399632, + ]), + Fq::from_montgomery_limbs([ + 7834331777517711657, + 12046762886677754640, + 12085017871628461830, + 1280695769450865349, + ]), + Fq::from_montgomery_limbs([ + 17051048636914562332, + 9931763496822042016, + 812132922227142181, + 1215806818267015733, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 10248407954863227910, + 6765342538198222232, + 3376905111922655053, + 689295470605671650, + ]), + Fq::from_montgomery_limbs([ + 852480703421168492, + 12355793660799378618, + 6731311636032405498, + 552777249330804449, + ]), + Fq::from_montgomery_limbs([ + 1991623127336121727, + 6505031450361927139, + 15924460190557187785, + 1320271660125443798, + ]), + ]), + Matrix::<1, 3, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 17438135180680113454, + 12154982230827864980, + 10857096699189529725, + 334861850663499479, + ]), + Fq::from_montgomery_limbs([ + 12624059910780607141, + 14938141535714956518, + 10243410760322861612, + 175466020402160466, + ]), + Fq::from_montgomery_limbs([ + 11857086838875231849, + 16760011700969259517, + 8560727830203057188, + 152554536976681898, + ]), + ]), + ], + w_hat_collection: [ + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 3912868093747842187, + 13891638599538547029, + 10034520463596988736, + 24923162524038143, + ]), + Fq::from_montgomery_limbs([ + 12940192809323646256, + 10063211937356421632, + 16102475073289099807, + 635255441558029483, + ]), + Fq::from_montgomery_limbs([ + 13439545502292733320, + 8210365196597573290, + 10798232243990715182, + 209985169044052016, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 5751631526606014397, + 8462191803631620224, + 10509863267471683158, + 447861109114791478, + ]), + Fq::from_montgomery_limbs([ + 1437717886047567450, + 16559126213892176045, + 11375302712551931442, + 1010730393746897317, + ]), + Fq::from_montgomery_limbs([ + 1032470319927068309, + 9033645067614029358, + 18086293033601348125, + 304884835659797125, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 10030163671426435897, + 10038896509362625400, + 11411437429949289797, + 606845429174704889, + ]), + Fq::from_montgomery_limbs([ + 13498048305505589045, + 14368156343173972859, + 5751396272374329581, + 1272023166617958572, + ]), + Fq::from_montgomery_limbs([ + 9805803927184323301, + 13425206131835998785, + 13841345243897428245, + 615350201809158017, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 14956193223177978026, + 4328965669156513709, + 1332264507148878686, + 908612595539291972, + ]), + Fq::from_montgomery_limbs([ + 15512085810689995447, + 1278811290279093247, + 9713635222980865549, + 89918473543807263, + ]), + Fq::from_montgomery_limbs([ + 10908982736163998884, + 10522718116611575026, + 15481410495350859749, + 209345561210183580, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 11298966019883739719, + 3737954136375979756, + 15666428783954356951, + 93322090349950905, + ]), + Fq::from_montgomery_limbs([ + 10237667835076512281, + 12325953953570405613, + 12285254403281429040, + 507107093264211690, + ]), + Fq::from_montgomery_limbs([ + 14936641530723543297, + 12684654093637137182, + 6573648560098330931, + 479128193670708215, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 4665624059074225901, + 569773391663140707, + 8039376161136700750, + 305908263293765813, + ]), + Fq::from_montgomery_limbs([ + 12181552876023559131, + 7764448317943448064, + 10288520924018884818, + 1103852203169073095, + ]), + Fq::from_montgomery_limbs([ + 15135999239214672948, + 10790616626797062588, + 17724896909590777918, + 1127104704406195421, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 6486714260719829146, + 11040751111500249834, + 8958297661837625585, + 504881187176923268, + ]), + Fq::from_montgomery_limbs([ + 9943503409323924620, + 9519655296534470798, + 10031214880424175980, + 880224541550113700, + ]), + Fq::from_montgomery_limbs([ + 2137123775246483621, + 14575781645937393202, + 6082200831828333306, + 319693495256136311, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 18213874187166503017, + 7357620257182256357, + 12753979462901781784, + 653327632081049969, + ]), + Fq::from_montgomery_limbs([ + 5648402480861501803, + 1298801804080198935, + 16361566576947818947, + 92096317293783223, + ]), + Fq::from_montgomery_limbs([ + 17945395108017238106, + 3498558197841053284, + 7092504945026653103, + 372132312547601421, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 15622147422254947733, + 250116726000401472, + 8318204049018604061, + 866935352572882912, + ]), + Fq::from_montgomery_limbs([ + 18241804623807754966, + 4053430455599371737, + 4911593924672747195, + 915087345052626509, + ]), + Fq::from_montgomery_limbs([ + 4269143728338544596, + 14357201884344458328, + 903006646797065399, + 462454343275509581, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 16493823488007719206, + 14779329128742765495, + 18378884619527915493, + 360610956997885799, + ]), + Fq::from_montgomery_limbs([ + 8231956009608211607, + 2237272948977110346, + 11234918376541957482, + 211807215316292218, + ]), + Fq::from_montgomery_limbs([ + 4694295422393950539, + 494515799644279017, + 16377559543581347883, + 1023664249665260398, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 269632147881481827, + 17676834172042717446, + 13502391546248246285, + 158178875674850167, + ]), + Fq::from_montgomery_limbs([ + 854535799571654664, + 4436276133137563398, + 12250035363748361097, + 569847052981690503, + ]), + Fq::from_montgomery_limbs([ + 8356573900420286918, + 3943111982741005596, + 6690528014909196681, + 100899612597296936, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 12053108327360532468, + 2215278670095839574, + 18310257358516903189, + 507153778977982696, + ]), + Fq::from_montgomery_limbs([ + 15548327836627863789, + 11669395097045425760, + 16626297677851084169, + 692658363999722441, + ]), + Fq::from_montgomery_limbs([ + 5590241427234064239, + 15193192965574703365, + 7643293374071077424, + 502287078265137211, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 7121109350102790552, + 3842989306298966953, + 15442678426893498207, + 43682019324253859, + ]), + Fq::from_montgomery_limbs([ + 8543065120635606147, + 17618464589270231617, + 4296924638616724859, + 409105874035239827, + ]), + Fq::from_montgomery_limbs([ + 12676854185827013572, + 13888077538347807744, + 7139127667431143175, + 1225243047885808896, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 4347759847866483265, + 5855881520281836030, + 5505541235252858831, + 976243446170017999, + ]), + Fq::from_montgomery_limbs([ + 1880808402247115426, + 943890821775946445, + 12000264441794154793, + 12973763854532988, + ]), + Fq::from_montgomery_limbs([ + 8496845738719301602, + 11057791601996073401, + 18430915991403133806, + 442312408397388928, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 4597591998391646042, + 17549544536524741100, + 7632675978077243758, + 789227364575351796, + ]), + Fq::from_montgomery_limbs([ + 6247914330752058188, + 17379927947827819186, + 459262613159719376, + 17669136651242999, + ]), + Fq::from_montgomery_limbs([ + 4416622626270946808, + 9011173931926497864, + 2385315687804767815, + 1100085754679242026, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 2858027675101851698, + 15199707771225336894, + 6912007903404713737, + 1195736020550467109, + ]), + Fq::from_montgomery_limbs([ + 16536374087395040861, + 11905207237145903612, + 6114638606661711198, + 227197704829902271, + ]), + Fq::from_montgomery_limbs([ + 3076102373056113184, + 9532492163005512122, + 6930666801042367372, + 359947620632631939, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 9440427530838662463, + 13085976282871216533, + 11609820600896955445, + 51192596107359503, + ]), + Fq::from_montgomery_limbs([ + 17890235474475849352, + 12861769158994967907, + 17199388852287681020, + 1318104728008794611, + ]), + Fq::from_montgomery_limbs([ + 9609805589266211410, + 1670962659820459283, + 9562963939311936174, + 688275382419503341, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 11167389070307520429, + 13977359843749392350, + 18441644755473839422, + 290366407278115355, + ]), + Fq::from_montgomery_limbs([ + 12443632002797775505, + 4654520606670285598, + 7306556664291017650, + 1327633699432541153, + ]), + Fq::from_montgomery_limbs([ + 8092706722129444827, + 3658752323492067072, + 4793508300996597563, + 747223853807345138, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 2950573641865927995, + 8127787636945490240, + 13677031676353641065, + 158618420355845681, + ]), + Fq::from_montgomery_limbs([ + 11307462183326711698, + 4564920402521666764, + 14622180354087693631, + 1336492508958389172, + ]), + Fq::from_montgomery_limbs([ + 4173008676431506498, + 17674916393358760276, + 12680688896701595449, + 968385841042257188, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 15472538886056214069, + 16032473331676368569, + 16841883688877890652, + 857731186179030920, + ]), + Fq::from_montgomery_limbs([ + 3288920438915728986, + 5565335638237954732, + 16168717028973711379, + 557711450924669146, + ]), + Fq::from_montgomery_limbs([ + 2265592654319698024, + 3205443269480017209, + 18001932803255029483, + 256652906325487142, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 281001495283692254, + 13790290956215242906, + 864387281468051063, + 1176693997057782923, + ]), + Fq::from_montgomery_limbs([ + 5123560649935846987, + 5199616350359672235, + 1101436586367673740, + 39975262197625469, + ]), + Fq::from_montgomery_limbs([ + 6484555314181403346, + 13702935644386089262, + 1070288899201945043, + 1275458004049976710, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 98165037936801382, + 7473654891184825762, + 349134079485996919, + 938092578927267223, + ]), + Fq::from_montgomery_limbs([ + 14188791834503488423, + 18250342088521722141, + 2040654749291153960, + 926512896204558398, + ]), + Fq::from_montgomery_limbs([ + 15224380743676270964, + 10786962884449555555, + 11361613959686699022, + 1210280746834414029, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 11759988830619476554, + 8373507443143532317, + 3120367880452859596, + 1169296147393250270, + ]), + Fq::from_montgomery_limbs([ + 2846578710538047768, + 1316160842247957353, + 13088400622784413268, + 408653118294756083, + ]), + Fq::from_montgomery_limbs([ + 17205667740934035850, + 3622944266683523375, + 9638129797382886543, + 994379064072552476, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 10882825922057764254, + 14418568533897154353, + 491214512167095700, + 433897962559667772, + ]), + Fq::from_montgomery_limbs([ + 35128611736586842, + 16389786149729784671, + 10083558142637806972, + 137127276176467702, + ]), + Fq::from_montgomery_limbs([ + 6798031404470581862, + 17848651283256458296, + 16222358536010933656, + 803683331342998490, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 6972405454939855920, + 4552281101007467397, + 7264795943490057443, + 864688899960148444, + ]), + Fq::from_montgomery_limbs([ + 13927481061475209845, + 15489762958527206567, + 6189983331269957882, + 547789234607264680, + ]), + Fq::from_montgomery_limbs([ + 3562534859757502067, + 1843985785467419577, + 4386226263096503262, + 1115671597351053159, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 12278022351526165705, + 17770191387101388710, + 10802565891039662934, + 1075900781773362211, + ]), + Fq::from_montgomery_limbs([ + 9958371080654925973, + 11831887817395699647, + 1304723427562418477, + 354927743406208632, + ]), + Fq::from_montgomery_limbs([ + 7902693975921282234, + 10693029805943046522, + 8006364623005626891, + 336833334808426575, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 16076162621220796497, + 11613654344612125103, + 18364396485836487261, + 865751367130059847, + ]), + Fq::from_montgomery_limbs([ + 177169936881514673, + 15617655321830945408, + 2675644582344792450, + 813774581927626127, + ]), + Fq::from_montgomery_limbs([ + 10024256268223083204, + 4626025808735980516, + 15602381466554927909, + 372989881235976309, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 15323355670275250642, + 18066772602049731907, + 11033816093504217490, + 425723417069229499, + ]), + Fq::from_montgomery_limbs([ + 13530227036238294143, + 4726864651116558793, + 11836084010804535503, + 345580619383028526, + ]), + Fq::from_montgomery_limbs([ + 9033276785296979553, + 8015158493901738529, + 7685612975844433499, + 646369922266692941, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 6106858674192767659, + 6489383503992760141, + 15104627566688873842, + 967007977448094027, + ]), + Fq::from_montgomery_limbs([ + 15940025338744316838, + 9550216566045214897, + 11499601007486969156, + 519967031225120334, + ]), + Fq::from_montgomery_limbs([ + 4457318900167954816, + 12351443184813817360, + 14113262131954548168, + 753463690543950206, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 1881864483835241252, + 13219574080686529684, + 10918646441166728772, + 345526905812511168, + ]), + Fq::from_montgomery_limbs([ + 16713317497695859602, + 11594535032725047066, + 8614425525972045100, + 729458370408931167, + ]), + Fq::from_montgomery_limbs([ + 2382365843901650484, + 13640386342346411833, + 2679421435014953531, + 1060573086709931927, + ]), + ]), + Matrix::<3, 1, 3>::new_from_known([ + Fq::from_montgomery_limbs([ + 17434826777667612735, + 2365065059007002287, + 12113557410986701552, + 486906253608904981, + ]), + Fq::from_montgomery_limbs([ + 15422260981332801416, + 11687068808662228912, + 15340447593430286694, + 1095477751721025581, + ]), + Fq::from_montgomery_limbs([ + 3067136625363818837, + 15414947239083578872, + 4357451922062335136, + 670849424861114413, + ]), + ]), + ], + }, + optimized_arc: OptimizedArcMatrix::<39, 4, 156>::new_from_known([ + Fq::from_montgomery_limbs([ + 15748480026335769443, + 10026984616551622801, + 2063724428730618452, + 1110463257231131824, + ]), + Fq::from_montgomery_limbs([ + 9405142820695944635, + 11887146523697465657, + 7764829263011233272, + 10688178588086322, + ]), + Fq::from_montgomery_limbs([ + 7160766575090090422, + 13093321275956005400, + 4459692368517809830, + 1324823328343033307, + ]), + Fq::from_montgomery_limbs([ + 8967803866417976527, + 10882703683899587484, + 12604355713142717837, + 913362872025451921, + ]), + Fq::from_montgomery_limbs([ + 15434913893282099231, + 3277411989792281453, + 17050922401305883749, + 1246396795570595652, + ]), + Fq::from_montgomery_limbs([ + 16287493285262395377, + 5813955731335134269, + 4301474317614585594, + 257520225036445364, + ]), + Fq::from_montgomery_limbs([ + 6906749939426292513, + 6186370802689597769, + 13121713652409052978, + 974279291569484389, + ]), + Fq::from_montgomery_limbs([ + 8879700369639612352, + 13618625792929032624, + 3907123048620659133, + 13234475218016492, + ]), + Fq::from_montgomery_limbs([ + 8645743306703223161, + 2649437454338131787, + 1563690154181407289, + 1014186398941703531, + ]), + Fq::from_montgomery_limbs([ + 3215833110701720679, + 2309636887892103305, + 8098930435412331037, + 874663616929857835, + ]), + Fq::from_montgomery_limbs([ + 12979468067887852608, + 5086746922420764336, + 15129738790560069297, + 751939553752695744, + ]), + Fq::from_montgomery_limbs([ + 2977455406847333432, + 16814711076234176662, + 2052393181081329017, + 1025504667378050833, + ]), + Fq::from_montgomery_limbs([ + 7769933776177646251, + 18381610027802955757, + 14883656026535111760, + 810712025708758153, + ]), + Fq::from_montgomery_limbs([ + 17772168373864941552, + 6465821213265847266, + 13630379320513469760, + 377801609900980707, + ]), + Fq::from_montgomery_limbs([ + 15796194027949120118, + 344995813018918925, + 1773993772309248477, + 495371203446902105, + ]), + Fq::from_montgomery_limbs([ + 2372367672613269254, + 1881994507861568925, + 12499063082888296383, + 198183890354307133, + ]), + Fq::from_montgomery_limbs([ + 8560339202466452135, + 4674741842794783289, + 2295938056459737653, + 1305584587019963566, + ]), + Fq::from_montgomery_limbs([ + 5894698623250752231, + 11196686474075291940, + 319786488005502847, + 976772307367475705, + ]), + Fq::from_montgomery_limbs([ + 9900044152758269451, + 6382301581301578495, + 486281876073250633, + 71881436776511649, + ]), + Fq::from_montgomery_limbs([ + 8858083304247561548, + 5671107377399080192, + 14186551763070529190, + 1191940751561414494, + ]), + Fq::from_montgomery_limbs([ + 11388935853995478114, + 12687122290317818660, + 14863371661788062147, + 1158919028776138907, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10994187684158036079, + 6365622770188053181, + 9403760573784657161, + 1146936259121378165, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10359734611031618397, + 6788070320086383195, + 6870540987465879902, + 1154055204589981421, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6567270162376125909, + 13203968161919606288, + 7529228388954710988, + 1019437133634541415, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17083543156205069093, + 11374420946242035033, + 18049715002122120090, + 906131070047943878, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2206466804129196608, + 7840059231658610949, + 18148556368765089670, + 985832054058842554, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 15160443716672326145, + 3977221634341810924, + 11902494952164999188, + 990146605314032630, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 15193334268554411388, + 16206854972517382356, + 12905310888333022888, + 513326483567402639, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5576504557462251248, + 8125452713587662843, + 16486629117159905898, + 293174270601514481, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17062406856052799045, + 4903125714753109748, + 8990920239472029770, + 936892459427742133, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6584002420364695129, + 10284681536623141870, + 7366280281192288180, + 305633769889978939, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6566050072214065144, + 10806265958907184854, + 2902594108468871307, + 927316604280713413, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9252557727477672981, + 3306161630265918351, + 179799263786823209, + 104291884324148129, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16542259604895379638, + 11861465458652059930, + 2193746946143577162, + 159871979033281704, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 1973639865256742476, + 12494642903985355205, + 12678561251384262826, + 1063132847474762378, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16335431452481000471, + 3819468482480263699, + 13079543972531520553, + 161635515931478039, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6649676330206378374, + 170192309920289600, + 12660537932851201431, + 875374125882958636, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 18237532705140415183, + 5538703501092204277, + 12946255801995328124, + 1087375767378395044, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 1012766659404803227, + 13885920911268862504, + 11108883550523828802, + 162298092776208930, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2714322473297105009, + 249945166940002912, + 12698583590562308965, + 394261012891088761, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11185042895155911424, + 15268539255422683750, + 7532909772946377585, + 463947154991508934, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2052933093431843614, + 1295021459124440371, + 8148559147565678653, + 89295276853247542, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12899268934677529381, + 16307080267150235665, + 10898130171280001197, + 518068384980908314, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 993244798968596356, + 11096685116364920579, + 8750430116109558950, + 9308397748705116, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5953598583374622076, + 16232619257237216458, + 17798149940250628730, + 654505929641861550, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11857053641605556992, + 4354078495412090273, + 4158908777158450718, + 1170888300956232550, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12321182200541779000, + 10436914785964154798, + 4712843605747406852, + 790686269705752315, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11380659121996065200, + 7281347105742142276, + 13205980178228421104, + 804622887165645998, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5152043905886227057, + 17756682668953288347, + 10695990401739553448, + 1061486419247893614, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 13186025127373894323, + 16210743521572602678, + 17903754729019377882, + 874061397244045546, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12725269033496721580, + 6143157215985784613, + 2563593607564735516, + 641845243083026263, + ]), + Fq::from_montgomery_limbs([ + 16567470293191015474, + 17979338546951754349, + 679740711221916675, + 389452091580807800, + ]), + Fq::from_montgomery_limbs([ + 11781729507075158888, + 16614033708022660131, + 8066891565891024775, + 1321986181569835272, + ]), + Fq::from_montgomery_limbs([ + 15263301520898366582, + 5379961920461128458, + 5298170819253721050, + 871089269493660926, + ]), + Fq::from_montgomery_limbs([ + 5741830111596365525, + 11415264909554107470, + 8692411149271156415, + 108534814929374467, + ]), + Fq::from_montgomery_limbs([ + 14889457972591320596, + 4443631419689297602, + 9576604194859673886, + 55036543682599971, + ]), + Fq::from_montgomery_limbs([ + 15281837068987139929, + 16419105318903348956, + 3445836523780143538, + 1293417868939267170, + ]), + Fq::from_montgomery_limbs([ + 17836346323317710151, + 12227034928325499140, + 2533213127903144227, + 888374169811671044, + ]), + Fq::from_montgomery_limbs([ + 17190507118724296154, + 11902410769486810674, + 1884965616619903297, + 288715797041361057, + ]), + Fq::from_montgomery_limbs([ + 3698781841092321912, + 12743575315417669826, + 2170730182690456487, + 1222843211331174337, + ]), + Fq::from_montgomery_limbs([ + 4016814140820935108, + 7695810038153355283, + 9484931309805354358, + 1136167194218052037, + ]), + Fq::from_montgomery_limbs([ + 14104529875826633218, + 4636945317611530138, + 9502367629041549061, + 1255556235831136969, + ]), + Fq::from_montgomery_limbs([ + 3761991760077630951, + 15074729225518792210, + 17745896690436879228, + 1023440924724847735, + ]), + Fq::from_montgomery_limbs([ + 15850125405934611308, + 14029919305144561597, + 18399969854542387983, + 1223450657234113398, + ]), + Fq::from_montgomery_limbs([ + 15153111831948502891, + 17514853580286890635, + 16559251203856754825, + 921126073718956725, + ]), + Fq::from_montgomery_limbs([ + 14464801899277986702, + 11416622266096337177, + 5506399331882969115, + 210576422101801202, + ]), + ]), } } diff --git a/poseidon377/src/params/rate_4.rs b/poseidon377/src/params/rate_4.rs index b2dd725..8dd15f7 100644 --- a/poseidon377/src/params/rate_4.rs +++ b/poseidon377/src/params/rate_4.rs @@ -8,23 +8,4243 @@ use poseidon_parameters::v1::{ pub const fn rate_4() -> PoseidonParameters<5, 4, 25, 16, 39, 5, 195, 31> { PoseidonParameters { M: 128, - arc: ArcMatrix::<39, 5, 195>::new_from_known([Fq::from_montgomery_limbs([9886223877583555338, 2726526174642559934, 4587790518566470505, 576729411659255749]), Fq::from_montgomery_limbs([8635683872171027649, 6178568763530680712, 4049298017970875225, 1010899895527016760]), Fq::from_montgomery_limbs([4386287284362214114, 15794275297560972982, 13426231751965312445, 1202171528338027358]), Fq::from_montgomery_limbs([748088700594287215, 1472010505444622065, 17517940238534715767, 284646916897302179]), Fq::from_montgomery_limbs([10279507610927218934, 8427605231324569630, 5256766482183491681, 599767801296570400]), Fq::from_montgomery_limbs([5616532683870270019, 16714573776517987780, 2780158541662869274, 82005381951989400]), Fq::from_montgomery_limbs([628047193644056282, 3081927050412275131, 16607349608647881262, 723666033729227034]), Fq::from_montgomery_limbs([4014053105906402474, 8516064025130570203, 16439212471763340654, 1066408903228028504]), Fq::from_montgomery_limbs([3781775891997454435, 16784197273788891439, 15993490775706321548, 1246974369195687342]), Fq::from_montgomery_limbs([13315871439997102610, 1360174578976506509, 1935727712649190133, 888928512483410116]), Fq::from_montgomery_limbs([8976641770861237410, 6687451940339132521, 18044907108310696377, 1207869807557250559]), Fq::from_montgomery_limbs([4528878922761055500, 7463187218610955446, 4533754848507645556, 35071527712858390]), Fq::from_montgomery_limbs([2054133897613963099, 8179564031063470525, 1531556284029346638, 874298192527556148]), Fq::from_montgomery_limbs([18305580017782407596, 2150793914184610589, 17311607174845242499, 959373557899881125]), Fq::from_montgomery_limbs([11483900964553043288, 12487129025031613244, 15391908241276224492, 269335905993702128]), Fq::from_montgomery_limbs([8338971145620331245, 12372781419517678375, 2199283600481834995, 349132078387032325]), Fq::from_montgomery_limbs([16711498854962897180, 964757925282058102, 2534475787702313401, 879174178299686832]), Fq::from_montgomery_limbs([9948612635577575267, 10310004629375851550, 14569008704673249814, 698796675030817938]), Fq::from_montgomery_limbs([11983101385647491113, 6756494718617323834, 3986787822213493305, 810568397631777742]), Fq::from_montgomery_limbs([263703597816264419, 5391923373962277868, 8069762938958691329, 167001460324522424]), Fq::from_montgomery_limbs([12719698031922087137, 3635206538516773241, 14946573674542408006, 904022619675467349]), Fq::from_montgomery_limbs([7591285109719266048, 2608578391556572711, 6779676185899908036, 1086161713062740129]), Fq::from_montgomery_limbs([7176467193518589709, 1343509363976199891, 347002617743548581, 1018914054223433368]), Fq::from_montgomery_limbs([13908207388458176389, 2971345816230697916, 17116412495128514758, 1092556723789729092]), Fq::from_montgomery_limbs([10011741275583553910, 13515359725579218496, 16173962293465169995, 826500423001616558]), Fq::from_montgomery_limbs([11642763221775816104, 5316502523761667274, 6723960157854782715, 713280922101966669]), Fq::from_montgomery_limbs([881130788153084344, 5010739439291725858, 1147743103863894058, 177980102031055407]), Fq::from_montgomery_limbs([13975378739354834601, 8684941252608197282, 5694396386436962583, 439479504891747047]), Fq::from_montgomery_limbs([13363133397626440278, 8130502609775906914, 13414583350549819329, 524823840910770289]), Fq::from_montgomery_limbs([11945840925799863259, 8524159476864402062, 9210577373238759816, 710975425722615141]), Fq::from_montgomery_limbs([12814581100646910424, 15849784230008994303, 12637788340215337664, 597941999161438829]), Fq::from_montgomery_limbs([16525908361603394009, 2846177558600817179, 7575467056141022092, 437642443252490173]), Fq::from_montgomery_limbs([15329913684605210914, 12070525736245629573, 13074341668722432469, 1044151030746490873]), Fq::from_montgomery_limbs([3538323630603591241, 10279517124841541304, 5324030032202346672, 902072318757121155]), Fq::from_montgomery_limbs([13596574972337588658, 16541340016857780345, 8104153165370753035, 245861939922053923]), Fq::from_montgomery_limbs([5030454205469646742, 13132624601605397879, 14758125164075453800, 378384125390441388]), Fq::from_montgomery_limbs([8906593348835760654, 11904421032273004937, 14965461596408947669, 632859340380426495]), Fq::from_montgomery_limbs([7850130346408635539, 13532701351370547975, 3820560789332903656, 1092318130445796576]), Fq::from_montgomery_limbs([12997377171057711408, 4471729792070708333, 7305494049349150657, 1115063797383463496]), Fq::from_montgomery_limbs([15145625851690108440, 17698022295267189243, 9861950554713946731, 1205401165408515638]), Fq::from_montgomery_limbs([11309649707041239663, 667445592132876816, 943153015419280868, 1206714849836553688]), Fq::from_montgomery_limbs([9026152062944983955, 11204530926199479297, 6289885248657301247, 512955645767342309]), Fq::from_montgomery_limbs([11717849647660086747, 3612602895588115533, 9744929507384815356, 982549568060514738]), Fq::from_montgomery_limbs([6744201323279553111, 18111540114747698086, 11979166811283670034, 386105814260185338]), Fq::from_montgomery_limbs([13303196293759203285, 14344592278022456277, 4239798340739261853, 800405056318133701]), Fq::from_montgomery_limbs([6737138017975582894, 8531016178828592243, 13684944430980743706, 22255530611110264]), Fq::from_montgomery_limbs([1997271207334772541, 9079547000593471061, 16047065352656029242, 101416793857725065]), Fq::from_montgomery_limbs([17029188205686654069, 8951964272054585217, 15302569091334378903, 761854968911808356]), Fq::from_montgomery_limbs([2745767110751783932, 14853302747509920417, 1606999108376858338, 891318834157837360]), Fq::from_montgomery_limbs([3640580010003203721, 12123462912736402051, 18295135460895849345, 520752965734877132]), Fq::from_montgomery_limbs([83933521946714737, 17971579355265751841, 7352708691986307901, 183907669014565798]), Fq::from_montgomery_limbs([9276458973572472320, 1300682705964188558, 13756551032393705489, 645082867954998576]), Fq::from_montgomery_limbs([15074599786611123042, 8980910692416969440, 16790312992523154465, 44198431582091186]), Fq::from_montgomery_limbs([1480148269351616164, 5990826399027670160, 7437498150356539259, 427144700677710781]), Fq::from_montgomery_limbs([5507196835477653383, 7336613593633132046, 1280426316557546233, 958933701992800913]), Fq::from_montgomery_limbs([18241053245813744236, 10472459532627362617, 2012134575489914517, 1256037774783607417]), Fq::from_montgomery_limbs([14372359421802781886, 13729700187444703363, 17989800816636154572, 967621319286277758]), Fq::from_montgomery_limbs([90392410009690887, 14047860931061415491, 12494400053046916745, 1187807817979142164]), Fq::from_montgomery_limbs([7469394458896125080, 4994833117952945329, 5178970336138815548, 547357110341709620]), Fq::from_montgomery_limbs([14626262512784894880, 8498143648146630667, 14635776379295784646, 279017425979939457]), Fq::from_montgomery_limbs([2948938230818109264, 13256829255392710280, 3603261726988560613, 293293722534360282]), Fq::from_montgomery_limbs([14726913360355627661, 11044693867323537781, 7626109275678740243, 758908383357559345]), Fq::from_montgomery_limbs([12150373031774230138, 8891964881341264351, 4517018861706300919, 551820964652107008]), Fq::from_montgomery_limbs([16891048323407180721, 7536596905792994544, 3059846088325366943, 865178483316339067]), Fq::from_montgomery_limbs([2690083733968939863, 1769064765331202923, 999446336742885656, 164907716251699548]), Fq::from_montgomery_limbs([8580460058188302985, 3991751878635809753, 4547376216267480360, 560815723873147432]), Fq::from_montgomery_limbs([1883267897877590583, 9283747140977722829, 4336519897183919570, 1098112532343628461]), Fq::from_montgomery_limbs([18229193288997288391, 1416710191385219951, 786091488678520329, 897579186089258101]), Fq::from_montgomery_limbs([9679787806770955465, 13476526545223689774, 9613302347536604785, 1170985601196245246]), Fq::from_montgomery_limbs([11408485967127642435, 15775267434451831783, 5963102841687207642, 610143165002891320]), Fq::from_montgomery_limbs([2742110483607649666, 8238870973637978146, 8505321265665046273, 991146636847773959]), Fq::from_montgomery_limbs([2700417284944988347, 9333179215703947174, 17483497014148443293, 564598335909606701]), Fq::from_montgomery_limbs([10710073701127297870, 6322555675999590600, 11771028831440425797, 728539264888274353]), Fq::from_montgomery_limbs([5185688551847854621, 17136427433029749827, 13939786699270995224, 1198719082185444207]), Fq::from_montgomery_limbs([7749447179538401980, 4793600318555081413, 10327393242917365028, 25438094261901103]), Fq::from_montgomery_limbs([16840187061708384569, 10530669475422628524, 217939404244531614, 1125926086827923821]), Fq::from_montgomery_limbs([15218288013305045082, 5438912048142917445, 235470087288523129, 923231700809438641]), Fq::from_montgomery_limbs([2194576126536460830, 7891341442170590444, 6378643390383758255, 310989935666358535]), Fq::from_montgomery_limbs([2638919532368561416, 18196222360720320566, 6610525316889549022, 1047682654438730344]), Fq::from_montgomery_limbs([16494294820597583678, 4823636307697140628, 9839058803503271101, 362713889140891969]), Fq::from_montgomery_limbs([2973315077205527383, 16505948923072751536, 12726716204894385324, 760067983544631044]), Fq::from_montgomery_limbs([7041027454525309806, 14484049096926673324, 11711536155919984779, 830352844598884205]), Fq::from_montgomery_limbs([8226667178177935298, 16330330634634519739, 16819545565758577360, 929449491579086457]), Fq::from_montgomery_limbs([3366407172182263301, 16494428895759921285, 7731107796203549240, 987879550276572952]), Fq::from_montgomery_limbs([9958698182000492538, 15462783131464999925, 11113071922629363034, 701467612820830963]), Fq::from_montgomery_limbs([6144224708909855422, 10834457042169331467, 11287058958850316926, 1312825012143929910]), Fq::from_montgomery_limbs([17921397628564368555, 10985573093809787040, 14340644029187071972, 59000721534311183]), Fq::from_montgomery_limbs([1630018632512830166, 16311976715006973397, 18074431391508993129, 155692271434089392]), Fq::from_montgomery_limbs([2746677638438958053, 17878267615510669310, 1082275588904648896, 1184432411754581729]), Fq::from_montgomery_limbs([1202686691857012174, 2234596977877372457, 3307488575050929625, 1256758603403004831]), Fq::from_montgomery_limbs([7601867427459401741, 13070585820383544138, 11356438762852655489, 943118894834427377]), Fq::from_montgomery_limbs([8684748127362653242, 4743911555278887170, 11396974372791841950, 826700742908426413]), Fq::from_montgomery_limbs([17452888945877951639, 9839615283788288179, 12867459466655328363, 1007543359739410437]), Fq::from_montgomery_limbs([12264143824974096166, 14381191422662810752, 3641096965851024808, 480946059636473070]), Fq::from_montgomery_limbs([11435949141961302837, 710354890461232526, 7844293650067273203, 123004845212098500]), Fq::from_montgomery_limbs([11045998304335767176, 3942503358896124422, 12585149699076876402, 285027589169677300]), Fq::from_montgomery_limbs([15820797401199028229, 16962821466020830153, 8107747291692774042, 480489353941649738]), Fq::from_montgomery_limbs([9217962315784549500, 14370528537254478239, 11836250330534571325, 1139451976529383887]), Fq::from_montgomery_limbs([11835990522743135120, 10169548464484669696, 17221670999568737002, 533302488612773058]), Fq::from_montgomery_limbs([17879618715206022981, 10660797039341031940, 1930610719106570064, 964350742947937820]), Fq::from_montgomery_limbs([1169235639972562417, 17479840192056268380, 10586924611389711708, 103636186478545263]), Fq::from_montgomery_limbs([9864560133117702439, 12891182307324408638, 9236711602457989544, 490202994419177997]), Fq::from_montgomery_limbs([524004209204114745, 12014044939530800435, 17303597221467190420, 1259834854717402694]), Fq::from_montgomery_limbs([2041228093468029194, 5279491032753715877, 2237512127849739422, 1301989577140851954]), Fq::from_montgomery_limbs([13532558374939940477, 11861615008285507752, 15035422035697406898, 1142796203357719412]), Fq::from_montgomery_limbs([14953432173925601791, 10389362430177185816, 845064825159375048, 1172521244035119080]), Fq::from_montgomery_limbs([11975318177053547084, 3435333234872828662, 13963241498174514126, 286783134590930070]), Fq::from_montgomery_limbs([14455835521486462998, 2048669311632423555, 17279316794410156816, 50616703474729287]), Fq::from_montgomery_limbs([8193872068862108327, 3772516384619180657, 13641128299057093189, 905697595997810178]), Fq::from_montgomery_limbs([16454110340578030875, 2152604389456932301, 8465973362037387798, 833666687765914967]), Fq::from_montgomery_limbs([14250990663149816130, 10003002447016613703, 2580052265102394487, 760659830843235379]), Fq::from_montgomery_limbs([1290457731274356164, 2510039619580464600, 2426168528296515695, 1254551442283207078]), Fq::from_montgomery_limbs([16309488082193928736, 7601298284363534660, 5163919981174564632, 65819575671802258]), Fq::from_montgomery_limbs([12743534580838976593, 6143776853938743851, 13386193122986779929, 423668519394498160]), Fq::from_montgomery_limbs([3811484717633006447, 1349919791689722695, 10297821437600310682, 68521037802427679]), Fq::from_montgomery_limbs([1049969810634121052, 16728941075068531596, 16094121280131115468, 82606214892022031]), Fq::from_montgomery_limbs([5360234823572670745, 17757096254232659981, 5717208405019750556, 809486485814479609]), Fq::from_montgomery_limbs([1927630004992622799, 11649924430204711735, 14978212641988016519, 1108831164145357066]), Fq::from_montgomery_limbs([4587868477439641052, 4737040880169689015, 639327313806380645, 693944328643709356]), Fq::from_montgomery_limbs([11087993010676539653, 10020352685294943192, 10076106363570629377, 297641291282727232]), Fq::from_montgomery_limbs([3081981335203353498, 13021314745733708666, 5449753531105554695, 227963405559900828]), Fq::from_montgomery_limbs([15635794702109421502, 6527818235965294785, 7659508407838394834, 492292453862401661]), Fq::from_montgomery_limbs([3164777360703179827, 5768214351744839625, 7163272775096466422, 261059424264025774]), Fq::from_montgomery_limbs([8844860905568377954, 18132135522818541971, 6960467923389772345, 221535360909084069]), Fq::from_montgomery_limbs([17964326599819457995, 14751755360522114153, 15283771895792774696, 1271886438859126545]), Fq::from_montgomery_limbs([15437118549753387043, 3510619079633075969, 16603794516758219723, 756776079410359543]), Fq::from_montgomery_limbs([17209588410857048072, 16141684401935979017, 5301689933884631523, 38432519687640810]), Fq::from_montgomery_limbs([10547445465275366949, 16846768059763163090, 6977180887290525070, 405538698331204120]), Fq::from_montgomery_limbs([921006661797204039, 11021425780686556666, 5587777062950060423, 248159859513377465]), Fq::from_montgomery_limbs([13398830594908962848, 5602568332953722680, 3299388522313110637, 411509104649500576]), Fq::from_montgomery_limbs([10390204826472811537, 7554738663131013749, 7526120458731579280, 905519991871142014]), Fq::from_montgomery_limbs([10358091385270219586, 7049055062932694342, 17159322295344631236, 1074016100024519392]), Fq::from_montgomery_limbs([7057719272669022427, 6716307074733016448, 8792057977815871320, 862532343552836131]), Fq::from_montgomery_limbs([11368373309109150033, 7045990182385141009, 2025222109349847460, 387848901695703654]), Fq::from_montgomery_limbs([327056937244728359, 9704535108452812502, 5199220103603000900, 619215360838520470]), Fq::from_montgomery_limbs([5395528494255463572, 389959326360615418, 3978563775598752142, 991544641697560783]), Fq::from_montgomery_limbs([8458772479849525654, 10186585336117207122, 12880133936401676976, 1149756384964578292]), Fq::from_montgomery_limbs([17528423621923070034, 15935520090452344119, 11404975526251493884, 412409734887795934]), Fq::from_montgomery_limbs([14596531415737149993, 4946255316940312726, 12454931841173483338, 731911136838063220]), Fq::from_montgomery_limbs([6585417567105755410, 16822761287245263930, 2131635032458361338, 606343045824968234]), Fq::from_montgomery_limbs([10214561078664282874, 5025761289800218565, 12783805018122678662, 1311486665373386005]), Fq::from_montgomery_limbs([15901739284283459461, 11286837212400137496, 1712557444614142874, 121870715794602643]), Fq::from_montgomery_limbs([3911984102306673570, 648245110634922383, 15751439518857509618, 216258856571958927]), Fq::from_montgomery_limbs([4848434841412269574, 7349989464327588429, 9911978981083826344, 1211881330257404603]), Fq::from_montgomery_limbs([9800713739756815796, 10304754660712109617, 6380491042931330586, 362406823863024713]), Fq::from_montgomery_limbs([7720465361240795301, 12020672868813473796, 2701475003865340607, 1252909626545536881]), Fq::from_montgomery_limbs([9120215925903958009, 16370286948728342393, 8726225975134153794, 874972214722679027]), Fq::from_montgomery_limbs([13359293481675756526, 17413992610381724082, 17127717448613492326, 618162979844611485]), Fq::from_montgomery_limbs([4457989176113381477, 5428904048964818159, 12898272303960788094, 1093655686680753194]), Fq::from_montgomery_limbs([18405830374587328631, 6168069285842580322, 1496453003489992656, 1017841256875975398]), Fq::from_montgomery_limbs([12466116854493845937, 2160195132816359286, 1767040459956452231, 109568514856013791]), Fq::from_montgomery_limbs([100951306495757880, 114976701465995050, 15766758379995858204, 1057219425251474865]), Fq::from_montgomery_limbs([5298457659833054856, 7285306064847886866, 12795862070238100636, 261515234811290770]), Fq::from_montgomery_limbs([7319581837975344773, 15042040386610023107, 16457831289989790825, 154915683796793087]), Fq::from_montgomery_limbs([13545480776153695910, 13196378744888296667, 5616833430312197722, 463371887282511984]), Fq::from_montgomery_limbs([4373255717409396971, 7992661231611740992, 2555455907700438592, 419602657573298182]), Fq::from_montgomery_limbs([3838228082130987093, 16958961529135702054, 12819669670360648617, 359497681438954782]), Fq::from_montgomery_limbs([6515161084577348825, 3970441889569271383, 607156398571973799, 547713787201516126]), Fq::from_montgomery_limbs([1627146883145613872, 10573887756656254297, 13653780278064282619, 524933908746351261]), Fq::from_montgomery_limbs([10179158874602797540, 2320694878046972755, 13108212213196896821, 823608765090614102]), Fq::from_montgomery_limbs([10002922236139274212, 17696271073832748193, 8923379405797021551, 708982901731254704]), Fq::from_montgomery_limbs([5839866296962221086, 17583077663905506748, 12216298901080800460, 487361936596221908]), Fq::from_montgomery_limbs([14341245248157744737, 3199487087597809010, 1135767560538489843, 927313269278877142]), Fq::from_montgomery_limbs([16632797622220954476, 9703590888871525194, 1377123634707768418, 1246534655674358846]), Fq::from_montgomery_limbs([4754517168201404309, 2647290700202563552, 1690983820051979673, 7714150076274415]), Fq::from_montgomery_limbs([11569692557961925140, 10228174840463393187, 8150598622710748207, 513567317704368092]), Fq::from_montgomery_limbs([1881301196632560204, 6035626362054951305, 8515508636781928884, 523264698133540944]), Fq::from_montgomery_limbs([10026556150015580882, 12588661207673568544, 8778049799575991497, 1135429816709585919]), Fq::from_montgomery_limbs([15355804768759996831, 17109742989524070851, 18394344475321513045, 694458701321276154]), Fq::from_montgomery_limbs([13235216837990437070, 2617348320939314758, 13129875399290619987, 562279832760519450]), Fq::from_montgomery_limbs([10230390803193447564, 13314863672162400633, 17075894283494146616, 375924473565310089]), Fq::from_montgomery_limbs([12059482537459401199, 10372277014464995984, 13657463670572718949, 68415488536176259]), Fq::from_montgomery_limbs([4866792775300295481, 4662805139390376964, 1084624083313912193, 283924614466318758]), Fq::from_montgomery_limbs([682031803653902614, 2785175410597900576, 10466522391392735273, 982491227853418333]), Fq::from_montgomery_limbs([1657190274082326701, 15794239529824430696, 11562429870540813013, 30597476268276403]), Fq::from_montgomery_limbs([11433643047469980018, 1276670802646402384, 7225445039450827835, 1320607862737647658]), Fq::from_montgomery_limbs([9049650314779674715, 15332775679178116922, 10916059016321665268, 1115159218126791192]), Fq::from_montgomery_limbs([5320499112936763732, 11250539854586634824, 12063947087263213252, 710935487070228339]), Fq::from_montgomery_limbs([18379608258942880321, 15727113804916673274, 10498320535108511002, 845002076776323646]), Fq::from_montgomery_limbs([6828593483180812035, 1682481325156526923, 14049047336459608184, 1126148273021080778]), Fq::from_montgomery_limbs([3872917422679565944, 1271915972458656550, 1092693023912110895, 1298968277402891756]), Fq::from_montgomery_limbs([7814132502258843917, 8078742423972593556, 8536158594561933049, 191277843487617954]), Fq::from_montgomery_limbs([5652311561512870887, 16495461651672765449, 11098657231551158518, 493087321946801171]), Fq::from_montgomery_limbs([6368409936062697439, 792796763844864197, 5610460501625398581, 546867399856191995]), Fq::from_montgomery_limbs([3038217149528838505, 8627484827600343283, 7414393357134479493, 985381996389905690]), Fq::from_montgomery_limbs([14953970136252134871, 295452924685135549, 11287279099077480718, 617093465173114131]), Fq::from_montgomery_limbs([140435627222783551, 17855535656574994648, 5022512547318532764, 473386213985532003]), Fq::from_montgomery_limbs([7030554896034226352, 6441059691989760702, 581099786512472761, 1269259459863271622]), Fq::from_montgomery_limbs([6770052323275442396, 12901743183408121797, 13004549993560303547, 969914125748537569]), Fq::from_montgomery_limbs([11435239377991792553, 14044046789306606033, 11369816462011584822, 1239930404010674345]), Fq::from_montgomery_limbs([2621636762951244377, 7758290588105338214, 14625731574391580682, 7696703746211481]), Fq::from_montgomery_limbs([8270493924131469556, 15946263820341678216, 6122109191607485742, 1119062509985100783]), Fq::from_montgomery_limbs([11252124749266599346, 8413749501404755931, 9936257142296575431, 189818330075783365]), Fq::from_montgomery_limbs([1537275707366966513, 2232381660897701103, 2870196216416932989, 1271177660936312287]), Fq::from_montgomery_limbs([1398814984843324301, 15240858180305901997, 14386262707998656254, 1102388553837536368])]), - mds: MdsMatrix::<5, 4, 25, 16>::new_from_known([Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), + arc: ArcMatrix::<39, 5, 195>::new_from_known([ + Fq::from_montgomery_limbs([ + 9886223877583555338, + 2726526174642559934, + 4587790518566470505, + 576729411659255749, + ]), + Fq::from_montgomery_limbs([ + 8635683872171027649, + 6178568763530680712, + 4049298017970875225, + 1010899895527016760, + ]), + Fq::from_montgomery_limbs([ + 4386287284362214114, + 15794275297560972982, + 13426231751965312445, + 1202171528338027358, + ]), + Fq::from_montgomery_limbs([ + 748088700594287215, + 1472010505444622065, + 17517940238534715767, + 284646916897302179, + ]), + Fq::from_montgomery_limbs([ + 10279507610927218934, + 8427605231324569630, + 5256766482183491681, + 599767801296570400, + ]), + Fq::from_montgomery_limbs([ + 5616532683870270019, + 16714573776517987780, + 2780158541662869274, + 82005381951989400, + ]), + Fq::from_montgomery_limbs([ + 628047193644056282, + 3081927050412275131, + 16607349608647881262, + 723666033729227034, + ]), + Fq::from_montgomery_limbs([ + 4014053105906402474, + 8516064025130570203, + 16439212471763340654, + 1066408903228028504, + ]), + Fq::from_montgomery_limbs([ + 3781775891997454435, + 16784197273788891439, + 15993490775706321548, + 1246974369195687342, + ]), + Fq::from_montgomery_limbs([ + 13315871439997102610, + 1360174578976506509, + 1935727712649190133, + 888928512483410116, + ]), + Fq::from_montgomery_limbs([ + 8976641770861237410, + 6687451940339132521, + 18044907108310696377, + 1207869807557250559, + ]), + Fq::from_montgomery_limbs([ + 4528878922761055500, + 7463187218610955446, + 4533754848507645556, + 35071527712858390, + ]), + Fq::from_montgomery_limbs([ + 2054133897613963099, + 8179564031063470525, + 1531556284029346638, + 874298192527556148, + ]), + Fq::from_montgomery_limbs([ + 18305580017782407596, + 2150793914184610589, + 17311607174845242499, + 959373557899881125, + ]), + Fq::from_montgomery_limbs([ + 11483900964553043288, + 12487129025031613244, + 15391908241276224492, + 269335905993702128, + ]), + Fq::from_montgomery_limbs([ + 8338971145620331245, + 12372781419517678375, + 2199283600481834995, + 349132078387032325, + ]), + Fq::from_montgomery_limbs([ + 16711498854962897180, + 964757925282058102, + 2534475787702313401, + 879174178299686832, + ]), + Fq::from_montgomery_limbs([ + 9948612635577575267, + 10310004629375851550, + 14569008704673249814, + 698796675030817938, + ]), + Fq::from_montgomery_limbs([ + 11983101385647491113, + 6756494718617323834, + 3986787822213493305, + 810568397631777742, + ]), + Fq::from_montgomery_limbs([ + 263703597816264419, + 5391923373962277868, + 8069762938958691329, + 167001460324522424, + ]), + Fq::from_montgomery_limbs([ + 12719698031922087137, + 3635206538516773241, + 14946573674542408006, + 904022619675467349, + ]), + Fq::from_montgomery_limbs([ + 7591285109719266048, + 2608578391556572711, + 6779676185899908036, + 1086161713062740129, + ]), + Fq::from_montgomery_limbs([ + 7176467193518589709, + 1343509363976199891, + 347002617743548581, + 1018914054223433368, + ]), + Fq::from_montgomery_limbs([ + 13908207388458176389, + 2971345816230697916, + 17116412495128514758, + 1092556723789729092, + ]), + Fq::from_montgomery_limbs([ + 10011741275583553910, + 13515359725579218496, + 16173962293465169995, + 826500423001616558, + ]), + Fq::from_montgomery_limbs([ + 11642763221775816104, + 5316502523761667274, + 6723960157854782715, + 713280922101966669, + ]), + Fq::from_montgomery_limbs([ + 881130788153084344, + 5010739439291725858, + 1147743103863894058, + 177980102031055407, + ]), + Fq::from_montgomery_limbs([ + 13975378739354834601, + 8684941252608197282, + 5694396386436962583, + 439479504891747047, + ]), + Fq::from_montgomery_limbs([ + 13363133397626440278, + 8130502609775906914, + 13414583350549819329, + 524823840910770289, + ]), + Fq::from_montgomery_limbs([ + 11945840925799863259, + 8524159476864402062, + 9210577373238759816, + 710975425722615141, + ]), + Fq::from_montgomery_limbs([ + 12814581100646910424, + 15849784230008994303, + 12637788340215337664, + 597941999161438829, + ]), + Fq::from_montgomery_limbs([ + 16525908361603394009, + 2846177558600817179, + 7575467056141022092, + 437642443252490173, + ]), + Fq::from_montgomery_limbs([ + 15329913684605210914, + 12070525736245629573, + 13074341668722432469, + 1044151030746490873, + ]), + Fq::from_montgomery_limbs([ + 3538323630603591241, + 10279517124841541304, + 5324030032202346672, + 902072318757121155, + ]), + Fq::from_montgomery_limbs([ + 13596574972337588658, + 16541340016857780345, + 8104153165370753035, + 245861939922053923, + ]), + Fq::from_montgomery_limbs([ + 5030454205469646742, + 13132624601605397879, + 14758125164075453800, + 378384125390441388, + ]), + Fq::from_montgomery_limbs([ + 8906593348835760654, + 11904421032273004937, + 14965461596408947669, + 632859340380426495, + ]), + Fq::from_montgomery_limbs([ + 7850130346408635539, + 13532701351370547975, + 3820560789332903656, + 1092318130445796576, + ]), + Fq::from_montgomery_limbs([ + 12997377171057711408, + 4471729792070708333, + 7305494049349150657, + 1115063797383463496, + ]), + Fq::from_montgomery_limbs([ + 15145625851690108440, + 17698022295267189243, + 9861950554713946731, + 1205401165408515638, + ]), + Fq::from_montgomery_limbs([ + 11309649707041239663, + 667445592132876816, + 943153015419280868, + 1206714849836553688, + ]), + Fq::from_montgomery_limbs([ + 9026152062944983955, + 11204530926199479297, + 6289885248657301247, + 512955645767342309, + ]), + Fq::from_montgomery_limbs([ + 11717849647660086747, + 3612602895588115533, + 9744929507384815356, + 982549568060514738, + ]), + Fq::from_montgomery_limbs([ + 6744201323279553111, + 18111540114747698086, + 11979166811283670034, + 386105814260185338, + ]), + Fq::from_montgomery_limbs([ + 13303196293759203285, + 14344592278022456277, + 4239798340739261853, + 800405056318133701, + ]), + Fq::from_montgomery_limbs([ + 6737138017975582894, + 8531016178828592243, + 13684944430980743706, + 22255530611110264, + ]), + Fq::from_montgomery_limbs([ + 1997271207334772541, + 9079547000593471061, + 16047065352656029242, + 101416793857725065, + ]), + Fq::from_montgomery_limbs([ + 17029188205686654069, + 8951964272054585217, + 15302569091334378903, + 761854968911808356, + ]), + Fq::from_montgomery_limbs([ + 2745767110751783932, + 14853302747509920417, + 1606999108376858338, + 891318834157837360, + ]), + Fq::from_montgomery_limbs([ + 3640580010003203721, + 12123462912736402051, + 18295135460895849345, + 520752965734877132, + ]), + Fq::from_montgomery_limbs([ + 83933521946714737, + 17971579355265751841, + 7352708691986307901, + 183907669014565798, + ]), + Fq::from_montgomery_limbs([ + 9276458973572472320, + 1300682705964188558, + 13756551032393705489, + 645082867954998576, + ]), + Fq::from_montgomery_limbs([ + 15074599786611123042, + 8980910692416969440, + 16790312992523154465, + 44198431582091186, + ]), + Fq::from_montgomery_limbs([ + 1480148269351616164, + 5990826399027670160, + 7437498150356539259, + 427144700677710781, + ]), + Fq::from_montgomery_limbs([ + 5507196835477653383, + 7336613593633132046, + 1280426316557546233, + 958933701992800913, + ]), + Fq::from_montgomery_limbs([ + 18241053245813744236, + 10472459532627362617, + 2012134575489914517, + 1256037774783607417, + ]), + Fq::from_montgomery_limbs([ + 14372359421802781886, + 13729700187444703363, + 17989800816636154572, + 967621319286277758, + ]), + Fq::from_montgomery_limbs([ + 90392410009690887, + 14047860931061415491, + 12494400053046916745, + 1187807817979142164, + ]), + Fq::from_montgomery_limbs([ + 7469394458896125080, + 4994833117952945329, + 5178970336138815548, + 547357110341709620, + ]), + Fq::from_montgomery_limbs([ + 14626262512784894880, + 8498143648146630667, + 14635776379295784646, + 279017425979939457, + ]), + Fq::from_montgomery_limbs([ + 2948938230818109264, + 13256829255392710280, + 3603261726988560613, + 293293722534360282, + ]), + Fq::from_montgomery_limbs([ + 14726913360355627661, + 11044693867323537781, + 7626109275678740243, + 758908383357559345, + ]), + Fq::from_montgomery_limbs([ + 12150373031774230138, + 8891964881341264351, + 4517018861706300919, + 551820964652107008, + ]), + Fq::from_montgomery_limbs([ + 16891048323407180721, + 7536596905792994544, + 3059846088325366943, + 865178483316339067, + ]), + Fq::from_montgomery_limbs([ + 2690083733968939863, + 1769064765331202923, + 999446336742885656, + 164907716251699548, + ]), + Fq::from_montgomery_limbs([ + 8580460058188302985, + 3991751878635809753, + 4547376216267480360, + 560815723873147432, + ]), + Fq::from_montgomery_limbs([ + 1883267897877590583, + 9283747140977722829, + 4336519897183919570, + 1098112532343628461, + ]), + Fq::from_montgomery_limbs([ + 18229193288997288391, + 1416710191385219951, + 786091488678520329, + 897579186089258101, + ]), + Fq::from_montgomery_limbs([ + 9679787806770955465, + 13476526545223689774, + 9613302347536604785, + 1170985601196245246, + ]), + Fq::from_montgomery_limbs([ + 11408485967127642435, + 15775267434451831783, + 5963102841687207642, + 610143165002891320, + ]), + Fq::from_montgomery_limbs([ + 2742110483607649666, + 8238870973637978146, + 8505321265665046273, + 991146636847773959, + ]), + Fq::from_montgomery_limbs([ + 2700417284944988347, + 9333179215703947174, + 17483497014148443293, + 564598335909606701, + ]), + Fq::from_montgomery_limbs([ + 10710073701127297870, + 6322555675999590600, + 11771028831440425797, + 728539264888274353, + ]), + Fq::from_montgomery_limbs([ + 5185688551847854621, + 17136427433029749827, + 13939786699270995224, + 1198719082185444207, + ]), + Fq::from_montgomery_limbs([ + 7749447179538401980, + 4793600318555081413, + 10327393242917365028, + 25438094261901103, + ]), + Fq::from_montgomery_limbs([ + 16840187061708384569, + 10530669475422628524, + 217939404244531614, + 1125926086827923821, + ]), + Fq::from_montgomery_limbs([ + 15218288013305045082, + 5438912048142917445, + 235470087288523129, + 923231700809438641, + ]), + Fq::from_montgomery_limbs([ + 2194576126536460830, + 7891341442170590444, + 6378643390383758255, + 310989935666358535, + ]), + Fq::from_montgomery_limbs([ + 2638919532368561416, + 18196222360720320566, + 6610525316889549022, + 1047682654438730344, + ]), + Fq::from_montgomery_limbs([ + 16494294820597583678, + 4823636307697140628, + 9839058803503271101, + 362713889140891969, + ]), + Fq::from_montgomery_limbs([ + 2973315077205527383, + 16505948923072751536, + 12726716204894385324, + 760067983544631044, + ]), + Fq::from_montgomery_limbs([ + 7041027454525309806, + 14484049096926673324, + 11711536155919984779, + 830352844598884205, + ]), + Fq::from_montgomery_limbs([ + 8226667178177935298, + 16330330634634519739, + 16819545565758577360, + 929449491579086457, + ]), + Fq::from_montgomery_limbs([ + 3366407172182263301, + 16494428895759921285, + 7731107796203549240, + 987879550276572952, + ]), + Fq::from_montgomery_limbs([ + 9958698182000492538, + 15462783131464999925, + 11113071922629363034, + 701467612820830963, + ]), + Fq::from_montgomery_limbs([ + 6144224708909855422, + 10834457042169331467, + 11287058958850316926, + 1312825012143929910, + ]), + Fq::from_montgomery_limbs([ + 17921397628564368555, + 10985573093809787040, + 14340644029187071972, + 59000721534311183, + ]), + Fq::from_montgomery_limbs([ + 1630018632512830166, + 16311976715006973397, + 18074431391508993129, + 155692271434089392, + ]), + Fq::from_montgomery_limbs([ + 2746677638438958053, + 17878267615510669310, + 1082275588904648896, + 1184432411754581729, + ]), + Fq::from_montgomery_limbs([ + 1202686691857012174, + 2234596977877372457, + 3307488575050929625, + 1256758603403004831, + ]), + Fq::from_montgomery_limbs([ + 7601867427459401741, + 13070585820383544138, + 11356438762852655489, + 943118894834427377, + ]), + Fq::from_montgomery_limbs([ + 8684748127362653242, + 4743911555278887170, + 11396974372791841950, + 826700742908426413, + ]), + Fq::from_montgomery_limbs([ + 17452888945877951639, + 9839615283788288179, + 12867459466655328363, + 1007543359739410437, + ]), + Fq::from_montgomery_limbs([ + 12264143824974096166, + 14381191422662810752, + 3641096965851024808, + 480946059636473070, + ]), + Fq::from_montgomery_limbs([ + 11435949141961302837, + 710354890461232526, + 7844293650067273203, + 123004845212098500, + ]), + Fq::from_montgomery_limbs([ + 11045998304335767176, + 3942503358896124422, + 12585149699076876402, + 285027589169677300, + ]), + Fq::from_montgomery_limbs([ + 15820797401199028229, + 16962821466020830153, + 8107747291692774042, + 480489353941649738, + ]), + Fq::from_montgomery_limbs([ + 9217962315784549500, + 14370528537254478239, + 11836250330534571325, + 1139451976529383887, + ]), + Fq::from_montgomery_limbs([ + 11835990522743135120, + 10169548464484669696, + 17221670999568737002, + 533302488612773058, + ]), + Fq::from_montgomery_limbs([ + 17879618715206022981, + 10660797039341031940, + 1930610719106570064, + 964350742947937820, + ]), + Fq::from_montgomery_limbs([ + 1169235639972562417, + 17479840192056268380, + 10586924611389711708, + 103636186478545263, + ]), + Fq::from_montgomery_limbs([ + 9864560133117702439, + 12891182307324408638, + 9236711602457989544, + 490202994419177997, + ]), + Fq::from_montgomery_limbs([ + 524004209204114745, + 12014044939530800435, + 17303597221467190420, + 1259834854717402694, + ]), + Fq::from_montgomery_limbs([ + 2041228093468029194, + 5279491032753715877, + 2237512127849739422, + 1301989577140851954, + ]), + Fq::from_montgomery_limbs([ + 13532558374939940477, + 11861615008285507752, + 15035422035697406898, + 1142796203357719412, + ]), + Fq::from_montgomery_limbs([ + 14953432173925601791, + 10389362430177185816, + 845064825159375048, + 1172521244035119080, + ]), + Fq::from_montgomery_limbs([ + 11975318177053547084, + 3435333234872828662, + 13963241498174514126, + 286783134590930070, + ]), + Fq::from_montgomery_limbs([ + 14455835521486462998, + 2048669311632423555, + 17279316794410156816, + 50616703474729287, + ]), + Fq::from_montgomery_limbs([ + 8193872068862108327, + 3772516384619180657, + 13641128299057093189, + 905697595997810178, + ]), + Fq::from_montgomery_limbs([ + 16454110340578030875, + 2152604389456932301, + 8465973362037387798, + 833666687765914967, + ]), + Fq::from_montgomery_limbs([ + 14250990663149816130, + 10003002447016613703, + 2580052265102394487, + 760659830843235379, + ]), + Fq::from_montgomery_limbs([ + 1290457731274356164, + 2510039619580464600, + 2426168528296515695, + 1254551442283207078, + ]), + Fq::from_montgomery_limbs([ + 16309488082193928736, + 7601298284363534660, + 5163919981174564632, + 65819575671802258, + ]), + Fq::from_montgomery_limbs([ + 12743534580838976593, + 6143776853938743851, + 13386193122986779929, + 423668519394498160, + ]), + Fq::from_montgomery_limbs([ + 3811484717633006447, + 1349919791689722695, + 10297821437600310682, + 68521037802427679, + ]), + Fq::from_montgomery_limbs([ + 1049969810634121052, + 16728941075068531596, + 16094121280131115468, + 82606214892022031, + ]), + Fq::from_montgomery_limbs([ + 5360234823572670745, + 17757096254232659981, + 5717208405019750556, + 809486485814479609, + ]), + Fq::from_montgomery_limbs([ + 1927630004992622799, + 11649924430204711735, + 14978212641988016519, + 1108831164145357066, + ]), + Fq::from_montgomery_limbs([ + 4587868477439641052, + 4737040880169689015, + 639327313806380645, + 693944328643709356, + ]), + Fq::from_montgomery_limbs([ + 11087993010676539653, + 10020352685294943192, + 10076106363570629377, + 297641291282727232, + ]), + Fq::from_montgomery_limbs([ + 3081981335203353498, + 13021314745733708666, + 5449753531105554695, + 227963405559900828, + ]), + Fq::from_montgomery_limbs([ + 15635794702109421502, + 6527818235965294785, + 7659508407838394834, + 492292453862401661, + ]), + Fq::from_montgomery_limbs([ + 3164777360703179827, + 5768214351744839625, + 7163272775096466422, + 261059424264025774, + ]), + Fq::from_montgomery_limbs([ + 8844860905568377954, + 18132135522818541971, + 6960467923389772345, + 221535360909084069, + ]), + Fq::from_montgomery_limbs([ + 17964326599819457995, + 14751755360522114153, + 15283771895792774696, + 1271886438859126545, + ]), + Fq::from_montgomery_limbs([ + 15437118549753387043, + 3510619079633075969, + 16603794516758219723, + 756776079410359543, + ]), + Fq::from_montgomery_limbs([ + 17209588410857048072, + 16141684401935979017, + 5301689933884631523, + 38432519687640810, + ]), + Fq::from_montgomery_limbs([ + 10547445465275366949, + 16846768059763163090, + 6977180887290525070, + 405538698331204120, + ]), + Fq::from_montgomery_limbs([ + 921006661797204039, + 11021425780686556666, + 5587777062950060423, + 248159859513377465, + ]), + Fq::from_montgomery_limbs([ + 13398830594908962848, + 5602568332953722680, + 3299388522313110637, + 411509104649500576, + ]), + Fq::from_montgomery_limbs([ + 10390204826472811537, + 7554738663131013749, + 7526120458731579280, + 905519991871142014, + ]), + Fq::from_montgomery_limbs([ + 10358091385270219586, + 7049055062932694342, + 17159322295344631236, + 1074016100024519392, + ]), + Fq::from_montgomery_limbs([ + 7057719272669022427, + 6716307074733016448, + 8792057977815871320, + 862532343552836131, + ]), + Fq::from_montgomery_limbs([ + 11368373309109150033, + 7045990182385141009, + 2025222109349847460, + 387848901695703654, + ]), + Fq::from_montgomery_limbs([ + 327056937244728359, + 9704535108452812502, + 5199220103603000900, + 619215360838520470, + ]), + Fq::from_montgomery_limbs([ + 5395528494255463572, + 389959326360615418, + 3978563775598752142, + 991544641697560783, + ]), + Fq::from_montgomery_limbs([ + 8458772479849525654, + 10186585336117207122, + 12880133936401676976, + 1149756384964578292, + ]), + Fq::from_montgomery_limbs([ + 17528423621923070034, + 15935520090452344119, + 11404975526251493884, + 412409734887795934, + ]), + Fq::from_montgomery_limbs([ + 14596531415737149993, + 4946255316940312726, + 12454931841173483338, + 731911136838063220, + ]), + Fq::from_montgomery_limbs([ + 6585417567105755410, + 16822761287245263930, + 2131635032458361338, + 606343045824968234, + ]), + Fq::from_montgomery_limbs([ + 10214561078664282874, + 5025761289800218565, + 12783805018122678662, + 1311486665373386005, + ]), + Fq::from_montgomery_limbs([ + 15901739284283459461, + 11286837212400137496, + 1712557444614142874, + 121870715794602643, + ]), + Fq::from_montgomery_limbs([ + 3911984102306673570, + 648245110634922383, + 15751439518857509618, + 216258856571958927, + ]), + Fq::from_montgomery_limbs([ + 4848434841412269574, + 7349989464327588429, + 9911978981083826344, + 1211881330257404603, + ]), + Fq::from_montgomery_limbs([ + 9800713739756815796, + 10304754660712109617, + 6380491042931330586, + 362406823863024713, + ]), + Fq::from_montgomery_limbs([ + 7720465361240795301, + 12020672868813473796, + 2701475003865340607, + 1252909626545536881, + ]), + Fq::from_montgomery_limbs([ + 9120215925903958009, + 16370286948728342393, + 8726225975134153794, + 874972214722679027, + ]), + Fq::from_montgomery_limbs([ + 13359293481675756526, + 17413992610381724082, + 17127717448613492326, + 618162979844611485, + ]), + Fq::from_montgomery_limbs([ + 4457989176113381477, + 5428904048964818159, + 12898272303960788094, + 1093655686680753194, + ]), + Fq::from_montgomery_limbs([ + 18405830374587328631, + 6168069285842580322, + 1496453003489992656, + 1017841256875975398, + ]), + Fq::from_montgomery_limbs([ + 12466116854493845937, + 2160195132816359286, + 1767040459956452231, + 109568514856013791, + ]), + Fq::from_montgomery_limbs([ + 100951306495757880, + 114976701465995050, + 15766758379995858204, + 1057219425251474865, + ]), + Fq::from_montgomery_limbs([ + 5298457659833054856, + 7285306064847886866, + 12795862070238100636, + 261515234811290770, + ]), + Fq::from_montgomery_limbs([ + 7319581837975344773, + 15042040386610023107, + 16457831289989790825, + 154915683796793087, + ]), + Fq::from_montgomery_limbs([ + 13545480776153695910, + 13196378744888296667, + 5616833430312197722, + 463371887282511984, + ]), + Fq::from_montgomery_limbs([ + 4373255717409396971, + 7992661231611740992, + 2555455907700438592, + 419602657573298182, + ]), + Fq::from_montgomery_limbs([ + 3838228082130987093, + 16958961529135702054, + 12819669670360648617, + 359497681438954782, + ]), + Fq::from_montgomery_limbs([ + 6515161084577348825, + 3970441889569271383, + 607156398571973799, + 547713787201516126, + ]), + Fq::from_montgomery_limbs([ + 1627146883145613872, + 10573887756656254297, + 13653780278064282619, + 524933908746351261, + ]), + Fq::from_montgomery_limbs([ + 10179158874602797540, + 2320694878046972755, + 13108212213196896821, + 823608765090614102, + ]), + Fq::from_montgomery_limbs([ + 10002922236139274212, + 17696271073832748193, + 8923379405797021551, + 708982901731254704, + ]), + Fq::from_montgomery_limbs([ + 5839866296962221086, + 17583077663905506748, + 12216298901080800460, + 487361936596221908, + ]), + Fq::from_montgomery_limbs([ + 14341245248157744737, + 3199487087597809010, + 1135767560538489843, + 927313269278877142, + ]), + Fq::from_montgomery_limbs([ + 16632797622220954476, + 9703590888871525194, + 1377123634707768418, + 1246534655674358846, + ]), + Fq::from_montgomery_limbs([ + 4754517168201404309, + 2647290700202563552, + 1690983820051979673, + 7714150076274415, + ]), + Fq::from_montgomery_limbs([ + 11569692557961925140, + 10228174840463393187, + 8150598622710748207, + 513567317704368092, + ]), + Fq::from_montgomery_limbs([ + 1881301196632560204, + 6035626362054951305, + 8515508636781928884, + 523264698133540944, + ]), + Fq::from_montgomery_limbs([ + 10026556150015580882, + 12588661207673568544, + 8778049799575991497, + 1135429816709585919, + ]), + Fq::from_montgomery_limbs([ + 15355804768759996831, + 17109742989524070851, + 18394344475321513045, + 694458701321276154, + ]), + Fq::from_montgomery_limbs([ + 13235216837990437070, + 2617348320939314758, + 13129875399290619987, + 562279832760519450, + ]), + Fq::from_montgomery_limbs([ + 10230390803193447564, + 13314863672162400633, + 17075894283494146616, + 375924473565310089, + ]), + Fq::from_montgomery_limbs([ + 12059482537459401199, + 10372277014464995984, + 13657463670572718949, + 68415488536176259, + ]), + Fq::from_montgomery_limbs([ + 4866792775300295481, + 4662805139390376964, + 1084624083313912193, + 283924614466318758, + ]), + Fq::from_montgomery_limbs([ + 682031803653902614, + 2785175410597900576, + 10466522391392735273, + 982491227853418333, + ]), + Fq::from_montgomery_limbs([ + 1657190274082326701, + 15794239529824430696, + 11562429870540813013, + 30597476268276403, + ]), + Fq::from_montgomery_limbs([ + 11433643047469980018, + 1276670802646402384, + 7225445039450827835, + 1320607862737647658, + ]), + Fq::from_montgomery_limbs([ + 9049650314779674715, + 15332775679178116922, + 10916059016321665268, + 1115159218126791192, + ]), + Fq::from_montgomery_limbs([ + 5320499112936763732, + 11250539854586634824, + 12063947087263213252, + 710935487070228339, + ]), + Fq::from_montgomery_limbs([ + 18379608258942880321, + 15727113804916673274, + 10498320535108511002, + 845002076776323646, + ]), + Fq::from_montgomery_limbs([ + 6828593483180812035, + 1682481325156526923, + 14049047336459608184, + 1126148273021080778, + ]), + Fq::from_montgomery_limbs([ + 3872917422679565944, + 1271915972458656550, + 1092693023912110895, + 1298968277402891756, + ]), + Fq::from_montgomery_limbs([ + 7814132502258843917, + 8078742423972593556, + 8536158594561933049, + 191277843487617954, + ]), + Fq::from_montgomery_limbs([ + 5652311561512870887, + 16495461651672765449, + 11098657231551158518, + 493087321946801171, + ]), + Fq::from_montgomery_limbs([ + 6368409936062697439, + 792796763844864197, + 5610460501625398581, + 546867399856191995, + ]), + Fq::from_montgomery_limbs([ + 3038217149528838505, + 8627484827600343283, + 7414393357134479493, + 985381996389905690, + ]), + Fq::from_montgomery_limbs([ + 14953970136252134871, + 295452924685135549, + 11287279099077480718, + 617093465173114131, + ]), + Fq::from_montgomery_limbs([ + 140435627222783551, + 17855535656574994648, + 5022512547318532764, + 473386213985532003, + ]), + Fq::from_montgomery_limbs([ + 7030554896034226352, + 6441059691989760702, + 581099786512472761, + 1269259459863271622, + ]), + Fq::from_montgomery_limbs([ + 6770052323275442396, + 12901743183408121797, + 13004549993560303547, + 969914125748537569, + ]), + Fq::from_montgomery_limbs([ + 11435239377991792553, + 14044046789306606033, + 11369816462011584822, + 1239930404010674345, + ]), + Fq::from_montgomery_limbs([ + 2621636762951244377, + 7758290588105338214, + 14625731574391580682, + 7696703746211481, + ]), + Fq::from_montgomery_limbs([ + 8270493924131469556, + 15946263820341678216, + 6122109191607485742, + 1119062509985100783, + ]), + Fq::from_montgomery_limbs([ + 11252124749266599346, + 8413749501404755931, + 9936257142296575431, + 189818330075783365, + ]), + Fq::from_montgomery_limbs([ + 1537275707366966513, + 2232381660897701103, + 2870196216416932989, + 1271177660936312287, + ]), + Fq::from_montgomery_limbs([ + 1398814984843324301, + 15240858180305901997, + 14386262707998656254, + 1102388553837536368, + ]), + ]), + mds: MdsMatrix::<5, 4, 25, 16>::new_from_known([ + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + ]), alpha: Alpha::Exponent(17), - rounds: RoundNumbers {r_P: 31, r_F: 8}, + rounds: RoundNumbers { r_P: 31, r_F: 8 }, optimized_mds: OptimizedMdsMatrices { - M_hat: SquareMatrix::<4, 16>::new_from_known([Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), - v: Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625])]), - w: Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625])]), - M_prime: SquareMatrix::<5, 25>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), - M_doubleprime: SquareMatrix::<5, 25>::new_from_known([Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([8008150737402636880, 4488734692587776588, 1547555191554943536, 1006206882335955987]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4174856959927929341, 6956702737728349555, 11313218605335544685, 1279701926361717254]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14997388866253338116, 17951148788181031565, 14101804784614517907, 65578444326456143]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6853363902592985329, 4486369932351851910, 65610707319252285, 873172475563117547]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), - M_inverse: SquareMatrix::<5, 25>::new_from_known([Fq::from_montgomery_limbs([16044777359948080167, 6379307166694554861, 762089046052004585, 1183646996043825654]), Fq::from_montgomery_limbs([8310126474924308909, 16838376826344772735, 14456183264230470132, 629129040732927162]), Fq::from_montgomery_limbs([10591481161139814707, 3864831283854097767, 6360339012538312403, 727156441545813699]), Fq::from_montgomery_limbs([8580764665041452750, 2596276168345731737, 607940303702198574, 618123929142359699]), Fq::from_montgomery_limbs([18272933275584544879, 10491562475845979009, 9925929908400688531, 449428766487123474]), Fq::from_montgomery_limbs([8310126474924308909, 16838376826344772735, 14456183264230470132, 629129040732927162]), Fq::from_montgomery_limbs([11903154552578817451, 8808508453785624876, 14068444835231129096, 1259276684968074962]), Fq::from_montgomery_limbs([2548615176746366879, 17237354895530185263, 1797488250903408702, 291026391931997698]), Fq::from_montgomery_limbs([13620574122907011204, 15580574422211693049, 7152880373115697056, 985573542184802400]), Fq::from_montgomery_limbs([3137742302926509693, 15046605844466714305, 1991063102869025961, 261841845081961819]), Fq::from_montgomery_limbs([10591481161139814707, 3864831283854097767, 6360339012538312403, 727156441545813699]), Fq::from_montgomery_limbs([2548615176746366879, 17237354895530185263, 1797488250903408702, 291026391931997698]), Fq::from_montgomery_limbs([4501910777217553532, 15462242547553693695, 10499850527346203608, 185455733513899003]), Fq::from_montgomery_limbs([16090235568988980360, 8762996204253883831, 17672444665847082580, 116738187400143515]), Fq::from_montgomery_limbs([10965139192629135304, 2507527262352232221, 7729853937802466392, 18035572639182151]), Fq::from_montgomery_limbs([8580764665041452750, 2596276168345731737, 607940303702198574, 618123929142359699]), Fq::from_montgomery_limbs([13620574122907011204, 15580574422211693049, 7152880373115697056, 985573542184802400]), Fq::from_montgomery_limbs([16090235568988980360, 8762996204253883831, 17672444665847082580, 116738187400143515]), Fq::from_montgomery_limbs([10167016895964480411, 16734919608152084608, 17983964361753590390, 420319954536647974]), Fq::from_montgomery_limbs([15950905455332638974, 10638510376174954245, 6190824109415358469, 365471410765096812]), Fq::from_montgomery_limbs([18272933275584544879, 10491562475845979009, 9925929908400688531, 449428766487123474]), Fq::from_montgomery_limbs([3137742302926509693, 15046605844466714305, 1991063102869025961, 261841845081961819]), Fq::from_montgomery_limbs([10965139192629135304, 2507527262352232221, 7729853937802466392, 18035572639182151]), Fq::from_montgomery_limbs([15950905455332638974, 10638510376174954245, 6190824109415358469, 365471410765096812]), Fq::from_montgomery_limbs([1117314920009271201, 4543364499625431390, 17867254861738919934, 199268313635132044])]), - M_hat_inverse: SquareMatrix::<4, 16>::new_from_known([Fq::from_montgomery_limbs([2912843796488841427, 2986203785403700346, 8782906370300679609, 72348807101562454]), Fq::from_montgomery_limbs([9009169579583668122, 13163254771921611656, 12500476150373767268, 206041309714119899]), Fq::from_montgomery_limbs([7160019720069709961, 1207930472110715040, 14896636547354890107, 1070558624402680198]), Fq::from_montgomery_limbs([769834061306938378, 434866968268652066, 13507727459817144106, 1015899670515829318]), Fq::from_montgomery_limbs([9009169579583668122, 13163254771921611656, 12500476150373767268, 206041309714119899]), Fq::from_montgomery_limbs([18105737139400699747, 17092832644263385296, 11448292449964576346, 97503347880002371]), Fq::from_montgomery_limbs([2486409206805834145, 7132406107544192230, 16724002743228709842, 204690573034040147]), Fq::from_montgomery_limbs([15517856203532702535, 6456985507109804621, 5236564190669238024, 1219448662068878427]), Fq::from_montgomery_limbs([7160019720069709961, 1207930472110715040, 14896636547354890107, 1070558624402680198]), Fq::from_montgomery_limbs([2486409206805834145, 7132406107544192230, 16724002743228709842, 204690573034040147]), Fq::from_montgomery_limbs([5324099184438075010, 18365509704861776210, 485662210662411512, 332367568902751343]), Fq::from_montgomery_limbs([12123690196900787584, 13150159583617211350, 15652393172789097814, 509338692023573934]), Fq::from_montgomery_limbs([769834061306938378, 434866968268652066, 13507727459817144106, 1015899670515829318]), Fq::from_montgomery_limbs([15517856203532702535, 6456985507109804621, 5236564190669238024, 1219448662068878427]), Fq::from_montgomery_limbs([12123690196900787584, 13150159583617211350, 15652393172789097814, 509338692023573934]), Fq::from_montgomery_limbs([3535747919942277633, 17013697925000670341, 11660128334245281, 1118907618677696094])]), - M_00: Fq::from_montgomery_limbs([2093244959304135473, 7921656493611837028, 14184576022206158435, 729731999227928846]), - M_i: Matrix::<5, 5, 25>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3550241294482541299, 4181806201361874488, 12479811686471816403, 855474765552047927]), Fq::from_montgomery_limbs([10733696657462375354, 9051038123237754612, 15768789564108221449, 598829465077611102]), Fq::from_montgomery_limbs([4780090151550846061, 8840309929769970773, 7282912445741669386, 1146189173642481065]), Fq::from_montgomery_limbs([4412170182102677248, 3666416784507971023, 16978031500730235082, 244755965167984938]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10733696657462375354, 9051038123237754612, 15768789564108221449, 598829465077611102]), Fq::from_montgomery_limbs([1513630470854066869, 4677614225413309486, 10111857031931978945, 500911903228030067]), Fq::from_montgomery_limbs([3055507272271008448, 8821455708710032658, 11214733806280933596, 435072795685184507]), Fq::from_montgomery_limbs([2339289121714728061, 16657308061121398565, 2111925237313832617, 572507462955239974]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4780090151550846061, 8840309929769970773, 7282912445741669386, 1146189173642481065]), Fq::from_montgomery_limbs([3055507272271008448, 8821455708710032658, 11214733806280933596, 435072795685184507]), Fq::from_montgomery_limbs([13866627529171609781, 9361176355530684294, 17598610984186907476, 148068116833355292]), Fq::from_montgomery_limbs([1636007787860515509, 13796006064476623473, 8087234008724486427, 424300075186376057]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4412170182102677248, 3666416784507971023, 16978031500730235082, 244755965167984938]), Fq::from_montgomery_limbs([2339289121714728061, 16657308061121398565, 2111925237313832617, 572507462955239974]), Fq::from_montgomery_limbs([1636007787860515509, 13796006064476623473, 8087234008724486427, 424300075186376057]), Fq::from_montgomery_limbs([17138718893438209806, 3832598667291101348, 16820316856178316520, 934255170445228361])]), - v_collection: [Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([16333313215653526970, 2040802123570873567, 13606956490394234585, 551256550916377040]), Fq::from_montgomery_limbs([5062406009186596704, 16529967443609096569, 8069040895545372020, 1221611533051627754]), Fq::from_montgomery_limbs([8776932849639973133, 4157275033105063229, 5219893242165609753, 441476373599490172])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([11152363693389150632, 7168263193567282683, 1452700946751769356, 436217109073156792]), Fq::from_montgomery_limbs([13970337958464724119, 17109877554760172091, 12788764852517710407, 839284445089847973]), Fq::from_montgomery_limbs([15163746983822199844, 11654724925143124644, 9602216610999473293, 519210689768164370]), Fq::from_montgomery_limbs([10182434037205209725, 9621286367095233356, 8404025194304421834, 344727351078320731])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([16755358458570043164, 10280398262063275743, 17321778533676321974, 143546509776638006]), Fq::from_montgomery_limbs([9894685689427310276, 13317494114689924797, 8039678456153006986, 320726242987073750]), Fq::from_montgomery_limbs([10892251073208715123, 9975233878611449982, 11944979761650688031, 279665888955724801]), Fq::from_montgomery_limbs([2806869061497062911, 16847498917844641241, 12155099785802870367, 612418149303740633])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([1943262751829125522, 12763321846226199313, 6747770469779104151, 951539986961178929]), Fq::from_montgomery_limbs([16058796408745659861, 17170055100384124922, 1586157489739998203, 1036791847629253806]), Fq::from_montgomery_limbs([2170272984479571023, 39206051687503551, 73036971397233251, 323555571475294666]), Fq::from_montgomery_limbs([13939509715106692697, 9339647999495962035, 11925062741591314295, 1167415533183673898])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([6979434117673847033, 3048055255536618747, 13743910631909977125, 783906807780161297]), Fq::from_montgomery_limbs([17010292649383249624, 7578772047158193525, 1259524131029379452, 241494970118020102]), Fq::from_montgomery_limbs([8104232396866985927, 12510732557073130064, 9629433082008929246, 1035242752646990544]), Fq::from_montgomery_limbs([16796634656430258298, 14112008759289957096, 6452208208519466013, 1048584847398376572])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([15748961458778365618, 8601741670573679852, 9437158324168441506, 977044327661253334]), Fq::from_montgomery_limbs([5158908350016140691, 8596065138269817166, 4752647801985797199, 1176021914613979688]), Fq::from_montgomery_limbs([17831888852747325597, 9652101022265686283, 1555288054471442793, 65814168324416153]), Fq::from_montgomery_limbs([10495561656210166211, 10989451257550783972, 8015055214453272328, 409799830087238982])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([2331967402451752193, 2109682558241205572, 1825337663297053092, 878857572660922318]), Fq::from_montgomery_limbs([12336449333325242432, 5499382277476614407, 11404022977159740856, 478044609105512850]), Fq::from_montgomery_limbs([10790217870923516271, 10590091398034592831, 2798879849340254683, 1097244195350236928]), Fq::from_montgomery_limbs([13063047010146157876, 14542415641892323856, 17083019212457052807, 1089087010292700700])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([1931130401025711378, 11841912731002402383, 12257729010461348591, 475921619378996396]), Fq::from_montgomery_limbs([2043623821806520253, 6264756844797844292, 9140556588049529897, 357097751413650712]), Fq::from_montgomery_limbs([13748314028353391771, 7554401384369793136, 15484455053202687098, 1015396556130205108]), Fq::from_montgomery_limbs([12112322445843745250, 9643021818792026083, 7010640491952178418, 912560635387385014])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([15884856584565086050, 4328763398811725844, 2194324022836935036, 564940183680880064]), Fq::from_montgomery_limbs([10368325909078307315, 16258151264498137456, 12821855576160737507, 168843008052784532]), Fq::from_montgomery_limbs([6775860316590005410, 1587081089529470620, 12761600899048989463, 547743431636452378]), Fq::from_montgomery_limbs([5499459000866536496, 17225191771611977200, 15501710310620154491, 515684463452344496])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([12129682192729323843, 8486777067374758801, 1157895296096676184, 662132892983063060]), Fq::from_montgomery_limbs([174757932292384330, 3152593721116333206, 12164153154782094245, 1099436573600079710]), Fq::from_montgomery_limbs([615845028898507200, 4670618999889700824, 12443454676890805497, 518935605666369522]), Fq::from_montgomery_limbs([16912386391968429424, 5290244798379778177, 11209464492300379874, 586454799338251353])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([12080638299294159093, 1960331238298728784, 2898980097890331004, 921670658451130495]), Fq::from_montgomery_limbs([16215351708207141464, 7345269023494330137, 12994383926037492649, 224185396018231372]), Fq::from_montgomery_limbs([3554838652407488913, 6074835006636416927, 15656375499922407950, 15940578339816345]), Fq::from_montgomery_limbs([7221246958182853009, 6510601905224702473, 12824776152597435860, 725837117656279675])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([13527778764121271275, 1030490900095715048, 12857340760482021894, 936580603253300439]), Fq::from_montgomery_limbs([12930617827781800730, 3249690311936291363, 1303559984190780453, 990745867675858343]), Fq::from_montgomery_limbs([10347830123499261941, 14744724164671532382, 15017413323955480611, 865517056617574158]), Fq::from_montgomery_limbs([13222342262320869452, 930250546901263311, 6148846827329484586, 816792556508332788])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([270522433778958450, 9810558015885994375, 12801721076082256784, 428014500155741958]), Fq::from_montgomery_limbs([17216419355251603785, 16776182263454362660, 17464958086342114244, 1020854289329138282]), Fq::from_montgomery_limbs([14583513917939718723, 16464432348709798589, 5524662795591881534, 504799586387620122]), Fq::from_montgomery_limbs([9494047844709044490, 9514125194357777841, 9204079242382538181, 1326388421861125510])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([7051493540766021999, 14714874558861007051, 12179359128314955274, 431397382988804936]), Fq::from_montgomery_limbs([14285688927589864668, 8964657502437295762, 10607145890133654906, 644415764475289967]), Fq::from_montgomery_limbs([9070138432342296337, 17136148269824501435, 16709615536037568565, 1088774414904578634]), Fq::from_montgomery_limbs([9017804360060337869, 5120895363411029290, 14759539588564342239, 251323438509473927])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([614700763379600159, 12518761935375538118, 4440750989807847128, 10689910160914840]), Fq::from_montgomery_limbs([16233894446868518964, 232968488158620891, 3648936371760108401, 87053101363493664]), Fq::from_montgomery_limbs([4682437298124427841, 10048101470247329816, 5838396498674936533, 76707223622697042]), Fq::from_montgomery_limbs([4844729186655784101, 5073462805990634750, 369364776025047222, 1205067782666401609])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([11811297399794142233, 1367273165695851273, 9482096466685101348, 278101973543607386]), Fq::from_montgomery_limbs([700938287003557444, 10784390521545837670, 652198576027059045, 1257111617232546179]), Fq::from_montgomery_limbs([7023353639663907189, 844196405846330427, 3670187877020232969, 467197560404961638]), Fq::from_montgomery_limbs([3255328098459903221, 1373891119440715166, 9229957119786296543, 511813603491106053])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([7074698954249379124, 597938652890685454, 4893589759540026630, 13821006431840376]), Fq::from_montgomery_limbs([9050360858429500710, 712154751922466901, 2783564310815451475, 361791763218230554]), Fq::from_montgomery_limbs([2543657380738906130, 7730539901174656512, 9349888058233016421, 1105296308578399874]), Fq::from_montgomery_limbs([12462195693380123490, 9135340915133672169, 2529249849635714105, 1028662249374476992])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([3997059354097159592, 14396586541557506890, 15126937915868653526, 1190014880085637787]), Fq::from_montgomery_limbs([71730461663727489, 6481482986298961851, 2863781531983795764, 676732583839455648]), Fq::from_montgomery_limbs([11976979288710790629, 18385617837556037683, 2427331777175576996, 271478597561256238]), Fq::from_montgomery_limbs([14665157190813807512, 4593895870413934871, 17259515554442068841, 822957347764507743])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([7149525206288877270, 17921481572667347774, 2621958866898809461, 1253764315637746764]), Fq::from_montgomery_limbs([3409735133900390936, 136473863329815600, 15309385832522383920, 1169764220492589436]), Fq::from_montgomery_limbs([7033172430223502268, 240255878942338808, 6398794669496471317, 628797443576353581]), Fq::from_montgomery_limbs([7953065623402270259, 8501997013689665019, 5960083925037855492, 295456887863221215])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([15195370696120832657, 17781142206152991864, 2238407181422098285, 841138092128746233]), Fq::from_montgomery_limbs([12824831901012180308, 12167693598895623388, 11028443174628128031, 11577460208414501]), Fq::from_montgomery_limbs([3327689546198888048, 12391493112771759962, 307868198412140618, 1159504727071219081]), Fq::from_montgomery_limbs([3049104073000031564, 17357418971393386361, 996987970433781915, 116813261500484748])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([10884166330331702882, 17425353526410834453, 13326907998045201293, 413735914240279347]), Fq::from_montgomery_limbs([12473777284989231213, 17638157720713586222, 7280940291577634976, 165394770300217809]), Fq::from_montgomery_limbs([6075495009078142294, 15423443319709019929, 10104593150500616837, 356519351756886421]), Fq::from_montgomery_limbs([4453851468262956706, 17578058950978353938, 5693306616848551388, 65029682653071572])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([8478514957045721547, 1837595243779150041, 2731509554274646589, 1330775784497928083]), Fq::from_montgomery_limbs([5199974098799727027, 4404072971729349177, 9646912483549069990, 218329131799988219]), Fq::from_montgomery_limbs([660001227897806842, 8207988798347696530, 13044592656758679072, 480823461712968712]), Fq::from_montgomery_limbs([2124249976672750300, 16810194224873279051, 8413199247867349887, 252618070410064009])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([4556458494955145970, 14725473799943575915, 6762752380673415129, 1316259551723935370]), Fq::from_montgomery_limbs([16979681563871369563, 5158090131973535020, 2347846896725164220, 295285400051150767]), Fq::from_montgomery_limbs([13585313619033311504, 16684285379674594726, 6119191656194738492, 455955275887010759]), Fq::from_montgomery_limbs([3454774308783696473, 10535559679543981910, 15358478203203343679, 240649127531759812])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([16198893952998692648, 7621510146767446726, 5423085782991616007, 484917335576147571]), Fq::from_montgomery_limbs([12418560142694938034, 9630762732922483573, 11756502878189980458, 1064509096436490989]), Fq::from_montgomery_limbs([6432783853572915686, 8373421070941771076, 9999207991110274176, 227092656935087544]), Fq::from_montgomery_limbs([2481263986424351332, 5524660820856664127, 1844129905336978496, 940613905523784942])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([16138212250303786584, 7239588475022848974, 10699859199281641521, 591755207097992795]), Fq::from_montgomery_limbs([12068127359176715698, 9201897464239423846, 16468376872261041490, 4468311430440924]), Fq::from_montgomery_limbs([4076476707186060475, 17992082137333534347, 6815132661837439512, 278384059575851924]), Fq::from_montgomery_limbs([17018342029879137108, 15055574099156300093, 11677650203572471840, 144664137444733523])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([8317396731115292545, 18067636204720558118, 14890417508627474416, 793524012844400414]), Fq::from_montgomery_limbs([13379864138421857399, 362217527193745219, 15798919921502256623, 1097917902435666499]), Fq::from_montgomery_limbs([12810510919435274272, 14423646849331158587, 9841501271852473232, 725922426352114610]), Fq::from_montgomery_limbs([17018030548797472114, 14895024219584398144, 12492061782442092972, 762315198620019019])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([1701906145521012707, 10296626786628438399, 10754570760997467096, 336488969849416237]), Fq::from_montgomery_limbs([254576632745845475, 16526828097705762792, 14770819661184367983, 243834243852718897]), Fq::from_montgomery_limbs([4102931554245931369, 16027764780080619999, 8334572247339515265, 368246411244951631]), Fq::from_montgomery_limbs([4561744176382664009, 2911477542790161454, 3011707291091124269, 556376879137998058])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([3296358868716422366, 9039393853864308074, 17847711501823630457, 1005226492488439642]), Fq::from_montgomery_limbs([4031069363410182489, 7351394901266043534, 16764075333050932509, 1335716800346461455]), Fq::from_montgomery_limbs([7923744999493545562, 5624877492918299446, 1035450251487215992, 66195541204638202]), Fq::from_montgomery_limbs([10021219165650904780, 11526735379442916846, 15137554942549712865, 220711145305168309])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([17539749312900092691, 1394325220480450609, 8427780606119340085, 214541826368037298]), Fq::from_montgomery_limbs([14979072356738539172, 8588389061504370168, 17185566872280556497, 1119865054078041]), Fq::from_montgomery_limbs([13832855658344903569, 17699617991822202836, 12719246950037163765, 809144901785178492]), Fq::from_montgomery_limbs([5258746201047632203, 16795607952264798969, 12589457419107454073, 852487165526431816])]), Matrix::<1, 4, 4>::new_from_known([Fq::from_montgomery_limbs([18017611145361501469, 17582515812396321648, 2919031829448009162, 551871759286894908]), Fq::from_montgomery_limbs([15370904975677001433, 7214748906490449079, 16152167407980539558, 1171554702393986442]), Fq::from_montgomery_limbs([10634655764649983482, 15431077074812693397, 2552280196567255, 712776250826311075]), Fq::from_montgomery_limbs([13708388833019942700, 491334836724789600, 11731367761263890755, 1197388142335296709])])], - w_hat_collection: [Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([8008150737402636880, 4488734692587776588, 1547555191554943536, 1006206882335955987]), Fq::from_montgomery_limbs([4174856959927929341, 6956702737728349555, 11313218605335544685, 1279701926361717254]), Fq::from_montgomery_limbs([14997388866253338116, 17951148788181031565, 14101804784614517907, 65578444326456143]), Fq::from_montgomery_limbs([6853363902592985329, 4486369932351851910, 65610707319252285, 873172475563117547])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([579603889306395083, 2560608140709899462, 18146698412336151881, 60258495702968472]), Fq::from_montgomery_limbs([9924506099485967285, 14841337095946012878, 6550473620052701980, 355439357201872457]), Fq::from_montgomery_limbs([12531688174264614033, 3629799128760975880, 14801960216155767350, 1064176756880888081]), Fq::from_montgomery_limbs([10680016211572180547, 7640186196594536338, 6573062001669273848, 464429714610594606])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([18417588127792957015, 16444529523188187364, 12084138139912705579, 16805794537696529]), Fq::from_montgomery_limbs([13339545413024956285, 12462761674569060732, 10134406054826483261, 583754886928078523]), Fq::from_montgomery_limbs([6246845195152016496, 16016738864936728009, 5667948898993596155, 948927193584489029]), Fq::from_montgomery_limbs([17388237537280169500, 14688406879934192659, 9909558203923179050, 70400508517387223])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([5474861045381340177, 7686087527544521306, 11338593297362199268, 1021856532337771510]), Fq::from_montgomery_limbs([8052444443922943850, 4009271504061137276, 5568866554849053281, 1340081542973701928]), Fq::from_montgomery_limbs([13718366036845239510, 18043008954918195926, 9743799172723723811, 242610881533123775]), Fq::from_montgomery_limbs([12288963833321771774, 11144465775025909714, 3141275767114171625, 895525891428781574])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([12404021506369929265, 14478431220710638983, 16528978820778867199, 1337150421852075847]), Fq::from_montgomery_limbs([14269177948606518010, 14317366494171555302, 17781066350959942798, 197359887673063489]), Fq::from_montgomery_limbs([12899528200685423645, 1817678529746564917, 2099502764987009011, 1116816677457497135]), Fq::from_montgomery_limbs([6364946926969012391, 15881033552478042103, 16127504872579347712, 382615667735657086])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([11058646051271038745, 6859926553724662452, 14087301393004364310, 933306102477549317]), Fq::from_montgomery_limbs([1055047094489815101, 4078033726602170946, 12892578489024905517, 1281158139572661976]), Fq::from_montgomery_limbs([5359943878923586203, 16376042868862104786, 5637680489769528437, 274508389146665774]), Fq::from_montgomery_limbs([9466887184987077213, 12707324624592417252, 5674722778664167831, 495915214907561344])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([5559270171112387908, 18090552370541844697, 4468532076227855438, 987685496358074261]), Fq::from_montgomery_limbs([10757975082173786027, 17106276533668884653, 16008494306379137448, 1236424776827918502]), Fq::from_montgomery_limbs([12651630831207509026, 9201507732813618723, 16271105479151831696, 1088028967768313039]), Fq::from_montgomery_limbs([1230449153550648107, 265047928608104139, 14808043482234569955, 325688046287390058])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([13141399420347535214, 10323718706655672545, 5271972852381490754, 698174654390126163]), Fq::from_montgomery_limbs([372444215127449162, 6596103022703759073, 1647706108480519163, 886941719362299906]), Fq::from_montgomery_limbs([5032445406852833227, 3216505841560606858, 6517925226383774397, 1070169747543143371]), Fq::from_montgomery_limbs([606117931900595268, 11653697130177906902, 16942600493441083920, 207641435432611378])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([10156513900929988871, 10530356278918523762, 14822893961039084664, 161451167716228232]), Fq::from_montgomery_limbs([5121741770267475287, 15513755736291034019, 15586246947451164544, 318686326614228424]), Fq::from_montgomery_limbs([10544893749060569045, 16634377462455718128, 15424965125419130088, 421312194245698247]), Fq::from_montgomery_limbs([11266056403263964991, 12568371609374858109, 3531321490936409191, 508836381468284493])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([14899630606893874181, 6378344959523143322, 5326343488656073582, 678256632460809235]), Fq::from_montgomery_limbs([8604354652434330145, 15276531567938090768, 4221676591098543719, 887292207042946940]), Fq::from_montgomery_limbs([10167720299639556674, 4032113283136195884, 15412529848138749452, 21416729784789829]), Fq::from_montgomery_limbs([1744850832220109759, 13008821337905939469, 11071631382001010551, 788542992044475498])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([2588487693831923600, 819162455518477850, 14502680861403887785, 203676022757604871]), Fq::from_montgomery_limbs([15050651530407319810, 5238818184223155551, 10359161461431902961, 163152244193461490]), Fq::from_montgomery_limbs([11621410489163276959, 8095296962816118406, 17382993292008629559, 830965834513277734]), Fq::from_montgomery_limbs([4679845673800762002, 11732742802677067267, 5456637834111887652, 399639723348579854])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([2687561395762377863, 2742745916341259698, 3044301131411393039, 723385064584425062]), Fq::from_montgomery_limbs([7499903664201677436, 10700255296173911735, 9370120751716629255, 519782401388716596]), Fq::from_montgomery_limbs([12815697858642806748, 3589518328364739416, 5217556848154698002, 1289540407776785865]), Fq::from_montgomery_limbs([5916520816310451970, 9082425633134247720, 12382542148805970812, 992107013138241122])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([6236639905261224386, 843729385509220216, 910784084401746031, 557709047224682096]), Fq::from_montgomery_limbs([15307210632392180298, 15607334968149180484, 9709374798094721055, 911705022776362835]), Fq::from_montgomery_limbs([565211768823822757, 4304458791623152845, 10249442774709061676, 1097659357675265239]), Fq::from_montgomery_limbs([12205146530944986348, 2116986434579909283, 4201175271170209969, 992267258612987371])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([12458858951338998496, 4060946816566081281, 4815111439256220560, 889585388579716031]), Fq::from_montgomery_limbs([13330737697681975741, 14306352519046153100, 6792373522794028640, 181857489562014553]), Fq::from_montgomery_limbs([9910876762206447536, 2419056950848665021, 5515306838952911504, 400668493068602121]), Fq::from_montgomery_limbs([4501996026292399474, 3944405189426212415, 2099089514371618361, 339943583855773594])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([2693369834887763486, 5226235063818719501, 1134958389215915674, 216164169472267996]), Fq::from_montgomery_limbs([11481921067854847814, 3619328605795306677, 1172215419425542958, 698824999301654900]), Fq::from_montgomery_limbs([5583148815732609314, 7533776866599928206, 4700764388317654893, 795419583657348713]), Fq::from_montgomery_limbs([17490171026965334038, 511945728425642245, 7365182481044577047, 220760401169961586])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([3475090391351524558, 14779509624823172685, 3424268588547377302, 807300922038386992]), Fq::from_montgomery_limbs([2661498283128546182, 8564296373141310570, 1331354831148546679, 288633548378759086]), Fq::from_montgomery_limbs([160646850906444279, 16524505359942069161, 907391002106299867, 559294066232203259]), Fq::from_montgomery_limbs([15868970648699916119, 4564623492190132505, 13103059063354872833, 100862674768271570])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([1221307603989354164, 12587043720970902174, 16895819776297027028, 145062209314500623]), Fq::from_montgomery_limbs([16353516398818965607, 14353195469809830563, 6413743319392341778, 328149786789847495]), Fq::from_montgomery_limbs([18408500173092127083, 15531422165208984882, 15085140826729156921, 838526002683321237]), Fq::from_montgomery_limbs([17044208833349483673, 4186851180160463186, 18439292304841373891, 635623871921935831])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([12010244824104902831, 7094652480399574006, 4750126738460582225, 989637526032941486]), Fq::from_montgomery_limbs([4441078329722014290, 13429060628884043553, 17809157578144273686, 434244385592794118]), Fq::from_montgomery_limbs([6991808242812880086, 9244601469821298803, 240701800791269362, 709808634005480046]), Fq::from_montgomery_limbs([13857085282532288295, 308678407453354502, 15922558612862651645, 851414952912951519])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([5101399957442677481, 2142578709995607628, 15743510483605305349, 666733543413083275]), Fq::from_montgomery_limbs([4873022314864281149, 13307090161474032822, 14158291996867903752, 938052837538358985]), Fq::from_montgomery_limbs([1546160817298626130, 10540049778787005713, 3368713709127751691, 363188968017269367]), Fq::from_montgomery_limbs([672262991009706902, 12218048109997218244, 13699765194488826580, 1084475947638507828])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([18346923840081698634, 12943712128874619670, 4019790911633783753, 1100400008744250128]), Fq::from_montgomery_limbs([17812255713702828327, 18006780541970109111, 15638439909761933062, 607605721282836799]), Fq::from_montgomery_limbs([2146046584044097439, 13101190276266477217, 13417007043729135623, 306909505181101092]), Fq::from_montgomery_limbs([5881505764977051707, 9027582737682954755, 13113110745761042063, 498156427767794980])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([18445494826303215741, 1922640032275348520, 18401753303151108255, 413700892364628288]), Fq::from_montgomery_limbs([5713551333083111944, 13466982107671483604, 18052718879288026086, 606241695332365536]), Fq::from_montgomery_limbs([5341312667566345417, 15999363884279236272, 3859963172427206256, 137512694474664211]), Fq::from_montgomery_limbs([17490177364963826654, 14543044352686070271, 16150001646614169348, 704698259553703393])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([9727568846190657427, 14417114472564400058, 9365197390786121627, 794983300027476088]), Fq::from_montgomery_limbs([12997373201110860726, 14246380874068335614, 13296665919577048738, 1098745640843188596]), Fq::from_montgomery_limbs([7228530868527339586, 15583029622716990094, 8861208517089803667, 82901497917931480]), Fq::from_montgomery_limbs([13638279809916295410, 128790733739477632, 8417886451161888027, 991255423238702330])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([11087968183222739640, 2587511469422769048, 14523312587696220059, 192146587408207716]), Fq::from_montgomery_limbs([8412996681904903641, 11887442821301638447, 3370639369565289246, 53949002610311715]), Fq::from_montgomery_limbs([14762391536874926895, 10740959434718252074, 1226825919833891779, 365160723178298573]), Fq::from_montgomery_limbs([1555330760834900970, 1518370310210703133, 1735267998098714592, 1025622291285303779])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([1334503499975428364, 10717052295534688524, 7361984650156075053, 844791857359624202]), Fq::from_montgomery_limbs([16941837112843173147, 2487213732723210497, 6266342779648955295, 833823163972637517]), Fq::from_montgomery_limbs([17244221202450562885, 9683927217285200288, 17625214279845872049, 72929072308819687]), Fq::from_montgomery_limbs([17322021997939023067, 12230087119796208396, 18396814271884812695, 813805950829206789])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([15948063285113474855, 10770603797800150235, 6677092062918475126, 1088103102296276139]), Fq::from_montgomery_limbs([7711244693099635983, 3166785488663936361, 4922456695483615993, 430831973502880121]), Fq::from_montgomery_limbs([3809367189852072520, 9855677685061821074, 945495584216248446, 909359350460583709]), Fq::from_montgomery_limbs([8110395815872458853, 1514592973182402061, 790829722054948037, 353129076761034824])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([4490522698778351596, 14224519981854920216, 17099540428194228219, 339422077308612769]), Fq::from_montgomery_limbs([5639095254854416487, 1620715418926540453, 2533378178940440961, 1219281352481947332]), Fq::from_montgomery_limbs([10638608741850236276, 6613656335866104958, 7688920349526656377, 267050381048915175]), Fq::from_montgomery_limbs([3036522849970263675, 6507669881427436695, 17574949570571358776, 1277705835314573728])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([2222484869463773519, 6808168746395796147, 4421285536548949511, 221502296849107896]), Fq::from_montgomery_limbs([13864906390918380841, 14542080963104347726, 4946615231209518707, 410716390051665697]), Fq::from_montgomery_limbs([17342164341678591250, 2157153117836804364, 17774122463652037556, 1045677158150316262]), Fq::from_montgomery_limbs([1897195111902571201, 7441808212794130262, 14230292566113962566, 158679422354435267])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([12385311968994581122, 13994070371431075240, 8808495601965357849, 1021378877363492133]), Fq::from_montgomery_limbs([6493128916407973417, 7997830985039481850, 7096965712368312908, 1047173662891619916]), Fq::from_montgomery_limbs([4284147259360490869, 16041408471489150031, 7607939514063442430, 829626684549401311]), Fq::from_montgomery_limbs([1856817747001420784, 16357946393175270201, 9210719327832581050, 1018175197760234391])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([5500145050367041469, 3840984581227276122, 3431832361289319237, 260564656886891183]), Fq::from_montgomery_limbs([14712945504944782403, 15039214861617765141, 11103751083365574273, 113689317515455733]), Fq::from_montgomery_limbs([701726807475653267, 14140055316542680948, 3011442975075019770, 584361997905323533]), Fq::from_montgomery_limbs([17748483580890358752, 10604246296825603311, 13033470142003819820, 599441163676514743])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([5299230594859812716, 16638780731660150925, 952927811712562861, 498189305785932392]), Fq::from_montgomery_limbs([4432890524542841769, 1996216122820571178, 12192741690714508643, 764076413945664713]), Fq::from_montgomery_limbs([13089352217465064175, 15801731950730062998, 16367845731547800506, 315925055121715682]), Fq::from_montgomery_limbs([4079387977856382544, 9219169523776319636, 17133435751310074522, 1287156460338158966])]), Matrix::<4, 1, 4>::new_from_known([Fq::from_montgomery_limbs([14473285560728073066, 3618147328828088415, 4933194636388348895, 391722132844625282]), Fq::from_montgomery_limbs([13555572770500462469, 12796156150384677031, 16297295557264104694, 523410635806816263]), Fq::from_montgomery_limbs([6170968086362616849, 306706920248086968, 4382856058195592988, 1226950348108880303]), Fq::from_montgomery_limbs([3093606516563139647, 4131257826299546810, 10588085520003095457, 1310373646887997506])])], - }, - optimized_arc: OptimizedArcMatrix::<39, 5, 195>::new_from_known([Fq::from_montgomery_limbs([9886223877583555338, 2726526174642559934, 4587790518566470505, 576729411659255749]), Fq::from_montgomery_limbs([8635683872171027649, 6178568763530680712, 4049298017970875225, 1010899895527016760]), Fq::from_montgomery_limbs([4386287284362214114, 15794275297560972982, 13426231751965312445, 1202171528338027358]), Fq::from_montgomery_limbs([748088700594287215, 1472010505444622065, 17517940238534715767, 284646916897302179]), Fq::from_montgomery_limbs([10279507610927218934, 8427605231324569630, 5256766482183491681, 599767801296570400]), Fq::from_montgomery_limbs([5616532683870270019, 16714573776517987780, 2780158541662869274, 82005381951989400]), Fq::from_montgomery_limbs([628047193644056282, 3081927050412275131, 16607349608647881262, 723666033729227034]), Fq::from_montgomery_limbs([4014053105906402474, 8516064025130570203, 16439212471763340654, 1066408903228028504]), Fq::from_montgomery_limbs([3781775891997454435, 16784197273788891439, 15993490775706321548, 1246974369195687342]), Fq::from_montgomery_limbs([13315871439997102610, 1360174578976506509, 1935727712649190133, 888928512483410116]), Fq::from_montgomery_limbs([8976641770861237410, 6687451940339132521, 18044907108310696377, 1207869807557250559]), Fq::from_montgomery_limbs([4528878922761055500, 7463187218610955446, 4533754848507645556, 35071527712858390]), Fq::from_montgomery_limbs([2054133897613963099, 8179564031063470525, 1531556284029346638, 874298192527556148]), Fq::from_montgomery_limbs([18305580017782407596, 2150793914184610589, 17311607174845242499, 959373557899881125]), Fq::from_montgomery_limbs([11483900964553043288, 12487129025031613244, 15391908241276224492, 269335905993702128]), Fq::from_montgomery_limbs([8338971145620331245, 12372781419517678375, 2199283600481834995, 349132078387032325]), Fq::from_montgomery_limbs([16711498854962897180, 964757925282058102, 2534475787702313401, 879174178299686832]), Fq::from_montgomery_limbs([9948612635577575267, 10310004629375851550, 14569008704673249814, 698796675030817938]), Fq::from_montgomery_limbs([11983101385647491113, 6756494718617323834, 3986787822213493305, 810568397631777742]), Fq::from_montgomery_limbs([263703597816264419, 5391923373962277868, 8069762938958691329, 167001460324522424]), Fq::from_montgomery_limbs([12719698031922087137, 3635206538516773241, 14946573674542408006, 904022619675467349]), Fq::from_montgomery_limbs([6762216158719169172, 9642199571024567935, 5142823812984968700, 1291046148927292666]), Fq::from_montgomery_limbs([16680204203505507730, 8087548591244649631, 15438619206653090081, 1223574451283768225]), Fq::from_montgomery_limbs([15843265781989514164, 11764842050278291695, 5504272762074655066, 1332848573377839351]), Fq::from_montgomery_limbs([14629863041087566865, 13982939885426451475, 4404573463578858817, 228759527459751766]), Fq::from_montgomery_limbs([5809286761889033537, 11277370821793444978, 3107117479578979614, 305735955848689987]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13948409934814415504, 9820154694698383592, 15339478710638889187, 228350902630534490]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9065604528638698957, 3194171905752976735, 3352166936878863002, 1231275645191263862]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8579200991377095094, 9015821969914095981, 3670786722209097686, 925402881763579823]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11761775895269121220, 12572917397999688032, 10698111778021992718, 739030648247632040]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1406476064536236033, 9641904169359584691, 209897974740814668, 1004730517253795328]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18342895263686664503, 17441455493733274041, 5057199659823690304, 1191886919996393979]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18290582194527069827, 6852353546873280582, 14232314971261025505, 754530050701193486]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6721150425319195661, 13696483494608803551, 14639895569983779179, 190432279900459470]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2285783420521743219, 14591994399938496304, 12535886408060618378, 501101710489306684]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7822724896156552074, 7689777522145170361, 9730977649721376401, 311055255784537528]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1834958024306476590, 16605000872934730848, 8734772715942251355, 1026168817960127241]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5790287081621506475, 18067297368696384877, 1971894623462079455, 497112957651892314]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8621725523835646269, 12965774417410118256, 14706095127353190822, 1142857683996139025]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15741284293667530319, 12915384592541106208, 10337602748724507139, 621400944646732378]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10418600921631639086, 13969232505211882397, 6670084530256782375, 589250133235990401]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13301798549602548743, 5096901969148881844, 14446280392699573069, 437782466408137787]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14260778386751756941, 15721044723566323721, 9992114336939362025, 1127453549788190537]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9374740633145639151, 2749992728162535287, 324605534042342541, 875415928381457928]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([267437928690707389, 15443945850723586497, 12627722626447870588, 76078095185201612]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10923993363806369263, 18267784178840739395, 14630481450219570438, 378947118067140053]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11403976482284459978, 16272983986590444793, 3765503922077751896, 79364539722273290]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11448721382876703681, 14847931759131246244, 7128092965784075415, 180922588002186450]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12703693405537318683, 17809616441104653297, 1356025434738010042, 678042696111256776]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1581134933636608728, 8974334562566747609, 13981094886159927949, 879338632538017255]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13448202253461902078, 6113850066861673560, 8363760165130703945, 430895863395699323]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11364646780735898548, 18310352822657651209, 1715448934469054774, 373623735103410086]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5160483194403952864, 5269789810582188597, 7949343741254368028, 648244985265401351]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2578613260896705768, 16973829270463026541, 1007269524128147481, 588832280601996335]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18113257874564708980, 4260053189158561988, 17013073166096369676, 79169829782754517]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11433643047469980018, 1276670802646402384, 7225445039450827835, 1320607862737647658]), Fq::from_montgomery_limbs([9049650314779674715, 15332775679178116922, 10916059016321665268, 1115159218126791192]), Fq::from_montgomery_limbs([5320499112936763732, 11250539854586634824, 12063947087263213252, 710935487070228339]), Fq::from_montgomery_limbs([18379608258942880321, 15727113804916673274, 10498320535108511002, 845002076776323646]), Fq::from_montgomery_limbs([6828593483180812035, 1682481325156526923, 14049047336459608184, 1126148273021080778]), Fq::from_montgomery_limbs([3872917422679565944, 1271915972458656550, 1092693023912110895, 1298968277402891756]), Fq::from_montgomery_limbs([7814132502258843917, 8078742423972593556, 8536158594561933049, 191277843487617954]), Fq::from_montgomery_limbs([5652311561512870887, 16495461651672765449, 11098657231551158518, 493087321946801171]), Fq::from_montgomery_limbs([6368409936062697439, 792796763844864197, 5610460501625398581, 546867399856191995]), Fq::from_montgomery_limbs([3038217149528838505, 8627484827600343283, 7414393357134479493, 985381996389905690]), Fq::from_montgomery_limbs([14953970136252134871, 295452924685135549, 11287279099077480718, 617093465173114131]), Fq::from_montgomery_limbs([140435627222783551, 17855535656574994648, 5022512547318532764, 473386213985532003]), Fq::from_montgomery_limbs([7030554896034226352, 6441059691989760702, 581099786512472761, 1269259459863271622]), Fq::from_montgomery_limbs([6770052323275442396, 12901743183408121797, 13004549993560303547, 969914125748537569]), Fq::from_montgomery_limbs([11435239377991792553, 14044046789306606033, 11369816462011584822, 1239930404010674345]), Fq::from_montgomery_limbs([2621636762951244377, 7758290588105338214, 14625731574391580682, 7696703746211481]), Fq::from_montgomery_limbs([8270493924131469556, 15946263820341678216, 6122109191607485742, 1119062509985100783]), Fq::from_montgomery_limbs([11252124749266599346, 8413749501404755931, 9936257142296575431, 189818330075783365]), Fq::from_montgomery_limbs([1537275707366966513, 2232381660897701103, 2870196216416932989, 1271177660936312287]), Fq::from_montgomery_limbs([1398814984843324301, 15240858180305901997, 14386262707998656254, 1102388553837536368])]), + M_hat: SquareMatrix::<4, 16>::new_from_known([ + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + ]), + v: Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + ]), + w: Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + ]), + M_prime: SquareMatrix::<5, 25>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + ]), + M_doubleprime: SquareMatrix::<5, 25>::new_from_known([ + Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 8008150737402636880, + 4488734692587776588, + 1547555191554943536, + 1006206882335955987, + ]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4174856959927929341, + 6956702737728349555, + 11313218605335544685, + 1279701926361717254, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 14997388866253338116, + 17951148788181031565, + 14101804784614517907, + 65578444326456143, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6853363902592985329, + 4486369932351851910, + 65610707319252285, + 873172475563117547, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + ]), + M_inverse: SquareMatrix::<5, 25>::new_from_known([ + Fq::from_montgomery_limbs([ + 16044777359948080167, + 6379307166694554861, + 762089046052004585, + 1183646996043825654, + ]), + Fq::from_montgomery_limbs([ + 8310126474924308909, + 16838376826344772735, + 14456183264230470132, + 629129040732927162, + ]), + Fq::from_montgomery_limbs([ + 10591481161139814707, + 3864831283854097767, + 6360339012538312403, + 727156441545813699, + ]), + Fq::from_montgomery_limbs([ + 8580764665041452750, + 2596276168345731737, + 607940303702198574, + 618123929142359699, + ]), + Fq::from_montgomery_limbs([ + 18272933275584544879, + 10491562475845979009, + 9925929908400688531, + 449428766487123474, + ]), + Fq::from_montgomery_limbs([ + 8310126474924308909, + 16838376826344772735, + 14456183264230470132, + 629129040732927162, + ]), + Fq::from_montgomery_limbs([ + 11903154552578817451, + 8808508453785624876, + 14068444835231129096, + 1259276684968074962, + ]), + Fq::from_montgomery_limbs([ + 2548615176746366879, + 17237354895530185263, + 1797488250903408702, + 291026391931997698, + ]), + Fq::from_montgomery_limbs([ + 13620574122907011204, + 15580574422211693049, + 7152880373115697056, + 985573542184802400, + ]), + Fq::from_montgomery_limbs([ + 3137742302926509693, + 15046605844466714305, + 1991063102869025961, + 261841845081961819, + ]), + Fq::from_montgomery_limbs([ + 10591481161139814707, + 3864831283854097767, + 6360339012538312403, + 727156441545813699, + ]), + Fq::from_montgomery_limbs([ + 2548615176746366879, + 17237354895530185263, + 1797488250903408702, + 291026391931997698, + ]), + Fq::from_montgomery_limbs([ + 4501910777217553532, + 15462242547553693695, + 10499850527346203608, + 185455733513899003, + ]), + Fq::from_montgomery_limbs([ + 16090235568988980360, + 8762996204253883831, + 17672444665847082580, + 116738187400143515, + ]), + Fq::from_montgomery_limbs([ + 10965139192629135304, + 2507527262352232221, + 7729853937802466392, + 18035572639182151, + ]), + Fq::from_montgomery_limbs([ + 8580764665041452750, + 2596276168345731737, + 607940303702198574, + 618123929142359699, + ]), + Fq::from_montgomery_limbs([ + 13620574122907011204, + 15580574422211693049, + 7152880373115697056, + 985573542184802400, + ]), + Fq::from_montgomery_limbs([ + 16090235568988980360, + 8762996204253883831, + 17672444665847082580, + 116738187400143515, + ]), + Fq::from_montgomery_limbs([ + 10167016895964480411, + 16734919608152084608, + 17983964361753590390, + 420319954536647974, + ]), + Fq::from_montgomery_limbs([ + 15950905455332638974, + 10638510376174954245, + 6190824109415358469, + 365471410765096812, + ]), + Fq::from_montgomery_limbs([ + 18272933275584544879, + 10491562475845979009, + 9925929908400688531, + 449428766487123474, + ]), + Fq::from_montgomery_limbs([ + 3137742302926509693, + 15046605844466714305, + 1991063102869025961, + 261841845081961819, + ]), + Fq::from_montgomery_limbs([ + 10965139192629135304, + 2507527262352232221, + 7729853937802466392, + 18035572639182151, + ]), + Fq::from_montgomery_limbs([ + 15950905455332638974, + 10638510376174954245, + 6190824109415358469, + 365471410765096812, + ]), + Fq::from_montgomery_limbs([ + 1117314920009271201, + 4543364499625431390, + 17867254861738919934, + 199268313635132044, + ]), + ]), + M_hat_inverse: SquareMatrix::<4, 16>::new_from_known([ + Fq::from_montgomery_limbs([ + 2912843796488841427, + 2986203785403700346, + 8782906370300679609, + 72348807101562454, + ]), + Fq::from_montgomery_limbs([ + 9009169579583668122, + 13163254771921611656, + 12500476150373767268, + 206041309714119899, + ]), + Fq::from_montgomery_limbs([ + 7160019720069709961, + 1207930472110715040, + 14896636547354890107, + 1070558624402680198, + ]), + Fq::from_montgomery_limbs([ + 769834061306938378, + 434866968268652066, + 13507727459817144106, + 1015899670515829318, + ]), + Fq::from_montgomery_limbs([ + 9009169579583668122, + 13163254771921611656, + 12500476150373767268, + 206041309714119899, + ]), + Fq::from_montgomery_limbs([ + 18105737139400699747, + 17092832644263385296, + 11448292449964576346, + 97503347880002371, + ]), + Fq::from_montgomery_limbs([ + 2486409206805834145, + 7132406107544192230, + 16724002743228709842, + 204690573034040147, + ]), + Fq::from_montgomery_limbs([ + 15517856203532702535, + 6456985507109804621, + 5236564190669238024, + 1219448662068878427, + ]), + Fq::from_montgomery_limbs([ + 7160019720069709961, + 1207930472110715040, + 14896636547354890107, + 1070558624402680198, + ]), + Fq::from_montgomery_limbs([ + 2486409206805834145, + 7132406107544192230, + 16724002743228709842, + 204690573034040147, + ]), + Fq::from_montgomery_limbs([ + 5324099184438075010, + 18365509704861776210, + 485662210662411512, + 332367568902751343, + ]), + Fq::from_montgomery_limbs([ + 12123690196900787584, + 13150159583617211350, + 15652393172789097814, + 509338692023573934, + ]), + Fq::from_montgomery_limbs([ + 769834061306938378, + 434866968268652066, + 13507727459817144106, + 1015899670515829318, + ]), + Fq::from_montgomery_limbs([ + 15517856203532702535, + 6456985507109804621, + 5236564190669238024, + 1219448662068878427, + ]), + Fq::from_montgomery_limbs([ + 12123690196900787584, + 13150159583617211350, + 15652393172789097814, + 509338692023573934, + ]), + Fq::from_montgomery_limbs([ + 3535747919942277633, + 17013697925000670341, + 11660128334245281, + 1118907618677696094, + ]), + ]), + M_00: Fq::from_montgomery_limbs([ + 2093244959304135473, + 7921656493611837028, + 14184576022206158435, + 729731999227928846, + ]), + M_i: Matrix::<5, 5, 25>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3550241294482541299, + 4181806201361874488, + 12479811686471816403, + 855474765552047927, + ]), + Fq::from_montgomery_limbs([ + 10733696657462375354, + 9051038123237754612, + 15768789564108221449, + 598829465077611102, + ]), + Fq::from_montgomery_limbs([ + 4780090151550846061, + 8840309929769970773, + 7282912445741669386, + 1146189173642481065, + ]), + Fq::from_montgomery_limbs([ + 4412170182102677248, + 3666416784507971023, + 16978031500730235082, + 244755965167984938, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10733696657462375354, + 9051038123237754612, + 15768789564108221449, + 598829465077611102, + ]), + Fq::from_montgomery_limbs([ + 1513630470854066869, + 4677614225413309486, + 10111857031931978945, + 500911903228030067, + ]), + Fq::from_montgomery_limbs([ + 3055507272271008448, + 8821455708710032658, + 11214733806280933596, + 435072795685184507, + ]), + Fq::from_montgomery_limbs([ + 2339289121714728061, + 16657308061121398565, + 2111925237313832617, + 572507462955239974, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4780090151550846061, + 8840309929769970773, + 7282912445741669386, + 1146189173642481065, + ]), + Fq::from_montgomery_limbs([ + 3055507272271008448, + 8821455708710032658, + 11214733806280933596, + 435072795685184507, + ]), + Fq::from_montgomery_limbs([ + 13866627529171609781, + 9361176355530684294, + 17598610984186907476, + 148068116833355292, + ]), + Fq::from_montgomery_limbs([ + 1636007787860515509, + 13796006064476623473, + 8087234008724486427, + 424300075186376057, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4412170182102677248, + 3666416784507971023, + 16978031500730235082, + 244755965167984938, + ]), + Fq::from_montgomery_limbs([ + 2339289121714728061, + 16657308061121398565, + 2111925237313832617, + 572507462955239974, + ]), + Fq::from_montgomery_limbs([ + 1636007787860515509, + 13796006064476623473, + 8087234008724486427, + 424300075186376057, + ]), + Fq::from_montgomery_limbs([ + 17138718893438209806, + 3832598667291101348, + 16820316856178316520, + 934255170445228361, + ]), + ]), + v_collection: [ + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([ + 16333313215653526970, + 2040802123570873567, + 13606956490394234585, + 551256550916377040, + ]), + Fq::from_montgomery_limbs([ + 5062406009186596704, + 16529967443609096569, + 8069040895545372020, + 1221611533051627754, + ]), + Fq::from_montgomery_limbs([ + 8776932849639973133, + 4157275033105063229, + 5219893242165609753, + 441476373599490172, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 11152363693389150632, + 7168263193567282683, + 1452700946751769356, + 436217109073156792, + ]), + Fq::from_montgomery_limbs([ + 13970337958464724119, + 17109877554760172091, + 12788764852517710407, + 839284445089847973, + ]), + Fq::from_montgomery_limbs([ + 15163746983822199844, + 11654724925143124644, + 9602216610999473293, + 519210689768164370, + ]), + Fq::from_montgomery_limbs([ + 10182434037205209725, + 9621286367095233356, + 8404025194304421834, + 344727351078320731, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 16755358458570043164, + 10280398262063275743, + 17321778533676321974, + 143546509776638006, + ]), + Fq::from_montgomery_limbs([ + 9894685689427310276, + 13317494114689924797, + 8039678456153006986, + 320726242987073750, + ]), + Fq::from_montgomery_limbs([ + 10892251073208715123, + 9975233878611449982, + 11944979761650688031, + 279665888955724801, + ]), + Fq::from_montgomery_limbs([ + 2806869061497062911, + 16847498917844641241, + 12155099785802870367, + 612418149303740633, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 1943262751829125522, + 12763321846226199313, + 6747770469779104151, + 951539986961178929, + ]), + Fq::from_montgomery_limbs([ + 16058796408745659861, + 17170055100384124922, + 1586157489739998203, + 1036791847629253806, + ]), + Fq::from_montgomery_limbs([ + 2170272984479571023, + 39206051687503551, + 73036971397233251, + 323555571475294666, + ]), + Fq::from_montgomery_limbs([ + 13939509715106692697, + 9339647999495962035, + 11925062741591314295, + 1167415533183673898, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 6979434117673847033, + 3048055255536618747, + 13743910631909977125, + 783906807780161297, + ]), + Fq::from_montgomery_limbs([ + 17010292649383249624, + 7578772047158193525, + 1259524131029379452, + 241494970118020102, + ]), + Fq::from_montgomery_limbs([ + 8104232396866985927, + 12510732557073130064, + 9629433082008929246, + 1035242752646990544, + ]), + Fq::from_montgomery_limbs([ + 16796634656430258298, + 14112008759289957096, + 6452208208519466013, + 1048584847398376572, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 15748961458778365618, + 8601741670573679852, + 9437158324168441506, + 977044327661253334, + ]), + Fq::from_montgomery_limbs([ + 5158908350016140691, + 8596065138269817166, + 4752647801985797199, + 1176021914613979688, + ]), + Fq::from_montgomery_limbs([ + 17831888852747325597, + 9652101022265686283, + 1555288054471442793, + 65814168324416153, + ]), + Fq::from_montgomery_limbs([ + 10495561656210166211, + 10989451257550783972, + 8015055214453272328, + 409799830087238982, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 2331967402451752193, + 2109682558241205572, + 1825337663297053092, + 878857572660922318, + ]), + Fq::from_montgomery_limbs([ + 12336449333325242432, + 5499382277476614407, + 11404022977159740856, + 478044609105512850, + ]), + Fq::from_montgomery_limbs([ + 10790217870923516271, + 10590091398034592831, + 2798879849340254683, + 1097244195350236928, + ]), + Fq::from_montgomery_limbs([ + 13063047010146157876, + 14542415641892323856, + 17083019212457052807, + 1089087010292700700, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 1931130401025711378, + 11841912731002402383, + 12257729010461348591, + 475921619378996396, + ]), + Fq::from_montgomery_limbs([ + 2043623821806520253, + 6264756844797844292, + 9140556588049529897, + 357097751413650712, + ]), + Fq::from_montgomery_limbs([ + 13748314028353391771, + 7554401384369793136, + 15484455053202687098, + 1015396556130205108, + ]), + Fq::from_montgomery_limbs([ + 12112322445843745250, + 9643021818792026083, + 7010640491952178418, + 912560635387385014, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 15884856584565086050, + 4328763398811725844, + 2194324022836935036, + 564940183680880064, + ]), + Fq::from_montgomery_limbs([ + 10368325909078307315, + 16258151264498137456, + 12821855576160737507, + 168843008052784532, + ]), + Fq::from_montgomery_limbs([ + 6775860316590005410, + 1587081089529470620, + 12761600899048989463, + 547743431636452378, + ]), + Fq::from_montgomery_limbs([ + 5499459000866536496, + 17225191771611977200, + 15501710310620154491, + 515684463452344496, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 12129682192729323843, + 8486777067374758801, + 1157895296096676184, + 662132892983063060, + ]), + Fq::from_montgomery_limbs([ + 174757932292384330, + 3152593721116333206, + 12164153154782094245, + 1099436573600079710, + ]), + Fq::from_montgomery_limbs([ + 615845028898507200, + 4670618999889700824, + 12443454676890805497, + 518935605666369522, + ]), + Fq::from_montgomery_limbs([ + 16912386391968429424, + 5290244798379778177, + 11209464492300379874, + 586454799338251353, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 12080638299294159093, + 1960331238298728784, + 2898980097890331004, + 921670658451130495, + ]), + Fq::from_montgomery_limbs([ + 16215351708207141464, + 7345269023494330137, + 12994383926037492649, + 224185396018231372, + ]), + Fq::from_montgomery_limbs([ + 3554838652407488913, + 6074835006636416927, + 15656375499922407950, + 15940578339816345, + ]), + Fq::from_montgomery_limbs([ + 7221246958182853009, + 6510601905224702473, + 12824776152597435860, + 725837117656279675, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 13527778764121271275, + 1030490900095715048, + 12857340760482021894, + 936580603253300439, + ]), + Fq::from_montgomery_limbs([ + 12930617827781800730, + 3249690311936291363, + 1303559984190780453, + 990745867675858343, + ]), + Fq::from_montgomery_limbs([ + 10347830123499261941, + 14744724164671532382, + 15017413323955480611, + 865517056617574158, + ]), + Fq::from_montgomery_limbs([ + 13222342262320869452, + 930250546901263311, + 6148846827329484586, + 816792556508332788, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 270522433778958450, + 9810558015885994375, + 12801721076082256784, + 428014500155741958, + ]), + Fq::from_montgomery_limbs([ + 17216419355251603785, + 16776182263454362660, + 17464958086342114244, + 1020854289329138282, + ]), + Fq::from_montgomery_limbs([ + 14583513917939718723, + 16464432348709798589, + 5524662795591881534, + 504799586387620122, + ]), + Fq::from_montgomery_limbs([ + 9494047844709044490, + 9514125194357777841, + 9204079242382538181, + 1326388421861125510, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 7051493540766021999, + 14714874558861007051, + 12179359128314955274, + 431397382988804936, + ]), + Fq::from_montgomery_limbs([ + 14285688927589864668, + 8964657502437295762, + 10607145890133654906, + 644415764475289967, + ]), + Fq::from_montgomery_limbs([ + 9070138432342296337, + 17136148269824501435, + 16709615536037568565, + 1088774414904578634, + ]), + Fq::from_montgomery_limbs([ + 9017804360060337869, + 5120895363411029290, + 14759539588564342239, + 251323438509473927, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 614700763379600159, + 12518761935375538118, + 4440750989807847128, + 10689910160914840, + ]), + Fq::from_montgomery_limbs([ + 16233894446868518964, + 232968488158620891, + 3648936371760108401, + 87053101363493664, + ]), + Fq::from_montgomery_limbs([ + 4682437298124427841, + 10048101470247329816, + 5838396498674936533, + 76707223622697042, + ]), + Fq::from_montgomery_limbs([ + 4844729186655784101, + 5073462805990634750, + 369364776025047222, + 1205067782666401609, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 11811297399794142233, + 1367273165695851273, + 9482096466685101348, + 278101973543607386, + ]), + Fq::from_montgomery_limbs([ + 700938287003557444, + 10784390521545837670, + 652198576027059045, + 1257111617232546179, + ]), + Fq::from_montgomery_limbs([ + 7023353639663907189, + 844196405846330427, + 3670187877020232969, + 467197560404961638, + ]), + Fq::from_montgomery_limbs([ + 3255328098459903221, + 1373891119440715166, + 9229957119786296543, + 511813603491106053, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 7074698954249379124, + 597938652890685454, + 4893589759540026630, + 13821006431840376, + ]), + Fq::from_montgomery_limbs([ + 9050360858429500710, + 712154751922466901, + 2783564310815451475, + 361791763218230554, + ]), + Fq::from_montgomery_limbs([ + 2543657380738906130, + 7730539901174656512, + 9349888058233016421, + 1105296308578399874, + ]), + Fq::from_montgomery_limbs([ + 12462195693380123490, + 9135340915133672169, + 2529249849635714105, + 1028662249374476992, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 3997059354097159592, + 14396586541557506890, + 15126937915868653526, + 1190014880085637787, + ]), + Fq::from_montgomery_limbs([ + 71730461663727489, + 6481482986298961851, + 2863781531983795764, + 676732583839455648, + ]), + Fq::from_montgomery_limbs([ + 11976979288710790629, + 18385617837556037683, + 2427331777175576996, + 271478597561256238, + ]), + Fq::from_montgomery_limbs([ + 14665157190813807512, + 4593895870413934871, + 17259515554442068841, + 822957347764507743, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 7149525206288877270, + 17921481572667347774, + 2621958866898809461, + 1253764315637746764, + ]), + Fq::from_montgomery_limbs([ + 3409735133900390936, + 136473863329815600, + 15309385832522383920, + 1169764220492589436, + ]), + Fq::from_montgomery_limbs([ + 7033172430223502268, + 240255878942338808, + 6398794669496471317, + 628797443576353581, + ]), + Fq::from_montgomery_limbs([ + 7953065623402270259, + 8501997013689665019, + 5960083925037855492, + 295456887863221215, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 15195370696120832657, + 17781142206152991864, + 2238407181422098285, + 841138092128746233, + ]), + Fq::from_montgomery_limbs([ + 12824831901012180308, + 12167693598895623388, + 11028443174628128031, + 11577460208414501, + ]), + Fq::from_montgomery_limbs([ + 3327689546198888048, + 12391493112771759962, + 307868198412140618, + 1159504727071219081, + ]), + Fq::from_montgomery_limbs([ + 3049104073000031564, + 17357418971393386361, + 996987970433781915, + 116813261500484748, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 10884166330331702882, + 17425353526410834453, + 13326907998045201293, + 413735914240279347, + ]), + Fq::from_montgomery_limbs([ + 12473777284989231213, + 17638157720713586222, + 7280940291577634976, + 165394770300217809, + ]), + Fq::from_montgomery_limbs([ + 6075495009078142294, + 15423443319709019929, + 10104593150500616837, + 356519351756886421, + ]), + Fq::from_montgomery_limbs([ + 4453851468262956706, + 17578058950978353938, + 5693306616848551388, + 65029682653071572, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 8478514957045721547, + 1837595243779150041, + 2731509554274646589, + 1330775784497928083, + ]), + Fq::from_montgomery_limbs([ + 5199974098799727027, + 4404072971729349177, + 9646912483549069990, + 218329131799988219, + ]), + Fq::from_montgomery_limbs([ + 660001227897806842, + 8207988798347696530, + 13044592656758679072, + 480823461712968712, + ]), + Fq::from_montgomery_limbs([ + 2124249976672750300, + 16810194224873279051, + 8413199247867349887, + 252618070410064009, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 4556458494955145970, + 14725473799943575915, + 6762752380673415129, + 1316259551723935370, + ]), + Fq::from_montgomery_limbs([ + 16979681563871369563, + 5158090131973535020, + 2347846896725164220, + 295285400051150767, + ]), + Fq::from_montgomery_limbs([ + 13585313619033311504, + 16684285379674594726, + 6119191656194738492, + 455955275887010759, + ]), + Fq::from_montgomery_limbs([ + 3454774308783696473, + 10535559679543981910, + 15358478203203343679, + 240649127531759812, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 16198893952998692648, + 7621510146767446726, + 5423085782991616007, + 484917335576147571, + ]), + Fq::from_montgomery_limbs([ + 12418560142694938034, + 9630762732922483573, + 11756502878189980458, + 1064509096436490989, + ]), + Fq::from_montgomery_limbs([ + 6432783853572915686, + 8373421070941771076, + 9999207991110274176, + 227092656935087544, + ]), + Fq::from_montgomery_limbs([ + 2481263986424351332, + 5524660820856664127, + 1844129905336978496, + 940613905523784942, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 16138212250303786584, + 7239588475022848974, + 10699859199281641521, + 591755207097992795, + ]), + Fq::from_montgomery_limbs([ + 12068127359176715698, + 9201897464239423846, + 16468376872261041490, + 4468311430440924, + ]), + Fq::from_montgomery_limbs([ + 4076476707186060475, + 17992082137333534347, + 6815132661837439512, + 278384059575851924, + ]), + Fq::from_montgomery_limbs([ + 17018342029879137108, + 15055574099156300093, + 11677650203572471840, + 144664137444733523, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 8317396731115292545, + 18067636204720558118, + 14890417508627474416, + 793524012844400414, + ]), + Fq::from_montgomery_limbs([ + 13379864138421857399, + 362217527193745219, + 15798919921502256623, + 1097917902435666499, + ]), + Fq::from_montgomery_limbs([ + 12810510919435274272, + 14423646849331158587, + 9841501271852473232, + 725922426352114610, + ]), + Fq::from_montgomery_limbs([ + 17018030548797472114, + 14895024219584398144, + 12492061782442092972, + 762315198620019019, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 1701906145521012707, + 10296626786628438399, + 10754570760997467096, + 336488969849416237, + ]), + Fq::from_montgomery_limbs([ + 254576632745845475, + 16526828097705762792, + 14770819661184367983, + 243834243852718897, + ]), + Fq::from_montgomery_limbs([ + 4102931554245931369, + 16027764780080619999, + 8334572247339515265, + 368246411244951631, + ]), + Fq::from_montgomery_limbs([ + 4561744176382664009, + 2911477542790161454, + 3011707291091124269, + 556376879137998058, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 3296358868716422366, + 9039393853864308074, + 17847711501823630457, + 1005226492488439642, + ]), + Fq::from_montgomery_limbs([ + 4031069363410182489, + 7351394901266043534, + 16764075333050932509, + 1335716800346461455, + ]), + Fq::from_montgomery_limbs([ + 7923744999493545562, + 5624877492918299446, + 1035450251487215992, + 66195541204638202, + ]), + Fq::from_montgomery_limbs([ + 10021219165650904780, + 11526735379442916846, + 15137554942549712865, + 220711145305168309, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 17539749312900092691, + 1394325220480450609, + 8427780606119340085, + 214541826368037298, + ]), + Fq::from_montgomery_limbs([ + 14979072356738539172, + 8588389061504370168, + 17185566872280556497, + 1119865054078041, + ]), + Fq::from_montgomery_limbs([ + 13832855658344903569, + 17699617991822202836, + 12719246950037163765, + 809144901785178492, + ]), + Fq::from_montgomery_limbs([ + 5258746201047632203, + 16795607952264798969, + 12589457419107454073, + 852487165526431816, + ]), + ]), + Matrix::<1, 4, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 18017611145361501469, + 17582515812396321648, + 2919031829448009162, + 551871759286894908, + ]), + Fq::from_montgomery_limbs([ + 15370904975677001433, + 7214748906490449079, + 16152167407980539558, + 1171554702393986442, + ]), + Fq::from_montgomery_limbs([ + 10634655764649983482, + 15431077074812693397, + 2552280196567255, + 712776250826311075, + ]), + Fq::from_montgomery_limbs([ + 13708388833019942700, + 491334836724789600, + 11731367761263890755, + 1197388142335296709, + ]), + ]), + ], + w_hat_collection: [ + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 8008150737402636880, + 4488734692587776588, + 1547555191554943536, + 1006206882335955987, + ]), + Fq::from_montgomery_limbs([ + 4174856959927929341, + 6956702737728349555, + 11313218605335544685, + 1279701926361717254, + ]), + Fq::from_montgomery_limbs([ + 14997388866253338116, + 17951148788181031565, + 14101804784614517907, + 65578444326456143, + ]), + Fq::from_montgomery_limbs([ + 6853363902592985329, + 4486369932351851910, + 65610707319252285, + 873172475563117547, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 579603889306395083, + 2560608140709899462, + 18146698412336151881, + 60258495702968472, + ]), + Fq::from_montgomery_limbs([ + 9924506099485967285, + 14841337095946012878, + 6550473620052701980, + 355439357201872457, + ]), + Fq::from_montgomery_limbs([ + 12531688174264614033, + 3629799128760975880, + 14801960216155767350, + 1064176756880888081, + ]), + Fq::from_montgomery_limbs([ + 10680016211572180547, + 7640186196594536338, + 6573062001669273848, + 464429714610594606, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 18417588127792957015, + 16444529523188187364, + 12084138139912705579, + 16805794537696529, + ]), + Fq::from_montgomery_limbs([ + 13339545413024956285, + 12462761674569060732, + 10134406054826483261, + 583754886928078523, + ]), + Fq::from_montgomery_limbs([ + 6246845195152016496, + 16016738864936728009, + 5667948898993596155, + 948927193584489029, + ]), + Fq::from_montgomery_limbs([ + 17388237537280169500, + 14688406879934192659, + 9909558203923179050, + 70400508517387223, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 5474861045381340177, + 7686087527544521306, + 11338593297362199268, + 1021856532337771510, + ]), + Fq::from_montgomery_limbs([ + 8052444443922943850, + 4009271504061137276, + 5568866554849053281, + 1340081542973701928, + ]), + Fq::from_montgomery_limbs([ + 13718366036845239510, + 18043008954918195926, + 9743799172723723811, + 242610881533123775, + ]), + Fq::from_montgomery_limbs([ + 12288963833321771774, + 11144465775025909714, + 3141275767114171625, + 895525891428781574, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 12404021506369929265, + 14478431220710638983, + 16528978820778867199, + 1337150421852075847, + ]), + Fq::from_montgomery_limbs([ + 14269177948606518010, + 14317366494171555302, + 17781066350959942798, + 197359887673063489, + ]), + Fq::from_montgomery_limbs([ + 12899528200685423645, + 1817678529746564917, + 2099502764987009011, + 1116816677457497135, + ]), + Fq::from_montgomery_limbs([ + 6364946926969012391, + 15881033552478042103, + 16127504872579347712, + 382615667735657086, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 11058646051271038745, + 6859926553724662452, + 14087301393004364310, + 933306102477549317, + ]), + Fq::from_montgomery_limbs([ + 1055047094489815101, + 4078033726602170946, + 12892578489024905517, + 1281158139572661976, + ]), + Fq::from_montgomery_limbs([ + 5359943878923586203, + 16376042868862104786, + 5637680489769528437, + 274508389146665774, + ]), + Fq::from_montgomery_limbs([ + 9466887184987077213, + 12707324624592417252, + 5674722778664167831, + 495915214907561344, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 5559270171112387908, + 18090552370541844697, + 4468532076227855438, + 987685496358074261, + ]), + Fq::from_montgomery_limbs([ + 10757975082173786027, + 17106276533668884653, + 16008494306379137448, + 1236424776827918502, + ]), + Fq::from_montgomery_limbs([ + 12651630831207509026, + 9201507732813618723, + 16271105479151831696, + 1088028967768313039, + ]), + Fq::from_montgomery_limbs([ + 1230449153550648107, + 265047928608104139, + 14808043482234569955, + 325688046287390058, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 13141399420347535214, + 10323718706655672545, + 5271972852381490754, + 698174654390126163, + ]), + Fq::from_montgomery_limbs([ + 372444215127449162, + 6596103022703759073, + 1647706108480519163, + 886941719362299906, + ]), + Fq::from_montgomery_limbs([ + 5032445406852833227, + 3216505841560606858, + 6517925226383774397, + 1070169747543143371, + ]), + Fq::from_montgomery_limbs([ + 606117931900595268, + 11653697130177906902, + 16942600493441083920, + 207641435432611378, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 10156513900929988871, + 10530356278918523762, + 14822893961039084664, + 161451167716228232, + ]), + Fq::from_montgomery_limbs([ + 5121741770267475287, + 15513755736291034019, + 15586246947451164544, + 318686326614228424, + ]), + Fq::from_montgomery_limbs([ + 10544893749060569045, + 16634377462455718128, + 15424965125419130088, + 421312194245698247, + ]), + Fq::from_montgomery_limbs([ + 11266056403263964991, + 12568371609374858109, + 3531321490936409191, + 508836381468284493, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 14899630606893874181, + 6378344959523143322, + 5326343488656073582, + 678256632460809235, + ]), + Fq::from_montgomery_limbs([ + 8604354652434330145, + 15276531567938090768, + 4221676591098543719, + 887292207042946940, + ]), + Fq::from_montgomery_limbs([ + 10167720299639556674, + 4032113283136195884, + 15412529848138749452, + 21416729784789829, + ]), + Fq::from_montgomery_limbs([ + 1744850832220109759, + 13008821337905939469, + 11071631382001010551, + 788542992044475498, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 2588487693831923600, + 819162455518477850, + 14502680861403887785, + 203676022757604871, + ]), + Fq::from_montgomery_limbs([ + 15050651530407319810, + 5238818184223155551, + 10359161461431902961, + 163152244193461490, + ]), + Fq::from_montgomery_limbs([ + 11621410489163276959, + 8095296962816118406, + 17382993292008629559, + 830965834513277734, + ]), + Fq::from_montgomery_limbs([ + 4679845673800762002, + 11732742802677067267, + 5456637834111887652, + 399639723348579854, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 2687561395762377863, + 2742745916341259698, + 3044301131411393039, + 723385064584425062, + ]), + Fq::from_montgomery_limbs([ + 7499903664201677436, + 10700255296173911735, + 9370120751716629255, + 519782401388716596, + ]), + Fq::from_montgomery_limbs([ + 12815697858642806748, + 3589518328364739416, + 5217556848154698002, + 1289540407776785865, + ]), + Fq::from_montgomery_limbs([ + 5916520816310451970, + 9082425633134247720, + 12382542148805970812, + 992107013138241122, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 6236639905261224386, + 843729385509220216, + 910784084401746031, + 557709047224682096, + ]), + Fq::from_montgomery_limbs([ + 15307210632392180298, + 15607334968149180484, + 9709374798094721055, + 911705022776362835, + ]), + Fq::from_montgomery_limbs([ + 565211768823822757, + 4304458791623152845, + 10249442774709061676, + 1097659357675265239, + ]), + Fq::from_montgomery_limbs([ + 12205146530944986348, + 2116986434579909283, + 4201175271170209969, + 992267258612987371, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 12458858951338998496, + 4060946816566081281, + 4815111439256220560, + 889585388579716031, + ]), + Fq::from_montgomery_limbs([ + 13330737697681975741, + 14306352519046153100, + 6792373522794028640, + 181857489562014553, + ]), + Fq::from_montgomery_limbs([ + 9910876762206447536, + 2419056950848665021, + 5515306838952911504, + 400668493068602121, + ]), + Fq::from_montgomery_limbs([ + 4501996026292399474, + 3944405189426212415, + 2099089514371618361, + 339943583855773594, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 2693369834887763486, + 5226235063818719501, + 1134958389215915674, + 216164169472267996, + ]), + Fq::from_montgomery_limbs([ + 11481921067854847814, + 3619328605795306677, + 1172215419425542958, + 698824999301654900, + ]), + Fq::from_montgomery_limbs([ + 5583148815732609314, + 7533776866599928206, + 4700764388317654893, + 795419583657348713, + ]), + Fq::from_montgomery_limbs([ + 17490171026965334038, + 511945728425642245, + 7365182481044577047, + 220760401169961586, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 3475090391351524558, + 14779509624823172685, + 3424268588547377302, + 807300922038386992, + ]), + Fq::from_montgomery_limbs([ + 2661498283128546182, + 8564296373141310570, + 1331354831148546679, + 288633548378759086, + ]), + Fq::from_montgomery_limbs([ + 160646850906444279, + 16524505359942069161, + 907391002106299867, + 559294066232203259, + ]), + Fq::from_montgomery_limbs([ + 15868970648699916119, + 4564623492190132505, + 13103059063354872833, + 100862674768271570, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 1221307603989354164, + 12587043720970902174, + 16895819776297027028, + 145062209314500623, + ]), + Fq::from_montgomery_limbs([ + 16353516398818965607, + 14353195469809830563, + 6413743319392341778, + 328149786789847495, + ]), + Fq::from_montgomery_limbs([ + 18408500173092127083, + 15531422165208984882, + 15085140826729156921, + 838526002683321237, + ]), + Fq::from_montgomery_limbs([ + 17044208833349483673, + 4186851180160463186, + 18439292304841373891, + 635623871921935831, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 12010244824104902831, + 7094652480399574006, + 4750126738460582225, + 989637526032941486, + ]), + Fq::from_montgomery_limbs([ + 4441078329722014290, + 13429060628884043553, + 17809157578144273686, + 434244385592794118, + ]), + Fq::from_montgomery_limbs([ + 6991808242812880086, + 9244601469821298803, + 240701800791269362, + 709808634005480046, + ]), + Fq::from_montgomery_limbs([ + 13857085282532288295, + 308678407453354502, + 15922558612862651645, + 851414952912951519, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 5101399957442677481, + 2142578709995607628, + 15743510483605305349, + 666733543413083275, + ]), + Fq::from_montgomery_limbs([ + 4873022314864281149, + 13307090161474032822, + 14158291996867903752, + 938052837538358985, + ]), + Fq::from_montgomery_limbs([ + 1546160817298626130, + 10540049778787005713, + 3368713709127751691, + 363188968017269367, + ]), + Fq::from_montgomery_limbs([ + 672262991009706902, + 12218048109997218244, + 13699765194488826580, + 1084475947638507828, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 18346923840081698634, + 12943712128874619670, + 4019790911633783753, + 1100400008744250128, + ]), + Fq::from_montgomery_limbs([ + 17812255713702828327, + 18006780541970109111, + 15638439909761933062, + 607605721282836799, + ]), + Fq::from_montgomery_limbs([ + 2146046584044097439, + 13101190276266477217, + 13417007043729135623, + 306909505181101092, + ]), + Fq::from_montgomery_limbs([ + 5881505764977051707, + 9027582737682954755, + 13113110745761042063, + 498156427767794980, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 18445494826303215741, + 1922640032275348520, + 18401753303151108255, + 413700892364628288, + ]), + Fq::from_montgomery_limbs([ + 5713551333083111944, + 13466982107671483604, + 18052718879288026086, + 606241695332365536, + ]), + Fq::from_montgomery_limbs([ + 5341312667566345417, + 15999363884279236272, + 3859963172427206256, + 137512694474664211, + ]), + Fq::from_montgomery_limbs([ + 17490177364963826654, + 14543044352686070271, + 16150001646614169348, + 704698259553703393, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 9727568846190657427, + 14417114472564400058, + 9365197390786121627, + 794983300027476088, + ]), + Fq::from_montgomery_limbs([ + 12997373201110860726, + 14246380874068335614, + 13296665919577048738, + 1098745640843188596, + ]), + Fq::from_montgomery_limbs([ + 7228530868527339586, + 15583029622716990094, + 8861208517089803667, + 82901497917931480, + ]), + Fq::from_montgomery_limbs([ + 13638279809916295410, + 128790733739477632, + 8417886451161888027, + 991255423238702330, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 11087968183222739640, + 2587511469422769048, + 14523312587696220059, + 192146587408207716, + ]), + Fq::from_montgomery_limbs([ + 8412996681904903641, + 11887442821301638447, + 3370639369565289246, + 53949002610311715, + ]), + Fq::from_montgomery_limbs([ + 14762391536874926895, + 10740959434718252074, + 1226825919833891779, + 365160723178298573, + ]), + Fq::from_montgomery_limbs([ + 1555330760834900970, + 1518370310210703133, + 1735267998098714592, + 1025622291285303779, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 1334503499975428364, + 10717052295534688524, + 7361984650156075053, + 844791857359624202, + ]), + Fq::from_montgomery_limbs([ + 16941837112843173147, + 2487213732723210497, + 6266342779648955295, + 833823163972637517, + ]), + Fq::from_montgomery_limbs([ + 17244221202450562885, + 9683927217285200288, + 17625214279845872049, + 72929072308819687, + ]), + Fq::from_montgomery_limbs([ + 17322021997939023067, + 12230087119796208396, + 18396814271884812695, + 813805950829206789, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 15948063285113474855, + 10770603797800150235, + 6677092062918475126, + 1088103102296276139, + ]), + Fq::from_montgomery_limbs([ + 7711244693099635983, + 3166785488663936361, + 4922456695483615993, + 430831973502880121, + ]), + Fq::from_montgomery_limbs([ + 3809367189852072520, + 9855677685061821074, + 945495584216248446, + 909359350460583709, + ]), + Fq::from_montgomery_limbs([ + 8110395815872458853, + 1514592973182402061, + 790829722054948037, + 353129076761034824, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 4490522698778351596, + 14224519981854920216, + 17099540428194228219, + 339422077308612769, + ]), + Fq::from_montgomery_limbs([ + 5639095254854416487, + 1620715418926540453, + 2533378178940440961, + 1219281352481947332, + ]), + Fq::from_montgomery_limbs([ + 10638608741850236276, + 6613656335866104958, + 7688920349526656377, + 267050381048915175, + ]), + Fq::from_montgomery_limbs([ + 3036522849970263675, + 6507669881427436695, + 17574949570571358776, + 1277705835314573728, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 2222484869463773519, + 6808168746395796147, + 4421285536548949511, + 221502296849107896, + ]), + Fq::from_montgomery_limbs([ + 13864906390918380841, + 14542080963104347726, + 4946615231209518707, + 410716390051665697, + ]), + Fq::from_montgomery_limbs([ + 17342164341678591250, + 2157153117836804364, + 17774122463652037556, + 1045677158150316262, + ]), + Fq::from_montgomery_limbs([ + 1897195111902571201, + 7441808212794130262, + 14230292566113962566, + 158679422354435267, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 12385311968994581122, + 13994070371431075240, + 8808495601965357849, + 1021378877363492133, + ]), + Fq::from_montgomery_limbs([ + 6493128916407973417, + 7997830985039481850, + 7096965712368312908, + 1047173662891619916, + ]), + Fq::from_montgomery_limbs([ + 4284147259360490869, + 16041408471489150031, + 7607939514063442430, + 829626684549401311, + ]), + Fq::from_montgomery_limbs([ + 1856817747001420784, + 16357946393175270201, + 9210719327832581050, + 1018175197760234391, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 5500145050367041469, + 3840984581227276122, + 3431832361289319237, + 260564656886891183, + ]), + Fq::from_montgomery_limbs([ + 14712945504944782403, + 15039214861617765141, + 11103751083365574273, + 113689317515455733, + ]), + Fq::from_montgomery_limbs([ + 701726807475653267, + 14140055316542680948, + 3011442975075019770, + 584361997905323533, + ]), + Fq::from_montgomery_limbs([ + 17748483580890358752, + 10604246296825603311, + 13033470142003819820, + 599441163676514743, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 5299230594859812716, + 16638780731660150925, + 952927811712562861, + 498189305785932392, + ]), + Fq::from_montgomery_limbs([ + 4432890524542841769, + 1996216122820571178, + 12192741690714508643, + 764076413945664713, + ]), + Fq::from_montgomery_limbs([ + 13089352217465064175, + 15801731950730062998, + 16367845731547800506, + 315925055121715682, + ]), + Fq::from_montgomery_limbs([ + 4079387977856382544, + 9219169523776319636, + 17133435751310074522, + 1287156460338158966, + ]), + ]), + Matrix::<4, 1, 4>::new_from_known([ + Fq::from_montgomery_limbs([ + 14473285560728073066, + 3618147328828088415, + 4933194636388348895, + 391722132844625282, + ]), + Fq::from_montgomery_limbs([ + 13555572770500462469, + 12796156150384677031, + 16297295557264104694, + 523410635806816263, + ]), + Fq::from_montgomery_limbs([ + 6170968086362616849, + 306706920248086968, + 4382856058195592988, + 1226950348108880303, + ]), + Fq::from_montgomery_limbs([ + 3093606516563139647, + 4131257826299546810, + 10588085520003095457, + 1310373646887997506, + ]), + ]), + ], + }, + optimized_arc: OptimizedArcMatrix::<39, 5, 195>::new_from_known([ + Fq::from_montgomery_limbs([ + 9886223877583555338, + 2726526174642559934, + 4587790518566470505, + 576729411659255749, + ]), + Fq::from_montgomery_limbs([ + 8635683872171027649, + 6178568763530680712, + 4049298017970875225, + 1010899895527016760, + ]), + Fq::from_montgomery_limbs([ + 4386287284362214114, + 15794275297560972982, + 13426231751965312445, + 1202171528338027358, + ]), + Fq::from_montgomery_limbs([ + 748088700594287215, + 1472010505444622065, + 17517940238534715767, + 284646916897302179, + ]), + Fq::from_montgomery_limbs([ + 10279507610927218934, + 8427605231324569630, + 5256766482183491681, + 599767801296570400, + ]), + Fq::from_montgomery_limbs([ + 5616532683870270019, + 16714573776517987780, + 2780158541662869274, + 82005381951989400, + ]), + Fq::from_montgomery_limbs([ + 628047193644056282, + 3081927050412275131, + 16607349608647881262, + 723666033729227034, + ]), + Fq::from_montgomery_limbs([ + 4014053105906402474, + 8516064025130570203, + 16439212471763340654, + 1066408903228028504, + ]), + Fq::from_montgomery_limbs([ + 3781775891997454435, + 16784197273788891439, + 15993490775706321548, + 1246974369195687342, + ]), + Fq::from_montgomery_limbs([ + 13315871439997102610, + 1360174578976506509, + 1935727712649190133, + 888928512483410116, + ]), + Fq::from_montgomery_limbs([ + 8976641770861237410, + 6687451940339132521, + 18044907108310696377, + 1207869807557250559, + ]), + Fq::from_montgomery_limbs([ + 4528878922761055500, + 7463187218610955446, + 4533754848507645556, + 35071527712858390, + ]), + Fq::from_montgomery_limbs([ + 2054133897613963099, + 8179564031063470525, + 1531556284029346638, + 874298192527556148, + ]), + Fq::from_montgomery_limbs([ + 18305580017782407596, + 2150793914184610589, + 17311607174845242499, + 959373557899881125, + ]), + Fq::from_montgomery_limbs([ + 11483900964553043288, + 12487129025031613244, + 15391908241276224492, + 269335905993702128, + ]), + Fq::from_montgomery_limbs([ + 8338971145620331245, + 12372781419517678375, + 2199283600481834995, + 349132078387032325, + ]), + Fq::from_montgomery_limbs([ + 16711498854962897180, + 964757925282058102, + 2534475787702313401, + 879174178299686832, + ]), + Fq::from_montgomery_limbs([ + 9948612635577575267, + 10310004629375851550, + 14569008704673249814, + 698796675030817938, + ]), + Fq::from_montgomery_limbs([ + 11983101385647491113, + 6756494718617323834, + 3986787822213493305, + 810568397631777742, + ]), + Fq::from_montgomery_limbs([ + 263703597816264419, + 5391923373962277868, + 8069762938958691329, + 167001460324522424, + ]), + Fq::from_montgomery_limbs([ + 12719698031922087137, + 3635206538516773241, + 14946573674542408006, + 904022619675467349, + ]), + Fq::from_montgomery_limbs([ + 6762216158719169172, + 9642199571024567935, + 5142823812984968700, + 1291046148927292666, + ]), + Fq::from_montgomery_limbs([ + 16680204203505507730, + 8087548591244649631, + 15438619206653090081, + 1223574451283768225, + ]), + Fq::from_montgomery_limbs([ + 15843265781989514164, + 11764842050278291695, + 5504272762074655066, + 1332848573377839351, + ]), + Fq::from_montgomery_limbs([ + 14629863041087566865, + 13982939885426451475, + 4404573463578858817, + 228759527459751766, + ]), + Fq::from_montgomery_limbs([ + 5809286761889033537, + 11277370821793444978, + 3107117479578979614, + 305735955848689987, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 13948409934814415504, + 9820154694698383592, + 15339478710638889187, + 228350902630534490, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9065604528638698957, + 3194171905752976735, + 3352166936878863002, + 1231275645191263862, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 8579200991377095094, + 9015821969914095981, + 3670786722209097686, + 925402881763579823, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11761775895269121220, + 12572917397999688032, + 10698111778021992718, + 739030648247632040, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 1406476064536236033, + 9641904169359584691, + 209897974740814668, + 1004730517253795328, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 18342895263686664503, + 17441455493733274041, + 5057199659823690304, + 1191886919996393979, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 18290582194527069827, + 6852353546873280582, + 14232314971261025505, + 754530050701193486, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6721150425319195661, + 13696483494608803551, + 14639895569983779179, + 190432279900459470, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2285783420521743219, + 14591994399938496304, + 12535886408060618378, + 501101710489306684, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7822724896156552074, + 7689777522145170361, + 9730977649721376401, + 311055255784537528, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 1834958024306476590, + 16605000872934730848, + 8734772715942251355, + 1026168817960127241, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5790287081621506475, + 18067297368696384877, + 1971894623462079455, + 497112957651892314, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 8621725523835646269, + 12965774417410118256, + 14706095127353190822, + 1142857683996139025, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 15741284293667530319, + 12915384592541106208, + 10337602748724507139, + 621400944646732378, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10418600921631639086, + 13969232505211882397, + 6670084530256782375, + 589250133235990401, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 13301798549602548743, + 5096901969148881844, + 14446280392699573069, + 437782466408137787, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 14260778386751756941, + 15721044723566323721, + 9992114336939362025, + 1127453549788190537, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9374740633145639151, + 2749992728162535287, + 324605534042342541, + 875415928381457928, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 267437928690707389, + 15443945850723586497, + 12627722626447870588, + 76078095185201612, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10923993363806369263, + 18267784178840739395, + 14630481450219570438, + 378947118067140053, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11403976482284459978, + 16272983986590444793, + 3765503922077751896, + 79364539722273290, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11448721382876703681, + 14847931759131246244, + 7128092965784075415, + 180922588002186450, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12703693405537318683, + 17809616441104653297, + 1356025434738010042, + 678042696111256776, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 1581134933636608728, + 8974334562566747609, + 13981094886159927949, + 879338632538017255, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 13448202253461902078, + 6113850066861673560, + 8363760165130703945, + 430895863395699323, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11364646780735898548, + 18310352822657651209, + 1715448934469054774, + 373623735103410086, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5160483194403952864, + 5269789810582188597, + 7949343741254368028, + 648244985265401351, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2578613260896705768, + 16973829270463026541, + 1007269524128147481, + 588832280601996335, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 18113257874564708980, + 4260053189158561988, + 17013073166096369676, + 79169829782754517, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11433643047469980018, + 1276670802646402384, + 7225445039450827835, + 1320607862737647658, + ]), + Fq::from_montgomery_limbs([ + 9049650314779674715, + 15332775679178116922, + 10916059016321665268, + 1115159218126791192, + ]), + Fq::from_montgomery_limbs([ + 5320499112936763732, + 11250539854586634824, + 12063947087263213252, + 710935487070228339, + ]), + Fq::from_montgomery_limbs([ + 18379608258942880321, + 15727113804916673274, + 10498320535108511002, + 845002076776323646, + ]), + Fq::from_montgomery_limbs([ + 6828593483180812035, + 1682481325156526923, + 14049047336459608184, + 1126148273021080778, + ]), + Fq::from_montgomery_limbs([ + 3872917422679565944, + 1271915972458656550, + 1092693023912110895, + 1298968277402891756, + ]), + Fq::from_montgomery_limbs([ + 7814132502258843917, + 8078742423972593556, + 8536158594561933049, + 191277843487617954, + ]), + Fq::from_montgomery_limbs([ + 5652311561512870887, + 16495461651672765449, + 11098657231551158518, + 493087321946801171, + ]), + Fq::from_montgomery_limbs([ + 6368409936062697439, + 792796763844864197, + 5610460501625398581, + 546867399856191995, + ]), + Fq::from_montgomery_limbs([ + 3038217149528838505, + 8627484827600343283, + 7414393357134479493, + 985381996389905690, + ]), + Fq::from_montgomery_limbs([ + 14953970136252134871, + 295452924685135549, + 11287279099077480718, + 617093465173114131, + ]), + Fq::from_montgomery_limbs([ + 140435627222783551, + 17855535656574994648, + 5022512547318532764, + 473386213985532003, + ]), + Fq::from_montgomery_limbs([ + 7030554896034226352, + 6441059691989760702, + 581099786512472761, + 1269259459863271622, + ]), + Fq::from_montgomery_limbs([ + 6770052323275442396, + 12901743183408121797, + 13004549993560303547, + 969914125748537569, + ]), + Fq::from_montgomery_limbs([ + 11435239377991792553, + 14044046789306606033, + 11369816462011584822, + 1239930404010674345, + ]), + Fq::from_montgomery_limbs([ + 2621636762951244377, + 7758290588105338214, + 14625731574391580682, + 7696703746211481, + ]), + Fq::from_montgomery_limbs([ + 8270493924131469556, + 15946263820341678216, + 6122109191607485742, + 1119062509985100783, + ]), + Fq::from_montgomery_limbs([ + 11252124749266599346, + 8413749501404755931, + 9936257142296575431, + 189818330075783365, + ]), + Fq::from_montgomery_limbs([ + 1537275707366966513, + 2232381660897701103, + 2870196216416932989, + 1271177660936312287, + ]), + Fq::from_montgomery_limbs([ + 1398814984843324301, + 15240858180305901997, + 14386262707998656254, + 1102388553837536368, + ]), + ]), } } diff --git a/poseidon377/src/params/rate_5.rs b/poseidon377/src/params/rate_5.rs index cab8fbe..178118f 100644 --- a/poseidon377/src/params/rate_5.rs +++ b/poseidon377/src/params/rate_5.rs @@ -8,23 +8,5308 @@ use poseidon_parameters::v1::{ pub const fn rate_5() -> PoseidonParameters<6, 5, 36, 25, 39, 6, 234, 31> { PoseidonParameters { M: 128, - arc: ArcMatrix::<39, 6, 234>::new_from_known([Fq::from_montgomery_limbs([11114527869315019992, 204777424233041404, 11091912519069240090, 121969426625488706]), Fq::from_montgomery_limbs([11602548353808217299, 6197238791893869094, 15622579320964543388, 1298930792120594487]), Fq::from_montgomery_limbs([838896996119702820, 9307552859605174720, 8035142733069793771, 274230695041989171]), Fq::from_montgomery_limbs([3026923182969617970, 17802669379857452552, 12317599963821296502, 1025681681724348483]), Fq::from_montgomery_limbs([5608950751956253759, 13524340746668180438, 15318090696011006995, 777019565914500344]), Fq::from_montgomery_limbs([1158035626778037273, 17664260243497899213, 16296355254226759288, 950557495952381678]), Fq::from_montgomery_limbs([11235491782021601934, 3148198093287396523, 17540068057551648414, 246938399961631601]), Fq::from_montgomery_limbs([17389082769676787279, 4715116371725704005, 680633748837086801, 1023507596971258305]), Fq::from_montgomery_limbs([7398967334233665984, 13695483063991186800, 18171031240540141567, 1071188377250033509]), Fq::from_montgomery_limbs([8901013324099486427, 14221538804433703579, 421845258270117661, 1118364576196477055]), Fq::from_montgomery_limbs([3792995620986947754, 8295286409031689804, 7023787899825757992, 899023674461718667]), Fq::from_montgomery_limbs([8793784762096018942, 15222981485936247095, 17829285903963587033, 104381350073974926]), Fq::from_montgomery_limbs([11268502072074030331, 4494658873172678747, 10565307326465463378, 784696444351308107]), Fq::from_montgomery_limbs([13330824150800116849, 4890131204868069348, 16795432331983276560, 678123243378284364]), Fq::from_montgomery_limbs([16154775053781645033, 5239747136963640569, 16611876759537507645, 759623577554638126]), Fq::from_montgomery_limbs([8392188723943358220, 16791142993973140668, 13297749232586734563, 426701908934618073]), Fq::from_montgomery_limbs([17606532937509352288, 2853753027669231277, 1878611917293492305, 643977045852461225]), Fq::from_montgomery_limbs([5784332265294899224, 10677876800438676900, 18301919197560353192, 1242300655560067148]), Fq::from_montgomery_limbs([11412543805884713089, 4404535555399600518, 4605611364617586616, 706261397170793623]), Fq::from_montgomery_limbs([2724614443579353257, 12190950292326203757, 12944786940879400957, 90707148364678769]), Fq::from_montgomery_limbs([16664686769040599810, 7492639236725157146, 1787480043672337070, 1043615315016757716]), Fq::from_montgomery_limbs([4392261116480034202, 16508253691140740970, 1257682754845069496, 1301148167322522764]), Fq::from_montgomery_limbs([139213556258184346, 16303671450556136664, 10342805884525342231, 508792166529776861]), Fq::from_montgomery_limbs([14643711485787161846, 5395142180975966192, 12467589421402803020, 144762579288366866]), Fq::from_montgomery_limbs([15255437222491521014, 14721462158275437977, 2057221655333534074, 1325734657361576891]), Fq::from_montgomery_limbs([10286355773254745653, 8339495471482876116, 7453999146298511805, 300469360378533737]), Fq::from_montgomery_limbs([2229249064542236808, 3252881241602061127, 17948673955112458282, 251981777265729122]), Fq::from_montgomery_limbs([1422075247142054873, 8352700063552546507, 3488191142699771311, 539185901306414217]), Fq::from_montgomery_limbs([12740149804027925426, 5586599109404648568, 8527372678942371978, 115816006301850856]), Fq::from_montgomery_limbs([6406078249694103685, 13837513268450501788, 17900428335249812847, 459347554819743617]), Fq::from_montgomery_limbs([456851906250247004, 7370389193990924655, 1807458787636143704, 398667578735753852]), Fq::from_montgomery_limbs([9788417460696232352, 5540502179845655224, 11753539559261255021, 1240756247017913507]), Fq::from_montgomery_limbs([14537927489871028819, 8847897852622601733, 7522585085117894620, 375913426199509068]), Fq::from_montgomery_limbs([14308316144026398062, 8381587303995226137, 14032256210407832529, 689401812725544360]), Fq::from_montgomery_limbs([13627669936560791680, 15960253582647842471, 10281350312743054371, 150904336199250478]), Fq::from_montgomery_limbs([5265938544355635125, 14011142295917522514, 3457190839889849022, 965417711506858707]), Fq::from_montgomery_limbs([16926111367909514992, 15173362371822436547, 14933443732208301060, 434526341180358604]), Fq::from_montgomery_limbs([14967648454927618569, 3291387031545538855, 8588581828915048287, 792649357850563702]), Fq::from_montgomery_limbs([15353334048989602273, 17774561716206146119, 15636104655753091025, 1121698680267776671]), Fq::from_montgomery_limbs([7352303644457020849, 11873784571663633568, 14627146015402136109, 1299084319993956489]), Fq::from_montgomery_limbs([16915421385818843283, 6574617383150910264, 11422646729677132251, 929867690867770500]), Fq::from_montgomery_limbs([2727877432502627942, 15580341544991113874, 3099990664581009583, 1240423234600344359]), Fq::from_montgomery_limbs([14109846450233510521, 14674455181378475527, 1052605710857317529, 1170659366228378647]), Fq::from_montgomery_limbs([1487646680354896463, 4928492219250082356, 5905478662916155907, 544460360269702126]), Fq::from_montgomery_limbs([6341346323512196011, 5734973448691058326, 7525099077854354763, 538464447227753960]), Fq::from_montgomery_limbs([2970148736135554232, 8050550381279637505, 12092286293721047612, 120114654914049590]), Fq::from_montgomery_limbs([17316363606963256567, 5533183240747888359, 585663312963257979, 139248346646491863]), Fq::from_montgomery_limbs([10174847279006068180, 2997987744513078474, 10464913671214968471, 524965683820736700]), Fq::from_montgomery_limbs([54341264868687362, 5421004392946502713, 747264896093234142, 211411280351915374]), Fq::from_montgomery_limbs([5185489921536036071, 4704724361069451071, 4676129525140851232, 1120503850587310053]), Fq::from_montgomery_limbs([5188148333232019565, 9844624880738531087, 11083931443628660795, 48712959222331590]), Fq::from_montgomery_limbs([18132794403501755308, 4996277675320572821, 8426233139227882210, 1136120772510480448]), Fq::from_montgomery_limbs([6688066783162319874, 16812397130378746446, 1563788939072390863, 94078802559039860]), Fq::from_montgomery_limbs([7277685347797685095, 16873547601164190596, 14751852483076367538, 14675244398420571]), Fq::from_montgomery_limbs([10079144247912409743, 8202707283781100239, 14357029383013329671, 1339785338742424059]), Fq::from_montgomery_limbs([9634622379571234742, 10124148039561860757, 12959569757638734172, 595623221777036788]), Fq::from_montgomery_limbs([12438115909232101952, 6692144523221973376, 98330004458373230, 1289698894538748039]), Fq::from_montgomery_limbs([12584838405775095951, 2233721579825914515, 4679507125597853910, 1005456515702813230]), Fq::from_montgomery_limbs([3938302556839502700, 9759499277811028830, 3296175630346274937, 981342338929693494]), Fq::from_montgomery_limbs([13584588304331907697, 14901744669564308257, 10189694356059299380, 146229118527659864]), Fq::from_montgomery_limbs([7977203115766932089, 5348595991272040666, 7916441407055787565, 414015970121354410]), Fq::from_montgomery_limbs([6344869167182666748, 87274177081813667, 3736796951764034882, 288116208326542090]), Fq::from_montgomery_limbs([6782489206655080598, 619325409304332178, 17888946015733998246, 1225153807687734600]), Fq::from_montgomery_limbs([2843050123299780857, 1857078695470833828, 13790121543731752592, 415443237864035468]), Fq::from_montgomery_limbs([8596983925472337433, 7326755327579826593, 12756860599564365858, 584181157037447809]), Fq::from_montgomery_limbs([6624979411473108702, 17481608711835432073, 9326170883700217913, 284274034447147537]), Fq::from_montgomery_limbs([13805074074198365820, 16654885628813400888, 11514371967468509966, 343666476001683468]), Fq::from_montgomery_limbs([13412135478858616067, 17972587362145489837, 3471900644097496495, 1303815283631151979]), Fq::from_montgomery_limbs([5393982013204945472, 2134584020773499203, 673466067189783026, 383197328076308992]), Fq::from_montgomery_limbs([12690627402887821729, 10714862615705492405, 1068799421694466319, 1005549471897715563]), Fq::from_montgomery_limbs([2794121834599689269, 9403898257934234871, 15645249730625359588, 717133247159915483]), Fq::from_montgomery_limbs([3750258937835721096, 2056713754904073328, 13343956241265388204, 978687562686928642]), Fq::from_montgomery_limbs([6693505246665395198, 321305738310940343, 8242276846147342531, 437988437080106004]), Fq::from_montgomery_limbs([13067453044702788796, 16549020754244348848, 14781963588087090141, 661082564029228628]), Fq::from_montgomery_limbs([17540644026388671794, 8922891784689421140, 9379310092907018870, 765574007581740165]), Fq::from_montgomery_limbs([17168415590631158212, 4967864494403905256, 8557026071391060461, 1317676192546642661]), Fq::from_montgomery_limbs([15849602569050873376, 937817756067670930, 9256527416398591608, 860235003543784933]), Fq::from_montgomery_limbs([7543632918105704930, 12541439592576801019, 13144951089707956772, 41901740621632050]), Fq::from_montgomery_limbs([6730944509314595369, 6308132304102632805, 9824188815073657306, 947447793188743941]), Fq::from_montgomery_limbs([8027042707746962490, 11823228291757902961, 13058185285098764358, 336308269362966457]), Fq::from_montgomery_limbs([17668761980666590381, 916900473222809342, 9032902696647999656, 1206798077709834757]), Fq::from_montgomery_limbs([2575943430919555647, 6982422138755698722, 17906452816315642240, 1040285465480518609]), Fq::from_montgomery_limbs([4676245288580428747, 1286234536026906032, 15834455733024512963, 173462824491942276]), Fq::from_montgomery_limbs([14308731880491479014, 10228826088867441356, 15499426016798380851, 1315964678542897961]), Fq::from_montgomery_limbs([6124462188383628200, 13994025204959010105, 2282493343669790508, 1065454428927664041]), Fq::from_montgomery_limbs([988926009518969200, 15417015929087482085, 5998393954402084482, 540400810650613669]), Fq::from_montgomery_limbs([5764104729040907699, 2863356645440240472, 9968438238837920675, 633210980814249702]), Fq::from_montgomery_limbs([10763147411954484876, 4870204607771977448, 6480512614473978867, 683494642222622007]), Fq::from_montgomery_limbs([4440852407455748277, 8762659822349541955, 18263541095190090147, 585043470445066748]), Fq::from_montgomery_limbs([16911785709988001751, 3581411532501811046, 1478440133608885243, 1164133149174128766]), Fq::from_montgomery_limbs([1426558755494224529, 12516949196047728033, 17132752269246428290, 356208126695477134]), Fq::from_montgomery_limbs([14896569372479444141, 1449669928198367982, 12457553693255423792, 902793672204828469]), Fq::from_montgomery_limbs([3369226999454999348, 11158810537103910265, 2808006375302756684, 719861372102939033]), Fq::from_montgomery_limbs([3246518112410208054, 13944200025301723446, 764003656536121000, 81035000333546312]), Fq::from_montgomery_limbs([480604143483617458, 15146610571181935768, 10342031106972296681, 321939937748541484]), Fq::from_montgomery_limbs([3823315055653922623, 1544133407778019995, 8339678284115967093, 340405582859069416]), Fq::from_montgomery_limbs([14521487749042353090, 2741200029829353725, 15404416537140680175, 224317571319525964]), Fq::from_montgomery_limbs([9111107875572394601, 14812080039988879021, 11740909323457275498, 1142849951174245079]), Fq::from_montgomery_limbs([6315394863492521922, 15290263181571711160, 8361458214310627912, 1120819345406699978]), Fq::from_montgomery_limbs([7541199882669497715, 686266139368081655, 3486408502495110410, 305571836806477895]), Fq::from_montgomery_limbs([11194602393992127889, 4823164490358819269, 2963098888089596977, 127467430759375185]), Fq::from_montgomery_limbs([13401323458715176749, 7526519102807969052, 11500838828688844175, 593796521014294359]), Fq::from_montgomery_limbs([11177320531756391055, 4080502600305034702, 2571892269998531885, 231632967099830080]), Fq::from_montgomery_limbs([6149939798770351609, 18287517033582086432, 5338242308958263460, 328048786757923732]), Fq::from_montgomery_limbs([15458540156643766751, 1400997897599319292, 7413209173172832967, 100478538984542434]), Fq::from_montgomery_limbs([15303231637131188474, 12210183127521607378, 16044977891049973821, 772905068623323043]), Fq::from_montgomery_limbs([10785654084122827601, 2211259386857104245, 16649012282872525368, 102071913196144291]), Fq::from_montgomery_limbs([2881174213450719659, 12014311740982782554, 12475890147035428875, 1060652822280359969]), Fq::from_montgomery_limbs([5168530618588372608, 12645871097945809310, 12679814118712019422, 757227039744328626]), Fq::from_montgomery_limbs([16723583453861051889, 13217434832318564597, 17167491729232777306, 750899259017645156]), Fq::from_montgomery_limbs([11975166328753770827, 5021170043599009847, 8130600622535160737, 1210833522054518385]), Fq::from_montgomery_limbs([11828331664533985829, 5744074093878888180, 13572294236110601484, 741336438516605705]), Fq::from_montgomery_limbs([9092803352234031294, 16991861971006998540, 12590210254184326397, 163020812219371078]), Fq::from_montgomery_limbs([15150825267514654715, 7582420113892720781, 11021538006069969553, 514128026898157287]), Fq::from_montgomery_limbs([257730274965307694, 15941247979209339081, 12550718099618824836, 926747662553501853]), Fq::from_montgomery_limbs([16021060490791077863, 18399937961097236925, 12479381244109581994, 958161696800711416]), Fq::from_montgomery_limbs([5656070927198127166, 13673864766172609613, 7854541344260335717, 433926247460842256]), Fq::from_montgomery_limbs([3081498096075015625, 5114063565662711844, 6016747140135578647, 200080044486646757]), Fq::from_montgomery_limbs([8668474263754820542, 5150418979667712870, 671591932121595684, 387641243292135089]), Fq::from_montgomery_limbs([9867452618101888436, 9573741750129271560, 11870983264768155164, 672361345937806490]), Fq::from_montgomery_limbs([2794280237383234509, 8511976920647235700, 12240900835121281355, 5009064961478580]), Fq::from_montgomery_limbs([12481235113884027566, 5693342786405429686, 2966752082111199656, 878902670166036876]), Fq::from_montgomery_limbs([14240267055971916647, 10396848562787560462, 5518035894864045572, 1179757559875500073]), Fq::from_montgomery_limbs([14962737666094847614, 10739908350874416157, 4895620174233055664, 321666060863471221]), Fq::from_montgomery_limbs([13445218619283341504, 5092610038400904148, 2968853296034188758, 835336201072079364]), Fq::from_montgomery_limbs([10233520240960919680, 5959452117994239475, 16491909337703133675, 891169556062643417]), Fq::from_montgomery_limbs([2834888386861055650, 7604409413887743592, 13030269578665703653, 401509353262871810]), Fq::from_montgomery_limbs([2704145273060684739, 1774123728738332116, 4451847378072935255, 539946861082459083]), Fq::from_montgomery_limbs([10338036189104724495, 5463305924257293228, 7871975511799681863, 487399285329040504]), Fq::from_montgomery_limbs([10282365810457753854, 4875136836869467005, 8167065600132017137, 612538811597081600]), Fq::from_montgomery_limbs([11956552275263932784, 2910596066147194639, 1653383919024312564, 917094813414419045]), Fq::from_montgomery_limbs([7847733681848392968, 17061053188234229069, 4327647852405514270, 201342973946798656]), Fq::from_montgomery_limbs([12402208752860149978, 5942639276189211897, 8650838259976493487, 93208955821879002]), Fq::from_montgomery_limbs([4359686047010863164, 1740657266406964854, 14400992892832573055, 600962517221943370]), Fq::from_montgomery_limbs([7871068409103488505, 12092947390480615881, 15236005069504836910, 1219304791403246439]), Fq::from_montgomery_limbs([2331767746054493290, 15439688574017229593, 2624671321035938496, 196664992671490503]), Fq::from_montgomery_limbs([6984766032236094336, 4199333161186836907, 6966733218962904660, 828131141266688191]), Fq::from_montgomery_limbs([18198492961367884206, 4075548382228621731, 7120869279096377960, 1112174665656009203]), Fq::from_montgomery_limbs([15188354035011941657, 1528404887014191153, 7644022124588184416, 656794906545005738]), Fq::from_montgomery_limbs([3703805022276205448, 11543145569483730813, 2304402099650902209, 823592775762696951]), Fq::from_montgomery_limbs([5142351354334489771, 10763765166551123043, 17450746794319983955, 960731944967042935]), Fq::from_montgomery_limbs([9913254528380233461, 6379270468481813387, 4130926869587487310, 610795545512520772]), Fq::from_montgomery_limbs([17898556710819263490, 7911122569140186326, 5516730092468208963, 664379227085230598]), Fq::from_montgomery_limbs([10616973143833638020, 17471880607893344822, 1128145204777244976, 337394536883295972]), Fq::from_montgomery_limbs([6661544590953239315, 15146532782491929291, 4755596764817736061, 545820584329603194]), Fq::from_montgomery_limbs([60806500798869004, 15736128091162195183, 5715198746929749021, 446174552562569645]), Fq::from_montgomery_limbs([5425873532207787318, 7464087132630945791, 5476589627464471901, 457480423296188143]), Fq::from_montgomery_limbs([9013993650827414321, 2350031823838640206, 11034300868488958302, 388596567345343643]), Fq::from_montgomery_limbs([6468567377966650967, 13590648265578243490, 15927509019046836214, 1009388599057851509]), Fq::from_montgomery_limbs([172016905197246847, 4035387207966104057, 211325131413472824, 1280387199047629664]), Fq::from_montgomery_limbs([7689408096630419675, 14584961804097092641, 1127508416484176885, 171502318968879609]), Fq::from_montgomery_limbs([9294855872887423209, 2005827460175726472, 16783720225277999740, 1082009637379471203]), Fq::from_montgomery_limbs([17016200436476421122, 12639043105124250806, 6582000444620236323, 508699111294885791]), Fq::from_montgomery_limbs([14725203266650011970, 13877962155717739891, 9513649462380557047, 642461852581041542]), Fq::from_montgomery_limbs([9787931489031096184, 7902836596315130785, 78997879637635390, 694120778750553576]), Fq::from_montgomery_limbs([17889392554162858882, 342322215215622448, 4493824746279576258, 312168636607671093]), Fq::from_montgomery_limbs([8140513347694048696, 12902641943590609873, 14714848264461122064, 1334963605704347157]), Fq::from_montgomery_limbs([13240131887967600078, 4407633827305492594, 15540185952445554130, 68037993503280515]), Fq::from_montgomery_limbs([10497793217508245191, 888682325286928065, 15370448865727419266, 733754751125624627]), Fq::from_montgomery_limbs([7740533852108866287, 17937493023745474932, 7773801956856873664, 504241230363210440]), Fq::from_montgomery_limbs([11961891551527755983, 17934542229987203026, 1103543868067501932, 687591834971622190]), Fq::from_montgomery_limbs([4127100989690868033, 8900195718942322911, 8226770865992890280, 985029699319544839]), Fq::from_montgomery_limbs([8227296419732771358, 16053490579720323354, 3654951897271203554, 1041079676339451632]), Fq::from_montgomery_limbs([8010548121403948512, 1275465025143581354, 2160211023041782235, 1189169285314754196]), Fq::from_montgomery_limbs([7530207327455925553, 5703304996823784226, 6548643313601850639, 827356749854490373]), Fq::from_montgomery_limbs([8316601172635772109, 12370440707468203196, 2939769182126754327, 753180078630191546]), Fq::from_montgomery_limbs([1143377137813871993, 17312593164165222318, 13705553886161524318, 941885898262021576]), Fq::from_montgomery_limbs([2112728878057216642, 3892761102962286658, 11417348492657537819, 735668726979811860]), Fq::from_montgomery_limbs([16782576336846005593, 3624413749987727914, 17968976872659530354, 487897895994872800]), Fq::from_montgomery_limbs([2484948819702640096, 5387963240223549977, 12687920099134049563, 883350989149367893]), Fq::from_montgomery_limbs([2858482485641078244, 2714093515401288033, 10455809282530923083, 751664744246651868]), Fq::from_montgomery_limbs([13617000549064485510, 4455000600207656914, 12777124443685982279, 512862262303044909]), Fq::from_montgomery_limbs([10570187078077272513, 15758514759732880612, 10690894638211880846, 465609433405901497]), Fq::from_montgomery_limbs([13236383050663721729, 12125155130370039041, 17253356752093433548, 232625893933277711]), Fq::from_montgomery_limbs([757191121931270989, 9786533229648281558, 7506322761488798421, 219466670969587686]), Fq::from_montgomery_limbs([11502539180279016827, 10976808592365411679, 14518853469755275814, 189651093510465237]), Fq::from_montgomery_limbs([7406145050063996705, 5433107506103268286, 4579059832807850831, 292839512595959393]), Fq::from_montgomery_limbs([242050570766254477, 16090627413832777930, 8503088905690880687, 844834299854905528]), Fq::from_montgomery_limbs([15972066311454464627, 12186767479971029668, 2392334865506711034, 617078040284954179]), Fq::from_montgomery_limbs([6210271142236644282, 6562036542656589429, 8025274330376993547, 762526438011303745]), Fq::from_montgomery_limbs([14753366313850022795, 5437791126426953356, 14245062222537079752, 150913805242227000]), Fq::from_montgomery_limbs([4807021976023523388, 16710746776370779475, 7473038774703206777, 172363022129389231]), Fq::from_montgomery_limbs([7874676450184753436, 2949898094916075783, 630009569754295782, 934898795281709342]), Fq::from_montgomery_limbs([2596733933911644291, 18211864913609597189, 669972403590796856, 1007790356294249019]), Fq::from_montgomery_limbs([8847285884406092349, 15810443671218046899, 781303087795509610, 175334333513747495]), Fq::from_montgomery_limbs([5611124786858759575, 7741270494085822523, 1204252626273700461, 831434023402198326]), Fq::from_montgomery_limbs([17024841864111709876, 10953422139928438, 7108870425049447348, 867000474059877218]), Fq::from_montgomery_limbs([17254710881283625253, 13619503273421245826, 16524833801283537459, 867017638279036320]), Fq::from_montgomery_limbs([3047689304468185211, 4544400348474807371, 3340017855267764578, 1089932391947236624]), Fq::from_montgomery_limbs([944987404414691783, 7324130194857674958, 14960179948619727115, 970290030783854962]), Fq::from_montgomery_limbs([8156639230679108247, 17055081218862987306, 3045209940380371184, 1025132464373554760]), Fq::from_montgomery_limbs([18254963138764984051, 12469634773213013819, 6758329371646179128, 349904494647494862]), Fq::from_montgomery_limbs([6795371985529952899, 17895939878048277876, 16632557265478858928, 387059669716455908]), Fq::from_montgomery_limbs([1318357771340990990, 12994552359569230566, 16705716531436318589, 763697275022015004]), Fq::from_montgomery_limbs([16465052430714272962, 13602787326604775722, 15751371050932720313, 138014004592597966]), Fq::from_montgomery_limbs([15825638165970940054, 9332212474670848079, 7882594046477316711, 290829412130665018]), Fq::from_montgomery_limbs([6362195239856311490, 4780237228875137807, 14782630189115640960, 704272740049173340]), Fq::from_montgomery_limbs([6559278659646672166, 6801036849757997540, 8000231443027455180, 656562251428831486]), Fq::from_montgomery_limbs([913435484006780831, 4148347286870754245, 15429895160407091360, 481581552746677021]), Fq::from_montgomery_limbs([3201617625256301842, 17959683725889804366, 12477328746136434592, 804751930331318023]), Fq::from_montgomery_limbs([8260268643263772682, 564990144864143113, 3819503561945572420, 589166794945624703]), Fq::from_montgomery_limbs([1468345889510338758, 12133722777278260983, 2225753638037198615, 983608944845547502]), Fq::from_montgomery_limbs([16667974706419349718, 12656033986103589392, 16476477987437165475, 328446031568129583]), Fq::from_montgomery_limbs([10832018960089362233, 15872202042944916671, 1542413852742137668, 856769655034004351]), Fq::from_montgomery_limbs([1248584674224513873, 10955885710253485131, 690903013823109733, 586986955236732406]), Fq::from_montgomery_limbs([7801056996972321718, 10731441130229109668, 1309104763613854723, 168690751356355485]), Fq::from_montgomery_limbs([863448993500386948, 12860067037622976516, 4075953973254780281, 1092718826088125370]), Fq::from_montgomery_limbs([4083664853681447299, 16294486273605038844, 13502684468641213280, 1231917587532627983]), Fq::from_montgomery_limbs([17640823880561253607, 17906844028095875120, 16598825086926066591, 1259468978780670799]), Fq::from_montgomery_limbs([3915912471832963150, 2878160052333009121, 5137491367309860490, 525959498882725072]), Fq::from_montgomery_limbs([624108744920628033, 7222337173749652537, 6177234009439253836, 1305879330650409183]), Fq::from_montgomery_limbs([4047186108818890838, 8293278676301284463, 45421248765572143, 11849077013826147]), Fq::from_montgomery_limbs([13734838437817111564, 14067107962177066014, 6283538344938866018, 943068615468766850]), Fq::from_montgomery_limbs([9459753653362225504, 13412221550119657532, 11719554885145159458, 1038210702444171410]), Fq::from_montgomery_limbs([17258590752825572441, 4422385439615665045, 10963985232294213328, 673097344483052623]), Fq::from_montgomery_limbs([4350910935437581306, 17071656780821887075, 17526744607642225290, 489524084357985818]), Fq::from_montgomery_limbs([8703107470067448452, 734592437454660319, 6370216058631913860, 984849913832896286]), Fq::from_montgomery_limbs([15847437253128917127, 13204151715277535095, 13151742340803361913, 492775982398767260]), Fq::from_montgomery_limbs([13378140148769271177, 11023068523390522139, 1729259508144916727, 998491139322015796]), Fq::from_montgomery_limbs([15868115462640964898, 5808184910810487816, 17891106563868657547, 1273423536878729280]), Fq::from_montgomery_limbs([17498572932499506726, 4915375148198704347, 16526318329827242193, 172885368041045335]), Fq::from_montgomery_limbs([12175858961476635194, 8395097384299796850, 16561947957716644135, 118811035529307344]), Fq::from_montgomery_limbs([1364632949773972783, 5616500288305274826, 2744828291285230257, 1337220218752536168]), Fq::from_montgomery_limbs([7125704632582034340, 2413935880315792634, 16253134495760827214, 1013353907442898755]), Fq::from_montgomery_limbs([9926413936648370716, 9286244748248440505, 5620697470790885637, 1050126432920929832]), Fq::from_montgomery_limbs([2286190222160729638, 1205027650655862007, 284571302335235840, 754838472987631454]), Fq::from_montgomery_limbs([18032942241472576701, 12877723516371231014, 5304401947346162660, 638292803799023432]), Fq::from_montgomery_limbs([1301734909908791963, 3999021096443686109, 8224194566860360743, 975889756225576945]), Fq::from_montgomery_limbs([13137758236377688944, 15164889622744579310, 9510882901247182860, 507443416341514201]), Fq::from_montgomery_limbs([7442629497476523514, 15402336932582436695, 12267702252685663951, 406181490859224216]), Fq::from_montgomery_limbs([3020913173034234370, 7615906519537783167, 14373843007930618441, 268952515824125262]), Fq::from_montgomery_limbs([8510711668693637739, 16478737597936355688, 4962621450185609628, 274948738817040348]), Fq::from_montgomery_limbs([175794307933344111, 2355200265651483892, 17868773626579092521, 52492857067069690]), Fq::from_montgomery_limbs([13918504549178190575, 13563258972352289042, 5310731325887509548, 465559440844068311])]), - mds: MdsMatrix::<6, 5, 36, 25>::new_from_known([Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976])]), + arc: ArcMatrix::<39, 6, 234>::new_from_known([ + Fq::from_montgomery_limbs([ + 11114527869315019992, + 204777424233041404, + 11091912519069240090, + 121969426625488706, + ]), + Fq::from_montgomery_limbs([ + 11602548353808217299, + 6197238791893869094, + 15622579320964543388, + 1298930792120594487, + ]), + Fq::from_montgomery_limbs([ + 838896996119702820, + 9307552859605174720, + 8035142733069793771, + 274230695041989171, + ]), + Fq::from_montgomery_limbs([ + 3026923182969617970, + 17802669379857452552, + 12317599963821296502, + 1025681681724348483, + ]), + Fq::from_montgomery_limbs([ + 5608950751956253759, + 13524340746668180438, + 15318090696011006995, + 777019565914500344, + ]), + Fq::from_montgomery_limbs([ + 1158035626778037273, + 17664260243497899213, + 16296355254226759288, + 950557495952381678, + ]), + Fq::from_montgomery_limbs([ + 11235491782021601934, + 3148198093287396523, + 17540068057551648414, + 246938399961631601, + ]), + Fq::from_montgomery_limbs([ + 17389082769676787279, + 4715116371725704005, + 680633748837086801, + 1023507596971258305, + ]), + Fq::from_montgomery_limbs([ + 7398967334233665984, + 13695483063991186800, + 18171031240540141567, + 1071188377250033509, + ]), + Fq::from_montgomery_limbs([ + 8901013324099486427, + 14221538804433703579, + 421845258270117661, + 1118364576196477055, + ]), + Fq::from_montgomery_limbs([ + 3792995620986947754, + 8295286409031689804, + 7023787899825757992, + 899023674461718667, + ]), + Fq::from_montgomery_limbs([ + 8793784762096018942, + 15222981485936247095, + 17829285903963587033, + 104381350073974926, + ]), + Fq::from_montgomery_limbs([ + 11268502072074030331, + 4494658873172678747, + 10565307326465463378, + 784696444351308107, + ]), + Fq::from_montgomery_limbs([ + 13330824150800116849, + 4890131204868069348, + 16795432331983276560, + 678123243378284364, + ]), + Fq::from_montgomery_limbs([ + 16154775053781645033, + 5239747136963640569, + 16611876759537507645, + 759623577554638126, + ]), + Fq::from_montgomery_limbs([ + 8392188723943358220, + 16791142993973140668, + 13297749232586734563, + 426701908934618073, + ]), + Fq::from_montgomery_limbs([ + 17606532937509352288, + 2853753027669231277, + 1878611917293492305, + 643977045852461225, + ]), + Fq::from_montgomery_limbs([ + 5784332265294899224, + 10677876800438676900, + 18301919197560353192, + 1242300655560067148, + ]), + Fq::from_montgomery_limbs([ + 11412543805884713089, + 4404535555399600518, + 4605611364617586616, + 706261397170793623, + ]), + Fq::from_montgomery_limbs([ + 2724614443579353257, + 12190950292326203757, + 12944786940879400957, + 90707148364678769, + ]), + Fq::from_montgomery_limbs([ + 16664686769040599810, + 7492639236725157146, + 1787480043672337070, + 1043615315016757716, + ]), + Fq::from_montgomery_limbs([ + 4392261116480034202, + 16508253691140740970, + 1257682754845069496, + 1301148167322522764, + ]), + Fq::from_montgomery_limbs([ + 139213556258184346, + 16303671450556136664, + 10342805884525342231, + 508792166529776861, + ]), + Fq::from_montgomery_limbs([ + 14643711485787161846, + 5395142180975966192, + 12467589421402803020, + 144762579288366866, + ]), + Fq::from_montgomery_limbs([ + 15255437222491521014, + 14721462158275437977, + 2057221655333534074, + 1325734657361576891, + ]), + Fq::from_montgomery_limbs([ + 10286355773254745653, + 8339495471482876116, + 7453999146298511805, + 300469360378533737, + ]), + Fq::from_montgomery_limbs([ + 2229249064542236808, + 3252881241602061127, + 17948673955112458282, + 251981777265729122, + ]), + Fq::from_montgomery_limbs([ + 1422075247142054873, + 8352700063552546507, + 3488191142699771311, + 539185901306414217, + ]), + Fq::from_montgomery_limbs([ + 12740149804027925426, + 5586599109404648568, + 8527372678942371978, + 115816006301850856, + ]), + Fq::from_montgomery_limbs([ + 6406078249694103685, + 13837513268450501788, + 17900428335249812847, + 459347554819743617, + ]), + Fq::from_montgomery_limbs([ + 456851906250247004, + 7370389193990924655, + 1807458787636143704, + 398667578735753852, + ]), + Fq::from_montgomery_limbs([ + 9788417460696232352, + 5540502179845655224, + 11753539559261255021, + 1240756247017913507, + ]), + Fq::from_montgomery_limbs([ + 14537927489871028819, + 8847897852622601733, + 7522585085117894620, + 375913426199509068, + ]), + Fq::from_montgomery_limbs([ + 14308316144026398062, + 8381587303995226137, + 14032256210407832529, + 689401812725544360, + ]), + Fq::from_montgomery_limbs([ + 13627669936560791680, + 15960253582647842471, + 10281350312743054371, + 150904336199250478, + ]), + Fq::from_montgomery_limbs([ + 5265938544355635125, + 14011142295917522514, + 3457190839889849022, + 965417711506858707, + ]), + Fq::from_montgomery_limbs([ + 16926111367909514992, + 15173362371822436547, + 14933443732208301060, + 434526341180358604, + ]), + Fq::from_montgomery_limbs([ + 14967648454927618569, + 3291387031545538855, + 8588581828915048287, + 792649357850563702, + ]), + Fq::from_montgomery_limbs([ + 15353334048989602273, + 17774561716206146119, + 15636104655753091025, + 1121698680267776671, + ]), + Fq::from_montgomery_limbs([ + 7352303644457020849, + 11873784571663633568, + 14627146015402136109, + 1299084319993956489, + ]), + Fq::from_montgomery_limbs([ + 16915421385818843283, + 6574617383150910264, + 11422646729677132251, + 929867690867770500, + ]), + Fq::from_montgomery_limbs([ + 2727877432502627942, + 15580341544991113874, + 3099990664581009583, + 1240423234600344359, + ]), + Fq::from_montgomery_limbs([ + 14109846450233510521, + 14674455181378475527, + 1052605710857317529, + 1170659366228378647, + ]), + Fq::from_montgomery_limbs([ + 1487646680354896463, + 4928492219250082356, + 5905478662916155907, + 544460360269702126, + ]), + Fq::from_montgomery_limbs([ + 6341346323512196011, + 5734973448691058326, + 7525099077854354763, + 538464447227753960, + ]), + Fq::from_montgomery_limbs([ + 2970148736135554232, + 8050550381279637505, + 12092286293721047612, + 120114654914049590, + ]), + Fq::from_montgomery_limbs([ + 17316363606963256567, + 5533183240747888359, + 585663312963257979, + 139248346646491863, + ]), + Fq::from_montgomery_limbs([ + 10174847279006068180, + 2997987744513078474, + 10464913671214968471, + 524965683820736700, + ]), + Fq::from_montgomery_limbs([ + 54341264868687362, + 5421004392946502713, + 747264896093234142, + 211411280351915374, + ]), + Fq::from_montgomery_limbs([ + 5185489921536036071, + 4704724361069451071, + 4676129525140851232, + 1120503850587310053, + ]), + Fq::from_montgomery_limbs([ + 5188148333232019565, + 9844624880738531087, + 11083931443628660795, + 48712959222331590, + ]), + Fq::from_montgomery_limbs([ + 18132794403501755308, + 4996277675320572821, + 8426233139227882210, + 1136120772510480448, + ]), + Fq::from_montgomery_limbs([ + 6688066783162319874, + 16812397130378746446, + 1563788939072390863, + 94078802559039860, + ]), + Fq::from_montgomery_limbs([ + 7277685347797685095, + 16873547601164190596, + 14751852483076367538, + 14675244398420571, + ]), + Fq::from_montgomery_limbs([ + 10079144247912409743, + 8202707283781100239, + 14357029383013329671, + 1339785338742424059, + ]), + Fq::from_montgomery_limbs([ + 9634622379571234742, + 10124148039561860757, + 12959569757638734172, + 595623221777036788, + ]), + Fq::from_montgomery_limbs([ + 12438115909232101952, + 6692144523221973376, + 98330004458373230, + 1289698894538748039, + ]), + Fq::from_montgomery_limbs([ + 12584838405775095951, + 2233721579825914515, + 4679507125597853910, + 1005456515702813230, + ]), + Fq::from_montgomery_limbs([ + 3938302556839502700, + 9759499277811028830, + 3296175630346274937, + 981342338929693494, + ]), + Fq::from_montgomery_limbs([ + 13584588304331907697, + 14901744669564308257, + 10189694356059299380, + 146229118527659864, + ]), + Fq::from_montgomery_limbs([ + 7977203115766932089, + 5348595991272040666, + 7916441407055787565, + 414015970121354410, + ]), + Fq::from_montgomery_limbs([ + 6344869167182666748, + 87274177081813667, + 3736796951764034882, + 288116208326542090, + ]), + Fq::from_montgomery_limbs([ + 6782489206655080598, + 619325409304332178, + 17888946015733998246, + 1225153807687734600, + ]), + Fq::from_montgomery_limbs([ + 2843050123299780857, + 1857078695470833828, + 13790121543731752592, + 415443237864035468, + ]), + Fq::from_montgomery_limbs([ + 8596983925472337433, + 7326755327579826593, + 12756860599564365858, + 584181157037447809, + ]), + Fq::from_montgomery_limbs([ + 6624979411473108702, + 17481608711835432073, + 9326170883700217913, + 284274034447147537, + ]), + Fq::from_montgomery_limbs([ + 13805074074198365820, + 16654885628813400888, + 11514371967468509966, + 343666476001683468, + ]), + Fq::from_montgomery_limbs([ + 13412135478858616067, + 17972587362145489837, + 3471900644097496495, + 1303815283631151979, + ]), + Fq::from_montgomery_limbs([ + 5393982013204945472, + 2134584020773499203, + 673466067189783026, + 383197328076308992, + ]), + Fq::from_montgomery_limbs([ + 12690627402887821729, + 10714862615705492405, + 1068799421694466319, + 1005549471897715563, + ]), + Fq::from_montgomery_limbs([ + 2794121834599689269, + 9403898257934234871, + 15645249730625359588, + 717133247159915483, + ]), + Fq::from_montgomery_limbs([ + 3750258937835721096, + 2056713754904073328, + 13343956241265388204, + 978687562686928642, + ]), + Fq::from_montgomery_limbs([ + 6693505246665395198, + 321305738310940343, + 8242276846147342531, + 437988437080106004, + ]), + Fq::from_montgomery_limbs([ + 13067453044702788796, + 16549020754244348848, + 14781963588087090141, + 661082564029228628, + ]), + Fq::from_montgomery_limbs([ + 17540644026388671794, + 8922891784689421140, + 9379310092907018870, + 765574007581740165, + ]), + Fq::from_montgomery_limbs([ + 17168415590631158212, + 4967864494403905256, + 8557026071391060461, + 1317676192546642661, + ]), + Fq::from_montgomery_limbs([ + 15849602569050873376, + 937817756067670930, + 9256527416398591608, + 860235003543784933, + ]), + Fq::from_montgomery_limbs([ + 7543632918105704930, + 12541439592576801019, + 13144951089707956772, + 41901740621632050, + ]), + Fq::from_montgomery_limbs([ + 6730944509314595369, + 6308132304102632805, + 9824188815073657306, + 947447793188743941, + ]), + Fq::from_montgomery_limbs([ + 8027042707746962490, + 11823228291757902961, + 13058185285098764358, + 336308269362966457, + ]), + Fq::from_montgomery_limbs([ + 17668761980666590381, + 916900473222809342, + 9032902696647999656, + 1206798077709834757, + ]), + Fq::from_montgomery_limbs([ + 2575943430919555647, + 6982422138755698722, + 17906452816315642240, + 1040285465480518609, + ]), + Fq::from_montgomery_limbs([ + 4676245288580428747, + 1286234536026906032, + 15834455733024512963, + 173462824491942276, + ]), + Fq::from_montgomery_limbs([ + 14308731880491479014, + 10228826088867441356, + 15499426016798380851, + 1315964678542897961, + ]), + Fq::from_montgomery_limbs([ + 6124462188383628200, + 13994025204959010105, + 2282493343669790508, + 1065454428927664041, + ]), + Fq::from_montgomery_limbs([ + 988926009518969200, + 15417015929087482085, + 5998393954402084482, + 540400810650613669, + ]), + Fq::from_montgomery_limbs([ + 5764104729040907699, + 2863356645440240472, + 9968438238837920675, + 633210980814249702, + ]), + Fq::from_montgomery_limbs([ + 10763147411954484876, + 4870204607771977448, + 6480512614473978867, + 683494642222622007, + ]), + Fq::from_montgomery_limbs([ + 4440852407455748277, + 8762659822349541955, + 18263541095190090147, + 585043470445066748, + ]), + Fq::from_montgomery_limbs([ + 16911785709988001751, + 3581411532501811046, + 1478440133608885243, + 1164133149174128766, + ]), + Fq::from_montgomery_limbs([ + 1426558755494224529, + 12516949196047728033, + 17132752269246428290, + 356208126695477134, + ]), + Fq::from_montgomery_limbs([ + 14896569372479444141, + 1449669928198367982, + 12457553693255423792, + 902793672204828469, + ]), + Fq::from_montgomery_limbs([ + 3369226999454999348, + 11158810537103910265, + 2808006375302756684, + 719861372102939033, + ]), + Fq::from_montgomery_limbs([ + 3246518112410208054, + 13944200025301723446, + 764003656536121000, + 81035000333546312, + ]), + Fq::from_montgomery_limbs([ + 480604143483617458, + 15146610571181935768, + 10342031106972296681, + 321939937748541484, + ]), + Fq::from_montgomery_limbs([ + 3823315055653922623, + 1544133407778019995, + 8339678284115967093, + 340405582859069416, + ]), + Fq::from_montgomery_limbs([ + 14521487749042353090, + 2741200029829353725, + 15404416537140680175, + 224317571319525964, + ]), + Fq::from_montgomery_limbs([ + 9111107875572394601, + 14812080039988879021, + 11740909323457275498, + 1142849951174245079, + ]), + Fq::from_montgomery_limbs([ + 6315394863492521922, + 15290263181571711160, + 8361458214310627912, + 1120819345406699978, + ]), + Fq::from_montgomery_limbs([ + 7541199882669497715, + 686266139368081655, + 3486408502495110410, + 305571836806477895, + ]), + Fq::from_montgomery_limbs([ + 11194602393992127889, + 4823164490358819269, + 2963098888089596977, + 127467430759375185, + ]), + Fq::from_montgomery_limbs([ + 13401323458715176749, + 7526519102807969052, + 11500838828688844175, + 593796521014294359, + ]), + Fq::from_montgomery_limbs([ + 11177320531756391055, + 4080502600305034702, + 2571892269998531885, + 231632967099830080, + ]), + Fq::from_montgomery_limbs([ + 6149939798770351609, + 18287517033582086432, + 5338242308958263460, + 328048786757923732, + ]), + Fq::from_montgomery_limbs([ + 15458540156643766751, + 1400997897599319292, + 7413209173172832967, + 100478538984542434, + ]), + Fq::from_montgomery_limbs([ + 15303231637131188474, + 12210183127521607378, + 16044977891049973821, + 772905068623323043, + ]), + Fq::from_montgomery_limbs([ + 10785654084122827601, + 2211259386857104245, + 16649012282872525368, + 102071913196144291, + ]), + Fq::from_montgomery_limbs([ + 2881174213450719659, + 12014311740982782554, + 12475890147035428875, + 1060652822280359969, + ]), + Fq::from_montgomery_limbs([ + 5168530618588372608, + 12645871097945809310, + 12679814118712019422, + 757227039744328626, + ]), + Fq::from_montgomery_limbs([ + 16723583453861051889, + 13217434832318564597, + 17167491729232777306, + 750899259017645156, + ]), + Fq::from_montgomery_limbs([ + 11975166328753770827, + 5021170043599009847, + 8130600622535160737, + 1210833522054518385, + ]), + Fq::from_montgomery_limbs([ + 11828331664533985829, + 5744074093878888180, + 13572294236110601484, + 741336438516605705, + ]), + Fq::from_montgomery_limbs([ + 9092803352234031294, + 16991861971006998540, + 12590210254184326397, + 163020812219371078, + ]), + Fq::from_montgomery_limbs([ + 15150825267514654715, + 7582420113892720781, + 11021538006069969553, + 514128026898157287, + ]), + Fq::from_montgomery_limbs([ + 257730274965307694, + 15941247979209339081, + 12550718099618824836, + 926747662553501853, + ]), + Fq::from_montgomery_limbs([ + 16021060490791077863, + 18399937961097236925, + 12479381244109581994, + 958161696800711416, + ]), + Fq::from_montgomery_limbs([ + 5656070927198127166, + 13673864766172609613, + 7854541344260335717, + 433926247460842256, + ]), + Fq::from_montgomery_limbs([ + 3081498096075015625, + 5114063565662711844, + 6016747140135578647, + 200080044486646757, + ]), + Fq::from_montgomery_limbs([ + 8668474263754820542, + 5150418979667712870, + 671591932121595684, + 387641243292135089, + ]), + Fq::from_montgomery_limbs([ + 9867452618101888436, + 9573741750129271560, + 11870983264768155164, + 672361345937806490, + ]), + Fq::from_montgomery_limbs([ + 2794280237383234509, + 8511976920647235700, + 12240900835121281355, + 5009064961478580, + ]), + Fq::from_montgomery_limbs([ + 12481235113884027566, + 5693342786405429686, + 2966752082111199656, + 878902670166036876, + ]), + Fq::from_montgomery_limbs([ + 14240267055971916647, + 10396848562787560462, + 5518035894864045572, + 1179757559875500073, + ]), + Fq::from_montgomery_limbs([ + 14962737666094847614, + 10739908350874416157, + 4895620174233055664, + 321666060863471221, + ]), + Fq::from_montgomery_limbs([ + 13445218619283341504, + 5092610038400904148, + 2968853296034188758, + 835336201072079364, + ]), + Fq::from_montgomery_limbs([ + 10233520240960919680, + 5959452117994239475, + 16491909337703133675, + 891169556062643417, + ]), + Fq::from_montgomery_limbs([ + 2834888386861055650, + 7604409413887743592, + 13030269578665703653, + 401509353262871810, + ]), + Fq::from_montgomery_limbs([ + 2704145273060684739, + 1774123728738332116, + 4451847378072935255, + 539946861082459083, + ]), + Fq::from_montgomery_limbs([ + 10338036189104724495, + 5463305924257293228, + 7871975511799681863, + 487399285329040504, + ]), + Fq::from_montgomery_limbs([ + 10282365810457753854, + 4875136836869467005, + 8167065600132017137, + 612538811597081600, + ]), + Fq::from_montgomery_limbs([ + 11956552275263932784, + 2910596066147194639, + 1653383919024312564, + 917094813414419045, + ]), + Fq::from_montgomery_limbs([ + 7847733681848392968, + 17061053188234229069, + 4327647852405514270, + 201342973946798656, + ]), + Fq::from_montgomery_limbs([ + 12402208752860149978, + 5942639276189211897, + 8650838259976493487, + 93208955821879002, + ]), + Fq::from_montgomery_limbs([ + 4359686047010863164, + 1740657266406964854, + 14400992892832573055, + 600962517221943370, + ]), + Fq::from_montgomery_limbs([ + 7871068409103488505, + 12092947390480615881, + 15236005069504836910, + 1219304791403246439, + ]), + Fq::from_montgomery_limbs([ + 2331767746054493290, + 15439688574017229593, + 2624671321035938496, + 196664992671490503, + ]), + Fq::from_montgomery_limbs([ + 6984766032236094336, + 4199333161186836907, + 6966733218962904660, + 828131141266688191, + ]), + Fq::from_montgomery_limbs([ + 18198492961367884206, + 4075548382228621731, + 7120869279096377960, + 1112174665656009203, + ]), + Fq::from_montgomery_limbs([ + 15188354035011941657, + 1528404887014191153, + 7644022124588184416, + 656794906545005738, + ]), + Fq::from_montgomery_limbs([ + 3703805022276205448, + 11543145569483730813, + 2304402099650902209, + 823592775762696951, + ]), + Fq::from_montgomery_limbs([ + 5142351354334489771, + 10763765166551123043, + 17450746794319983955, + 960731944967042935, + ]), + Fq::from_montgomery_limbs([ + 9913254528380233461, + 6379270468481813387, + 4130926869587487310, + 610795545512520772, + ]), + Fq::from_montgomery_limbs([ + 17898556710819263490, + 7911122569140186326, + 5516730092468208963, + 664379227085230598, + ]), + Fq::from_montgomery_limbs([ + 10616973143833638020, + 17471880607893344822, + 1128145204777244976, + 337394536883295972, + ]), + Fq::from_montgomery_limbs([ + 6661544590953239315, + 15146532782491929291, + 4755596764817736061, + 545820584329603194, + ]), + Fq::from_montgomery_limbs([ + 60806500798869004, + 15736128091162195183, + 5715198746929749021, + 446174552562569645, + ]), + Fq::from_montgomery_limbs([ + 5425873532207787318, + 7464087132630945791, + 5476589627464471901, + 457480423296188143, + ]), + Fq::from_montgomery_limbs([ + 9013993650827414321, + 2350031823838640206, + 11034300868488958302, + 388596567345343643, + ]), + Fq::from_montgomery_limbs([ + 6468567377966650967, + 13590648265578243490, + 15927509019046836214, + 1009388599057851509, + ]), + Fq::from_montgomery_limbs([ + 172016905197246847, + 4035387207966104057, + 211325131413472824, + 1280387199047629664, + ]), + Fq::from_montgomery_limbs([ + 7689408096630419675, + 14584961804097092641, + 1127508416484176885, + 171502318968879609, + ]), + Fq::from_montgomery_limbs([ + 9294855872887423209, + 2005827460175726472, + 16783720225277999740, + 1082009637379471203, + ]), + Fq::from_montgomery_limbs([ + 17016200436476421122, + 12639043105124250806, + 6582000444620236323, + 508699111294885791, + ]), + Fq::from_montgomery_limbs([ + 14725203266650011970, + 13877962155717739891, + 9513649462380557047, + 642461852581041542, + ]), + Fq::from_montgomery_limbs([ + 9787931489031096184, + 7902836596315130785, + 78997879637635390, + 694120778750553576, + ]), + Fq::from_montgomery_limbs([ + 17889392554162858882, + 342322215215622448, + 4493824746279576258, + 312168636607671093, + ]), + Fq::from_montgomery_limbs([ + 8140513347694048696, + 12902641943590609873, + 14714848264461122064, + 1334963605704347157, + ]), + Fq::from_montgomery_limbs([ + 13240131887967600078, + 4407633827305492594, + 15540185952445554130, + 68037993503280515, + ]), + Fq::from_montgomery_limbs([ + 10497793217508245191, + 888682325286928065, + 15370448865727419266, + 733754751125624627, + ]), + Fq::from_montgomery_limbs([ + 7740533852108866287, + 17937493023745474932, + 7773801956856873664, + 504241230363210440, + ]), + Fq::from_montgomery_limbs([ + 11961891551527755983, + 17934542229987203026, + 1103543868067501932, + 687591834971622190, + ]), + Fq::from_montgomery_limbs([ + 4127100989690868033, + 8900195718942322911, + 8226770865992890280, + 985029699319544839, + ]), + Fq::from_montgomery_limbs([ + 8227296419732771358, + 16053490579720323354, + 3654951897271203554, + 1041079676339451632, + ]), + Fq::from_montgomery_limbs([ + 8010548121403948512, + 1275465025143581354, + 2160211023041782235, + 1189169285314754196, + ]), + Fq::from_montgomery_limbs([ + 7530207327455925553, + 5703304996823784226, + 6548643313601850639, + 827356749854490373, + ]), + Fq::from_montgomery_limbs([ + 8316601172635772109, + 12370440707468203196, + 2939769182126754327, + 753180078630191546, + ]), + Fq::from_montgomery_limbs([ + 1143377137813871993, + 17312593164165222318, + 13705553886161524318, + 941885898262021576, + ]), + Fq::from_montgomery_limbs([ + 2112728878057216642, + 3892761102962286658, + 11417348492657537819, + 735668726979811860, + ]), + Fq::from_montgomery_limbs([ + 16782576336846005593, + 3624413749987727914, + 17968976872659530354, + 487897895994872800, + ]), + Fq::from_montgomery_limbs([ + 2484948819702640096, + 5387963240223549977, + 12687920099134049563, + 883350989149367893, + ]), + Fq::from_montgomery_limbs([ + 2858482485641078244, + 2714093515401288033, + 10455809282530923083, + 751664744246651868, + ]), + Fq::from_montgomery_limbs([ + 13617000549064485510, + 4455000600207656914, + 12777124443685982279, + 512862262303044909, + ]), + Fq::from_montgomery_limbs([ + 10570187078077272513, + 15758514759732880612, + 10690894638211880846, + 465609433405901497, + ]), + Fq::from_montgomery_limbs([ + 13236383050663721729, + 12125155130370039041, + 17253356752093433548, + 232625893933277711, + ]), + Fq::from_montgomery_limbs([ + 757191121931270989, + 9786533229648281558, + 7506322761488798421, + 219466670969587686, + ]), + Fq::from_montgomery_limbs([ + 11502539180279016827, + 10976808592365411679, + 14518853469755275814, + 189651093510465237, + ]), + Fq::from_montgomery_limbs([ + 7406145050063996705, + 5433107506103268286, + 4579059832807850831, + 292839512595959393, + ]), + Fq::from_montgomery_limbs([ + 242050570766254477, + 16090627413832777930, + 8503088905690880687, + 844834299854905528, + ]), + Fq::from_montgomery_limbs([ + 15972066311454464627, + 12186767479971029668, + 2392334865506711034, + 617078040284954179, + ]), + Fq::from_montgomery_limbs([ + 6210271142236644282, + 6562036542656589429, + 8025274330376993547, + 762526438011303745, + ]), + Fq::from_montgomery_limbs([ + 14753366313850022795, + 5437791126426953356, + 14245062222537079752, + 150913805242227000, + ]), + Fq::from_montgomery_limbs([ + 4807021976023523388, + 16710746776370779475, + 7473038774703206777, + 172363022129389231, + ]), + Fq::from_montgomery_limbs([ + 7874676450184753436, + 2949898094916075783, + 630009569754295782, + 934898795281709342, + ]), + Fq::from_montgomery_limbs([ + 2596733933911644291, + 18211864913609597189, + 669972403590796856, + 1007790356294249019, + ]), + Fq::from_montgomery_limbs([ + 8847285884406092349, + 15810443671218046899, + 781303087795509610, + 175334333513747495, + ]), + Fq::from_montgomery_limbs([ + 5611124786858759575, + 7741270494085822523, + 1204252626273700461, + 831434023402198326, + ]), + Fq::from_montgomery_limbs([ + 17024841864111709876, + 10953422139928438, + 7108870425049447348, + 867000474059877218, + ]), + Fq::from_montgomery_limbs([ + 17254710881283625253, + 13619503273421245826, + 16524833801283537459, + 867017638279036320, + ]), + Fq::from_montgomery_limbs([ + 3047689304468185211, + 4544400348474807371, + 3340017855267764578, + 1089932391947236624, + ]), + Fq::from_montgomery_limbs([ + 944987404414691783, + 7324130194857674958, + 14960179948619727115, + 970290030783854962, + ]), + Fq::from_montgomery_limbs([ + 8156639230679108247, + 17055081218862987306, + 3045209940380371184, + 1025132464373554760, + ]), + Fq::from_montgomery_limbs([ + 18254963138764984051, + 12469634773213013819, + 6758329371646179128, + 349904494647494862, + ]), + Fq::from_montgomery_limbs([ + 6795371985529952899, + 17895939878048277876, + 16632557265478858928, + 387059669716455908, + ]), + Fq::from_montgomery_limbs([ + 1318357771340990990, + 12994552359569230566, + 16705716531436318589, + 763697275022015004, + ]), + Fq::from_montgomery_limbs([ + 16465052430714272962, + 13602787326604775722, + 15751371050932720313, + 138014004592597966, + ]), + Fq::from_montgomery_limbs([ + 15825638165970940054, + 9332212474670848079, + 7882594046477316711, + 290829412130665018, + ]), + Fq::from_montgomery_limbs([ + 6362195239856311490, + 4780237228875137807, + 14782630189115640960, + 704272740049173340, + ]), + Fq::from_montgomery_limbs([ + 6559278659646672166, + 6801036849757997540, + 8000231443027455180, + 656562251428831486, + ]), + Fq::from_montgomery_limbs([ + 913435484006780831, + 4148347286870754245, + 15429895160407091360, + 481581552746677021, + ]), + Fq::from_montgomery_limbs([ + 3201617625256301842, + 17959683725889804366, + 12477328746136434592, + 804751930331318023, + ]), + Fq::from_montgomery_limbs([ + 8260268643263772682, + 564990144864143113, + 3819503561945572420, + 589166794945624703, + ]), + Fq::from_montgomery_limbs([ + 1468345889510338758, + 12133722777278260983, + 2225753638037198615, + 983608944845547502, + ]), + Fq::from_montgomery_limbs([ + 16667974706419349718, + 12656033986103589392, + 16476477987437165475, + 328446031568129583, + ]), + Fq::from_montgomery_limbs([ + 10832018960089362233, + 15872202042944916671, + 1542413852742137668, + 856769655034004351, + ]), + Fq::from_montgomery_limbs([ + 1248584674224513873, + 10955885710253485131, + 690903013823109733, + 586986955236732406, + ]), + Fq::from_montgomery_limbs([ + 7801056996972321718, + 10731441130229109668, + 1309104763613854723, + 168690751356355485, + ]), + Fq::from_montgomery_limbs([ + 863448993500386948, + 12860067037622976516, + 4075953973254780281, + 1092718826088125370, + ]), + Fq::from_montgomery_limbs([ + 4083664853681447299, + 16294486273605038844, + 13502684468641213280, + 1231917587532627983, + ]), + Fq::from_montgomery_limbs([ + 17640823880561253607, + 17906844028095875120, + 16598825086926066591, + 1259468978780670799, + ]), + Fq::from_montgomery_limbs([ + 3915912471832963150, + 2878160052333009121, + 5137491367309860490, + 525959498882725072, + ]), + Fq::from_montgomery_limbs([ + 624108744920628033, + 7222337173749652537, + 6177234009439253836, + 1305879330650409183, + ]), + Fq::from_montgomery_limbs([ + 4047186108818890838, + 8293278676301284463, + 45421248765572143, + 11849077013826147, + ]), + Fq::from_montgomery_limbs([ + 13734838437817111564, + 14067107962177066014, + 6283538344938866018, + 943068615468766850, + ]), + Fq::from_montgomery_limbs([ + 9459753653362225504, + 13412221550119657532, + 11719554885145159458, + 1038210702444171410, + ]), + Fq::from_montgomery_limbs([ + 17258590752825572441, + 4422385439615665045, + 10963985232294213328, + 673097344483052623, + ]), + Fq::from_montgomery_limbs([ + 4350910935437581306, + 17071656780821887075, + 17526744607642225290, + 489524084357985818, + ]), + Fq::from_montgomery_limbs([ + 8703107470067448452, + 734592437454660319, + 6370216058631913860, + 984849913832896286, + ]), + Fq::from_montgomery_limbs([ + 15847437253128917127, + 13204151715277535095, + 13151742340803361913, + 492775982398767260, + ]), + Fq::from_montgomery_limbs([ + 13378140148769271177, + 11023068523390522139, + 1729259508144916727, + 998491139322015796, + ]), + Fq::from_montgomery_limbs([ + 15868115462640964898, + 5808184910810487816, + 17891106563868657547, + 1273423536878729280, + ]), + Fq::from_montgomery_limbs([ + 17498572932499506726, + 4915375148198704347, + 16526318329827242193, + 172885368041045335, + ]), + Fq::from_montgomery_limbs([ + 12175858961476635194, + 8395097384299796850, + 16561947957716644135, + 118811035529307344, + ]), + Fq::from_montgomery_limbs([ + 1364632949773972783, + 5616500288305274826, + 2744828291285230257, + 1337220218752536168, + ]), + Fq::from_montgomery_limbs([ + 7125704632582034340, + 2413935880315792634, + 16253134495760827214, + 1013353907442898755, + ]), + Fq::from_montgomery_limbs([ + 9926413936648370716, + 9286244748248440505, + 5620697470790885637, + 1050126432920929832, + ]), + Fq::from_montgomery_limbs([ + 2286190222160729638, + 1205027650655862007, + 284571302335235840, + 754838472987631454, + ]), + Fq::from_montgomery_limbs([ + 18032942241472576701, + 12877723516371231014, + 5304401947346162660, + 638292803799023432, + ]), + Fq::from_montgomery_limbs([ + 1301734909908791963, + 3999021096443686109, + 8224194566860360743, + 975889756225576945, + ]), + Fq::from_montgomery_limbs([ + 13137758236377688944, + 15164889622744579310, + 9510882901247182860, + 507443416341514201, + ]), + Fq::from_montgomery_limbs([ + 7442629497476523514, + 15402336932582436695, + 12267702252685663951, + 406181490859224216, + ]), + Fq::from_montgomery_limbs([ + 3020913173034234370, + 7615906519537783167, + 14373843007930618441, + 268952515824125262, + ]), + Fq::from_montgomery_limbs([ + 8510711668693637739, + 16478737597936355688, + 4962621450185609628, + 274948738817040348, + ]), + Fq::from_montgomery_limbs([ + 175794307933344111, + 2355200265651483892, + 17868773626579092521, + 52492857067069690, + ]), + Fq::from_montgomery_limbs([ + 13918504549178190575, + 13563258972352289042, + 5310731325887509548, + 465559440844068311, + ]), + ]), + mds: MdsMatrix::<6, 5, 36, 25>::new_from_known([ + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + ]), alpha: Alpha::Exponent(17), - rounds: RoundNumbers {r_P: 31, r_F: 8}, + rounds: RoundNumbers { r_P: 31, r_F: 8 }, optimized_mds: OptimizedMdsMatrices { - M_hat: SquareMatrix::<5, 25>::new_from_known([Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976])]), - v: Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565])]), - w: Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565])]), - M_prime: SquareMatrix::<6, 36>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976])]), - M_doubleprime: SquareMatrix::<6, 36>::new_from_known([Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([15152119682022281684, 2079168917784381610, 8548836536267236340, 524962922610130041]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16770218796354446865, 6164915921600418774, 18434642018604219177, 984431242893424161]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12257484635811173124, 3332345693021229804, 9856107590709416500, 1159223252431020322]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9979132349322887614, 3961848182433907151, 8799570660063224410, 475862931364908156]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3872788615927669352, 15152509537124089722, 5205890896288656861, 1231307161030894178]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), - M_inverse: SquareMatrix::<6, 36>::new_from_known([Fq::from_montgomery_limbs([9423078532813425529, 2444734831186772378, 13312700987643289865, 1248785285043953466]), Fq::from_montgomery_limbs([17268489821349265988, 4381498102126941915, 18059594369778317098, 58369093700071757]), Fq::from_montgomery_limbs([4554828072642644132, 1444610657142044086, 17449887890871798968, 1155580816162940184]), Fq::from_montgomery_limbs([14700875084405105752, 9239241115023183874, 7789802599827561984, 594039389414401309]), Fq::from_montgomery_limbs([17369961549732213951, 17978420689641993214, 5737613384797227392, 899750828627372416]), Fq::from_montgomery_limbs([11810971497921864966, 13993073307646756902, 8362406159543098387, 1156913604397747244]), Fq::from_montgomery_limbs([17268489821349265988, 4381498102126941915, 18059594369778317098, 58369093700071757]), Fq::from_montgomery_limbs([11035226460624215086, 14239859242862966780, 1132467188784037199, 834550800812545516]), Fq::from_montgomery_limbs([16880054357686407084, 4825991163227954043, 6215044494445833070, 1088315875473995942]), Fq::from_montgomery_limbs([18168083839917324524, 16478236068428869610, 13105126087642640896, 34766978023081808]), Fq::from_montgomery_limbs([17825669542785881313, 12421462367159336603, 2878814310510077253, 503620314193006332]), Fq::from_montgomery_limbs([8217239731080607569, 6429369295863013371, 9835418190294938624, 157201591859370779]), Fq::from_montgomery_limbs([4554828072642644132, 1444610657142044086, 17449887890871798968, 1155580816162940184]), Fq::from_montgomery_limbs([16880054357686407084, 4825991163227954043, 6215044494445833070, 1088315875473995942]), Fq::from_montgomery_limbs([11485023460188927874, 2485551665474920570, 6640923664201453737, 128700539913813365]), Fq::from_montgomery_limbs([8823818330539404675, 14326485851202631671, 17961953298539513959, 284442003114632699]), Fq::from_montgomery_limbs([9085308543112959065, 2317720835922103388, 3188272186429413269, 623518145967541728]), Fq::from_montgomery_limbs([1228919753536764212, 8001001063597501895, 1883429940342590902, 229754754018256412]), Fq::from_montgomery_limbs([14700875084405105752, 9239241115023183874, 7789802599827561984, 594039389414401309]), Fq::from_montgomery_limbs([18168083839917324524, 16478236068428869610, 13105126087642640896, 34766978023081808]), Fq::from_montgomery_limbs([8823818330539404675, 14326485851202631671, 17961953298539513959, 284442003114632699]), Fq::from_montgomery_limbs([9493025027446580308, 5326008844078412686, 17968627192349153669, 636747921187750929]), Fq::from_montgomery_limbs([4719209488067015380, 3286149619947952216, 5381059733444658429, 751991172029274729]), Fq::from_montgomery_limbs([671599285952310028, 4063985053036137885, 9646938041918321080, 299288710064420029]), Fq::from_montgomery_limbs([17369961549732213951, 17978420689641993214, 5737613384797227392, 899750828627372416]), Fq::from_montgomery_limbs([17825669542785881313, 12421462367159336603, 2878814310510077253, 503620314193006332]), Fq::from_montgomery_limbs([9085308543112959065, 2317720835922103388, 3188272186429413269, 623518145967541728]), Fq::from_montgomery_limbs([4719209488067015380, 3286149619947952216, 5381059733444658429, 751991172029274729]), Fq::from_montgomery_limbs([6563574222345881967, 1281874181852671859, 11466642440831414650, 443077589787383810]), Fq::from_montgomery_limbs([2252784982698758221, 17647697801612484629, 3564381744461717162, 1112500262860291153]), Fq::from_montgomery_limbs([11810971497921864966, 13993073307646756902, 8362406159543098387, 1156913604397747244]), Fq::from_montgomery_limbs([8217239731080607569, 6429369295863013371, 9835418190294938624, 157201591859370779]), Fq::from_montgomery_limbs([1228919753536764212, 8001001063597501895, 1883429940342590902, 229754754018256412]), Fq::from_montgomery_limbs([671599285952310028, 4063985053036137885, 9646938041918321080, 299288710064420029]), Fq::from_montgomery_limbs([2252784982698758221, 17647697801612484629, 3564381744461717162, 1112500262860291153]), Fq::from_montgomery_limbs([14444310640393871747, 7159616422470945171, 4259499542152695501, 338890106485999353])]), - M_hat_inverse: SquareMatrix::<5, 25>::new_from_known([Fq::from_montgomery_limbs([13904863849479527760, 2515041799497956331, 1093602514364610087, 950491498045111042]), Fq::from_montgomery_limbs([2579295949243395069, 12030978017499995826, 12080587065043491505, 38868424124071283]), Fq::from_montgomery_limbs([15092547513410891885, 17256115361070971171, 15459413513070879524, 321960420545902323]), Fq::from_montgomery_limbs([2229704028309941057, 12072197468400244658, 10950994247046669419, 1297185510317020994]), Fq::from_montgomery_limbs([12038262541350864619, 6432253836569655322, 13293017510951151922, 464458410353108600]), Fq::from_montgomery_limbs([2579295949243395069, 12030978017499995826, 12080587065043491505, 38868424124071283]), Fq::from_montgomery_limbs([10576000036529335161, 13879266532014962184, 16888595672184660747, 1185164108096765058]), Fq::from_montgomery_limbs([1279444508565403937, 6039704410083424768, 14409182292770989236, 1032663778275682773]), Fq::from_montgomery_limbs([10494653767401929635, 7151674624434035414, 113618062021286492, 734991999940840872]), Fq::from_montgomery_limbs([3733906304148166273, 17683287484600659811, 14933709177852827861, 1249090649945868590]), Fq::from_montgomery_limbs([15092547513410891885, 17256115361070971171, 15459413513070879524, 321960420545902323]), Fq::from_montgomery_limbs([1279444508565403937, 6039704410083424768, 14409182292770989236, 1032663778275682773]), Fq::from_montgomery_limbs([17854942931053508049, 12379835822212862963, 7917418649695695574, 818127752736513102]), Fq::from_montgomery_limbs([16713139695953442230, 14827246597006708747, 6565710292947236351, 279636205695659750]), Fq::from_montgomery_limbs([6021453437997963755, 2434637845477546326, 15808901861436069769, 656837851837718215]), Fq::from_montgomery_limbs([2229704028309941057, 12072197468400244658, 10950994247046669419, 1297185510317020994]), Fq::from_montgomery_limbs([10494653767401929635, 7151674624434035414, 113618062021286492, 734991999940840872]), Fq::from_montgomery_limbs([16713139695953442230, 14827246597006708747, 6565710292947236351, 279636205695659750]), Fq::from_montgomery_limbs([1817061708622591813, 7842241796668241324, 11705700881511613623, 124703629193508345]), Fq::from_montgomery_limbs([7645141843637222694, 11261613033476609866, 684978708883533390, 1180658499202360863]), Fq::from_montgomery_limbs([12038262541350864619, 6432253836569655322, 13293017510951151922, 464458410353108600]), Fq::from_montgomery_limbs([3733906304148166273, 17683287484600659811, 14933709177852827861, 1249090649945868590]), Fq::from_montgomery_limbs([6021453437997963755, 2434637845477546326, 15808901861436069769, 656837851837718215]), Fq::from_montgomery_limbs([7645141843637222694, 11261613033476609866, 684978708883533390, 1180658499202360863]), Fq::from_montgomery_limbs([6471109714169199028, 651257754441033744, 967849492968733845, 881634047292451586])]), - M_00: Fq::from_montgomery_limbs([17237574486256691881, 7678231653376502440, 12981859904545217192, 832323394471302938]), - M_i: Matrix::<6, 6, 36>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([525395534966640354, 4649108525155679700, 5611566907608735139, 1157162242601075454]), Fq::from_montgomery_limbs([4270514995051619857, 9080682450539254193, 11764444330152623833, 1296452142209921646]), Fq::from_montgomery_limbs([13085423902825236141, 4106908764311471538, 2111632228314415714, 345239388869093745]), Fq::from_montgomery_limbs([4739016182142013260, 12433567496673952941, 16956579312525014509, 596646251662680532]), Fq::from_montgomery_limbs([15744576121486695479, 10597769634158624533, 14136093497735719287, 512698864094506675]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4270514995051619857, 9080682450539254193, 11764444330152623833, 1296452142209921646]), Fq::from_montgomery_limbs([14428417055342911695, 8272271618979314579, 5027159236098050530, 724167566789085063]), Fq::from_montgomery_limbs([3709734358196874918, 11929487831132379323, 16830563350788980501, 398518023243913541]), Fq::from_montgomery_limbs([899835313390383283, 10922138075185035991, 10399061813978257330, 1225969452739805970]), Fq::from_montgomery_limbs([6368857132124103246, 3738999983005063047, 6786228693787372954, 743414762217018339]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13085423902825236141, 4106908764311471538, 2111632228314415714, 345239388869093745]), Fq::from_montgomery_limbs([3709734358196874918, 11929487831132379323, 16830563350788980501, 398518023243913541]), Fq::from_montgomery_limbs([9860604545813959634, 6023137071889763432, 18357541439838773826, 267782511194587624]), Fq::from_montgomery_limbs([5425553862160636710, 10155674884481011840, 8882505056945541629, 629430891711291823]), Fq::from_montgomery_limbs([5693655221984583188, 5078045342146247458, 8593703977821442979, 40108457599127726]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4739016182142013260, 12433567496673952941, 16956579312525014509, 596646251662680532]), Fq::from_montgomery_limbs([899835313390383283, 10922138075185035991, 10399061813978257330, 1225969452739805970]), Fq::from_montgomery_limbs([5425553862160636710, 10155674884481011840, 8882505056945541629, 629430891711291823]), Fq::from_montgomery_limbs([1974709593969888668, 3838580677334353595, 4105349786837999128, 16966368926604082]), Fq::from_montgomery_limbs([16299857180872679507, 9990704222165585528, 17839066130443287287, 1300929190020977365]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15744576121486695479, 10597769634158624533, 14136093497735719287, 512698864094506675]), Fq::from_montgomery_limbs([6368857132124103246, 3738999983005063047, 6786228693787372954, 743414762217018339]), Fq::from_montgomery_limbs([5693655221984583188, 5078045342146247458, 8593703977821442979, 40108457599127726]), Fq::from_montgomery_limbs([16299857180872679507, 9990704222165585528, 17839066130443287287, 1300929190020977365]), Fq::from_montgomery_limbs([14268832143359565128, 14009303067203234749, 1311318265344615584, 224271541899878138])]), - v_collection: [Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([15846042622821125949, 5578170090212244723, 14386484975980635087, 1162081450610719662]), Fq::from_montgomery_limbs([9425713365442649542, 17724400577059603932, 10835235343511845981, 1179696731387397906]), Fq::from_montgomery_limbs([15470398571621834328, 8748455436620348445, 11923882037413103894, 147851229490754041]), Fq::from_montgomery_limbs([3205030528550848740, 11233883805951482885, 4631904539047675327, 85240573307222008]), Fq::from_montgomery_limbs([4306955861584430579, 2866573513612242948, 5009794262667624955, 295301720036234004])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([7251188616661835801, 8810908530742177026, 5438752491170217053, 624809552915168399]), Fq::from_montgomery_limbs([8041373032028091555, 15486500451885216694, 2640515848525906572, 1101280997644118799]), Fq::from_montgomery_limbs([1028894706146998760, 13234395603487812099, 310927904286248029, 1284009513603315703]), Fq::from_montgomery_limbs([15907405187752122338, 7460014754810790101, 3112115084952575259, 1176166567473148345]), Fq::from_montgomery_limbs([6667915961879815626, 11892868641826580977, 17153671363694122316, 1080025318281387536])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([5168631598983031118, 1709031240629846937, 12176717122174422876, 1133547231698905845]), Fq::from_montgomery_limbs([6505284181050366169, 6621303409684149204, 14721846886395529985, 756463071795143691]), Fq::from_montgomery_limbs([10252599865552606113, 8719458131520431579, 4094128546015477610, 154229004185959046]), Fq::from_montgomery_limbs([5962216050578461567, 1852471921743211935, 14625008624739847061, 402573870144144998]), Fq::from_montgomery_limbs([2504232889257023710, 6382931252528192024, 946087668070181732, 39444081019304469])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([8935875040282017923, 9359087371918622751, 4377160640113921337, 438001764693096006]), Fq::from_montgomery_limbs([5964768355342862060, 12844248228508214834, 217390320027003427, 519739213235621144]), Fq::from_montgomery_limbs([13476869152223212245, 14360104411032897136, 16239873007321200914, 3853403215029221]), Fq::from_montgomery_limbs([14270258435530476850, 16224741710497622821, 15034723833298150364, 1105854585395665472]), Fq::from_montgomery_limbs([3034628514738856022, 14677362698363483188, 10612467457981582049, 621317746892157952])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([12356435149313176789, 14997081370594107955, 2318538420922195008, 27051273329381197]), Fq::from_montgomery_limbs([14179669150985422172, 1587784931571575237, 15544226047094276906, 265503486564006544]), Fq::from_montgomery_limbs([15848703335457516734, 12988350955449684774, 10747751923255963574, 192884410298894891]), Fq::from_montgomery_limbs([13283753749608228542, 15731192032524989112, 10134977648663526427, 1011453356572734072]), Fq::from_montgomery_limbs([8372393423324448788, 2642634076467295974, 2238857053734841195, 713995311234362151])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([6650896784315049976, 8618299026172959087, 4613782712309215097, 1194575414958458214]), Fq::from_montgomery_limbs([8401059625843059611, 9360504521211886317, 9752588986385800578, 35467022242567223]), Fq::from_montgomery_limbs([14549311442558804272, 14851474988790195550, 17243272363514665510, 556891460284998050]), Fq::from_montgomery_limbs([8839260009215695166, 5332337195891362342, 10215113273837828390, 53276328504747705]), Fq::from_montgomery_limbs([4743214023748331668, 16150812970442549102, 3607008032772749996, 71636842460588166])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([7745993606763106157, 400962028791523193, 14448679365436054364, 127361796442057001]), Fq::from_montgomery_limbs([4881557665307853374, 16503843953516371036, 2631138906021440407, 1145135568670602972]), Fq::from_montgomery_limbs([3748730199472583624, 1701168955512052480, 1204298795241125154, 919171892692993894]), Fq::from_montgomery_limbs([16293341788272558865, 17325870627390234246, 16387125646971798797, 1009137174300676172]), Fq::from_montgomery_limbs([2499133372428019558, 15739123510404573354, 10677356306660504584, 958976143899963938])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([14252792066102246657, 15864171804698265189, 11911247415967054910, 961487415285183784]), Fq::from_montgomery_limbs([9957038734178160162, 250039500043978770, 375263104710602935, 35544998893003180]), Fq::from_montgomery_limbs([831877114936420076, 2002790044227393828, 11129740988708533905, 746550053534881799]), Fq::from_montgomery_limbs([4734226494958051881, 18003010652169239318, 16569731595317548852, 109984045623665701]), Fq::from_montgomery_limbs([10630025490758573206, 12380598183142825838, 1493124485160554052, 492990263362994025])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([9005167414234319760, 16535434979210366835, 5819620234707341946, 602158252276980823]), Fq::from_montgomery_limbs([9119416898454972043, 8049431789793640151, 13607373929564011639, 761938773322253558]), Fq::from_montgomery_limbs([11646529739221266743, 15631506041020749904, 7526925524884509569, 797718489067789891]), Fq::from_montgomery_limbs([14242496370333104920, 8841581893310155090, 1684451748824201839, 293704403017488420]), Fq::from_montgomery_limbs([12068414265588270249, 7748413288237551533, 18041956849707733339, 1127727052880210045])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([16896144613183838177, 12574347096617734902, 8321293894060275613, 1181815496381441993]), Fq::from_montgomery_limbs([11490675786236053006, 9698599818026366787, 5948732065795477184, 425414085344036431]), Fq::from_montgomery_limbs([13535638352040032845, 11010719926202516879, 10750188616385991719, 450767332534563092]), Fq::from_montgomery_limbs([3178227411283526947, 463456667345831080, 14382176159228633426, 829036438269219798]), Fq::from_montgomery_limbs([15205960183032177355, 12047942859395994973, 5508647109209154207, 409271998288939244])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([5842441710461865655, 14354544144458273887, 16159087842820577493, 1102018593492537867]), Fq::from_montgomery_limbs([10259604216221740521, 2737735964532783652, 1934594841398453131, 915029026536998488]), Fq::from_montgomery_limbs([5389086520584317977, 2729523047482171967, 12492070423980987131, 339278797072716184]), Fq::from_montgomery_limbs([11961359983369405646, 8872285219479794351, 11590963834161858363, 847871031745582321]), Fq::from_montgomery_limbs([15708428924964800383, 9689329403735339585, 876235638671718277, 1293191834696859659])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([10926323662882715805, 6357617649943251603, 3882295273855196975, 302265041875854273]), Fq::from_montgomery_limbs([11884492353389440282, 10865891220420186719, 1506391581950765997, 1273730401079532625]), Fq::from_montgomery_limbs([6062018478948078733, 2238300480159412589, 4475922925472998435, 427700151782713553]), Fq::from_montgomery_limbs([14998626184060509521, 8084520935552429366, 16157620168154649636, 936139145933018848]), Fq::from_montgomery_limbs([5424440642649697210, 11030005216981850100, 3736937858414725236, 353926131228082038])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([6991010538111487096, 3208699080691172022, 15674148293257243198, 528616403431683993]), Fq::from_montgomery_limbs([5895680427204256637, 15308092775755115835, 5725537177674079322, 624044939296156178]), Fq::from_montgomery_limbs([15682781481863573356, 12524037328552645708, 13137829315048512550, 453866324724543378]), Fq::from_montgomery_limbs([5999454803832491786, 11757829240759186672, 16786792833686808980, 1008783050525293123]), Fq::from_montgomery_limbs([4965854579231858650, 4470286827276633884, 18255756957602409470, 1257925856629374202])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([6756792567489648436, 9174065877200954316, 14588982300344994878, 495558322589948188]), Fq::from_montgomery_limbs([16407708660026263913, 17259087838077364390, 13625416430514248811, 207969270690764399]), Fq::from_montgomery_limbs([11870501170821012713, 18047340589874750756, 93512878936056238, 478288405689674144]), Fq::from_montgomery_limbs([873793291822892867, 17836937206243952238, 5128543094009831337, 132104142075103351]), Fq::from_montgomery_limbs([930043501771119768, 15613823438280495150, 6464828430156696004, 359908580296612711])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([18438521383060368690, 14476395006954860191, 3425945854098388541, 944003065485357481]), Fq::from_montgomery_limbs([3311768994809575814, 10503690422660653146, 10526674813249312919, 864802385440313737]), Fq::from_montgomery_limbs([8810438360452481727, 12680118392135545157, 13641246557527810849, 1252645481585559515]), Fq::from_montgomery_limbs([14299022666252422420, 14841944407301251201, 15136912555606442873, 856379827147710042]), Fq::from_montgomery_limbs([2062956481566651544, 12093197892291904316, 11631702561466346010, 144441024184915083])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([7993143086113878189, 3624434478267440806, 13278019726447600986, 654136378501676754]), Fq::from_montgomery_limbs([7992479798903963387, 7895372341947686019, 4334209577850630153, 1180883581857163505]), Fq::from_montgomery_limbs([3027910113375733204, 4485846847893599917, 15294205594975595333, 100423190749786506]), Fq::from_montgomery_limbs([4120333963287836783, 11671291525241561103, 9901986613770683621, 651573815597675240]), Fq::from_montgomery_limbs([11428233072419105889, 2944089198827741952, 5214300364587140869, 1189260788971714219])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([4551784723657471230, 11207660824801473415, 13918603200560666189, 909618049825337324]), Fq::from_montgomery_limbs([2675501742361862254, 5250455330270200426, 12586684907650118989, 1330284139416672144]), Fq::from_montgomery_limbs([12040165191610290428, 16503275216221829144, 5260280485839874467, 1227840433161545716]), Fq::from_montgomery_limbs([7679795588389348013, 15191087003013740641, 15555116922073130768, 344262909715092301]), Fq::from_montgomery_limbs([6169211658344078831, 531166906056818046, 1322277761354587680, 210108348638141620])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([2248963634255452368, 15563761402233708045, 3393738612726595863, 270037018221350140]), Fq::from_montgomery_limbs([11601309892240246141, 3638465656527027416, 1395756619190043331, 138813074475309167]), Fq::from_montgomery_limbs([5291125713635089368, 14819398438069773983, 13114950161797142217, 25590678184791818]), Fq::from_montgomery_limbs([5534877013314393609, 1759072288627502628, 16181954987325767733, 134682133959402637]), Fq::from_montgomery_limbs([4161482061465148858, 16683675972158421075, 3099920947049254669, 957124783703318342])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([4510595409768553239, 4974517727576987266, 15978837518179150731, 335342136683204977]), Fq::from_montgomery_limbs([6636059739397131000, 9640261418262971507, 18005427333200225259, 755356145676404050]), Fq::from_montgomery_limbs([15131021729179035121, 3322699383837917438, 16694361960801514505, 921109580640113983]), Fq::from_montgomery_limbs([7634123202466598220, 810298720516221902, 840599007384281843, 656905365051140366]), Fq::from_montgomery_limbs([11303104649441347181, 12152859936809161042, 8157805368560172079, 226879006121087093])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([4222768071479979923, 6221868890067618237, 6706788302094795072, 470857396285528184]), Fq::from_montgomery_limbs([837480829798517493, 2139750872442256742, 5213024737969853757, 586284678362031355]), Fq::from_montgomery_limbs([18413923626929455705, 12351565965899756217, 17706788027426014962, 396824563157594134]), Fq::from_montgomery_limbs([11865172518676463006, 15009302994533156097, 16026973397263722566, 1243693536982901909]), Fq::from_montgomery_limbs([7252462303444002809, 9549080656602382200, 6400682688095758738, 206059245034621582])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([8375555895564253468, 7925422648691473256, 16821885625729885556, 985921094928817309]), Fq::from_montgomery_limbs([2046299323863281369, 13882781361146929705, 15448488877161513887, 490830679341871217]), Fq::from_montgomery_limbs([7429671875567937801, 10229990955659579326, 17998819479213658262, 468703275856634003]), Fq::from_montgomery_limbs([935091299463462187, 8817490257427535584, 4201099561438792936, 308509415209580254]), Fq::from_montgomery_limbs([15175273292104113428, 15547411926550064745, 18326735472470278187, 46288025765161350])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([2376775726955536549, 7198072882321834778, 5820986721223000167, 1305597767879405697]), Fq::from_montgomery_limbs([11562318758115257029, 422264710018175990, 4674708296176782956, 321605471576378125]), Fq::from_montgomery_limbs([14422446717346283559, 4522943560525804925, 12524200552641302343, 992174839589322314]), Fq::from_montgomery_limbs([2660063348396745477, 3046452749899310106, 12556614243413712855, 292167348848223777]), Fq::from_montgomery_limbs([6669133378666467376, 16135058416591179983, 5627772722389914612, 379140231019033687])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([5810827329069058342, 9466338503926448033, 13219994636736965707, 1133919653888422832]), Fq::from_montgomery_limbs([11390689618371396272, 9685029449622007826, 13242820419679967997, 1063349475949275121]), Fq::from_montgomery_limbs([17763514783930037833, 4809121417820211582, 2875494172038972593, 296043141357624455]), Fq::from_montgomery_limbs([11611692421411999894, 15220040608516358932, 282037844166434278, 281687965959955676]), Fq::from_montgomery_limbs([4438433961554370400, 12877811549841781756, 15741991214229698793, 280844842261162310])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([17169851287016280826, 10822471821114911500, 1491721488328495957, 216887165418048275]), Fq::from_montgomery_limbs([10994016828848236257, 13445735015422423625, 5018165562796963731, 602535974428869013]), Fq::from_montgomery_limbs([15126102334199024880, 12867057351876414370, 11159159194149946143, 115881007342718723]), Fq::from_montgomery_limbs([2794226167942571109, 1548538606305510804, 18291849409425428450, 1340198361306759329]), Fq::from_montgomery_limbs([4267162633414624824, 10477712998553375282, 6267269603855607198, 982787929756500753])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([17381305832731585223, 9268492096935184370, 5234949576450927455, 21981840360160805]), Fq::from_montgomery_limbs([4087927870940191769, 13753414599816622073, 13058329164603291227, 834131236566284313]), Fq::from_montgomery_limbs([2546006251271733188, 17600491598884247746, 14062949050289708021, 821447001112770449]), Fq::from_montgomery_limbs([11557892681183640983, 3553808879521780009, 5828391499760976335, 706816644254127358]), Fq::from_montgomery_limbs([87239843232890664, 15700472350663595467, 174519885711847558, 1123281110015984026])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([2827103361153395332, 9771223936028754360, 17019668270000185744, 250846897334218988]), Fq::from_montgomery_limbs([5119814427033781946, 2081312228775851068, 14150656259150135415, 412824983197785589]), Fq::from_montgomery_limbs([8649749569221526485, 520969763542437761, 18397072919079815484, 473314797287595707]), Fq::from_montgomery_limbs([8194315404853463748, 15060811055660635178, 11318868018104656047, 759678196288305769]), Fq::from_montgomery_limbs([10987085614436524099, 8214999842286961244, 5709575456336614864, 1056310210546073817])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([6532789592575228069, 3265438887018026818, 17111525378271668948, 1320499686924692082]), Fq::from_montgomery_limbs([2197318288869911886, 307033351054159068, 14033422988641489555, 689909787061505964]), Fq::from_montgomery_limbs([3507717375223769090, 10033023697975699121, 15321810854570355253, 890016110699860569]), Fq::from_montgomery_limbs([6897743854949081968, 10158161465287387801, 9179072886178700686, 620001185095628667]), Fq::from_montgomery_limbs([17448998618237282714, 2553852017375909, 1793419264718581373, 725044591608116521])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([16012268534560097932, 13416075297285506301, 16493211465851903420, 1091948493998105984]), Fq::from_montgomery_limbs([14392369108156989804, 10617956576365144165, 11809714324716728769, 1188444181516740870]), Fq::from_montgomery_limbs([15466384892561009653, 10941962222512674624, 1913904384440848129, 606922266921522145]), Fq::from_montgomery_limbs([14584618083984398210, 14186299915288736440, 17757535025721844034, 1063945284694781692]), Fq::from_montgomery_limbs([6792570643359499560, 4535097730077924957, 12073011546773881134, 1137378726981169881])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([15102847980540220978, 5520326730982346297, 2698729817022762322, 1194738055539544118]), Fq::from_montgomery_limbs([6147044654176302920, 2364057582092333147, 11540841437940787480, 556063025467036658]), Fq::from_montgomery_limbs([1647311829762859720, 13415217341886740242, 16485335404491864284, 491439704095662519]), Fq::from_montgomery_limbs([12141727361360860468, 9821467392353266448, 11166495178510190210, 245664677516946430]), Fq::from_montgomery_limbs([5360382176507266601, 768193387830048410, 3996566068451735831, 795512106745688059])]), Matrix::<1, 5, 5>::new_from_known([Fq::from_montgomery_limbs([2189128173409064762, 11499748369225599949, 13499847782281945694, 1340871250773004273]), Fq::from_montgomery_limbs([1159278411248794850, 6701355601329876701, 10476550252580870928, 490304301636428667]), Fq::from_montgomery_limbs([4466317563581149355, 15128213745330326318, 5257941398512314848, 1111650855813054172]), Fq::from_montgomery_limbs([8839577424282800883, 7949855030699078116, 2996553645008704135, 85398623640375889]), Fq::from_montgomery_limbs([9514362250339879637, 13706294199150347872, 11853022932563321890, 818790762833572114])])], - w_hat_collection: [Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([15152119682022281684, 2079168917784381610, 8548836536267236340, 524962922610130041]), Fq::from_montgomery_limbs([16770218796354446865, 6164915921600418774, 18434642018604219177, 984431242893424161]), Fq::from_montgomery_limbs([12257484635811173124, 3332345693021229804, 9856107590709416500, 1159223252431020322]), Fq::from_montgomery_limbs([9979132349322887614, 3961848182433907151, 8799570660063224410, 475862931364908156]), Fq::from_montgomery_limbs([3872788615927669352, 15152509537124089722, 5205890896288656861, 1231307161030894178])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([311271084272320082, 5284197557048869863, 14669222562574339674, 571307699885408030]), Fq::from_montgomery_limbs([11625781241601592791, 14885568706820662540, 17941376171308792723, 783918507477975660]), Fq::from_montgomery_limbs([226868460330872644, 12734244079593541616, 10451890082278586850, 32508669310149618]), Fq::from_montgomery_limbs([6020187144675607048, 11405887127978088053, 4712122969940341979, 1080334010198437810]), Fq::from_montgomery_limbs([5933505187504807441, 3473057270652036730, 6105009132686901569, 114203646444743763])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([1120856672192884245, 16247214934320106390, 15323677081999960076, 62404200512763570]), Fq::from_montgomery_limbs([8831161875549232238, 6077491870312206017, 14081883006003626391, 1154651324772984368]), Fq::from_montgomery_limbs([5661890842653089732, 13320534556163866242, 9035321631852285107, 903630770886300483]), Fq::from_montgomery_limbs([15889657237181390432, 15162271575679238159, 1491114731026258819, 287846816690944321]), Fq::from_montgomery_limbs([7238626723934307483, 13278275328632196610, 8627741857269318907, 925711656222055996])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([16274331391150039806, 1623594389399151027, 11932333738554132870, 706372249166702105]), Fq::from_montgomery_limbs([732452989467352943, 1044771601653765712, 7295501005775861284, 241383337916425122]), Fq::from_montgomery_limbs([1055111559926828336, 436063422223614235, 8237830476387497674, 486023893828905207]), Fq::from_montgomery_limbs([11846198484218265818, 8058524634853844099, 813566309310159764, 1342803580678902586]), Fq::from_montgomery_limbs([13415802809644488728, 14511002260322793565, 4157389022600774011, 262652662563663469])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([6280812441180517055, 6148355053508262675, 10298538567830482124, 549753875811636329]), Fq::from_montgomery_limbs([824304312279887084, 5198474444698315745, 4090895165493551175, 1217302205153655151]), Fq::from_montgomery_limbs([4735542953263469139, 612014805877448122, 12832372076520494984, 750953222849642269]), Fq::from_montgomery_limbs([147828622890240493, 128044761765714597, 12093927754417303852, 132385902652165260]), Fq::from_montgomery_limbs([18171144465445367562, 4015656370081309510, 15930285771575041073, 1269412572744267545])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([14398639038380864956, 6619595958723804843, 12719064233121758133, 406442443563323199]), Fq::from_montgomery_limbs([10762946454330918789, 5528361687335835568, 3991418360765486778, 286492429663333048]), Fq::from_montgomery_limbs([11742168906901241463, 15503883602330266637, 15831515237753512854, 1044066191448484616]), Fq::from_montgomery_limbs([10525155675978585492, 4670730111394235591, 5961373269656674720, 95271963105126236]), Fq::from_montgomery_limbs([584627878861922239, 7921433855087631798, 7615313333543717641, 1109592926172816575])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([15091688909514107804, 654570390524891199, 16494576826680457410, 30762953858016498]), Fq::from_montgomery_limbs([2761325807027693284, 11935489432137753301, 3489012309486987802, 239715377721177782]), Fq::from_montgomery_limbs([10454593178969047515, 1040128098662881642, 5632035830401774632, 554859180328868399]), Fq::from_montgomery_limbs([5107303737176549426, 15727856129637397988, 6051568784602114728, 873492972237083876]), Fq::from_montgomery_limbs([12130743148391729861, 11271998017451462639, 10929122930592304172, 194097991947183661])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([14867630937298531794, 9612402140924249048, 15791934086459495277, 701876161263964392]), Fq::from_montgomery_limbs([4800492369986485195, 837798357520426667, 11678651630838500929, 1197393486814847593]), Fq::from_montgomery_limbs([7361531118817265902, 10654842008121782114, 11329661993953094409, 53031172666072441]), Fq::from_montgomery_limbs([13678736880795169285, 11579896750305940195, 16427828830934341434, 373548996986898141]), Fq::from_montgomery_limbs([3113965972245214273, 3618222426215928202, 14280489027814430075, 1227439762891391632])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([1519481477607620457, 10318567135550122014, 263846661207466096, 640929643224454153]), Fq::from_montgomery_limbs([14263939264430200097, 8800960240049783032, 10525864428412568060, 1229598433830944803]), Fq::from_montgomery_limbs([4737100860592755646, 3405741585209394827, 3774719897330733186, 1001424607855656625]), Fq::from_montgomery_limbs([4527327887926361650, 5195716198788998780, 2452454045651672598, 1114842100489228591]), Fq::from_montgomery_limbs([12639481132070877116, 6184431555458882642, 13833172896014011365, 138391625804209902])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([3025469591916962139, 1116358649574420645, 10697299179333984962, 1100828152488463516]), Fq::from_montgomery_limbs([17596104129549385707, 117028884523868090, 6843789980420923220, 394144012237385792]), Fq::from_montgomery_limbs([76569421022187354, 7618174529699040891, 14258607882742494097, 325795777168928125]), Fq::from_montgomery_limbs([9488688453300333348, 6023458951346117124, 8882873536266522192, 1011335963622574163]), Fq::from_montgomery_limbs([10273078691683312131, 14951774310795138631, 5056574235010407582, 216683108447003755])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([16270690847183812253, 8396384187123364284, 15973135291934403644, 337754294626036574]), Fq::from_montgomery_limbs([11537970389959600601, 15344885270945805038, 16062179622496264928, 634770789960495300]), Fq::from_montgomery_limbs([16629897675960611498, 9857864935176241914, 16649516829790580187, 879077994781187974]), Fq::from_montgomery_limbs([15757760830891963153, 1980968732617718233, 363417887657441819, 1245373320221094018]), Fq::from_montgomery_limbs([1369140419065411691, 114665172743829173, 16025067317418460214, 772519184136728441])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([5166287970903668709, 13178607088194812953, 13394943015525495010, 1136891698590635716]), Fq::from_montgomery_limbs([6786739958142009449, 3712291089779086337, 11114170296176591543, 412243655343207746]), Fq::from_montgomery_limbs([2483986099773441215, 6355297372287593359, 12546131765129037338, 850333435641268865]), Fq::from_montgomery_limbs([4129060137994461513, 15810046888600142778, 14959377549727103485, 983509352989716443]), Fq::from_montgomery_limbs([5375190994774345144, 6642323264045992752, 697489999924152538, 711658337986264203])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([10789013922038705474, 15907427163103262467, 6211828439721814286, 821662973636748389]), Fq::from_montgomery_limbs([1245892911222176515, 1760690499003421411, 7411938278280460519, 996198333836410116]), Fq::from_montgomery_limbs([14902739397227121611, 9677074799597948924, 16338232095647494428, 107475751267019502]), Fq::from_montgomery_limbs([14751552868296217802, 10957219946410361892, 2609386566023075942, 795435587890350748]), Fq::from_montgomery_limbs([14228026094996696402, 2826584103258174948, 1310186622837843420, 912856498151667865])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([632309018718566470, 8852208976226519541, 5569100181556353071, 984010564169166433]), Fq::from_montgomery_limbs([6992820576439012611, 9698447268226822027, 17633082455161111009, 90244636707781414]), Fq::from_montgomery_limbs([6543679712083684758, 10736979596575357883, 4698076992795071575, 1270787674212113]), Fq::from_montgomery_limbs([16044338327666607926, 3960206126744122590, 4858706793602461066, 561666947698425720]), Fq::from_montgomery_limbs([3368306314740365965, 9177942911310203166, 18367144956945019416, 653903203015259414])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([12874723854177830125, 5100681384941725656, 9285950066462290781, 858148062800653733]), Fq::from_montgomery_limbs([4768366185853611631, 14842169834008972704, 16645218449281418514, 817503519482950628]), Fq::from_montgomery_limbs([3007496102230569523, 11399958112043651698, 15787521760129406401, 826416774444573023]), Fq::from_montgomery_limbs([10890936042157055266, 8565215756042961896, 1054057862367192487, 202049359204983814]), Fq::from_montgomery_limbs([2425581217694278079, 12792279644970276082, 4689036727185422224, 1064336763331781201])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([2764179143636297935, 18061233587720561716, 12411254568157467507, 427402914001475058]), Fq::from_montgomery_limbs([2924816478430507635, 9786303437156946185, 13021435082088378496, 78702703698317598]), Fq::from_montgomery_limbs([8200525868229314140, 16881303073057711951, 4187547714670888467, 455617381392152389]), Fq::from_montgomery_limbs([8310666736636434815, 16453325372394262716, 13511049246920939341, 416209098687774975]), Fq::from_montgomery_limbs([7508636928089493550, 1778929466519171040, 9865075252470321631, 222439820478088778])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([26427962923262805, 13400472629512916744, 3808805306352074297, 128699596583089680]), Fq::from_montgomery_limbs([18283636998376248321, 5779768391741799708, 8993926161412908836, 272788598277303242]), Fq::from_montgomery_limbs([385260822800957491, 7888556288710245505, 12785711973091118063, 1290081227789032623]), Fq::from_montgomery_limbs([7370461305656006315, 8097104282146432375, 3693139275053762963, 1200841519361465892]), Fq::from_montgomery_limbs([12067130442173286908, 2170379854767453652, 13201336336736961495, 927175852053928205])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([11214687023235424600, 5560314158648804455, 17670625093449035024, 1242366510949799159]), Fq::from_montgomery_limbs([8409895882379798325, 14471144258274119497, 5245528502428581668, 869805265859067382]), Fq::from_montgomery_limbs([2802161834127193832, 181192611793840022, 1581405763136818654, 674326086636803499]), Fq::from_montgomery_limbs([5748156006252401196, 9530968273316544473, 1373075747037319701, 478917773953068122]), Fq::from_montgomery_limbs([10550634859635316442, 11115297058518078301, 15167740297739703393, 499663014055796942])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([8737679817842057617, 14335003891544767889, 5806471893265243804, 1199697546794663346]), Fq::from_montgomery_limbs([18312746592170672376, 2468171777169034619, 11588707770047473860, 1167607620745843361]), Fq::from_montgomery_limbs([8991056605371192176, 9683166706953599777, 3207279773035228554, 1036594322405142084]), Fq::from_montgomery_limbs([10715958137830220707, 13790797151438523296, 3814352367403212083, 338399526865285980]), Fq::from_montgomery_limbs([7602766395993095249, 15421116878917379598, 9842919232591540089, 811441858348229638])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([11240616276279859335, 18168970638218441074, 12681307963217316671, 529653072592394540]), Fq::from_montgomery_limbs([15804354330800222400, 2664362506755913571, 15220567525462081033, 415854075276634564]), Fq::from_montgomery_limbs([6499893156022247982, 5370094427775939872, 12693314181999023046, 334522766633278821]), Fq::from_montgomery_limbs([2043116979793859192, 5901796972056645976, 14393765505679755827, 861233648011975692]), Fq::from_montgomery_limbs([15324644517910983402, 7402962800234459251, 15501703598689014650, 866765414305968533])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([12865534582606617484, 5710240921655628764, 10047828149580190691, 1035217630777023330]), Fq::from_montgomery_limbs([7623115266181592594, 15654093656542240609, 17584343833694408578, 965948623120670646]), Fq::from_montgomery_limbs([12322860754126106334, 5704375241169042821, 5005598195199710337, 599456016816833315]), Fq::from_montgomery_limbs([3114048235662948861, 3186724356925890101, 12603030351469960653, 784880135590304822]), Fq::from_montgomery_limbs([10542157016978853051, 375232718281833036, 8419637174785911645, 480073460241875582])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([4619753066505217513, 16240034683968173295, 101722798642334078, 1093802332804170111]), Fq::from_montgomery_limbs([11772483107625265757, 10206667679119141509, 18114554164862022458, 1023031741792146569]), Fq::from_montgomery_limbs([13246284581489263787, 14406389897239052674, 3455768173607702603, 1053480392953200960]), Fq::from_montgomery_limbs([6494604848840235336, 6851286908738110852, 6952092093989720037, 528933354597117664]), Fq::from_montgomery_limbs([625815039158913101, 3482039923172880345, 11185655673758240856, 30871173764135737])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([11116836871987577766, 8109541581819717708, 14249648100460872066, 228964235140475035]), Fq::from_montgomery_limbs([10850735048215572309, 4250918544830268539, 1159262399998108531, 597017478561992605]), Fq::from_montgomery_limbs([2429928267440692097, 1037103561750764536, 14249565405637869240, 238948313464233222]), Fq::from_montgomery_limbs([15908449453336200948, 14778706528145004443, 1518131124404071948, 342204757203960757]), Fq::from_montgomery_limbs([10343358798246302148, 4716916005406799178, 1280891908040278925, 33904180033936995])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([13657049778223062917, 16159025960783232211, 4256662595768243763, 769690080070442279]), Fq::from_montgomery_limbs([8630441296206546010, 15101393911422801574, 15765903519913875666, 1059019903719527397]), Fq::from_montgomery_limbs([17353580961907941474, 11690315434040365887, 1919970450761622105, 1284644920565762622]), Fq::from_montgomery_limbs([9142190750578974954, 7982580406830591641, 139105874244767315, 1037725609814647069]), Fq::from_montgomery_limbs([8274397077677504305, 7550323696121525646, 13342176390347462405, 495524022793746412])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([1300654639607007076, 5418426225271078814, 17799220415649590999, 578082611305900028]), Fq::from_montgomery_limbs([15087651230680029653, 14061399273111500513, 13990992483413246139, 217274859442961675]), Fq::from_montgomery_limbs([17409038465662970942, 16739652419107899003, 1728243859263530675, 1005030425295937500]), Fq::from_montgomery_limbs([9881137796190779983, 3738513419678193257, 6908712468714119492, 128170763609761066]), Fq::from_montgomery_limbs([5980808904168005021, 6535637039411031048, 4353709569732736105, 985581940426054692])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([9266459364560412147, 1675941305082716910, 2644496138354097667, 593111726451400001]), Fq::from_montgomery_limbs([11923296558184512186, 14335481794247232343, 1756296816003311831, 1337227067587852298]), Fq::from_montgomery_limbs([15213177739061556154, 5962926969279075759, 9583168463456919751, 1345102811307691605]), Fq::from_montgomery_limbs([7236531265332214668, 11730813784468030291, 3260041626130793112, 413423911331686730]), Fq::from_montgomery_limbs([9992377390528540244, 10251294356867851146, 15408569698061863503, 686801780474850525])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([12551312954021730815, 8771782951882110027, 8266520452918776358, 585025591233977219]), Fq::from_montgomery_limbs([5063400267728024015, 14290329839247601111, 12614604995283750144, 230714106990743170]), Fq::from_montgomery_limbs([14919127087277880180, 1233913841901824423, 2945855199399696462, 1124234888120832064]), Fq::from_montgomery_limbs([6630767633426865082, 4134529385803270273, 547558622173751939, 1276870556955963960]), Fq::from_montgomery_limbs([6194800795402001302, 7453146289235044346, 1846631670011345424, 373216392925072559])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([8530038482194296425, 1186609470593087346, 1550686771111894200, 918591303091561115]), Fq::from_montgomery_limbs([5499603817197150545, 6278523764748797546, 9492893478468221078, 76690422627606484]), Fq::from_montgomery_limbs([7172281043633854180, 9586248386574401986, 4695159959373826247, 291013948190359675]), Fq::from_montgomery_limbs([1958470378825944596, 13429774428855320394, 14915732503423284573, 675396101420063305]), Fq::from_montgomery_limbs([11013259379518244436, 12321083210650373617, 18169826561711333453, 1123565689252234229])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([8538081673660833158, 9406736474943528419, 1248182586638760682, 566915522520784434]), Fq::from_montgomery_limbs([871762597826126451, 16952899443646083570, 9760070688515351533, 1153171851787119216]), Fq::from_montgomery_limbs([17099176922694092192, 828730151529195508, 4040300595746784683, 896316263468400176]), Fq::from_montgomery_limbs([17895859754552623107, 12372008340476127191, 15869904838348331177, 775743200601290861]), Fq::from_montgomery_limbs([7009270681870686791, 2613922803678169165, 14616132396476908383, 1266967860663970985])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([2842431186863606520, 5016515943888671695, 1025755096788745830, 118497541762157376]), Fq::from_montgomery_limbs([15651700296535015112, 8569612184315077364, 15451942282818992185, 541946385718467129]), Fq::from_montgomery_limbs([17425453868458867672, 13259317954798539165, 14653762240483553886, 1289545541558928924]), Fq::from_montgomery_limbs([10182995923953810379, 1555053058248744878, 14233166151877877681, 1314025239224831524]), Fq::from_montgomery_limbs([5382307905322995124, 14222432758856306145, 3195810595195159237, 932323741878209391])]), Matrix::<5, 1, 5>::new_from_known([Fq::from_montgomery_limbs([4093215837977364819, 1786552664558589683, 15811959916460894504, 1122605521342489905]), Fq::from_montgomery_limbs([6757580137997166235, 13857613907011413182, 729793288849614944, 140426125151203814]), Fq::from_montgomery_limbs([18248567113979980306, 15307246736403175565, 7970334653691291978, 817641900996362744]), Fq::from_montgomery_limbs([13209637935471398448, 10485350831767594057, 18120173774880047238, 981942705210324429]), Fq::from_montgomery_limbs([13041861333642835240, 17156211741149643971, 4775992643478887474, 160471371624793379])])], - }, - optimized_arc: OptimizedArcMatrix::<39, 6, 234>::new_from_known([Fq::from_montgomery_limbs([11114527869315019992, 204777424233041404, 11091912519069240090, 121969426625488706]), Fq::from_montgomery_limbs([11602548353808217299, 6197238791893869094, 15622579320964543388, 1298930792120594487]), Fq::from_montgomery_limbs([838896996119702820, 9307552859605174720, 8035142733069793771, 274230695041989171]), Fq::from_montgomery_limbs([3026923182969617970, 17802669379857452552, 12317599963821296502, 1025681681724348483]), Fq::from_montgomery_limbs([5608950751956253759, 13524340746668180438, 15318090696011006995, 777019565914500344]), Fq::from_montgomery_limbs([1158035626778037273, 17664260243497899213, 16296355254226759288, 950557495952381678]), Fq::from_montgomery_limbs([11235491782021601934, 3148198093287396523, 17540068057551648414, 246938399961631601]), Fq::from_montgomery_limbs([17389082769676787279, 4715116371725704005, 680633748837086801, 1023507596971258305]), Fq::from_montgomery_limbs([7398967334233665984, 13695483063991186800, 18171031240540141567, 1071188377250033509]), Fq::from_montgomery_limbs([8901013324099486427, 14221538804433703579, 421845258270117661, 1118364576196477055]), Fq::from_montgomery_limbs([3792995620986947754, 8295286409031689804, 7023787899825757992, 899023674461718667]), Fq::from_montgomery_limbs([8793784762096018942, 15222981485936247095, 17829285903963587033, 104381350073974926]), Fq::from_montgomery_limbs([11268502072074030331, 4494658873172678747, 10565307326465463378, 784696444351308107]), Fq::from_montgomery_limbs([13330824150800116849, 4890131204868069348, 16795432331983276560, 678123243378284364]), Fq::from_montgomery_limbs([16154775053781645033, 5239747136963640569, 16611876759537507645, 759623577554638126]), Fq::from_montgomery_limbs([8392188723943358220, 16791142993973140668, 13297749232586734563, 426701908934618073]), Fq::from_montgomery_limbs([17606532937509352288, 2853753027669231277, 1878611917293492305, 643977045852461225]), Fq::from_montgomery_limbs([5784332265294899224, 10677876800438676900, 18301919197560353192, 1242300655560067148]), Fq::from_montgomery_limbs([11412543805884713089, 4404535555399600518, 4605611364617586616, 706261397170793623]), Fq::from_montgomery_limbs([2724614443579353257, 12190950292326203757, 12944786940879400957, 90707148364678769]), Fq::from_montgomery_limbs([16664686769040599810, 7492639236725157146, 1787480043672337070, 1043615315016757716]), Fq::from_montgomery_limbs([4392261116480034202, 16508253691140740970, 1257682754845069496, 1301148167322522764]), Fq::from_montgomery_limbs([139213556258184346, 16303671450556136664, 10342805884525342231, 508792166529776861]), Fq::from_montgomery_limbs([14643711485787161846, 5395142180975966192, 12467589421402803020, 144762579288366866]), Fq::from_montgomery_limbs([15255437222491521014, 14721462158275437977, 2057221655333534074, 1325734657361576891]), Fq::from_montgomery_limbs([15414140179948612967, 18192784700743189854, 9643806020156298087, 376775047158942797]), Fq::from_montgomery_limbs([18092841461306760003, 2807423972236024481, 7922348787325395480, 1212285078601209657]), Fq::from_montgomery_limbs([16708900869096362927, 2122564142804905834, 13890195487457233383, 126050338062319781]), Fq::from_montgomery_limbs([13016765056631510317, 775825654612492872, 1519488323304929971, 511775234197862995]), Fq::from_montgomery_limbs([10798249763854349440, 8782377489797979147, 12405352952342825868, 1275110544094341666]), Fq::from_montgomery_limbs([9330052657446344303, 4964707063063280466, 2747936433058978798, 1286324345607159919]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13438421980365571751, 13764047089799136418, 6549510980996449235, 89638406717638204]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3120082900215749818, 2506463968951363665, 5751682941173719701, 1183280915899386044]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3889637240168755614, 14778096222179630956, 16885419836575361353, 250222614360102585]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8994135098656528858, 6054905993385110489, 15955209030417792186, 417192650490068388]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10542836021159102202, 3922552091508743640, 15499449205954987041, 257248375734524697]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18307747395340188800, 7047747805490525925, 11242708609504355532, 793276497114397997]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16022663073357324949, 3551519053939817423, 3374093457075448733, 95641413276534082]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16611512242802281767, 13417278867724672960, 12339427782843337847, 1029453794287724677]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9587606159882976610, 13065183120609796571, 5134588985846741978, 1052742636206989263]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5120379400595969817, 4824276514479560160, 15209383162223813538, 98360897446496767]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7633930096380799602, 2831233200869503763, 6933925156133583675, 45431990866667491]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4063032547170944262, 2228607997293084806, 376103209766462421, 748529159788109811]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8393715434195231445, 15247401046663606451, 1655959932549342287, 101776028083387641]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15008767674909606325, 531227893384812653, 7210523396658562084, 437386864972028358]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16809071159722694272, 6830450328296125348, 6475300827542698627, 399257887526004612]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([82825596177761974, 11317217432462243029, 6642795994570466536, 54497338514902862]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6850975607505382161, 14495312419830721473, 12467132244094124841, 869971081325966252]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6776972065809629900, 14404993916899429083, 14745271791343793348, 1281731922471929435]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12167414230777830458, 3579196606687723355, 14118801611883897825, 1188804452360844569]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7553145712183260477, 18113523762458916439, 13422344310762339471, 121199852036910351]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6210598847695513673, 10694250862598493782, 1063552736172580723, 859901328112942851]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10747937872207229763, 13786226828072394952, 274364464850991752, 1218823234058712778]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2520693279910212484, 15286253593138229505, 9531050394238581262, 329181833527084527]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3226526077625644436, 2588404341480318661, 9070433711166827508, 1188235207132643549]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16703563760445846403, 8620998770380437284, 8858436416497897390, 1102236124390324251]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5630089007465765576, 6410026402258852609, 17160884434802874754, 420357023452589124]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12644008863026136496, 11315917635237722843, 12364361333201119848, 946242401908845264]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9089855529735912751, 11711947227707110137, 12189800517249432550, 1037376283079163315]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2642673912191614581, 8420261709120249882, 7567649328018501241, 1090882039889692225]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([624108744920628033, 7222337173749652537, 6177234009439253836, 1305879330650409183]), Fq::from_montgomery_limbs([4047186108818890838, 8293278676301284463, 45421248765572143, 11849077013826147]), Fq::from_montgomery_limbs([13734838437817111564, 14067107962177066014, 6283538344938866018, 943068615468766850]), Fq::from_montgomery_limbs([9459753653362225504, 13412221550119657532, 11719554885145159458, 1038210702444171410]), Fq::from_montgomery_limbs([17258590752825572441, 4422385439615665045, 10963985232294213328, 673097344483052623]), Fq::from_montgomery_limbs([4350910935437581306, 17071656780821887075, 17526744607642225290, 489524084357985818]), Fq::from_montgomery_limbs([8703107470067448452, 734592437454660319, 6370216058631913860, 984849913832896286]), Fq::from_montgomery_limbs([15847437253128917127, 13204151715277535095, 13151742340803361913, 492775982398767260]), Fq::from_montgomery_limbs([13378140148769271177, 11023068523390522139, 1729259508144916727, 998491139322015796]), Fq::from_montgomery_limbs([15868115462640964898, 5808184910810487816, 17891106563868657547, 1273423536878729280]), Fq::from_montgomery_limbs([17498572932499506726, 4915375148198704347, 16526318329827242193, 172885368041045335]), Fq::from_montgomery_limbs([12175858961476635194, 8395097384299796850, 16561947957716644135, 118811035529307344]), Fq::from_montgomery_limbs([1364632949773972783, 5616500288305274826, 2744828291285230257, 1337220218752536168]), Fq::from_montgomery_limbs([7125704632582034340, 2413935880315792634, 16253134495760827214, 1013353907442898755]), Fq::from_montgomery_limbs([9926413936648370716, 9286244748248440505, 5620697470790885637, 1050126432920929832]), Fq::from_montgomery_limbs([2286190222160729638, 1205027650655862007, 284571302335235840, 754838472987631454]), Fq::from_montgomery_limbs([18032942241472576701, 12877723516371231014, 5304401947346162660, 638292803799023432]), Fq::from_montgomery_limbs([1301734909908791963, 3999021096443686109, 8224194566860360743, 975889756225576945]), Fq::from_montgomery_limbs([13137758236377688944, 15164889622744579310, 9510882901247182860, 507443416341514201]), Fq::from_montgomery_limbs([7442629497476523514, 15402336932582436695, 12267702252685663951, 406181490859224216]), Fq::from_montgomery_limbs([3020913173034234370, 7615906519537783167, 14373843007930618441, 268952515824125262]), Fq::from_montgomery_limbs([8510711668693637739, 16478737597936355688, 4962621450185609628, 274948738817040348]), Fq::from_montgomery_limbs([175794307933344111, 2355200265651483892, 17868773626579092521, 52492857067069690]), Fq::from_montgomery_limbs([13918504549178190575, 13563258972352289042, 5310731325887509548, 465559440844068311])]), + M_hat: SquareMatrix::<5, 25>::new_from_known([ + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + ]), + v: Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + ]), + w: Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + ]), + M_prime: SquareMatrix::<6, 36>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + ]), + M_doubleprime: SquareMatrix::<6, 36>::new_from_known([ + Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 15152119682022281684, + 2079168917784381610, + 8548836536267236340, + 524962922610130041, + ]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16770218796354446865, + 6164915921600418774, + 18434642018604219177, + 984431242893424161, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12257484635811173124, + 3332345693021229804, + 9856107590709416500, + 1159223252431020322, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9979132349322887614, + 3961848182433907151, + 8799570660063224410, + 475862931364908156, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3872788615927669352, + 15152509537124089722, + 5205890896288656861, + 1231307161030894178, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + ]), + M_inverse: SquareMatrix::<6, 36>::new_from_known([ + Fq::from_montgomery_limbs([ + 9423078532813425529, + 2444734831186772378, + 13312700987643289865, + 1248785285043953466, + ]), + Fq::from_montgomery_limbs([ + 17268489821349265988, + 4381498102126941915, + 18059594369778317098, + 58369093700071757, + ]), + Fq::from_montgomery_limbs([ + 4554828072642644132, + 1444610657142044086, + 17449887890871798968, + 1155580816162940184, + ]), + Fq::from_montgomery_limbs([ + 14700875084405105752, + 9239241115023183874, + 7789802599827561984, + 594039389414401309, + ]), + Fq::from_montgomery_limbs([ + 17369961549732213951, + 17978420689641993214, + 5737613384797227392, + 899750828627372416, + ]), + Fq::from_montgomery_limbs([ + 11810971497921864966, + 13993073307646756902, + 8362406159543098387, + 1156913604397747244, + ]), + Fq::from_montgomery_limbs([ + 17268489821349265988, + 4381498102126941915, + 18059594369778317098, + 58369093700071757, + ]), + Fq::from_montgomery_limbs([ + 11035226460624215086, + 14239859242862966780, + 1132467188784037199, + 834550800812545516, + ]), + Fq::from_montgomery_limbs([ + 16880054357686407084, + 4825991163227954043, + 6215044494445833070, + 1088315875473995942, + ]), + Fq::from_montgomery_limbs([ + 18168083839917324524, + 16478236068428869610, + 13105126087642640896, + 34766978023081808, + ]), + Fq::from_montgomery_limbs([ + 17825669542785881313, + 12421462367159336603, + 2878814310510077253, + 503620314193006332, + ]), + Fq::from_montgomery_limbs([ + 8217239731080607569, + 6429369295863013371, + 9835418190294938624, + 157201591859370779, + ]), + Fq::from_montgomery_limbs([ + 4554828072642644132, + 1444610657142044086, + 17449887890871798968, + 1155580816162940184, + ]), + Fq::from_montgomery_limbs([ + 16880054357686407084, + 4825991163227954043, + 6215044494445833070, + 1088315875473995942, + ]), + Fq::from_montgomery_limbs([ + 11485023460188927874, + 2485551665474920570, + 6640923664201453737, + 128700539913813365, + ]), + Fq::from_montgomery_limbs([ + 8823818330539404675, + 14326485851202631671, + 17961953298539513959, + 284442003114632699, + ]), + Fq::from_montgomery_limbs([ + 9085308543112959065, + 2317720835922103388, + 3188272186429413269, + 623518145967541728, + ]), + Fq::from_montgomery_limbs([ + 1228919753536764212, + 8001001063597501895, + 1883429940342590902, + 229754754018256412, + ]), + Fq::from_montgomery_limbs([ + 14700875084405105752, + 9239241115023183874, + 7789802599827561984, + 594039389414401309, + ]), + Fq::from_montgomery_limbs([ + 18168083839917324524, + 16478236068428869610, + 13105126087642640896, + 34766978023081808, + ]), + Fq::from_montgomery_limbs([ + 8823818330539404675, + 14326485851202631671, + 17961953298539513959, + 284442003114632699, + ]), + Fq::from_montgomery_limbs([ + 9493025027446580308, + 5326008844078412686, + 17968627192349153669, + 636747921187750929, + ]), + Fq::from_montgomery_limbs([ + 4719209488067015380, + 3286149619947952216, + 5381059733444658429, + 751991172029274729, + ]), + Fq::from_montgomery_limbs([ + 671599285952310028, + 4063985053036137885, + 9646938041918321080, + 299288710064420029, + ]), + Fq::from_montgomery_limbs([ + 17369961549732213951, + 17978420689641993214, + 5737613384797227392, + 899750828627372416, + ]), + Fq::from_montgomery_limbs([ + 17825669542785881313, + 12421462367159336603, + 2878814310510077253, + 503620314193006332, + ]), + Fq::from_montgomery_limbs([ + 9085308543112959065, + 2317720835922103388, + 3188272186429413269, + 623518145967541728, + ]), + Fq::from_montgomery_limbs([ + 4719209488067015380, + 3286149619947952216, + 5381059733444658429, + 751991172029274729, + ]), + Fq::from_montgomery_limbs([ + 6563574222345881967, + 1281874181852671859, + 11466642440831414650, + 443077589787383810, + ]), + Fq::from_montgomery_limbs([ + 2252784982698758221, + 17647697801612484629, + 3564381744461717162, + 1112500262860291153, + ]), + Fq::from_montgomery_limbs([ + 11810971497921864966, + 13993073307646756902, + 8362406159543098387, + 1156913604397747244, + ]), + Fq::from_montgomery_limbs([ + 8217239731080607569, + 6429369295863013371, + 9835418190294938624, + 157201591859370779, + ]), + Fq::from_montgomery_limbs([ + 1228919753536764212, + 8001001063597501895, + 1883429940342590902, + 229754754018256412, + ]), + Fq::from_montgomery_limbs([ + 671599285952310028, + 4063985053036137885, + 9646938041918321080, + 299288710064420029, + ]), + Fq::from_montgomery_limbs([ + 2252784982698758221, + 17647697801612484629, + 3564381744461717162, + 1112500262860291153, + ]), + Fq::from_montgomery_limbs([ + 14444310640393871747, + 7159616422470945171, + 4259499542152695501, + 338890106485999353, + ]), + ]), + M_hat_inverse: SquareMatrix::<5, 25>::new_from_known([ + Fq::from_montgomery_limbs([ + 13904863849479527760, + 2515041799497956331, + 1093602514364610087, + 950491498045111042, + ]), + Fq::from_montgomery_limbs([ + 2579295949243395069, + 12030978017499995826, + 12080587065043491505, + 38868424124071283, + ]), + Fq::from_montgomery_limbs([ + 15092547513410891885, + 17256115361070971171, + 15459413513070879524, + 321960420545902323, + ]), + Fq::from_montgomery_limbs([ + 2229704028309941057, + 12072197468400244658, + 10950994247046669419, + 1297185510317020994, + ]), + Fq::from_montgomery_limbs([ + 12038262541350864619, + 6432253836569655322, + 13293017510951151922, + 464458410353108600, + ]), + Fq::from_montgomery_limbs([ + 2579295949243395069, + 12030978017499995826, + 12080587065043491505, + 38868424124071283, + ]), + Fq::from_montgomery_limbs([ + 10576000036529335161, + 13879266532014962184, + 16888595672184660747, + 1185164108096765058, + ]), + Fq::from_montgomery_limbs([ + 1279444508565403937, + 6039704410083424768, + 14409182292770989236, + 1032663778275682773, + ]), + Fq::from_montgomery_limbs([ + 10494653767401929635, + 7151674624434035414, + 113618062021286492, + 734991999940840872, + ]), + Fq::from_montgomery_limbs([ + 3733906304148166273, + 17683287484600659811, + 14933709177852827861, + 1249090649945868590, + ]), + Fq::from_montgomery_limbs([ + 15092547513410891885, + 17256115361070971171, + 15459413513070879524, + 321960420545902323, + ]), + Fq::from_montgomery_limbs([ + 1279444508565403937, + 6039704410083424768, + 14409182292770989236, + 1032663778275682773, + ]), + Fq::from_montgomery_limbs([ + 17854942931053508049, + 12379835822212862963, + 7917418649695695574, + 818127752736513102, + ]), + Fq::from_montgomery_limbs([ + 16713139695953442230, + 14827246597006708747, + 6565710292947236351, + 279636205695659750, + ]), + Fq::from_montgomery_limbs([ + 6021453437997963755, + 2434637845477546326, + 15808901861436069769, + 656837851837718215, + ]), + Fq::from_montgomery_limbs([ + 2229704028309941057, + 12072197468400244658, + 10950994247046669419, + 1297185510317020994, + ]), + Fq::from_montgomery_limbs([ + 10494653767401929635, + 7151674624434035414, + 113618062021286492, + 734991999940840872, + ]), + Fq::from_montgomery_limbs([ + 16713139695953442230, + 14827246597006708747, + 6565710292947236351, + 279636205695659750, + ]), + Fq::from_montgomery_limbs([ + 1817061708622591813, + 7842241796668241324, + 11705700881511613623, + 124703629193508345, + ]), + Fq::from_montgomery_limbs([ + 7645141843637222694, + 11261613033476609866, + 684978708883533390, + 1180658499202360863, + ]), + Fq::from_montgomery_limbs([ + 12038262541350864619, + 6432253836569655322, + 13293017510951151922, + 464458410353108600, + ]), + Fq::from_montgomery_limbs([ + 3733906304148166273, + 17683287484600659811, + 14933709177852827861, + 1249090649945868590, + ]), + Fq::from_montgomery_limbs([ + 6021453437997963755, + 2434637845477546326, + 15808901861436069769, + 656837851837718215, + ]), + Fq::from_montgomery_limbs([ + 7645141843637222694, + 11261613033476609866, + 684978708883533390, + 1180658499202360863, + ]), + Fq::from_montgomery_limbs([ + 6471109714169199028, + 651257754441033744, + 967849492968733845, + 881634047292451586, + ]), + ]), + M_00: Fq::from_montgomery_limbs([ + 17237574486256691881, + 7678231653376502440, + 12981859904545217192, + 832323394471302938, + ]), + M_i: Matrix::<6, 6, 36>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 525395534966640354, + 4649108525155679700, + 5611566907608735139, + 1157162242601075454, + ]), + Fq::from_montgomery_limbs([ + 4270514995051619857, + 9080682450539254193, + 11764444330152623833, + 1296452142209921646, + ]), + Fq::from_montgomery_limbs([ + 13085423902825236141, + 4106908764311471538, + 2111632228314415714, + 345239388869093745, + ]), + Fq::from_montgomery_limbs([ + 4739016182142013260, + 12433567496673952941, + 16956579312525014509, + 596646251662680532, + ]), + Fq::from_montgomery_limbs([ + 15744576121486695479, + 10597769634158624533, + 14136093497735719287, + 512698864094506675, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4270514995051619857, + 9080682450539254193, + 11764444330152623833, + 1296452142209921646, + ]), + Fq::from_montgomery_limbs([ + 14428417055342911695, + 8272271618979314579, + 5027159236098050530, + 724167566789085063, + ]), + Fq::from_montgomery_limbs([ + 3709734358196874918, + 11929487831132379323, + 16830563350788980501, + 398518023243913541, + ]), + Fq::from_montgomery_limbs([ + 899835313390383283, + 10922138075185035991, + 10399061813978257330, + 1225969452739805970, + ]), + Fq::from_montgomery_limbs([ + 6368857132124103246, + 3738999983005063047, + 6786228693787372954, + 743414762217018339, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 13085423902825236141, + 4106908764311471538, + 2111632228314415714, + 345239388869093745, + ]), + Fq::from_montgomery_limbs([ + 3709734358196874918, + 11929487831132379323, + 16830563350788980501, + 398518023243913541, + ]), + Fq::from_montgomery_limbs([ + 9860604545813959634, + 6023137071889763432, + 18357541439838773826, + 267782511194587624, + ]), + Fq::from_montgomery_limbs([ + 5425553862160636710, + 10155674884481011840, + 8882505056945541629, + 629430891711291823, + ]), + Fq::from_montgomery_limbs([ + 5693655221984583188, + 5078045342146247458, + 8593703977821442979, + 40108457599127726, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4739016182142013260, + 12433567496673952941, + 16956579312525014509, + 596646251662680532, + ]), + Fq::from_montgomery_limbs([ + 899835313390383283, + 10922138075185035991, + 10399061813978257330, + 1225969452739805970, + ]), + Fq::from_montgomery_limbs([ + 5425553862160636710, + 10155674884481011840, + 8882505056945541629, + 629430891711291823, + ]), + Fq::from_montgomery_limbs([ + 1974709593969888668, + 3838580677334353595, + 4105349786837999128, + 16966368926604082, + ]), + Fq::from_montgomery_limbs([ + 16299857180872679507, + 9990704222165585528, + 17839066130443287287, + 1300929190020977365, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 15744576121486695479, + 10597769634158624533, + 14136093497735719287, + 512698864094506675, + ]), + Fq::from_montgomery_limbs([ + 6368857132124103246, + 3738999983005063047, + 6786228693787372954, + 743414762217018339, + ]), + Fq::from_montgomery_limbs([ + 5693655221984583188, + 5078045342146247458, + 8593703977821442979, + 40108457599127726, + ]), + Fq::from_montgomery_limbs([ + 16299857180872679507, + 9990704222165585528, + 17839066130443287287, + 1300929190020977365, + ]), + Fq::from_montgomery_limbs([ + 14268832143359565128, + 14009303067203234749, + 1311318265344615584, + 224271541899878138, + ]), + ]), + v_collection: [ + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 15846042622821125949, + 5578170090212244723, + 14386484975980635087, + 1162081450610719662, + ]), + Fq::from_montgomery_limbs([ + 9425713365442649542, + 17724400577059603932, + 10835235343511845981, + 1179696731387397906, + ]), + Fq::from_montgomery_limbs([ + 15470398571621834328, + 8748455436620348445, + 11923882037413103894, + 147851229490754041, + ]), + Fq::from_montgomery_limbs([ + 3205030528550848740, + 11233883805951482885, + 4631904539047675327, + 85240573307222008, + ]), + Fq::from_montgomery_limbs([ + 4306955861584430579, + 2866573513612242948, + 5009794262667624955, + 295301720036234004, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 7251188616661835801, + 8810908530742177026, + 5438752491170217053, + 624809552915168399, + ]), + Fq::from_montgomery_limbs([ + 8041373032028091555, + 15486500451885216694, + 2640515848525906572, + 1101280997644118799, + ]), + Fq::from_montgomery_limbs([ + 1028894706146998760, + 13234395603487812099, + 310927904286248029, + 1284009513603315703, + ]), + Fq::from_montgomery_limbs([ + 15907405187752122338, + 7460014754810790101, + 3112115084952575259, + 1176166567473148345, + ]), + Fq::from_montgomery_limbs([ + 6667915961879815626, + 11892868641826580977, + 17153671363694122316, + 1080025318281387536, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 5168631598983031118, + 1709031240629846937, + 12176717122174422876, + 1133547231698905845, + ]), + Fq::from_montgomery_limbs([ + 6505284181050366169, + 6621303409684149204, + 14721846886395529985, + 756463071795143691, + ]), + Fq::from_montgomery_limbs([ + 10252599865552606113, + 8719458131520431579, + 4094128546015477610, + 154229004185959046, + ]), + Fq::from_montgomery_limbs([ + 5962216050578461567, + 1852471921743211935, + 14625008624739847061, + 402573870144144998, + ]), + Fq::from_montgomery_limbs([ + 2504232889257023710, + 6382931252528192024, + 946087668070181732, + 39444081019304469, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 8935875040282017923, + 9359087371918622751, + 4377160640113921337, + 438001764693096006, + ]), + Fq::from_montgomery_limbs([ + 5964768355342862060, + 12844248228508214834, + 217390320027003427, + 519739213235621144, + ]), + Fq::from_montgomery_limbs([ + 13476869152223212245, + 14360104411032897136, + 16239873007321200914, + 3853403215029221, + ]), + Fq::from_montgomery_limbs([ + 14270258435530476850, + 16224741710497622821, + 15034723833298150364, + 1105854585395665472, + ]), + Fq::from_montgomery_limbs([ + 3034628514738856022, + 14677362698363483188, + 10612467457981582049, + 621317746892157952, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 12356435149313176789, + 14997081370594107955, + 2318538420922195008, + 27051273329381197, + ]), + Fq::from_montgomery_limbs([ + 14179669150985422172, + 1587784931571575237, + 15544226047094276906, + 265503486564006544, + ]), + Fq::from_montgomery_limbs([ + 15848703335457516734, + 12988350955449684774, + 10747751923255963574, + 192884410298894891, + ]), + Fq::from_montgomery_limbs([ + 13283753749608228542, + 15731192032524989112, + 10134977648663526427, + 1011453356572734072, + ]), + Fq::from_montgomery_limbs([ + 8372393423324448788, + 2642634076467295974, + 2238857053734841195, + 713995311234362151, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 6650896784315049976, + 8618299026172959087, + 4613782712309215097, + 1194575414958458214, + ]), + Fq::from_montgomery_limbs([ + 8401059625843059611, + 9360504521211886317, + 9752588986385800578, + 35467022242567223, + ]), + Fq::from_montgomery_limbs([ + 14549311442558804272, + 14851474988790195550, + 17243272363514665510, + 556891460284998050, + ]), + Fq::from_montgomery_limbs([ + 8839260009215695166, + 5332337195891362342, + 10215113273837828390, + 53276328504747705, + ]), + Fq::from_montgomery_limbs([ + 4743214023748331668, + 16150812970442549102, + 3607008032772749996, + 71636842460588166, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 7745993606763106157, + 400962028791523193, + 14448679365436054364, + 127361796442057001, + ]), + Fq::from_montgomery_limbs([ + 4881557665307853374, + 16503843953516371036, + 2631138906021440407, + 1145135568670602972, + ]), + Fq::from_montgomery_limbs([ + 3748730199472583624, + 1701168955512052480, + 1204298795241125154, + 919171892692993894, + ]), + Fq::from_montgomery_limbs([ + 16293341788272558865, + 17325870627390234246, + 16387125646971798797, + 1009137174300676172, + ]), + Fq::from_montgomery_limbs([ + 2499133372428019558, + 15739123510404573354, + 10677356306660504584, + 958976143899963938, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 14252792066102246657, + 15864171804698265189, + 11911247415967054910, + 961487415285183784, + ]), + Fq::from_montgomery_limbs([ + 9957038734178160162, + 250039500043978770, + 375263104710602935, + 35544998893003180, + ]), + Fq::from_montgomery_limbs([ + 831877114936420076, + 2002790044227393828, + 11129740988708533905, + 746550053534881799, + ]), + Fq::from_montgomery_limbs([ + 4734226494958051881, + 18003010652169239318, + 16569731595317548852, + 109984045623665701, + ]), + Fq::from_montgomery_limbs([ + 10630025490758573206, + 12380598183142825838, + 1493124485160554052, + 492990263362994025, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 9005167414234319760, + 16535434979210366835, + 5819620234707341946, + 602158252276980823, + ]), + Fq::from_montgomery_limbs([ + 9119416898454972043, + 8049431789793640151, + 13607373929564011639, + 761938773322253558, + ]), + Fq::from_montgomery_limbs([ + 11646529739221266743, + 15631506041020749904, + 7526925524884509569, + 797718489067789891, + ]), + Fq::from_montgomery_limbs([ + 14242496370333104920, + 8841581893310155090, + 1684451748824201839, + 293704403017488420, + ]), + Fq::from_montgomery_limbs([ + 12068414265588270249, + 7748413288237551533, + 18041956849707733339, + 1127727052880210045, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 16896144613183838177, + 12574347096617734902, + 8321293894060275613, + 1181815496381441993, + ]), + Fq::from_montgomery_limbs([ + 11490675786236053006, + 9698599818026366787, + 5948732065795477184, + 425414085344036431, + ]), + Fq::from_montgomery_limbs([ + 13535638352040032845, + 11010719926202516879, + 10750188616385991719, + 450767332534563092, + ]), + Fq::from_montgomery_limbs([ + 3178227411283526947, + 463456667345831080, + 14382176159228633426, + 829036438269219798, + ]), + Fq::from_montgomery_limbs([ + 15205960183032177355, + 12047942859395994973, + 5508647109209154207, + 409271998288939244, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 5842441710461865655, + 14354544144458273887, + 16159087842820577493, + 1102018593492537867, + ]), + Fq::from_montgomery_limbs([ + 10259604216221740521, + 2737735964532783652, + 1934594841398453131, + 915029026536998488, + ]), + Fq::from_montgomery_limbs([ + 5389086520584317977, + 2729523047482171967, + 12492070423980987131, + 339278797072716184, + ]), + Fq::from_montgomery_limbs([ + 11961359983369405646, + 8872285219479794351, + 11590963834161858363, + 847871031745582321, + ]), + Fq::from_montgomery_limbs([ + 15708428924964800383, + 9689329403735339585, + 876235638671718277, + 1293191834696859659, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 10926323662882715805, + 6357617649943251603, + 3882295273855196975, + 302265041875854273, + ]), + Fq::from_montgomery_limbs([ + 11884492353389440282, + 10865891220420186719, + 1506391581950765997, + 1273730401079532625, + ]), + Fq::from_montgomery_limbs([ + 6062018478948078733, + 2238300480159412589, + 4475922925472998435, + 427700151782713553, + ]), + Fq::from_montgomery_limbs([ + 14998626184060509521, + 8084520935552429366, + 16157620168154649636, + 936139145933018848, + ]), + Fq::from_montgomery_limbs([ + 5424440642649697210, + 11030005216981850100, + 3736937858414725236, + 353926131228082038, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 6991010538111487096, + 3208699080691172022, + 15674148293257243198, + 528616403431683993, + ]), + Fq::from_montgomery_limbs([ + 5895680427204256637, + 15308092775755115835, + 5725537177674079322, + 624044939296156178, + ]), + Fq::from_montgomery_limbs([ + 15682781481863573356, + 12524037328552645708, + 13137829315048512550, + 453866324724543378, + ]), + Fq::from_montgomery_limbs([ + 5999454803832491786, + 11757829240759186672, + 16786792833686808980, + 1008783050525293123, + ]), + Fq::from_montgomery_limbs([ + 4965854579231858650, + 4470286827276633884, + 18255756957602409470, + 1257925856629374202, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 6756792567489648436, + 9174065877200954316, + 14588982300344994878, + 495558322589948188, + ]), + Fq::from_montgomery_limbs([ + 16407708660026263913, + 17259087838077364390, + 13625416430514248811, + 207969270690764399, + ]), + Fq::from_montgomery_limbs([ + 11870501170821012713, + 18047340589874750756, + 93512878936056238, + 478288405689674144, + ]), + Fq::from_montgomery_limbs([ + 873793291822892867, + 17836937206243952238, + 5128543094009831337, + 132104142075103351, + ]), + Fq::from_montgomery_limbs([ + 930043501771119768, + 15613823438280495150, + 6464828430156696004, + 359908580296612711, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 18438521383060368690, + 14476395006954860191, + 3425945854098388541, + 944003065485357481, + ]), + Fq::from_montgomery_limbs([ + 3311768994809575814, + 10503690422660653146, + 10526674813249312919, + 864802385440313737, + ]), + Fq::from_montgomery_limbs([ + 8810438360452481727, + 12680118392135545157, + 13641246557527810849, + 1252645481585559515, + ]), + Fq::from_montgomery_limbs([ + 14299022666252422420, + 14841944407301251201, + 15136912555606442873, + 856379827147710042, + ]), + Fq::from_montgomery_limbs([ + 2062956481566651544, + 12093197892291904316, + 11631702561466346010, + 144441024184915083, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 7993143086113878189, + 3624434478267440806, + 13278019726447600986, + 654136378501676754, + ]), + Fq::from_montgomery_limbs([ + 7992479798903963387, + 7895372341947686019, + 4334209577850630153, + 1180883581857163505, + ]), + Fq::from_montgomery_limbs([ + 3027910113375733204, + 4485846847893599917, + 15294205594975595333, + 100423190749786506, + ]), + Fq::from_montgomery_limbs([ + 4120333963287836783, + 11671291525241561103, + 9901986613770683621, + 651573815597675240, + ]), + Fq::from_montgomery_limbs([ + 11428233072419105889, + 2944089198827741952, + 5214300364587140869, + 1189260788971714219, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 4551784723657471230, + 11207660824801473415, + 13918603200560666189, + 909618049825337324, + ]), + Fq::from_montgomery_limbs([ + 2675501742361862254, + 5250455330270200426, + 12586684907650118989, + 1330284139416672144, + ]), + Fq::from_montgomery_limbs([ + 12040165191610290428, + 16503275216221829144, + 5260280485839874467, + 1227840433161545716, + ]), + Fq::from_montgomery_limbs([ + 7679795588389348013, + 15191087003013740641, + 15555116922073130768, + 344262909715092301, + ]), + Fq::from_montgomery_limbs([ + 6169211658344078831, + 531166906056818046, + 1322277761354587680, + 210108348638141620, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 2248963634255452368, + 15563761402233708045, + 3393738612726595863, + 270037018221350140, + ]), + Fq::from_montgomery_limbs([ + 11601309892240246141, + 3638465656527027416, + 1395756619190043331, + 138813074475309167, + ]), + Fq::from_montgomery_limbs([ + 5291125713635089368, + 14819398438069773983, + 13114950161797142217, + 25590678184791818, + ]), + Fq::from_montgomery_limbs([ + 5534877013314393609, + 1759072288627502628, + 16181954987325767733, + 134682133959402637, + ]), + Fq::from_montgomery_limbs([ + 4161482061465148858, + 16683675972158421075, + 3099920947049254669, + 957124783703318342, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 4510595409768553239, + 4974517727576987266, + 15978837518179150731, + 335342136683204977, + ]), + Fq::from_montgomery_limbs([ + 6636059739397131000, + 9640261418262971507, + 18005427333200225259, + 755356145676404050, + ]), + Fq::from_montgomery_limbs([ + 15131021729179035121, + 3322699383837917438, + 16694361960801514505, + 921109580640113983, + ]), + Fq::from_montgomery_limbs([ + 7634123202466598220, + 810298720516221902, + 840599007384281843, + 656905365051140366, + ]), + Fq::from_montgomery_limbs([ + 11303104649441347181, + 12152859936809161042, + 8157805368560172079, + 226879006121087093, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 4222768071479979923, + 6221868890067618237, + 6706788302094795072, + 470857396285528184, + ]), + Fq::from_montgomery_limbs([ + 837480829798517493, + 2139750872442256742, + 5213024737969853757, + 586284678362031355, + ]), + Fq::from_montgomery_limbs([ + 18413923626929455705, + 12351565965899756217, + 17706788027426014962, + 396824563157594134, + ]), + Fq::from_montgomery_limbs([ + 11865172518676463006, + 15009302994533156097, + 16026973397263722566, + 1243693536982901909, + ]), + Fq::from_montgomery_limbs([ + 7252462303444002809, + 9549080656602382200, + 6400682688095758738, + 206059245034621582, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 8375555895564253468, + 7925422648691473256, + 16821885625729885556, + 985921094928817309, + ]), + Fq::from_montgomery_limbs([ + 2046299323863281369, + 13882781361146929705, + 15448488877161513887, + 490830679341871217, + ]), + Fq::from_montgomery_limbs([ + 7429671875567937801, + 10229990955659579326, + 17998819479213658262, + 468703275856634003, + ]), + Fq::from_montgomery_limbs([ + 935091299463462187, + 8817490257427535584, + 4201099561438792936, + 308509415209580254, + ]), + Fq::from_montgomery_limbs([ + 15175273292104113428, + 15547411926550064745, + 18326735472470278187, + 46288025765161350, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 2376775726955536549, + 7198072882321834778, + 5820986721223000167, + 1305597767879405697, + ]), + Fq::from_montgomery_limbs([ + 11562318758115257029, + 422264710018175990, + 4674708296176782956, + 321605471576378125, + ]), + Fq::from_montgomery_limbs([ + 14422446717346283559, + 4522943560525804925, + 12524200552641302343, + 992174839589322314, + ]), + Fq::from_montgomery_limbs([ + 2660063348396745477, + 3046452749899310106, + 12556614243413712855, + 292167348848223777, + ]), + Fq::from_montgomery_limbs([ + 6669133378666467376, + 16135058416591179983, + 5627772722389914612, + 379140231019033687, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 5810827329069058342, + 9466338503926448033, + 13219994636736965707, + 1133919653888422832, + ]), + Fq::from_montgomery_limbs([ + 11390689618371396272, + 9685029449622007826, + 13242820419679967997, + 1063349475949275121, + ]), + Fq::from_montgomery_limbs([ + 17763514783930037833, + 4809121417820211582, + 2875494172038972593, + 296043141357624455, + ]), + Fq::from_montgomery_limbs([ + 11611692421411999894, + 15220040608516358932, + 282037844166434278, + 281687965959955676, + ]), + Fq::from_montgomery_limbs([ + 4438433961554370400, + 12877811549841781756, + 15741991214229698793, + 280844842261162310, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 17169851287016280826, + 10822471821114911500, + 1491721488328495957, + 216887165418048275, + ]), + Fq::from_montgomery_limbs([ + 10994016828848236257, + 13445735015422423625, + 5018165562796963731, + 602535974428869013, + ]), + Fq::from_montgomery_limbs([ + 15126102334199024880, + 12867057351876414370, + 11159159194149946143, + 115881007342718723, + ]), + Fq::from_montgomery_limbs([ + 2794226167942571109, + 1548538606305510804, + 18291849409425428450, + 1340198361306759329, + ]), + Fq::from_montgomery_limbs([ + 4267162633414624824, + 10477712998553375282, + 6267269603855607198, + 982787929756500753, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 17381305832731585223, + 9268492096935184370, + 5234949576450927455, + 21981840360160805, + ]), + Fq::from_montgomery_limbs([ + 4087927870940191769, + 13753414599816622073, + 13058329164603291227, + 834131236566284313, + ]), + Fq::from_montgomery_limbs([ + 2546006251271733188, + 17600491598884247746, + 14062949050289708021, + 821447001112770449, + ]), + Fq::from_montgomery_limbs([ + 11557892681183640983, + 3553808879521780009, + 5828391499760976335, + 706816644254127358, + ]), + Fq::from_montgomery_limbs([ + 87239843232890664, + 15700472350663595467, + 174519885711847558, + 1123281110015984026, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 2827103361153395332, + 9771223936028754360, + 17019668270000185744, + 250846897334218988, + ]), + Fq::from_montgomery_limbs([ + 5119814427033781946, + 2081312228775851068, + 14150656259150135415, + 412824983197785589, + ]), + Fq::from_montgomery_limbs([ + 8649749569221526485, + 520969763542437761, + 18397072919079815484, + 473314797287595707, + ]), + Fq::from_montgomery_limbs([ + 8194315404853463748, + 15060811055660635178, + 11318868018104656047, + 759678196288305769, + ]), + Fq::from_montgomery_limbs([ + 10987085614436524099, + 8214999842286961244, + 5709575456336614864, + 1056310210546073817, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 6532789592575228069, + 3265438887018026818, + 17111525378271668948, + 1320499686924692082, + ]), + Fq::from_montgomery_limbs([ + 2197318288869911886, + 307033351054159068, + 14033422988641489555, + 689909787061505964, + ]), + Fq::from_montgomery_limbs([ + 3507717375223769090, + 10033023697975699121, + 15321810854570355253, + 890016110699860569, + ]), + Fq::from_montgomery_limbs([ + 6897743854949081968, + 10158161465287387801, + 9179072886178700686, + 620001185095628667, + ]), + Fq::from_montgomery_limbs([ + 17448998618237282714, + 2553852017375909, + 1793419264718581373, + 725044591608116521, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 16012268534560097932, + 13416075297285506301, + 16493211465851903420, + 1091948493998105984, + ]), + Fq::from_montgomery_limbs([ + 14392369108156989804, + 10617956576365144165, + 11809714324716728769, + 1188444181516740870, + ]), + Fq::from_montgomery_limbs([ + 15466384892561009653, + 10941962222512674624, + 1913904384440848129, + 606922266921522145, + ]), + Fq::from_montgomery_limbs([ + 14584618083984398210, + 14186299915288736440, + 17757535025721844034, + 1063945284694781692, + ]), + Fq::from_montgomery_limbs([ + 6792570643359499560, + 4535097730077924957, + 12073011546773881134, + 1137378726981169881, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 15102847980540220978, + 5520326730982346297, + 2698729817022762322, + 1194738055539544118, + ]), + Fq::from_montgomery_limbs([ + 6147044654176302920, + 2364057582092333147, + 11540841437940787480, + 556063025467036658, + ]), + Fq::from_montgomery_limbs([ + 1647311829762859720, + 13415217341886740242, + 16485335404491864284, + 491439704095662519, + ]), + Fq::from_montgomery_limbs([ + 12141727361360860468, + 9821467392353266448, + 11166495178510190210, + 245664677516946430, + ]), + Fq::from_montgomery_limbs([ + 5360382176507266601, + 768193387830048410, + 3996566068451735831, + 795512106745688059, + ]), + ]), + Matrix::<1, 5, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 2189128173409064762, + 11499748369225599949, + 13499847782281945694, + 1340871250773004273, + ]), + Fq::from_montgomery_limbs([ + 1159278411248794850, + 6701355601329876701, + 10476550252580870928, + 490304301636428667, + ]), + Fq::from_montgomery_limbs([ + 4466317563581149355, + 15128213745330326318, + 5257941398512314848, + 1111650855813054172, + ]), + Fq::from_montgomery_limbs([ + 8839577424282800883, + 7949855030699078116, + 2996553645008704135, + 85398623640375889, + ]), + Fq::from_montgomery_limbs([ + 9514362250339879637, + 13706294199150347872, + 11853022932563321890, + 818790762833572114, + ]), + ]), + ], + w_hat_collection: [ + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 15152119682022281684, + 2079168917784381610, + 8548836536267236340, + 524962922610130041, + ]), + Fq::from_montgomery_limbs([ + 16770218796354446865, + 6164915921600418774, + 18434642018604219177, + 984431242893424161, + ]), + Fq::from_montgomery_limbs([ + 12257484635811173124, + 3332345693021229804, + 9856107590709416500, + 1159223252431020322, + ]), + Fq::from_montgomery_limbs([ + 9979132349322887614, + 3961848182433907151, + 8799570660063224410, + 475862931364908156, + ]), + Fq::from_montgomery_limbs([ + 3872788615927669352, + 15152509537124089722, + 5205890896288656861, + 1231307161030894178, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 311271084272320082, + 5284197557048869863, + 14669222562574339674, + 571307699885408030, + ]), + Fq::from_montgomery_limbs([ + 11625781241601592791, + 14885568706820662540, + 17941376171308792723, + 783918507477975660, + ]), + Fq::from_montgomery_limbs([ + 226868460330872644, + 12734244079593541616, + 10451890082278586850, + 32508669310149618, + ]), + Fq::from_montgomery_limbs([ + 6020187144675607048, + 11405887127978088053, + 4712122969940341979, + 1080334010198437810, + ]), + Fq::from_montgomery_limbs([ + 5933505187504807441, + 3473057270652036730, + 6105009132686901569, + 114203646444743763, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 1120856672192884245, + 16247214934320106390, + 15323677081999960076, + 62404200512763570, + ]), + Fq::from_montgomery_limbs([ + 8831161875549232238, + 6077491870312206017, + 14081883006003626391, + 1154651324772984368, + ]), + Fq::from_montgomery_limbs([ + 5661890842653089732, + 13320534556163866242, + 9035321631852285107, + 903630770886300483, + ]), + Fq::from_montgomery_limbs([ + 15889657237181390432, + 15162271575679238159, + 1491114731026258819, + 287846816690944321, + ]), + Fq::from_montgomery_limbs([ + 7238626723934307483, + 13278275328632196610, + 8627741857269318907, + 925711656222055996, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 16274331391150039806, + 1623594389399151027, + 11932333738554132870, + 706372249166702105, + ]), + Fq::from_montgomery_limbs([ + 732452989467352943, + 1044771601653765712, + 7295501005775861284, + 241383337916425122, + ]), + Fq::from_montgomery_limbs([ + 1055111559926828336, + 436063422223614235, + 8237830476387497674, + 486023893828905207, + ]), + Fq::from_montgomery_limbs([ + 11846198484218265818, + 8058524634853844099, + 813566309310159764, + 1342803580678902586, + ]), + Fq::from_montgomery_limbs([ + 13415802809644488728, + 14511002260322793565, + 4157389022600774011, + 262652662563663469, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 6280812441180517055, + 6148355053508262675, + 10298538567830482124, + 549753875811636329, + ]), + Fq::from_montgomery_limbs([ + 824304312279887084, + 5198474444698315745, + 4090895165493551175, + 1217302205153655151, + ]), + Fq::from_montgomery_limbs([ + 4735542953263469139, + 612014805877448122, + 12832372076520494984, + 750953222849642269, + ]), + Fq::from_montgomery_limbs([ + 147828622890240493, + 128044761765714597, + 12093927754417303852, + 132385902652165260, + ]), + Fq::from_montgomery_limbs([ + 18171144465445367562, + 4015656370081309510, + 15930285771575041073, + 1269412572744267545, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 14398639038380864956, + 6619595958723804843, + 12719064233121758133, + 406442443563323199, + ]), + Fq::from_montgomery_limbs([ + 10762946454330918789, + 5528361687335835568, + 3991418360765486778, + 286492429663333048, + ]), + Fq::from_montgomery_limbs([ + 11742168906901241463, + 15503883602330266637, + 15831515237753512854, + 1044066191448484616, + ]), + Fq::from_montgomery_limbs([ + 10525155675978585492, + 4670730111394235591, + 5961373269656674720, + 95271963105126236, + ]), + Fq::from_montgomery_limbs([ + 584627878861922239, + 7921433855087631798, + 7615313333543717641, + 1109592926172816575, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 15091688909514107804, + 654570390524891199, + 16494576826680457410, + 30762953858016498, + ]), + Fq::from_montgomery_limbs([ + 2761325807027693284, + 11935489432137753301, + 3489012309486987802, + 239715377721177782, + ]), + Fq::from_montgomery_limbs([ + 10454593178969047515, + 1040128098662881642, + 5632035830401774632, + 554859180328868399, + ]), + Fq::from_montgomery_limbs([ + 5107303737176549426, + 15727856129637397988, + 6051568784602114728, + 873492972237083876, + ]), + Fq::from_montgomery_limbs([ + 12130743148391729861, + 11271998017451462639, + 10929122930592304172, + 194097991947183661, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 14867630937298531794, + 9612402140924249048, + 15791934086459495277, + 701876161263964392, + ]), + Fq::from_montgomery_limbs([ + 4800492369986485195, + 837798357520426667, + 11678651630838500929, + 1197393486814847593, + ]), + Fq::from_montgomery_limbs([ + 7361531118817265902, + 10654842008121782114, + 11329661993953094409, + 53031172666072441, + ]), + Fq::from_montgomery_limbs([ + 13678736880795169285, + 11579896750305940195, + 16427828830934341434, + 373548996986898141, + ]), + Fq::from_montgomery_limbs([ + 3113965972245214273, + 3618222426215928202, + 14280489027814430075, + 1227439762891391632, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 1519481477607620457, + 10318567135550122014, + 263846661207466096, + 640929643224454153, + ]), + Fq::from_montgomery_limbs([ + 14263939264430200097, + 8800960240049783032, + 10525864428412568060, + 1229598433830944803, + ]), + Fq::from_montgomery_limbs([ + 4737100860592755646, + 3405741585209394827, + 3774719897330733186, + 1001424607855656625, + ]), + Fq::from_montgomery_limbs([ + 4527327887926361650, + 5195716198788998780, + 2452454045651672598, + 1114842100489228591, + ]), + Fq::from_montgomery_limbs([ + 12639481132070877116, + 6184431555458882642, + 13833172896014011365, + 138391625804209902, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 3025469591916962139, + 1116358649574420645, + 10697299179333984962, + 1100828152488463516, + ]), + Fq::from_montgomery_limbs([ + 17596104129549385707, + 117028884523868090, + 6843789980420923220, + 394144012237385792, + ]), + Fq::from_montgomery_limbs([ + 76569421022187354, + 7618174529699040891, + 14258607882742494097, + 325795777168928125, + ]), + Fq::from_montgomery_limbs([ + 9488688453300333348, + 6023458951346117124, + 8882873536266522192, + 1011335963622574163, + ]), + Fq::from_montgomery_limbs([ + 10273078691683312131, + 14951774310795138631, + 5056574235010407582, + 216683108447003755, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 16270690847183812253, + 8396384187123364284, + 15973135291934403644, + 337754294626036574, + ]), + Fq::from_montgomery_limbs([ + 11537970389959600601, + 15344885270945805038, + 16062179622496264928, + 634770789960495300, + ]), + Fq::from_montgomery_limbs([ + 16629897675960611498, + 9857864935176241914, + 16649516829790580187, + 879077994781187974, + ]), + Fq::from_montgomery_limbs([ + 15757760830891963153, + 1980968732617718233, + 363417887657441819, + 1245373320221094018, + ]), + Fq::from_montgomery_limbs([ + 1369140419065411691, + 114665172743829173, + 16025067317418460214, + 772519184136728441, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 5166287970903668709, + 13178607088194812953, + 13394943015525495010, + 1136891698590635716, + ]), + Fq::from_montgomery_limbs([ + 6786739958142009449, + 3712291089779086337, + 11114170296176591543, + 412243655343207746, + ]), + Fq::from_montgomery_limbs([ + 2483986099773441215, + 6355297372287593359, + 12546131765129037338, + 850333435641268865, + ]), + Fq::from_montgomery_limbs([ + 4129060137994461513, + 15810046888600142778, + 14959377549727103485, + 983509352989716443, + ]), + Fq::from_montgomery_limbs([ + 5375190994774345144, + 6642323264045992752, + 697489999924152538, + 711658337986264203, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 10789013922038705474, + 15907427163103262467, + 6211828439721814286, + 821662973636748389, + ]), + Fq::from_montgomery_limbs([ + 1245892911222176515, + 1760690499003421411, + 7411938278280460519, + 996198333836410116, + ]), + Fq::from_montgomery_limbs([ + 14902739397227121611, + 9677074799597948924, + 16338232095647494428, + 107475751267019502, + ]), + Fq::from_montgomery_limbs([ + 14751552868296217802, + 10957219946410361892, + 2609386566023075942, + 795435587890350748, + ]), + Fq::from_montgomery_limbs([ + 14228026094996696402, + 2826584103258174948, + 1310186622837843420, + 912856498151667865, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 632309018718566470, + 8852208976226519541, + 5569100181556353071, + 984010564169166433, + ]), + Fq::from_montgomery_limbs([ + 6992820576439012611, + 9698447268226822027, + 17633082455161111009, + 90244636707781414, + ]), + Fq::from_montgomery_limbs([ + 6543679712083684758, + 10736979596575357883, + 4698076992795071575, + 1270787674212113, + ]), + Fq::from_montgomery_limbs([ + 16044338327666607926, + 3960206126744122590, + 4858706793602461066, + 561666947698425720, + ]), + Fq::from_montgomery_limbs([ + 3368306314740365965, + 9177942911310203166, + 18367144956945019416, + 653903203015259414, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 12874723854177830125, + 5100681384941725656, + 9285950066462290781, + 858148062800653733, + ]), + Fq::from_montgomery_limbs([ + 4768366185853611631, + 14842169834008972704, + 16645218449281418514, + 817503519482950628, + ]), + Fq::from_montgomery_limbs([ + 3007496102230569523, + 11399958112043651698, + 15787521760129406401, + 826416774444573023, + ]), + Fq::from_montgomery_limbs([ + 10890936042157055266, + 8565215756042961896, + 1054057862367192487, + 202049359204983814, + ]), + Fq::from_montgomery_limbs([ + 2425581217694278079, + 12792279644970276082, + 4689036727185422224, + 1064336763331781201, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 2764179143636297935, + 18061233587720561716, + 12411254568157467507, + 427402914001475058, + ]), + Fq::from_montgomery_limbs([ + 2924816478430507635, + 9786303437156946185, + 13021435082088378496, + 78702703698317598, + ]), + Fq::from_montgomery_limbs([ + 8200525868229314140, + 16881303073057711951, + 4187547714670888467, + 455617381392152389, + ]), + Fq::from_montgomery_limbs([ + 8310666736636434815, + 16453325372394262716, + 13511049246920939341, + 416209098687774975, + ]), + Fq::from_montgomery_limbs([ + 7508636928089493550, + 1778929466519171040, + 9865075252470321631, + 222439820478088778, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 26427962923262805, + 13400472629512916744, + 3808805306352074297, + 128699596583089680, + ]), + Fq::from_montgomery_limbs([ + 18283636998376248321, + 5779768391741799708, + 8993926161412908836, + 272788598277303242, + ]), + Fq::from_montgomery_limbs([ + 385260822800957491, + 7888556288710245505, + 12785711973091118063, + 1290081227789032623, + ]), + Fq::from_montgomery_limbs([ + 7370461305656006315, + 8097104282146432375, + 3693139275053762963, + 1200841519361465892, + ]), + Fq::from_montgomery_limbs([ + 12067130442173286908, + 2170379854767453652, + 13201336336736961495, + 927175852053928205, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 11214687023235424600, + 5560314158648804455, + 17670625093449035024, + 1242366510949799159, + ]), + Fq::from_montgomery_limbs([ + 8409895882379798325, + 14471144258274119497, + 5245528502428581668, + 869805265859067382, + ]), + Fq::from_montgomery_limbs([ + 2802161834127193832, + 181192611793840022, + 1581405763136818654, + 674326086636803499, + ]), + Fq::from_montgomery_limbs([ + 5748156006252401196, + 9530968273316544473, + 1373075747037319701, + 478917773953068122, + ]), + Fq::from_montgomery_limbs([ + 10550634859635316442, + 11115297058518078301, + 15167740297739703393, + 499663014055796942, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 8737679817842057617, + 14335003891544767889, + 5806471893265243804, + 1199697546794663346, + ]), + Fq::from_montgomery_limbs([ + 18312746592170672376, + 2468171777169034619, + 11588707770047473860, + 1167607620745843361, + ]), + Fq::from_montgomery_limbs([ + 8991056605371192176, + 9683166706953599777, + 3207279773035228554, + 1036594322405142084, + ]), + Fq::from_montgomery_limbs([ + 10715958137830220707, + 13790797151438523296, + 3814352367403212083, + 338399526865285980, + ]), + Fq::from_montgomery_limbs([ + 7602766395993095249, + 15421116878917379598, + 9842919232591540089, + 811441858348229638, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 11240616276279859335, + 18168970638218441074, + 12681307963217316671, + 529653072592394540, + ]), + Fq::from_montgomery_limbs([ + 15804354330800222400, + 2664362506755913571, + 15220567525462081033, + 415854075276634564, + ]), + Fq::from_montgomery_limbs([ + 6499893156022247982, + 5370094427775939872, + 12693314181999023046, + 334522766633278821, + ]), + Fq::from_montgomery_limbs([ + 2043116979793859192, + 5901796972056645976, + 14393765505679755827, + 861233648011975692, + ]), + Fq::from_montgomery_limbs([ + 15324644517910983402, + 7402962800234459251, + 15501703598689014650, + 866765414305968533, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 12865534582606617484, + 5710240921655628764, + 10047828149580190691, + 1035217630777023330, + ]), + Fq::from_montgomery_limbs([ + 7623115266181592594, + 15654093656542240609, + 17584343833694408578, + 965948623120670646, + ]), + Fq::from_montgomery_limbs([ + 12322860754126106334, + 5704375241169042821, + 5005598195199710337, + 599456016816833315, + ]), + Fq::from_montgomery_limbs([ + 3114048235662948861, + 3186724356925890101, + 12603030351469960653, + 784880135590304822, + ]), + Fq::from_montgomery_limbs([ + 10542157016978853051, + 375232718281833036, + 8419637174785911645, + 480073460241875582, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 4619753066505217513, + 16240034683968173295, + 101722798642334078, + 1093802332804170111, + ]), + Fq::from_montgomery_limbs([ + 11772483107625265757, + 10206667679119141509, + 18114554164862022458, + 1023031741792146569, + ]), + Fq::from_montgomery_limbs([ + 13246284581489263787, + 14406389897239052674, + 3455768173607702603, + 1053480392953200960, + ]), + Fq::from_montgomery_limbs([ + 6494604848840235336, + 6851286908738110852, + 6952092093989720037, + 528933354597117664, + ]), + Fq::from_montgomery_limbs([ + 625815039158913101, + 3482039923172880345, + 11185655673758240856, + 30871173764135737, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 11116836871987577766, + 8109541581819717708, + 14249648100460872066, + 228964235140475035, + ]), + Fq::from_montgomery_limbs([ + 10850735048215572309, + 4250918544830268539, + 1159262399998108531, + 597017478561992605, + ]), + Fq::from_montgomery_limbs([ + 2429928267440692097, + 1037103561750764536, + 14249565405637869240, + 238948313464233222, + ]), + Fq::from_montgomery_limbs([ + 15908449453336200948, + 14778706528145004443, + 1518131124404071948, + 342204757203960757, + ]), + Fq::from_montgomery_limbs([ + 10343358798246302148, + 4716916005406799178, + 1280891908040278925, + 33904180033936995, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 13657049778223062917, + 16159025960783232211, + 4256662595768243763, + 769690080070442279, + ]), + Fq::from_montgomery_limbs([ + 8630441296206546010, + 15101393911422801574, + 15765903519913875666, + 1059019903719527397, + ]), + Fq::from_montgomery_limbs([ + 17353580961907941474, + 11690315434040365887, + 1919970450761622105, + 1284644920565762622, + ]), + Fq::from_montgomery_limbs([ + 9142190750578974954, + 7982580406830591641, + 139105874244767315, + 1037725609814647069, + ]), + Fq::from_montgomery_limbs([ + 8274397077677504305, + 7550323696121525646, + 13342176390347462405, + 495524022793746412, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 1300654639607007076, + 5418426225271078814, + 17799220415649590999, + 578082611305900028, + ]), + Fq::from_montgomery_limbs([ + 15087651230680029653, + 14061399273111500513, + 13990992483413246139, + 217274859442961675, + ]), + Fq::from_montgomery_limbs([ + 17409038465662970942, + 16739652419107899003, + 1728243859263530675, + 1005030425295937500, + ]), + Fq::from_montgomery_limbs([ + 9881137796190779983, + 3738513419678193257, + 6908712468714119492, + 128170763609761066, + ]), + Fq::from_montgomery_limbs([ + 5980808904168005021, + 6535637039411031048, + 4353709569732736105, + 985581940426054692, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 9266459364560412147, + 1675941305082716910, + 2644496138354097667, + 593111726451400001, + ]), + Fq::from_montgomery_limbs([ + 11923296558184512186, + 14335481794247232343, + 1756296816003311831, + 1337227067587852298, + ]), + Fq::from_montgomery_limbs([ + 15213177739061556154, + 5962926969279075759, + 9583168463456919751, + 1345102811307691605, + ]), + Fq::from_montgomery_limbs([ + 7236531265332214668, + 11730813784468030291, + 3260041626130793112, + 413423911331686730, + ]), + Fq::from_montgomery_limbs([ + 9992377390528540244, + 10251294356867851146, + 15408569698061863503, + 686801780474850525, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 12551312954021730815, + 8771782951882110027, + 8266520452918776358, + 585025591233977219, + ]), + Fq::from_montgomery_limbs([ + 5063400267728024015, + 14290329839247601111, + 12614604995283750144, + 230714106990743170, + ]), + Fq::from_montgomery_limbs([ + 14919127087277880180, + 1233913841901824423, + 2945855199399696462, + 1124234888120832064, + ]), + Fq::from_montgomery_limbs([ + 6630767633426865082, + 4134529385803270273, + 547558622173751939, + 1276870556955963960, + ]), + Fq::from_montgomery_limbs([ + 6194800795402001302, + 7453146289235044346, + 1846631670011345424, + 373216392925072559, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 8530038482194296425, + 1186609470593087346, + 1550686771111894200, + 918591303091561115, + ]), + Fq::from_montgomery_limbs([ + 5499603817197150545, + 6278523764748797546, + 9492893478468221078, + 76690422627606484, + ]), + Fq::from_montgomery_limbs([ + 7172281043633854180, + 9586248386574401986, + 4695159959373826247, + 291013948190359675, + ]), + Fq::from_montgomery_limbs([ + 1958470378825944596, + 13429774428855320394, + 14915732503423284573, + 675396101420063305, + ]), + Fq::from_montgomery_limbs([ + 11013259379518244436, + 12321083210650373617, + 18169826561711333453, + 1123565689252234229, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 8538081673660833158, + 9406736474943528419, + 1248182586638760682, + 566915522520784434, + ]), + Fq::from_montgomery_limbs([ + 871762597826126451, + 16952899443646083570, + 9760070688515351533, + 1153171851787119216, + ]), + Fq::from_montgomery_limbs([ + 17099176922694092192, + 828730151529195508, + 4040300595746784683, + 896316263468400176, + ]), + Fq::from_montgomery_limbs([ + 17895859754552623107, + 12372008340476127191, + 15869904838348331177, + 775743200601290861, + ]), + Fq::from_montgomery_limbs([ + 7009270681870686791, + 2613922803678169165, + 14616132396476908383, + 1266967860663970985, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 2842431186863606520, + 5016515943888671695, + 1025755096788745830, + 118497541762157376, + ]), + Fq::from_montgomery_limbs([ + 15651700296535015112, + 8569612184315077364, + 15451942282818992185, + 541946385718467129, + ]), + Fq::from_montgomery_limbs([ + 17425453868458867672, + 13259317954798539165, + 14653762240483553886, + 1289545541558928924, + ]), + Fq::from_montgomery_limbs([ + 10182995923953810379, + 1555053058248744878, + 14233166151877877681, + 1314025239224831524, + ]), + Fq::from_montgomery_limbs([ + 5382307905322995124, + 14222432758856306145, + 3195810595195159237, + 932323741878209391, + ]), + ]), + Matrix::<5, 1, 5>::new_from_known([ + Fq::from_montgomery_limbs([ + 4093215837977364819, + 1786552664558589683, + 15811959916460894504, + 1122605521342489905, + ]), + Fq::from_montgomery_limbs([ + 6757580137997166235, + 13857613907011413182, + 729793288849614944, + 140426125151203814, + ]), + Fq::from_montgomery_limbs([ + 18248567113979980306, + 15307246736403175565, + 7970334653691291978, + 817641900996362744, + ]), + Fq::from_montgomery_limbs([ + 13209637935471398448, + 10485350831767594057, + 18120173774880047238, + 981942705210324429, + ]), + Fq::from_montgomery_limbs([ + 13041861333642835240, + 17156211741149643971, + 4775992643478887474, + 160471371624793379, + ]), + ]), + ], + }, + optimized_arc: OptimizedArcMatrix::<39, 6, 234>::new_from_known([ + Fq::from_montgomery_limbs([ + 11114527869315019992, + 204777424233041404, + 11091912519069240090, + 121969426625488706, + ]), + Fq::from_montgomery_limbs([ + 11602548353808217299, + 6197238791893869094, + 15622579320964543388, + 1298930792120594487, + ]), + Fq::from_montgomery_limbs([ + 838896996119702820, + 9307552859605174720, + 8035142733069793771, + 274230695041989171, + ]), + Fq::from_montgomery_limbs([ + 3026923182969617970, + 17802669379857452552, + 12317599963821296502, + 1025681681724348483, + ]), + Fq::from_montgomery_limbs([ + 5608950751956253759, + 13524340746668180438, + 15318090696011006995, + 777019565914500344, + ]), + Fq::from_montgomery_limbs([ + 1158035626778037273, + 17664260243497899213, + 16296355254226759288, + 950557495952381678, + ]), + Fq::from_montgomery_limbs([ + 11235491782021601934, + 3148198093287396523, + 17540068057551648414, + 246938399961631601, + ]), + Fq::from_montgomery_limbs([ + 17389082769676787279, + 4715116371725704005, + 680633748837086801, + 1023507596971258305, + ]), + Fq::from_montgomery_limbs([ + 7398967334233665984, + 13695483063991186800, + 18171031240540141567, + 1071188377250033509, + ]), + Fq::from_montgomery_limbs([ + 8901013324099486427, + 14221538804433703579, + 421845258270117661, + 1118364576196477055, + ]), + Fq::from_montgomery_limbs([ + 3792995620986947754, + 8295286409031689804, + 7023787899825757992, + 899023674461718667, + ]), + Fq::from_montgomery_limbs([ + 8793784762096018942, + 15222981485936247095, + 17829285903963587033, + 104381350073974926, + ]), + Fq::from_montgomery_limbs([ + 11268502072074030331, + 4494658873172678747, + 10565307326465463378, + 784696444351308107, + ]), + Fq::from_montgomery_limbs([ + 13330824150800116849, + 4890131204868069348, + 16795432331983276560, + 678123243378284364, + ]), + Fq::from_montgomery_limbs([ + 16154775053781645033, + 5239747136963640569, + 16611876759537507645, + 759623577554638126, + ]), + Fq::from_montgomery_limbs([ + 8392188723943358220, + 16791142993973140668, + 13297749232586734563, + 426701908934618073, + ]), + Fq::from_montgomery_limbs([ + 17606532937509352288, + 2853753027669231277, + 1878611917293492305, + 643977045852461225, + ]), + Fq::from_montgomery_limbs([ + 5784332265294899224, + 10677876800438676900, + 18301919197560353192, + 1242300655560067148, + ]), + Fq::from_montgomery_limbs([ + 11412543805884713089, + 4404535555399600518, + 4605611364617586616, + 706261397170793623, + ]), + Fq::from_montgomery_limbs([ + 2724614443579353257, + 12190950292326203757, + 12944786940879400957, + 90707148364678769, + ]), + Fq::from_montgomery_limbs([ + 16664686769040599810, + 7492639236725157146, + 1787480043672337070, + 1043615315016757716, + ]), + Fq::from_montgomery_limbs([ + 4392261116480034202, + 16508253691140740970, + 1257682754845069496, + 1301148167322522764, + ]), + Fq::from_montgomery_limbs([ + 139213556258184346, + 16303671450556136664, + 10342805884525342231, + 508792166529776861, + ]), + Fq::from_montgomery_limbs([ + 14643711485787161846, + 5395142180975966192, + 12467589421402803020, + 144762579288366866, + ]), + Fq::from_montgomery_limbs([ + 15255437222491521014, + 14721462158275437977, + 2057221655333534074, + 1325734657361576891, + ]), + Fq::from_montgomery_limbs([ + 15414140179948612967, + 18192784700743189854, + 9643806020156298087, + 376775047158942797, + ]), + Fq::from_montgomery_limbs([ + 18092841461306760003, + 2807423972236024481, + 7922348787325395480, + 1212285078601209657, + ]), + Fq::from_montgomery_limbs([ + 16708900869096362927, + 2122564142804905834, + 13890195487457233383, + 126050338062319781, + ]), + Fq::from_montgomery_limbs([ + 13016765056631510317, + 775825654612492872, + 1519488323304929971, + 511775234197862995, + ]), + Fq::from_montgomery_limbs([ + 10798249763854349440, + 8782377489797979147, + 12405352952342825868, + 1275110544094341666, + ]), + Fq::from_montgomery_limbs([ + 9330052657446344303, + 4964707063063280466, + 2747936433058978798, + 1286324345607159919, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 13438421980365571751, + 13764047089799136418, + 6549510980996449235, + 89638406717638204, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3120082900215749818, + 2506463968951363665, + 5751682941173719701, + 1183280915899386044, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3889637240168755614, + 14778096222179630956, + 16885419836575361353, + 250222614360102585, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 8994135098656528858, + 6054905993385110489, + 15955209030417792186, + 417192650490068388, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10542836021159102202, + 3922552091508743640, + 15499449205954987041, + 257248375734524697, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 18307747395340188800, + 7047747805490525925, + 11242708609504355532, + 793276497114397997, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16022663073357324949, + 3551519053939817423, + 3374093457075448733, + 95641413276534082, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16611512242802281767, + 13417278867724672960, + 12339427782843337847, + 1029453794287724677, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9587606159882976610, + 13065183120609796571, + 5134588985846741978, + 1052742636206989263, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5120379400595969817, + 4824276514479560160, + 15209383162223813538, + 98360897446496767, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7633930096380799602, + 2831233200869503763, + 6933925156133583675, + 45431990866667491, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4063032547170944262, + 2228607997293084806, + 376103209766462421, + 748529159788109811, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 8393715434195231445, + 15247401046663606451, + 1655959932549342287, + 101776028083387641, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 15008767674909606325, + 531227893384812653, + 7210523396658562084, + 437386864972028358, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16809071159722694272, + 6830450328296125348, + 6475300827542698627, + 399257887526004612, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 82825596177761974, + 11317217432462243029, + 6642795994570466536, + 54497338514902862, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6850975607505382161, + 14495312419830721473, + 12467132244094124841, + 869971081325966252, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6776972065809629900, + 14404993916899429083, + 14745271791343793348, + 1281731922471929435, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12167414230777830458, + 3579196606687723355, + 14118801611883897825, + 1188804452360844569, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7553145712183260477, + 18113523762458916439, + 13422344310762339471, + 121199852036910351, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6210598847695513673, + 10694250862598493782, + 1063552736172580723, + 859901328112942851, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10747937872207229763, + 13786226828072394952, + 274364464850991752, + 1218823234058712778, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2520693279910212484, + 15286253593138229505, + 9531050394238581262, + 329181833527084527, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3226526077625644436, + 2588404341480318661, + 9070433711166827508, + 1188235207132643549, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16703563760445846403, + 8620998770380437284, + 8858436416497897390, + 1102236124390324251, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5630089007465765576, + 6410026402258852609, + 17160884434802874754, + 420357023452589124, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12644008863026136496, + 11315917635237722843, + 12364361333201119848, + 946242401908845264, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9089855529735912751, + 11711947227707110137, + 12189800517249432550, + 1037376283079163315, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2642673912191614581, + 8420261709120249882, + 7567649328018501241, + 1090882039889692225, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 624108744920628033, + 7222337173749652537, + 6177234009439253836, + 1305879330650409183, + ]), + Fq::from_montgomery_limbs([ + 4047186108818890838, + 8293278676301284463, + 45421248765572143, + 11849077013826147, + ]), + Fq::from_montgomery_limbs([ + 13734838437817111564, + 14067107962177066014, + 6283538344938866018, + 943068615468766850, + ]), + Fq::from_montgomery_limbs([ + 9459753653362225504, + 13412221550119657532, + 11719554885145159458, + 1038210702444171410, + ]), + Fq::from_montgomery_limbs([ + 17258590752825572441, + 4422385439615665045, + 10963985232294213328, + 673097344483052623, + ]), + Fq::from_montgomery_limbs([ + 4350910935437581306, + 17071656780821887075, + 17526744607642225290, + 489524084357985818, + ]), + Fq::from_montgomery_limbs([ + 8703107470067448452, + 734592437454660319, + 6370216058631913860, + 984849913832896286, + ]), + Fq::from_montgomery_limbs([ + 15847437253128917127, + 13204151715277535095, + 13151742340803361913, + 492775982398767260, + ]), + Fq::from_montgomery_limbs([ + 13378140148769271177, + 11023068523390522139, + 1729259508144916727, + 998491139322015796, + ]), + Fq::from_montgomery_limbs([ + 15868115462640964898, + 5808184910810487816, + 17891106563868657547, + 1273423536878729280, + ]), + Fq::from_montgomery_limbs([ + 17498572932499506726, + 4915375148198704347, + 16526318329827242193, + 172885368041045335, + ]), + Fq::from_montgomery_limbs([ + 12175858961476635194, + 8395097384299796850, + 16561947957716644135, + 118811035529307344, + ]), + Fq::from_montgomery_limbs([ + 1364632949773972783, + 5616500288305274826, + 2744828291285230257, + 1337220218752536168, + ]), + Fq::from_montgomery_limbs([ + 7125704632582034340, + 2413935880315792634, + 16253134495760827214, + 1013353907442898755, + ]), + Fq::from_montgomery_limbs([ + 9926413936648370716, + 9286244748248440505, + 5620697470790885637, + 1050126432920929832, + ]), + Fq::from_montgomery_limbs([ + 2286190222160729638, + 1205027650655862007, + 284571302335235840, + 754838472987631454, + ]), + Fq::from_montgomery_limbs([ + 18032942241472576701, + 12877723516371231014, + 5304401947346162660, + 638292803799023432, + ]), + Fq::from_montgomery_limbs([ + 1301734909908791963, + 3999021096443686109, + 8224194566860360743, + 975889756225576945, + ]), + Fq::from_montgomery_limbs([ + 13137758236377688944, + 15164889622744579310, + 9510882901247182860, + 507443416341514201, + ]), + Fq::from_montgomery_limbs([ + 7442629497476523514, + 15402336932582436695, + 12267702252685663951, + 406181490859224216, + ]), + Fq::from_montgomery_limbs([ + 3020913173034234370, + 7615906519537783167, + 14373843007930618441, + 268952515824125262, + ]), + Fq::from_montgomery_limbs([ + 8510711668693637739, + 16478737597936355688, + 4962621450185609628, + 274948738817040348, + ]), + Fq::from_montgomery_limbs([ + 175794307933344111, + 2355200265651483892, + 17868773626579092521, + 52492857067069690, + ]), + Fq::from_montgomery_limbs([ + 13918504549178190575, + 13563258972352289042, + 5310731325887509548, + 465559440844068311, + ]), + ]), } } diff --git a/poseidon377/src/params/rate_6.rs b/poseidon377/src/params/rate_6.rs index 4040f55..49e7897 100644 --- a/poseidon377/src/params/rate_6.rs +++ b/poseidon377/src/params/rate_6.rs @@ -8,23 +8,6417 @@ use poseidon_parameters::v1::{ pub const fn rate_6() -> PoseidonParameters<7, 6, 49, 36, 39, 7, 273, 31> { PoseidonParameters { M: 128, - arc: ArcMatrix::<39, 7, 273>::new_from_known([Fq::from_montgomery_limbs([15142982440796561447, 11586951767160912790, 2554152473571518408, 1060132733599829191]), Fq::from_montgomery_limbs([5004052621280210368, 17001459709892607063, 7681637351760180567, 370325849830378477]), Fq::from_montgomery_limbs([12700316700887579682, 10527071459591008162, 4649940422809756001, 1164398790994859766]), Fq::from_montgomery_limbs([14166576988026094609, 7313392791454005322, 12003933110859736764, 497349496445067730]), Fq::from_montgomery_limbs([660800666505769101, 8654643871558439567, 14263148622483513593, 820049075817239934]), Fq::from_montgomery_limbs([3633256971691786185, 10090676851691033833, 14588357423182388197, 831634409758195705]), Fq::from_montgomery_limbs([6492287632409988134, 12046607076154115291, 17147959445519551317, 461021671425820687]), Fq::from_montgomery_limbs([14444046072241906262, 11260694318344083229, 15743364178797140854, 866446994798567454]), Fq::from_montgomery_limbs([3641312158605685211, 14157364044999263645, 16784472236570305027, 425843099497195003]), Fq::from_montgomery_limbs([17723864121788076174, 13911937024562874191, 12749454259525933628, 451378649043069085]), Fq::from_montgomery_limbs([12784133990119646353, 17654455838119254543, 14047536069777387226, 645204516252515303]), Fq::from_montgomery_limbs([1959581704190940037, 13929985394687694163, 11022302142929130035, 283707020686355664]), Fq::from_montgomery_limbs([8629032034013359758, 8320916390268264398, 11188435069201519314, 1277918481865788038]), Fq::from_montgomery_limbs([1783621120979741815, 10125702604889014266, 7859706914940359291, 1258189548796714111]), Fq::from_montgomery_limbs([4197085784563434882, 243889206587889894, 328885806087941395, 929695947751686179]), Fq::from_montgomery_limbs([6420634290533400711, 3371757063543007366, 8900632765923820105, 371199850895065588]), Fq::from_montgomery_limbs([9679924820095672851, 5191301328839079795, 1468702730043861612, 1130258788388916276]), Fq::from_montgomery_limbs([14270884667693338729, 18421783881067727877, 702505960635108322, 876601962183112334]), Fq::from_montgomery_limbs([12801928710162774032, 15709283060501093378, 2508615709628312314, 924328772397935430]), Fq::from_montgomery_limbs([9019134492733417932, 4614098400696239641, 291908476903718505, 879711180612784839]), Fq::from_montgomery_limbs([12296479578360854848, 3423354675244851904, 17098596077633953792, 378482623029323224]), Fq::from_montgomery_limbs([13200816203042245771, 15381254577926224952, 14688424257545082743, 884773501591309967]), Fq::from_montgomery_limbs([16263843110415550162, 14001011937262187824, 2325893788175944450, 427344840846697831]), Fq::from_montgomery_limbs([10712788406702291397, 14628016237392831746, 12076323935029775432, 746032296870665924]), Fq::from_montgomery_limbs([7577844083779539683, 8593563853045273470, 6762705862919489296, 1011466592883577533]), Fq::from_montgomery_limbs([10970204418416076913, 4397529361571105931, 15590416832284287611, 432035610777585218]), Fq::from_montgomery_limbs([13604542201065871088, 8000646895858538916, 7463535664974476191, 112496092381655883]), Fq::from_montgomery_limbs([5448941064349247150, 18035446383961421934, 9688851655819494355, 314108334517577725]), Fq::from_montgomery_limbs([13216339084640418338, 18208749029142079159, 2801888902925820506, 1144112407212441278]), Fq::from_montgomery_limbs([10386335329700935468, 13018324118118161010, 2406041197881630048, 1324098854417409495]), Fq::from_montgomery_limbs([2690622444332381359, 2738375881209676440, 17836986493178387691, 868260556757543816]), Fq::from_montgomery_limbs([9714850335178297908, 2509018678236953449, 1040431953277617242, 408671886406597132]), Fq::from_montgomery_limbs([707163896186597409, 13903930520829310823, 14380446875360964889, 798432165792010570]), Fq::from_montgomery_limbs([12820993772370131859, 3069542795148551755, 4040592593739183911, 977377017483241698]), Fq::from_montgomery_limbs([4384064590197914518, 11440426390601473487, 3890530701580791196, 991346454205769097]), Fq::from_montgomery_limbs([2745693351823380117, 3687897447624002689, 13955517171460419947, 904061096631428006]), Fq::from_montgomery_limbs([1760514697396940568, 6095881437414931654, 3928451548254372674, 247578034773164640]), Fq::from_montgomery_limbs([16683268981822865275, 15797990746305502978, 12125148959239662231, 449202381506144581]), Fq::from_montgomery_limbs([1544285291520736591, 5232522639692590592, 14175161601321791260, 1003097983515138607]), Fq::from_montgomery_limbs([13865967627227239358, 4354525642109054184, 5021238725820305528, 906854086996571433]), Fq::from_montgomery_limbs([15375530278413617622, 7761235083504109835, 15924872860758961429, 537333030355735422]), Fq::from_montgomery_limbs([13872782625772992287, 2068079588750918007, 17083661114150680976, 191043765855622193]), Fq::from_montgomery_limbs([489795382124266981, 9316407371494156111, 16300320024181640604, 1307068723907147815]), Fq::from_montgomery_limbs([77890204043514297, 14999308260055033106, 16273406145240730287, 1230840137172288304]), Fq::from_montgomery_limbs([9003111034130458080, 14053560383370232566, 14148009681833335599, 84069116658731520]), Fq::from_montgomery_limbs([1986315671557859076, 944997752628096648, 6737867794955410335, 792066859500791592]), Fq::from_montgomery_limbs([11554157552429322652, 6015547764843714345, 3599229111267661129, 1102309536290663120]), Fq::from_montgomery_limbs([16401157455500798150, 2599298290463801395, 4428490753223095655, 516522849079366838]), Fq::from_montgomery_limbs([7623242261478057757, 3618111358832343565, 1696272282252986964, 280076732551033967]), Fq::from_montgomery_limbs([13071470547050819875, 20719442839602638, 9223499824514905062, 1041977639884177823]), Fq::from_montgomery_limbs([1150980008515938579, 12791886596105604965, 11797006328775889799, 132341159056314927]), Fq::from_montgomery_limbs([16356304185985037124, 18355100705716380177, 1487696971024578548, 1163163264873917501]), Fq::from_montgomery_limbs([8790136689831869026, 9859012327886066746, 1622774421779032220, 680128396913817531]), Fq::from_montgomery_limbs([2440240671160835195, 5639103082516719016, 16233642885930425961, 459387979334747122]), Fq::from_montgomery_limbs([3071531689091094489, 11779374527227589848, 5879834474282319317, 392743474596485606]), Fq::from_montgomery_limbs([3786139316484579004, 7465575270640816353, 3301786867662477611, 919080835077506714]), Fq::from_montgomery_limbs([4241677901554464615, 14852259420419314449, 9789117952977925786, 1276159211529108963]), Fq::from_montgomery_limbs([15762815448669571633, 7231481802108863616, 8209538117580382786, 894055725982675524]), Fq::from_montgomery_limbs([3283548778124636488, 17961129609378056584, 12441299600811628613, 709973667467565902]), Fq::from_montgomery_limbs([1675404449995783699, 17666259544497784614, 13412804093386962519, 434991501447979808]), Fq::from_montgomery_limbs([17976226742991442453, 14546337615752094946, 6516407789910488272, 1036976265682484688]), Fq::from_montgomery_limbs([13972137480979054280, 1231617287998224018, 8770959412540690803, 274349352586037174]), Fq::from_montgomery_limbs([14183071713815614452, 12618349549865293619, 4916959733988057866, 228836586859139895]), Fq::from_montgomery_limbs([2619860170191204767, 6934658348682381942, 445022332707100685, 525184674849718520]), Fq::from_montgomery_limbs([10672109165350813992, 13411227948301334538, 7449776000632083055, 11625548609868921]), Fq::from_montgomery_limbs([6408656838496226261, 10947889213454603074, 15967755490758556438, 18592735561502547]), Fq::from_montgomery_limbs([5719054350460464154, 7527902657216442354, 5295945207916573176, 1277891579319310511]), Fq::from_montgomery_limbs([7105816865111098866, 4412124756024705272, 4327040274749466413, 598090016113808041]), Fq::from_montgomery_limbs([14284938317479677602, 545805528309510796, 102974980360120576, 899208167330224593]), Fq::from_montgomery_limbs([5366620062124263126, 13693679210134795513, 8256935418799663781, 300801001668016020]), Fq::from_montgomery_limbs([16666288670655775443, 14215432659130173847, 10678349345487712045, 253025966523940173]), Fq::from_montgomery_limbs([6560188020165350685, 12696821494974958005, 2143653898969513475, 494844631437184679]), Fq::from_montgomery_limbs([13593887229322257028, 4816959067341413725, 11133022091159268235, 612414996504397371]), Fq::from_montgomery_limbs([4493136462766479434, 9962442648546643845, 10853590841986868899, 915809217863755522]), Fq::from_montgomery_limbs([5214032566506119292, 11323013569723200047, 18236741420002046410, 941445927442235049]), Fq::from_montgomery_limbs([6205769808699672756, 10246354759179081834, 15794825809172864679, 391230400284939041]), Fq::from_montgomery_limbs([10116008430714875822, 9911045248650761841, 9928250721052258527, 1185128099055962746]), Fq::from_montgomery_limbs([2754748402734001689, 17481760215560470485, 11108275517987128040, 348615537989168903]), Fq::from_montgomery_limbs([13782224526187933341, 17030959399708586099, 15775077522611833532, 290351976048235673]), Fq::from_montgomery_limbs([4412648891557328130, 11831420266571130198, 9622609839094253285, 639422212319659804]), Fq::from_montgomery_limbs([8394758426176289938, 11674917207711491310, 7857067218925827640, 1264271461076358629]), Fq::from_montgomery_limbs([10524729381187531101, 6565819519130692503, 16455243200834114571, 1113660583135941246]), Fq::from_montgomery_limbs([4910640324547367503, 7067950532806399572, 15713931663221284957, 678204411073496593]), Fq::from_montgomery_limbs([17524781941219231334, 14436265047853993106, 10996160202266791558, 586004270078950889]), Fq::from_montgomery_limbs([14088867458599093720, 2106970093596697979, 12220921713367378788, 618714343685517328]), Fq::from_montgomery_limbs([13932309166033056776, 14069500197080883428, 17852601968294832436, 305995160171313882]), Fq::from_montgomery_limbs([13426729481828305095, 7452289540294927985, 6441597690310943218, 1276798385624416753]), Fq::from_montgomery_limbs([15655620409673762414, 3933061560128724680, 5010270981571820124, 220150600325447216]), Fq::from_montgomery_limbs([1057266741773269348, 17485469765347279593, 9555353042208049027, 1246738101059957518]), Fq::from_montgomery_limbs([10770884181623310580, 8877029614675920762, 13991352514348114517, 1230612668702201686]), Fq::from_montgomery_limbs([15095255137495972889, 10892244248329151219, 11620083234647182892, 868324939988635652]), Fq::from_montgomery_limbs([16875353652867044098, 11044339467067704334, 4725495506316385244, 751264243578502741]), Fq::from_montgomery_limbs([641704525978654163, 17754251290783679148, 14269956822024939667, 156185085842124354]), Fq::from_montgomery_limbs([6461798206210941852, 6476027702683698308, 1734931238850329993, 290399632377126477]), Fq::from_montgomery_limbs([8091575218940757791, 5709045878190771843, 1459237052414398801, 276967051734326786]), Fq::from_montgomery_limbs([11612189501971032754, 8427470897363557012, 8611179978421665778, 759746899153341383]), Fq::from_montgomery_limbs([6954134997737035694, 10268732943041819889, 14604130092481798797, 846640249172985022]), Fq::from_montgomery_limbs([7190233069227170594, 5561401768913144101, 1445785661167706223, 651525665098162949]), Fq::from_montgomery_limbs([9217546346311075388, 11071132921926268863, 15917748726189064849, 1251775227051161244]), Fq::from_montgomery_limbs([10390884162889041261, 16176571899127336650, 10615791626897231355, 642115614053282820]), Fq::from_montgomery_limbs([17238403316934198029, 13759340588486548936, 6092125402785041680, 230724379449110850]), Fq::from_montgomery_limbs([1508952168622687260, 8480288040262420498, 1917577574060388838, 1254153906405997789]), Fq::from_montgomery_limbs([13254932503780193579, 12662991171495849740, 2932469488008999350, 1254958848016626489]), Fq::from_montgomery_limbs([863236748932298852, 7531642076948568445, 10425812845553160509, 563371573575694666]), Fq::from_montgomery_limbs([3280480068018390373, 10989862717157633913, 16572854018482057186, 113384026788145572]), Fq::from_montgomery_limbs([11491036808249350882, 3627925597439189593, 785824861964165853, 215791427072358220]), Fq::from_montgomery_limbs([7066074229281293800, 13321822906632769865, 3996439965503887948, 1564366489909582]), Fq::from_montgomery_limbs([7382263529174205793, 14901486809768854424, 3687940160755015064, 91446740043994899]), Fq::from_montgomery_limbs([11979694890244940318, 2563830158714032427, 9819921513414604825, 870663742752411934]), Fq::from_montgomery_limbs([1600021421033761986, 8201138969411280812, 17030652845294033608, 12175051723204743]), Fq::from_montgomery_limbs([1850310843394039419, 1954532768801601911, 9226966238277907828, 1236975459555124690]), Fq::from_montgomery_limbs([16345060141053822550, 2663786082800954949, 9784580111187431074, 818513014765649539]), Fq::from_montgomery_limbs([16446391408112544104, 9380932902331254953, 7071379728384813096, 646895171875290856]), Fq::from_montgomery_limbs([2378405837694151935, 13313303748778516106, 5453795007116110093, 1101728113109054876]), Fq::from_montgomery_limbs([11103307651772077753, 12554518811578576783, 12962391676951625000, 52064702946163453]), Fq::from_montgomery_limbs([7926549255154919159, 12556509793741807839, 8290515496020439025, 258653521926883600]), Fq::from_montgomery_limbs([307299355354566495, 17945732282126444629, 5433370265316074894, 460536024110656568]), Fq::from_montgomery_limbs([5763861568912805530, 17141796164103068870, 2848893594009159478, 1261756298628549918]), Fq::from_montgomery_limbs([3229487655955554305, 14944270980978379931, 9844844119202542915, 234743086760476866]), Fq::from_montgomery_limbs([2342004844464551443, 1279967885187315863, 373313457964011347, 1079422596885440278]), Fq::from_montgomery_limbs([1952007392466585094, 11762818037481718593, 16662923564394512208, 893001431908838762]), Fq::from_montgomery_limbs([106763804585413546, 14271628963442624240, 590027926779466412, 57257575012574740]), Fq::from_montgomery_limbs([16630768758834449311, 422003402188528512, 12098463822102798962, 159137531863727176]), Fq::from_montgomery_limbs([15534331691675530779, 7061806693665915536, 16952361759388884403, 1053244934847428200]), Fq::from_montgomery_limbs([9263591902583432602, 7558693853599155266, 14896692490740080749, 1313322134212571400]), Fq::from_montgomery_limbs([15314480314637379126, 1151647617314553881, 17769711940094483975, 1199725079245274287]), Fq::from_montgomery_limbs([7963766923607262431, 12935141255115233618, 12948228604583141176, 360484743040385122]), Fq::from_montgomery_limbs([3259283452211432293, 17170672158941172313, 3570208516876138657, 1045429527322967456]), Fq::from_montgomery_limbs([1765653178452548393, 6627965412101454655, 12661490346413822347, 978755993134545199]), Fq::from_montgomery_limbs([142797348951966355, 5680553790994685398, 810985092665822303, 289501802913912482]), Fq::from_montgomery_limbs([8095554876468743411, 9181238692547872814, 13704917242845320718, 866066458565737675]), Fq::from_montgomery_limbs([5618373333754035477, 16633102630691350807, 10343904648768900571, 949315695648845008]), Fq::from_montgomery_limbs([10496943145011706036, 10929716347158307141, 11553769369075211708, 1156430459068926506]), Fq::from_montgomery_limbs([3889976630621922060, 9491334042353419195, 9943086516865463752, 462137530016129102]), Fq::from_montgomery_limbs([14851654499263418555, 8665479737435134577, 9236486044957348017, 1285301549410464570]), Fq::from_montgomery_limbs([7032376007033081754, 8938792808860946217, 3397334075607636452, 1167008250605621029]), Fq::from_montgomery_limbs([10427481727006183439, 3824318376195666571, 1544453519691883408, 1045681207836001052]), Fq::from_montgomery_limbs([8928604482578123459, 13973435534214403451, 15227973464547816988, 1229619095421485591]), Fq::from_montgomery_limbs([4131997010006110231, 8734538168607192092, 5033945745534142948, 1277988214099374488]), Fq::from_montgomery_limbs([7299169039441587737, 2287517025912039400, 5920702563974091346, 687869072690227692]), Fq::from_montgomery_limbs([6148873693348937540, 8423800650513424718, 13147300378355369290, 1251696519717235960]), Fq::from_montgomery_limbs([8030856695051151637, 10312034347138903675, 10835031793863243014, 356820600815810125]), Fq::from_montgomery_limbs([888403096248430880, 456025372404859213, 15679766799242003387, 331916255940957050]), Fq::from_montgomery_limbs([11302383770835780508, 16138456171506112495, 4451261995311188362, 326167792976852851]), Fq::from_montgomery_limbs([12620205064271173241, 5865309702805720081, 5860769966892734734, 960482480478038522]), Fq::from_montgomery_limbs([12917044525272992137, 17120989425489435715, 17218371420168852178, 100206712207827792]), Fq::from_montgomery_limbs([5324266172011654367, 5689211424378054902, 13406842486269119334, 232294740918000310]), Fq::from_montgomery_limbs([8539429359150556585, 10134859336768345709, 15233097762752119955, 731468941704353059]), Fq::from_montgomery_limbs([10594565907991339987, 3638446029011375614, 1076241376615234382, 91321489252748304]), Fq::from_montgomery_limbs([7150892232338862131, 15181691199330314635, 5084197575257990721, 970732723520969453]), Fq::from_montgomery_limbs([14117187289068639852, 3124767309289558236, 13224466604519094715, 428140550724790451]), Fq::from_montgomery_limbs([14415259957437088686, 1795634329615314624, 2942903263296282359, 1012688804870889787]), Fq::from_montgomery_limbs([16612890529511826604, 7596386633939850032, 5924746967850324505, 65893974101627502]), Fq::from_montgomery_limbs([4944775760295616420, 17454746499425782002, 7483609147553356481, 669769743129713618]), Fq::from_montgomery_limbs([8550535250927460379, 14244832580975560343, 10645153178392827451, 166145496718571589]), Fq::from_montgomery_limbs([9472382061922092532, 12599919710080842820, 17660755505335019341, 951845755731906033]), Fq::from_montgomery_limbs([7377011861447992951, 14177185276539188245, 16485545164384506751, 69008004491455439]), Fq::from_montgomery_limbs([7269422847571440384, 10971182983165050190, 10477114392953393609, 529340264286832500]), Fq::from_montgomery_limbs([13548253733030119113, 18088771080273253716, 5912265224571254564, 960653798531692016]), Fq::from_montgomery_limbs([14593305211432266861, 13978513480108154064, 12072035272437813296, 238383478016939515]), Fq::from_montgomery_limbs([14430090856465614687, 2808920183931810539, 2024298398014953733, 368635335239145011]), Fq::from_montgomery_limbs([6675901818525858406, 9691159442966147586, 5200040876915433586, 1110689247130868755]), Fq::from_montgomery_limbs([13172765826410278322, 13976386792584577667, 8689999043086184378, 259436890611363824]), Fq::from_montgomery_limbs([84751421588979831, 14888392918538911455, 5486551275818624189, 951800733297191582]), Fq::from_montgomery_limbs([15334319937719221770, 11563835865217739090, 18090033619866166811, 678279699900803053]), Fq::from_montgomery_limbs([15589602438316257145, 1666336392544054075, 8107996193749583854, 23283085724274977]), Fq::from_montgomery_limbs([6797724227011875266, 11367852742974149411, 6678291715699080418, 92125477783429941]), Fq::from_montgomery_limbs([15080983138964048420, 537488507591658978, 16294679657097133087, 1191852563555895615]), Fq::from_montgomery_limbs([4338903643143774627, 11044337452245898206, 15830174313418706999, 31920243523174840]), Fq::from_montgomery_limbs([8492021065892592922, 7492942567998031746, 10227910279589795050, 947691312997138730]), Fq::from_montgomery_limbs([9561116086048874539, 18073885101683330337, 14636134925092176090, 722339593463585968]), Fq::from_montgomery_limbs([41785100841227711, 17666935019222315365, 4927473313984438107, 67884280271688399]), Fq::from_montgomery_limbs([1446967628258656962, 11243844490161767343, 16958413638051813042, 1004693359077776727]), Fq::from_montgomery_limbs([9629608502131673092, 2882928936333963073, 15987483283589685207, 660673428262656412]), Fq::from_montgomery_limbs([2443606364563185491, 10139467314740663228, 15189229884372483835, 1290830618469438802]), Fq::from_montgomery_limbs([3046319622343455954, 3931730478916712920, 8623867774890709346, 1201913658507810759]), Fq::from_montgomery_limbs([14392864240168621772, 17867735212625517017, 2772429327165542818, 836534298808933]), Fq::from_montgomery_limbs([1151940341306701400, 3833643241309263777, 13096509072792897905, 752108833686380875]), Fq::from_montgomery_limbs([5229009174997575511, 6605658491463927698, 15536337046468055686, 157609910170207177]), Fq::from_montgomery_limbs([8741468218382317460, 7144323380514935844, 8672006512648752584, 1334645244751689770]), Fq::from_montgomery_limbs([10735754706394522516, 4616532568937564832, 15473812904469788516, 326598703312455138]), Fq::from_montgomery_limbs([13470305024595632219, 3964162559887319987, 4104496442465768155, 575184728889423472]), Fq::from_montgomery_limbs([7024155969680638810, 1248446637476984159, 3946566487106719690, 78713827286502076]), Fq::from_montgomery_limbs([1167875954574760034, 7519910968010082415, 15211147069856354453, 750498091773211075]), Fq::from_montgomery_limbs([2863941003802949509, 14521430537116398940, 17833674840165779294, 1117243092487510999]), Fq::from_montgomery_limbs([3988048134544140696, 4164314985762153852, 5192160405207219362, 537616833580442108]), Fq::from_montgomery_limbs([11691596547822673173, 2072119953696732776, 6048298284479353132, 1041936268987727800]), Fq::from_montgomery_limbs([5195217310941133128, 983742991580727110, 15582341176749546934, 192949243806351219]), Fq::from_montgomery_limbs([989864604993544245, 10337084476006024351, 6399045939932107087, 349553169959482485]), Fq::from_montgomery_limbs([1083252708106498385, 14683159496360594363, 6249116681658609726, 965679621626703084]), Fq::from_montgomery_limbs([15520366118357711305, 15455325080109246278, 15912772926708879347, 1181106395388318589]), Fq::from_montgomery_limbs([10606086519021812869, 8982436141916758768, 8984252788653949566, 94441446490162493]), Fq::from_montgomery_limbs([3989193979672410706, 14522119372119676520, 6031184060057719655, 876537182738173910]), Fq::from_montgomery_limbs([6542858007243344725, 10468817694619667802, 1374963053947997860, 281508730046968385]), Fq::from_montgomery_limbs([2121254413916702881, 11174399821186314401, 642752851055260652, 172419384352924756]), Fq::from_montgomery_limbs([14933138168325040251, 18073996174008481460, 7709184193316921275, 77928985789134259]), Fq::from_montgomery_limbs([14183089598463409576, 9599657595270154138, 10401242555342360511, 1031862193117340540]), Fq::from_montgomery_limbs([17077860441038791206, 6907855957939974514, 7600347021193310054, 225485956370582495]), Fq::from_montgomery_limbs([14475416504140964933, 6622123083135972798, 9257366424078234840, 1254195725521864761]), Fq::from_montgomery_limbs([18280884764210583702, 16338431925875586014, 14128385164093913939, 598858774608218822]), Fq::from_montgomery_limbs([4251295228276607623, 14698477834719362145, 1576184780996848894, 571585722355337029]), Fq::from_montgomery_limbs([13272236615232894643, 14010494529183759900, 800023943280278947, 298394511556555918]), Fq::from_montgomery_limbs([10782700402615775164, 14412830325727077172, 4994923730339550224, 1079837299050839065]), Fq::from_montgomery_limbs([3621380562787996822, 9464307808788620312, 13909924710435794908, 954766105382202190]), Fq::from_montgomery_limbs([17420485363085974001, 9021049394344178089, 8712760747075739797, 568515634248632496]), Fq::from_montgomery_limbs([5631572804871766736, 5280080317359998903, 10662020310256217520, 409512057651566449]), Fq::from_montgomery_limbs([492276079446892838, 2465000468485598245, 8673960199484145367, 1223371911459041820]), Fq::from_montgomery_limbs([16206685073675005008, 13515283938452316993, 8657484044144188143, 555324291337764049]), Fq::from_montgomery_limbs([12258020657657344839, 14080584073572047035, 1786385914292976334, 890045806750446876]), Fq::from_montgomery_limbs([5437561110469019457, 4195656535041473973, 16642453980220687614, 66446192393822025]), Fq::from_montgomery_limbs([11378296852796405140, 13948486972729474860, 13814823936920393870, 543448461574407786]), Fq::from_montgomery_limbs([15861083328916660546, 10580336230427962464, 8314263211374088393, 462499203598507289]), Fq::from_montgomery_limbs([3596880637235637430, 7244702719747713366, 7698652078859897602, 339166837713921764]), Fq::from_montgomery_limbs([16434053565692243270, 856826524108649327, 582888221769745389, 231849743296221718]), Fq::from_montgomery_limbs([13466829214638063330, 11871004193533817602, 8715083865527535935, 772758187739256383]), Fq::from_montgomery_limbs([2215715304482300708, 6939601967594674311, 9762471006918361079, 751422865267861919]), Fq::from_montgomery_limbs([8660358354344868439, 10887567579928131536, 4636772766460938216, 875861572717087557]), Fq::from_montgomery_limbs([3718962475606244056, 3574286178071706662, 13969021013516480159, 674248673994385489]), Fq::from_montgomery_limbs([13879628242113969355, 15611868744516972804, 689523972787487196, 272170949885373985]), Fq::from_montgomery_limbs([731217591867043834, 12057204063676562058, 9968800370062020379, 54367310812503073]), Fq::from_montgomery_limbs([10847577089461485884, 14781720798335935361, 2050883758009058177, 1227443941313558442]), Fq::from_montgomery_limbs([15484525416052326375, 10433705807314230036, 15903522838889990919, 544585322945419235]), Fq::from_montgomery_limbs([5074309280962037193, 5217880605983656639, 14510200362648483018, 557494968888174908]), Fq::from_montgomery_limbs([5195138641573043477, 9406776113353168661, 14027024671301857164, 845631148216790994]), Fq::from_montgomery_limbs([17960866561088745173, 7239612137411824399, 608332955631666951, 1339588249269723610]), Fq::from_montgomery_limbs([6645023811265252448, 359090506368957415, 13186732800236585001, 636175819244839498]), Fq::from_montgomery_limbs([9658258475735190727, 14527591238813797995, 16927575748315332307, 1301180113169078950]), Fq::from_montgomery_limbs([2426687195330334614, 1677243348703957868, 280959539850383222, 1302367371047198015]), Fq::from_montgomery_limbs([2824388857182280398, 387310680804206136, 5259604914427521138, 1184806076664523237]), Fq::from_montgomery_limbs([7574972296183053595, 15822886777846030642, 12388539958981301194, 559152516777131559]), Fq::from_montgomery_limbs([12201036799149233249, 17892988483166995904, 18084947728796372356, 675956869171241463]), Fq::from_montgomery_limbs([16104554650380896914, 4746900513825001701, 6829416706759018904, 220904217190207835]), Fq::from_montgomery_limbs([17292549212841163737, 2352946917715655598, 10473544622578247206, 331414403574303893]), Fq::from_montgomery_limbs([11411751507285114977, 6456131281833042189, 9429033659401855692, 1204457583147690703]), Fq::from_montgomery_limbs([13351228652344837450, 3406524763947142470, 9081889404473741581, 940424223754317289]), Fq::from_montgomery_limbs([14630628062553504316, 6262447828497056896, 18085717084217406803, 799246626583428302]), Fq::from_montgomery_limbs([864375154255180873, 14000240309598220542, 1750007932942661463, 761312485749733723]), Fq::from_montgomery_limbs([14345179008259546406, 6736994392830783692, 5908556958000542218, 1253865209554350406]), Fq::from_montgomery_limbs([9764377369274365673, 9072647876947127557, 2341472943201056441, 929216282518283791]), Fq::from_montgomery_limbs([12859964114531846483, 13694745246472282132, 2013500954373579911, 751364861274622110]), Fq::from_montgomery_limbs([175177818989840916, 4770111355878906194, 12267383210154126463, 131920286091241797]), Fq::from_montgomery_limbs([6349104885803077585, 18001260594929500797, 14793230544956264458, 669871090964351917]), Fq::from_montgomery_limbs([1792126764165083108, 6081987124440657035, 5531241762790015809, 85100796395211080]), Fq::from_montgomery_limbs([11335525023979482372, 13822295879245716952, 777769361600630976, 852248906668581924]), Fq::from_montgomery_limbs([2057611721707481944, 12549766028751733826, 3184617081367493745, 17035887437619700]), Fq::from_montgomery_limbs([5033510300536938046, 14319156262351107248, 14453339555250931608, 1300088399042594667]), Fq::from_montgomery_limbs([586365878943401533, 10219333061949038245, 7972787616665459187, 1180682599170166362]), Fq::from_montgomery_limbs([8677310049713074877, 6209659062870853276, 6361763165884296788, 1086786531947345096]), Fq::from_montgomery_limbs([4779669491370037827, 13794675476884129106, 2856260482144566523, 815058410432730978]), Fq::from_montgomery_limbs([8349785262387520653, 14703604045323517453, 10665488643511503896, 1190736588532344714]), Fq::from_montgomery_limbs([9753136258891648437, 7592309943578822500, 18234430885873993524, 946608033429176051]), Fq::from_montgomery_limbs([8862120093151408513, 9919781382246740055, 1639967479777957120, 548895009658598348]), Fq::from_montgomery_limbs([13150047014556861649, 9895352886349978940, 607603433543469096, 825078058460205935]), Fq::from_montgomery_limbs([10677514517763000310, 1869057220976501750, 7668490026500068131, 645375934459787109]), Fq::from_montgomery_limbs([8393901821323241932, 7155803376644055598, 5465256629438666110, 467809976924970962]), Fq::from_montgomery_limbs([8008789779293081850, 17333068400582244417, 864473515802821379, 712131972755422562]), Fq::from_montgomery_limbs([5260641048740129119, 11495506189219575805, 1976170684554961654, 583558279245420304]), Fq::from_montgomery_limbs([10607922137491563126, 16997507064637422660, 16243052688991164520, 620318480202596319]), Fq::from_montgomery_limbs([8682850641454705537, 4234371891064954414, 11030571520428482979, 775687601614273649]), Fq::from_montgomery_limbs([12248979915462901096, 1794636648127247975, 16388845185353268388, 1257257804440120883]), Fq::from_montgomery_limbs([17181365213230240819, 3933917789297525218, 774796165591114183, 628159510187755171]), Fq::from_montgomery_limbs([9201407700189177387, 14700424513123193347, 18288661468232834482, 407382537568434540]), Fq::from_montgomery_limbs([11966891449526246216, 6846368159746727324, 5421814018651935761, 1007837491484494646]), Fq::from_montgomery_limbs([3054672449338249840, 772010416012553897, 804919836093674272, 60934971449786311]), Fq::from_montgomery_limbs([3349955854192164124, 12023516821995660430, 14073054570207692346, 391152224081538807]), Fq::from_montgomery_limbs([4393818606630194054, 11894249453630174803, 11407464681452601419, 527342257675756743]), Fq::from_montgomery_limbs([593191207061949875, 394301333075100218, 15992303837511873397, 1258463696198082538]), Fq::from_montgomery_limbs([7392815618978882544, 8600193649781721343, 10001082189003162790, 160465744058402439]), Fq::from_montgomery_limbs([5982722207731997556, 9327097271719907983, 16837081471143367937, 1323283752393867441]), Fq::from_montgomery_limbs([15234580594321690160, 14480758270368693259, 7897576353120019799, 1211836381357568240]), Fq::from_montgomery_limbs([17534396175019205578, 3323788238042131357, 16622036826489890791, 893487708746761741]), Fq::from_montgomery_limbs([3851834168141787069, 11582510337408899680, 15343784808633432566, 461896544402216282]), Fq::from_montgomery_limbs([1182215324455482337, 1943242735522063011, 4144863718139895080, 243576649285589719])]), - mds: MdsMatrix::new_from_known([Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169])]), + arc: ArcMatrix::<39, 7, 273>::new_from_known([ + Fq::from_montgomery_limbs([ + 15142982440796561447, + 11586951767160912790, + 2554152473571518408, + 1060132733599829191, + ]), + Fq::from_montgomery_limbs([ + 5004052621280210368, + 17001459709892607063, + 7681637351760180567, + 370325849830378477, + ]), + Fq::from_montgomery_limbs([ + 12700316700887579682, + 10527071459591008162, + 4649940422809756001, + 1164398790994859766, + ]), + Fq::from_montgomery_limbs([ + 14166576988026094609, + 7313392791454005322, + 12003933110859736764, + 497349496445067730, + ]), + Fq::from_montgomery_limbs([ + 660800666505769101, + 8654643871558439567, + 14263148622483513593, + 820049075817239934, + ]), + Fq::from_montgomery_limbs([ + 3633256971691786185, + 10090676851691033833, + 14588357423182388197, + 831634409758195705, + ]), + Fq::from_montgomery_limbs([ + 6492287632409988134, + 12046607076154115291, + 17147959445519551317, + 461021671425820687, + ]), + Fq::from_montgomery_limbs([ + 14444046072241906262, + 11260694318344083229, + 15743364178797140854, + 866446994798567454, + ]), + Fq::from_montgomery_limbs([ + 3641312158605685211, + 14157364044999263645, + 16784472236570305027, + 425843099497195003, + ]), + Fq::from_montgomery_limbs([ + 17723864121788076174, + 13911937024562874191, + 12749454259525933628, + 451378649043069085, + ]), + Fq::from_montgomery_limbs([ + 12784133990119646353, + 17654455838119254543, + 14047536069777387226, + 645204516252515303, + ]), + Fq::from_montgomery_limbs([ + 1959581704190940037, + 13929985394687694163, + 11022302142929130035, + 283707020686355664, + ]), + Fq::from_montgomery_limbs([ + 8629032034013359758, + 8320916390268264398, + 11188435069201519314, + 1277918481865788038, + ]), + Fq::from_montgomery_limbs([ + 1783621120979741815, + 10125702604889014266, + 7859706914940359291, + 1258189548796714111, + ]), + Fq::from_montgomery_limbs([ + 4197085784563434882, + 243889206587889894, + 328885806087941395, + 929695947751686179, + ]), + Fq::from_montgomery_limbs([ + 6420634290533400711, + 3371757063543007366, + 8900632765923820105, + 371199850895065588, + ]), + Fq::from_montgomery_limbs([ + 9679924820095672851, + 5191301328839079795, + 1468702730043861612, + 1130258788388916276, + ]), + Fq::from_montgomery_limbs([ + 14270884667693338729, + 18421783881067727877, + 702505960635108322, + 876601962183112334, + ]), + Fq::from_montgomery_limbs([ + 12801928710162774032, + 15709283060501093378, + 2508615709628312314, + 924328772397935430, + ]), + Fq::from_montgomery_limbs([ + 9019134492733417932, + 4614098400696239641, + 291908476903718505, + 879711180612784839, + ]), + Fq::from_montgomery_limbs([ + 12296479578360854848, + 3423354675244851904, + 17098596077633953792, + 378482623029323224, + ]), + Fq::from_montgomery_limbs([ + 13200816203042245771, + 15381254577926224952, + 14688424257545082743, + 884773501591309967, + ]), + Fq::from_montgomery_limbs([ + 16263843110415550162, + 14001011937262187824, + 2325893788175944450, + 427344840846697831, + ]), + Fq::from_montgomery_limbs([ + 10712788406702291397, + 14628016237392831746, + 12076323935029775432, + 746032296870665924, + ]), + Fq::from_montgomery_limbs([ + 7577844083779539683, + 8593563853045273470, + 6762705862919489296, + 1011466592883577533, + ]), + Fq::from_montgomery_limbs([ + 10970204418416076913, + 4397529361571105931, + 15590416832284287611, + 432035610777585218, + ]), + Fq::from_montgomery_limbs([ + 13604542201065871088, + 8000646895858538916, + 7463535664974476191, + 112496092381655883, + ]), + Fq::from_montgomery_limbs([ + 5448941064349247150, + 18035446383961421934, + 9688851655819494355, + 314108334517577725, + ]), + Fq::from_montgomery_limbs([ + 13216339084640418338, + 18208749029142079159, + 2801888902925820506, + 1144112407212441278, + ]), + Fq::from_montgomery_limbs([ + 10386335329700935468, + 13018324118118161010, + 2406041197881630048, + 1324098854417409495, + ]), + Fq::from_montgomery_limbs([ + 2690622444332381359, + 2738375881209676440, + 17836986493178387691, + 868260556757543816, + ]), + Fq::from_montgomery_limbs([ + 9714850335178297908, + 2509018678236953449, + 1040431953277617242, + 408671886406597132, + ]), + Fq::from_montgomery_limbs([ + 707163896186597409, + 13903930520829310823, + 14380446875360964889, + 798432165792010570, + ]), + Fq::from_montgomery_limbs([ + 12820993772370131859, + 3069542795148551755, + 4040592593739183911, + 977377017483241698, + ]), + Fq::from_montgomery_limbs([ + 4384064590197914518, + 11440426390601473487, + 3890530701580791196, + 991346454205769097, + ]), + Fq::from_montgomery_limbs([ + 2745693351823380117, + 3687897447624002689, + 13955517171460419947, + 904061096631428006, + ]), + Fq::from_montgomery_limbs([ + 1760514697396940568, + 6095881437414931654, + 3928451548254372674, + 247578034773164640, + ]), + Fq::from_montgomery_limbs([ + 16683268981822865275, + 15797990746305502978, + 12125148959239662231, + 449202381506144581, + ]), + Fq::from_montgomery_limbs([ + 1544285291520736591, + 5232522639692590592, + 14175161601321791260, + 1003097983515138607, + ]), + Fq::from_montgomery_limbs([ + 13865967627227239358, + 4354525642109054184, + 5021238725820305528, + 906854086996571433, + ]), + Fq::from_montgomery_limbs([ + 15375530278413617622, + 7761235083504109835, + 15924872860758961429, + 537333030355735422, + ]), + Fq::from_montgomery_limbs([ + 13872782625772992287, + 2068079588750918007, + 17083661114150680976, + 191043765855622193, + ]), + Fq::from_montgomery_limbs([ + 489795382124266981, + 9316407371494156111, + 16300320024181640604, + 1307068723907147815, + ]), + Fq::from_montgomery_limbs([ + 77890204043514297, + 14999308260055033106, + 16273406145240730287, + 1230840137172288304, + ]), + Fq::from_montgomery_limbs([ + 9003111034130458080, + 14053560383370232566, + 14148009681833335599, + 84069116658731520, + ]), + Fq::from_montgomery_limbs([ + 1986315671557859076, + 944997752628096648, + 6737867794955410335, + 792066859500791592, + ]), + Fq::from_montgomery_limbs([ + 11554157552429322652, + 6015547764843714345, + 3599229111267661129, + 1102309536290663120, + ]), + Fq::from_montgomery_limbs([ + 16401157455500798150, + 2599298290463801395, + 4428490753223095655, + 516522849079366838, + ]), + Fq::from_montgomery_limbs([ + 7623242261478057757, + 3618111358832343565, + 1696272282252986964, + 280076732551033967, + ]), + Fq::from_montgomery_limbs([ + 13071470547050819875, + 20719442839602638, + 9223499824514905062, + 1041977639884177823, + ]), + Fq::from_montgomery_limbs([ + 1150980008515938579, + 12791886596105604965, + 11797006328775889799, + 132341159056314927, + ]), + Fq::from_montgomery_limbs([ + 16356304185985037124, + 18355100705716380177, + 1487696971024578548, + 1163163264873917501, + ]), + Fq::from_montgomery_limbs([ + 8790136689831869026, + 9859012327886066746, + 1622774421779032220, + 680128396913817531, + ]), + Fq::from_montgomery_limbs([ + 2440240671160835195, + 5639103082516719016, + 16233642885930425961, + 459387979334747122, + ]), + Fq::from_montgomery_limbs([ + 3071531689091094489, + 11779374527227589848, + 5879834474282319317, + 392743474596485606, + ]), + Fq::from_montgomery_limbs([ + 3786139316484579004, + 7465575270640816353, + 3301786867662477611, + 919080835077506714, + ]), + Fq::from_montgomery_limbs([ + 4241677901554464615, + 14852259420419314449, + 9789117952977925786, + 1276159211529108963, + ]), + Fq::from_montgomery_limbs([ + 15762815448669571633, + 7231481802108863616, + 8209538117580382786, + 894055725982675524, + ]), + Fq::from_montgomery_limbs([ + 3283548778124636488, + 17961129609378056584, + 12441299600811628613, + 709973667467565902, + ]), + Fq::from_montgomery_limbs([ + 1675404449995783699, + 17666259544497784614, + 13412804093386962519, + 434991501447979808, + ]), + Fq::from_montgomery_limbs([ + 17976226742991442453, + 14546337615752094946, + 6516407789910488272, + 1036976265682484688, + ]), + Fq::from_montgomery_limbs([ + 13972137480979054280, + 1231617287998224018, + 8770959412540690803, + 274349352586037174, + ]), + Fq::from_montgomery_limbs([ + 14183071713815614452, + 12618349549865293619, + 4916959733988057866, + 228836586859139895, + ]), + Fq::from_montgomery_limbs([ + 2619860170191204767, + 6934658348682381942, + 445022332707100685, + 525184674849718520, + ]), + Fq::from_montgomery_limbs([ + 10672109165350813992, + 13411227948301334538, + 7449776000632083055, + 11625548609868921, + ]), + Fq::from_montgomery_limbs([ + 6408656838496226261, + 10947889213454603074, + 15967755490758556438, + 18592735561502547, + ]), + Fq::from_montgomery_limbs([ + 5719054350460464154, + 7527902657216442354, + 5295945207916573176, + 1277891579319310511, + ]), + Fq::from_montgomery_limbs([ + 7105816865111098866, + 4412124756024705272, + 4327040274749466413, + 598090016113808041, + ]), + Fq::from_montgomery_limbs([ + 14284938317479677602, + 545805528309510796, + 102974980360120576, + 899208167330224593, + ]), + Fq::from_montgomery_limbs([ + 5366620062124263126, + 13693679210134795513, + 8256935418799663781, + 300801001668016020, + ]), + Fq::from_montgomery_limbs([ + 16666288670655775443, + 14215432659130173847, + 10678349345487712045, + 253025966523940173, + ]), + Fq::from_montgomery_limbs([ + 6560188020165350685, + 12696821494974958005, + 2143653898969513475, + 494844631437184679, + ]), + Fq::from_montgomery_limbs([ + 13593887229322257028, + 4816959067341413725, + 11133022091159268235, + 612414996504397371, + ]), + Fq::from_montgomery_limbs([ + 4493136462766479434, + 9962442648546643845, + 10853590841986868899, + 915809217863755522, + ]), + Fq::from_montgomery_limbs([ + 5214032566506119292, + 11323013569723200047, + 18236741420002046410, + 941445927442235049, + ]), + Fq::from_montgomery_limbs([ + 6205769808699672756, + 10246354759179081834, + 15794825809172864679, + 391230400284939041, + ]), + Fq::from_montgomery_limbs([ + 10116008430714875822, + 9911045248650761841, + 9928250721052258527, + 1185128099055962746, + ]), + Fq::from_montgomery_limbs([ + 2754748402734001689, + 17481760215560470485, + 11108275517987128040, + 348615537989168903, + ]), + Fq::from_montgomery_limbs([ + 13782224526187933341, + 17030959399708586099, + 15775077522611833532, + 290351976048235673, + ]), + Fq::from_montgomery_limbs([ + 4412648891557328130, + 11831420266571130198, + 9622609839094253285, + 639422212319659804, + ]), + Fq::from_montgomery_limbs([ + 8394758426176289938, + 11674917207711491310, + 7857067218925827640, + 1264271461076358629, + ]), + Fq::from_montgomery_limbs([ + 10524729381187531101, + 6565819519130692503, + 16455243200834114571, + 1113660583135941246, + ]), + Fq::from_montgomery_limbs([ + 4910640324547367503, + 7067950532806399572, + 15713931663221284957, + 678204411073496593, + ]), + Fq::from_montgomery_limbs([ + 17524781941219231334, + 14436265047853993106, + 10996160202266791558, + 586004270078950889, + ]), + Fq::from_montgomery_limbs([ + 14088867458599093720, + 2106970093596697979, + 12220921713367378788, + 618714343685517328, + ]), + Fq::from_montgomery_limbs([ + 13932309166033056776, + 14069500197080883428, + 17852601968294832436, + 305995160171313882, + ]), + Fq::from_montgomery_limbs([ + 13426729481828305095, + 7452289540294927985, + 6441597690310943218, + 1276798385624416753, + ]), + Fq::from_montgomery_limbs([ + 15655620409673762414, + 3933061560128724680, + 5010270981571820124, + 220150600325447216, + ]), + Fq::from_montgomery_limbs([ + 1057266741773269348, + 17485469765347279593, + 9555353042208049027, + 1246738101059957518, + ]), + Fq::from_montgomery_limbs([ + 10770884181623310580, + 8877029614675920762, + 13991352514348114517, + 1230612668702201686, + ]), + Fq::from_montgomery_limbs([ + 15095255137495972889, + 10892244248329151219, + 11620083234647182892, + 868324939988635652, + ]), + Fq::from_montgomery_limbs([ + 16875353652867044098, + 11044339467067704334, + 4725495506316385244, + 751264243578502741, + ]), + Fq::from_montgomery_limbs([ + 641704525978654163, + 17754251290783679148, + 14269956822024939667, + 156185085842124354, + ]), + Fq::from_montgomery_limbs([ + 6461798206210941852, + 6476027702683698308, + 1734931238850329993, + 290399632377126477, + ]), + Fq::from_montgomery_limbs([ + 8091575218940757791, + 5709045878190771843, + 1459237052414398801, + 276967051734326786, + ]), + Fq::from_montgomery_limbs([ + 11612189501971032754, + 8427470897363557012, + 8611179978421665778, + 759746899153341383, + ]), + Fq::from_montgomery_limbs([ + 6954134997737035694, + 10268732943041819889, + 14604130092481798797, + 846640249172985022, + ]), + Fq::from_montgomery_limbs([ + 7190233069227170594, + 5561401768913144101, + 1445785661167706223, + 651525665098162949, + ]), + Fq::from_montgomery_limbs([ + 9217546346311075388, + 11071132921926268863, + 15917748726189064849, + 1251775227051161244, + ]), + Fq::from_montgomery_limbs([ + 10390884162889041261, + 16176571899127336650, + 10615791626897231355, + 642115614053282820, + ]), + Fq::from_montgomery_limbs([ + 17238403316934198029, + 13759340588486548936, + 6092125402785041680, + 230724379449110850, + ]), + Fq::from_montgomery_limbs([ + 1508952168622687260, + 8480288040262420498, + 1917577574060388838, + 1254153906405997789, + ]), + Fq::from_montgomery_limbs([ + 13254932503780193579, + 12662991171495849740, + 2932469488008999350, + 1254958848016626489, + ]), + Fq::from_montgomery_limbs([ + 863236748932298852, + 7531642076948568445, + 10425812845553160509, + 563371573575694666, + ]), + Fq::from_montgomery_limbs([ + 3280480068018390373, + 10989862717157633913, + 16572854018482057186, + 113384026788145572, + ]), + Fq::from_montgomery_limbs([ + 11491036808249350882, + 3627925597439189593, + 785824861964165853, + 215791427072358220, + ]), + Fq::from_montgomery_limbs([ + 7066074229281293800, + 13321822906632769865, + 3996439965503887948, + 1564366489909582, + ]), + Fq::from_montgomery_limbs([ + 7382263529174205793, + 14901486809768854424, + 3687940160755015064, + 91446740043994899, + ]), + Fq::from_montgomery_limbs([ + 11979694890244940318, + 2563830158714032427, + 9819921513414604825, + 870663742752411934, + ]), + Fq::from_montgomery_limbs([ + 1600021421033761986, + 8201138969411280812, + 17030652845294033608, + 12175051723204743, + ]), + Fq::from_montgomery_limbs([ + 1850310843394039419, + 1954532768801601911, + 9226966238277907828, + 1236975459555124690, + ]), + Fq::from_montgomery_limbs([ + 16345060141053822550, + 2663786082800954949, + 9784580111187431074, + 818513014765649539, + ]), + Fq::from_montgomery_limbs([ + 16446391408112544104, + 9380932902331254953, + 7071379728384813096, + 646895171875290856, + ]), + Fq::from_montgomery_limbs([ + 2378405837694151935, + 13313303748778516106, + 5453795007116110093, + 1101728113109054876, + ]), + Fq::from_montgomery_limbs([ + 11103307651772077753, + 12554518811578576783, + 12962391676951625000, + 52064702946163453, + ]), + Fq::from_montgomery_limbs([ + 7926549255154919159, + 12556509793741807839, + 8290515496020439025, + 258653521926883600, + ]), + Fq::from_montgomery_limbs([ + 307299355354566495, + 17945732282126444629, + 5433370265316074894, + 460536024110656568, + ]), + Fq::from_montgomery_limbs([ + 5763861568912805530, + 17141796164103068870, + 2848893594009159478, + 1261756298628549918, + ]), + Fq::from_montgomery_limbs([ + 3229487655955554305, + 14944270980978379931, + 9844844119202542915, + 234743086760476866, + ]), + Fq::from_montgomery_limbs([ + 2342004844464551443, + 1279967885187315863, + 373313457964011347, + 1079422596885440278, + ]), + Fq::from_montgomery_limbs([ + 1952007392466585094, + 11762818037481718593, + 16662923564394512208, + 893001431908838762, + ]), + Fq::from_montgomery_limbs([ + 106763804585413546, + 14271628963442624240, + 590027926779466412, + 57257575012574740, + ]), + Fq::from_montgomery_limbs([ + 16630768758834449311, + 422003402188528512, + 12098463822102798962, + 159137531863727176, + ]), + Fq::from_montgomery_limbs([ + 15534331691675530779, + 7061806693665915536, + 16952361759388884403, + 1053244934847428200, + ]), + Fq::from_montgomery_limbs([ + 9263591902583432602, + 7558693853599155266, + 14896692490740080749, + 1313322134212571400, + ]), + Fq::from_montgomery_limbs([ + 15314480314637379126, + 1151647617314553881, + 17769711940094483975, + 1199725079245274287, + ]), + Fq::from_montgomery_limbs([ + 7963766923607262431, + 12935141255115233618, + 12948228604583141176, + 360484743040385122, + ]), + Fq::from_montgomery_limbs([ + 3259283452211432293, + 17170672158941172313, + 3570208516876138657, + 1045429527322967456, + ]), + Fq::from_montgomery_limbs([ + 1765653178452548393, + 6627965412101454655, + 12661490346413822347, + 978755993134545199, + ]), + Fq::from_montgomery_limbs([ + 142797348951966355, + 5680553790994685398, + 810985092665822303, + 289501802913912482, + ]), + Fq::from_montgomery_limbs([ + 8095554876468743411, + 9181238692547872814, + 13704917242845320718, + 866066458565737675, + ]), + Fq::from_montgomery_limbs([ + 5618373333754035477, + 16633102630691350807, + 10343904648768900571, + 949315695648845008, + ]), + Fq::from_montgomery_limbs([ + 10496943145011706036, + 10929716347158307141, + 11553769369075211708, + 1156430459068926506, + ]), + Fq::from_montgomery_limbs([ + 3889976630621922060, + 9491334042353419195, + 9943086516865463752, + 462137530016129102, + ]), + Fq::from_montgomery_limbs([ + 14851654499263418555, + 8665479737435134577, + 9236486044957348017, + 1285301549410464570, + ]), + Fq::from_montgomery_limbs([ + 7032376007033081754, + 8938792808860946217, + 3397334075607636452, + 1167008250605621029, + ]), + Fq::from_montgomery_limbs([ + 10427481727006183439, + 3824318376195666571, + 1544453519691883408, + 1045681207836001052, + ]), + Fq::from_montgomery_limbs([ + 8928604482578123459, + 13973435534214403451, + 15227973464547816988, + 1229619095421485591, + ]), + Fq::from_montgomery_limbs([ + 4131997010006110231, + 8734538168607192092, + 5033945745534142948, + 1277988214099374488, + ]), + Fq::from_montgomery_limbs([ + 7299169039441587737, + 2287517025912039400, + 5920702563974091346, + 687869072690227692, + ]), + Fq::from_montgomery_limbs([ + 6148873693348937540, + 8423800650513424718, + 13147300378355369290, + 1251696519717235960, + ]), + Fq::from_montgomery_limbs([ + 8030856695051151637, + 10312034347138903675, + 10835031793863243014, + 356820600815810125, + ]), + Fq::from_montgomery_limbs([ + 888403096248430880, + 456025372404859213, + 15679766799242003387, + 331916255940957050, + ]), + Fq::from_montgomery_limbs([ + 11302383770835780508, + 16138456171506112495, + 4451261995311188362, + 326167792976852851, + ]), + Fq::from_montgomery_limbs([ + 12620205064271173241, + 5865309702805720081, + 5860769966892734734, + 960482480478038522, + ]), + Fq::from_montgomery_limbs([ + 12917044525272992137, + 17120989425489435715, + 17218371420168852178, + 100206712207827792, + ]), + Fq::from_montgomery_limbs([ + 5324266172011654367, + 5689211424378054902, + 13406842486269119334, + 232294740918000310, + ]), + Fq::from_montgomery_limbs([ + 8539429359150556585, + 10134859336768345709, + 15233097762752119955, + 731468941704353059, + ]), + Fq::from_montgomery_limbs([ + 10594565907991339987, + 3638446029011375614, + 1076241376615234382, + 91321489252748304, + ]), + Fq::from_montgomery_limbs([ + 7150892232338862131, + 15181691199330314635, + 5084197575257990721, + 970732723520969453, + ]), + Fq::from_montgomery_limbs([ + 14117187289068639852, + 3124767309289558236, + 13224466604519094715, + 428140550724790451, + ]), + Fq::from_montgomery_limbs([ + 14415259957437088686, + 1795634329615314624, + 2942903263296282359, + 1012688804870889787, + ]), + Fq::from_montgomery_limbs([ + 16612890529511826604, + 7596386633939850032, + 5924746967850324505, + 65893974101627502, + ]), + Fq::from_montgomery_limbs([ + 4944775760295616420, + 17454746499425782002, + 7483609147553356481, + 669769743129713618, + ]), + Fq::from_montgomery_limbs([ + 8550535250927460379, + 14244832580975560343, + 10645153178392827451, + 166145496718571589, + ]), + Fq::from_montgomery_limbs([ + 9472382061922092532, + 12599919710080842820, + 17660755505335019341, + 951845755731906033, + ]), + Fq::from_montgomery_limbs([ + 7377011861447992951, + 14177185276539188245, + 16485545164384506751, + 69008004491455439, + ]), + Fq::from_montgomery_limbs([ + 7269422847571440384, + 10971182983165050190, + 10477114392953393609, + 529340264286832500, + ]), + Fq::from_montgomery_limbs([ + 13548253733030119113, + 18088771080273253716, + 5912265224571254564, + 960653798531692016, + ]), + Fq::from_montgomery_limbs([ + 14593305211432266861, + 13978513480108154064, + 12072035272437813296, + 238383478016939515, + ]), + Fq::from_montgomery_limbs([ + 14430090856465614687, + 2808920183931810539, + 2024298398014953733, + 368635335239145011, + ]), + Fq::from_montgomery_limbs([ + 6675901818525858406, + 9691159442966147586, + 5200040876915433586, + 1110689247130868755, + ]), + Fq::from_montgomery_limbs([ + 13172765826410278322, + 13976386792584577667, + 8689999043086184378, + 259436890611363824, + ]), + Fq::from_montgomery_limbs([ + 84751421588979831, + 14888392918538911455, + 5486551275818624189, + 951800733297191582, + ]), + Fq::from_montgomery_limbs([ + 15334319937719221770, + 11563835865217739090, + 18090033619866166811, + 678279699900803053, + ]), + Fq::from_montgomery_limbs([ + 15589602438316257145, + 1666336392544054075, + 8107996193749583854, + 23283085724274977, + ]), + Fq::from_montgomery_limbs([ + 6797724227011875266, + 11367852742974149411, + 6678291715699080418, + 92125477783429941, + ]), + Fq::from_montgomery_limbs([ + 15080983138964048420, + 537488507591658978, + 16294679657097133087, + 1191852563555895615, + ]), + Fq::from_montgomery_limbs([ + 4338903643143774627, + 11044337452245898206, + 15830174313418706999, + 31920243523174840, + ]), + Fq::from_montgomery_limbs([ + 8492021065892592922, + 7492942567998031746, + 10227910279589795050, + 947691312997138730, + ]), + Fq::from_montgomery_limbs([ + 9561116086048874539, + 18073885101683330337, + 14636134925092176090, + 722339593463585968, + ]), + Fq::from_montgomery_limbs([ + 41785100841227711, + 17666935019222315365, + 4927473313984438107, + 67884280271688399, + ]), + Fq::from_montgomery_limbs([ + 1446967628258656962, + 11243844490161767343, + 16958413638051813042, + 1004693359077776727, + ]), + Fq::from_montgomery_limbs([ + 9629608502131673092, + 2882928936333963073, + 15987483283589685207, + 660673428262656412, + ]), + Fq::from_montgomery_limbs([ + 2443606364563185491, + 10139467314740663228, + 15189229884372483835, + 1290830618469438802, + ]), + Fq::from_montgomery_limbs([ + 3046319622343455954, + 3931730478916712920, + 8623867774890709346, + 1201913658507810759, + ]), + Fq::from_montgomery_limbs([ + 14392864240168621772, + 17867735212625517017, + 2772429327165542818, + 836534298808933, + ]), + Fq::from_montgomery_limbs([ + 1151940341306701400, + 3833643241309263777, + 13096509072792897905, + 752108833686380875, + ]), + Fq::from_montgomery_limbs([ + 5229009174997575511, + 6605658491463927698, + 15536337046468055686, + 157609910170207177, + ]), + Fq::from_montgomery_limbs([ + 8741468218382317460, + 7144323380514935844, + 8672006512648752584, + 1334645244751689770, + ]), + Fq::from_montgomery_limbs([ + 10735754706394522516, + 4616532568937564832, + 15473812904469788516, + 326598703312455138, + ]), + Fq::from_montgomery_limbs([ + 13470305024595632219, + 3964162559887319987, + 4104496442465768155, + 575184728889423472, + ]), + Fq::from_montgomery_limbs([ + 7024155969680638810, + 1248446637476984159, + 3946566487106719690, + 78713827286502076, + ]), + Fq::from_montgomery_limbs([ + 1167875954574760034, + 7519910968010082415, + 15211147069856354453, + 750498091773211075, + ]), + Fq::from_montgomery_limbs([ + 2863941003802949509, + 14521430537116398940, + 17833674840165779294, + 1117243092487510999, + ]), + Fq::from_montgomery_limbs([ + 3988048134544140696, + 4164314985762153852, + 5192160405207219362, + 537616833580442108, + ]), + Fq::from_montgomery_limbs([ + 11691596547822673173, + 2072119953696732776, + 6048298284479353132, + 1041936268987727800, + ]), + Fq::from_montgomery_limbs([ + 5195217310941133128, + 983742991580727110, + 15582341176749546934, + 192949243806351219, + ]), + Fq::from_montgomery_limbs([ + 989864604993544245, + 10337084476006024351, + 6399045939932107087, + 349553169959482485, + ]), + Fq::from_montgomery_limbs([ + 1083252708106498385, + 14683159496360594363, + 6249116681658609726, + 965679621626703084, + ]), + Fq::from_montgomery_limbs([ + 15520366118357711305, + 15455325080109246278, + 15912772926708879347, + 1181106395388318589, + ]), + Fq::from_montgomery_limbs([ + 10606086519021812869, + 8982436141916758768, + 8984252788653949566, + 94441446490162493, + ]), + Fq::from_montgomery_limbs([ + 3989193979672410706, + 14522119372119676520, + 6031184060057719655, + 876537182738173910, + ]), + Fq::from_montgomery_limbs([ + 6542858007243344725, + 10468817694619667802, + 1374963053947997860, + 281508730046968385, + ]), + Fq::from_montgomery_limbs([ + 2121254413916702881, + 11174399821186314401, + 642752851055260652, + 172419384352924756, + ]), + Fq::from_montgomery_limbs([ + 14933138168325040251, + 18073996174008481460, + 7709184193316921275, + 77928985789134259, + ]), + Fq::from_montgomery_limbs([ + 14183089598463409576, + 9599657595270154138, + 10401242555342360511, + 1031862193117340540, + ]), + Fq::from_montgomery_limbs([ + 17077860441038791206, + 6907855957939974514, + 7600347021193310054, + 225485956370582495, + ]), + Fq::from_montgomery_limbs([ + 14475416504140964933, + 6622123083135972798, + 9257366424078234840, + 1254195725521864761, + ]), + Fq::from_montgomery_limbs([ + 18280884764210583702, + 16338431925875586014, + 14128385164093913939, + 598858774608218822, + ]), + Fq::from_montgomery_limbs([ + 4251295228276607623, + 14698477834719362145, + 1576184780996848894, + 571585722355337029, + ]), + Fq::from_montgomery_limbs([ + 13272236615232894643, + 14010494529183759900, + 800023943280278947, + 298394511556555918, + ]), + Fq::from_montgomery_limbs([ + 10782700402615775164, + 14412830325727077172, + 4994923730339550224, + 1079837299050839065, + ]), + Fq::from_montgomery_limbs([ + 3621380562787996822, + 9464307808788620312, + 13909924710435794908, + 954766105382202190, + ]), + Fq::from_montgomery_limbs([ + 17420485363085974001, + 9021049394344178089, + 8712760747075739797, + 568515634248632496, + ]), + Fq::from_montgomery_limbs([ + 5631572804871766736, + 5280080317359998903, + 10662020310256217520, + 409512057651566449, + ]), + Fq::from_montgomery_limbs([ + 492276079446892838, + 2465000468485598245, + 8673960199484145367, + 1223371911459041820, + ]), + Fq::from_montgomery_limbs([ + 16206685073675005008, + 13515283938452316993, + 8657484044144188143, + 555324291337764049, + ]), + Fq::from_montgomery_limbs([ + 12258020657657344839, + 14080584073572047035, + 1786385914292976334, + 890045806750446876, + ]), + Fq::from_montgomery_limbs([ + 5437561110469019457, + 4195656535041473973, + 16642453980220687614, + 66446192393822025, + ]), + Fq::from_montgomery_limbs([ + 11378296852796405140, + 13948486972729474860, + 13814823936920393870, + 543448461574407786, + ]), + Fq::from_montgomery_limbs([ + 15861083328916660546, + 10580336230427962464, + 8314263211374088393, + 462499203598507289, + ]), + Fq::from_montgomery_limbs([ + 3596880637235637430, + 7244702719747713366, + 7698652078859897602, + 339166837713921764, + ]), + Fq::from_montgomery_limbs([ + 16434053565692243270, + 856826524108649327, + 582888221769745389, + 231849743296221718, + ]), + Fq::from_montgomery_limbs([ + 13466829214638063330, + 11871004193533817602, + 8715083865527535935, + 772758187739256383, + ]), + Fq::from_montgomery_limbs([ + 2215715304482300708, + 6939601967594674311, + 9762471006918361079, + 751422865267861919, + ]), + Fq::from_montgomery_limbs([ + 8660358354344868439, + 10887567579928131536, + 4636772766460938216, + 875861572717087557, + ]), + Fq::from_montgomery_limbs([ + 3718962475606244056, + 3574286178071706662, + 13969021013516480159, + 674248673994385489, + ]), + Fq::from_montgomery_limbs([ + 13879628242113969355, + 15611868744516972804, + 689523972787487196, + 272170949885373985, + ]), + Fq::from_montgomery_limbs([ + 731217591867043834, + 12057204063676562058, + 9968800370062020379, + 54367310812503073, + ]), + Fq::from_montgomery_limbs([ + 10847577089461485884, + 14781720798335935361, + 2050883758009058177, + 1227443941313558442, + ]), + Fq::from_montgomery_limbs([ + 15484525416052326375, + 10433705807314230036, + 15903522838889990919, + 544585322945419235, + ]), + Fq::from_montgomery_limbs([ + 5074309280962037193, + 5217880605983656639, + 14510200362648483018, + 557494968888174908, + ]), + Fq::from_montgomery_limbs([ + 5195138641573043477, + 9406776113353168661, + 14027024671301857164, + 845631148216790994, + ]), + Fq::from_montgomery_limbs([ + 17960866561088745173, + 7239612137411824399, + 608332955631666951, + 1339588249269723610, + ]), + Fq::from_montgomery_limbs([ + 6645023811265252448, + 359090506368957415, + 13186732800236585001, + 636175819244839498, + ]), + Fq::from_montgomery_limbs([ + 9658258475735190727, + 14527591238813797995, + 16927575748315332307, + 1301180113169078950, + ]), + Fq::from_montgomery_limbs([ + 2426687195330334614, + 1677243348703957868, + 280959539850383222, + 1302367371047198015, + ]), + Fq::from_montgomery_limbs([ + 2824388857182280398, + 387310680804206136, + 5259604914427521138, + 1184806076664523237, + ]), + Fq::from_montgomery_limbs([ + 7574972296183053595, + 15822886777846030642, + 12388539958981301194, + 559152516777131559, + ]), + Fq::from_montgomery_limbs([ + 12201036799149233249, + 17892988483166995904, + 18084947728796372356, + 675956869171241463, + ]), + Fq::from_montgomery_limbs([ + 16104554650380896914, + 4746900513825001701, + 6829416706759018904, + 220904217190207835, + ]), + Fq::from_montgomery_limbs([ + 17292549212841163737, + 2352946917715655598, + 10473544622578247206, + 331414403574303893, + ]), + Fq::from_montgomery_limbs([ + 11411751507285114977, + 6456131281833042189, + 9429033659401855692, + 1204457583147690703, + ]), + Fq::from_montgomery_limbs([ + 13351228652344837450, + 3406524763947142470, + 9081889404473741581, + 940424223754317289, + ]), + Fq::from_montgomery_limbs([ + 14630628062553504316, + 6262447828497056896, + 18085717084217406803, + 799246626583428302, + ]), + Fq::from_montgomery_limbs([ + 864375154255180873, + 14000240309598220542, + 1750007932942661463, + 761312485749733723, + ]), + Fq::from_montgomery_limbs([ + 14345179008259546406, + 6736994392830783692, + 5908556958000542218, + 1253865209554350406, + ]), + Fq::from_montgomery_limbs([ + 9764377369274365673, + 9072647876947127557, + 2341472943201056441, + 929216282518283791, + ]), + Fq::from_montgomery_limbs([ + 12859964114531846483, + 13694745246472282132, + 2013500954373579911, + 751364861274622110, + ]), + Fq::from_montgomery_limbs([ + 175177818989840916, + 4770111355878906194, + 12267383210154126463, + 131920286091241797, + ]), + Fq::from_montgomery_limbs([ + 6349104885803077585, + 18001260594929500797, + 14793230544956264458, + 669871090964351917, + ]), + Fq::from_montgomery_limbs([ + 1792126764165083108, + 6081987124440657035, + 5531241762790015809, + 85100796395211080, + ]), + Fq::from_montgomery_limbs([ + 11335525023979482372, + 13822295879245716952, + 777769361600630976, + 852248906668581924, + ]), + Fq::from_montgomery_limbs([ + 2057611721707481944, + 12549766028751733826, + 3184617081367493745, + 17035887437619700, + ]), + Fq::from_montgomery_limbs([ + 5033510300536938046, + 14319156262351107248, + 14453339555250931608, + 1300088399042594667, + ]), + Fq::from_montgomery_limbs([ + 586365878943401533, + 10219333061949038245, + 7972787616665459187, + 1180682599170166362, + ]), + Fq::from_montgomery_limbs([ + 8677310049713074877, + 6209659062870853276, + 6361763165884296788, + 1086786531947345096, + ]), + Fq::from_montgomery_limbs([ + 4779669491370037827, + 13794675476884129106, + 2856260482144566523, + 815058410432730978, + ]), + Fq::from_montgomery_limbs([ + 8349785262387520653, + 14703604045323517453, + 10665488643511503896, + 1190736588532344714, + ]), + Fq::from_montgomery_limbs([ + 9753136258891648437, + 7592309943578822500, + 18234430885873993524, + 946608033429176051, + ]), + Fq::from_montgomery_limbs([ + 8862120093151408513, + 9919781382246740055, + 1639967479777957120, + 548895009658598348, + ]), + Fq::from_montgomery_limbs([ + 13150047014556861649, + 9895352886349978940, + 607603433543469096, + 825078058460205935, + ]), + Fq::from_montgomery_limbs([ + 10677514517763000310, + 1869057220976501750, + 7668490026500068131, + 645375934459787109, + ]), + Fq::from_montgomery_limbs([ + 8393901821323241932, + 7155803376644055598, + 5465256629438666110, + 467809976924970962, + ]), + Fq::from_montgomery_limbs([ + 8008789779293081850, + 17333068400582244417, + 864473515802821379, + 712131972755422562, + ]), + Fq::from_montgomery_limbs([ + 5260641048740129119, + 11495506189219575805, + 1976170684554961654, + 583558279245420304, + ]), + Fq::from_montgomery_limbs([ + 10607922137491563126, + 16997507064637422660, + 16243052688991164520, + 620318480202596319, + ]), + Fq::from_montgomery_limbs([ + 8682850641454705537, + 4234371891064954414, + 11030571520428482979, + 775687601614273649, + ]), + Fq::from_montgomery_limbs([ + 12248979915462901096, + 1794636648127247975, + 16388845185353268388, + 1257257804440120883, + ]), + Fq::from_montgomery_limbs([ + 17181365213230240819, + 3933917789297525218, + 774796165591114183, + 628159510187755171, + ]), + Fq::from_montgomery_limbs([ + 9201407700189177387, + 14700424513123193347, + 18288661468232834482, + 407382537568434540, + ]), + Fq::from_montgomery_limbs([ + 11966891449526246216, + 6846368159746727324, + 5421814018651935761, + 1007837491484494646, + ]), + Fq::from_montgomery_limbs([ + 3054672449338249840, + 772010416012553897, + 804919836093674272, + 60934971449786311, + ]), + Fq::from_montgomery_limbs([ + 3349955854192164124, + 12023516821995660430, + 14073054570207692346, + 391152224081538807, + ]), + Fq::from_montgomery_limbs([ + 4393818606630194054, + 11894249453630174803, + 11407464681452601419, + 527342257675756743, + ]), + Fq::from_montgomery_limbs([ + 593191207061949875, + 394301333075100218, + 15992303837511873397, + 1258463696198082538, + ]), + Fq::from_montgomery_limbs([ + 7392815618978882544, + 8600193649781721343, + 10001082189003162790, + 160465744058402439, + ]), + Fq::from_montgomery_limbs([ + 5982722207731997556, + 9327097271719907983, + 16837081471143367937, + 1323283752393867441, + ]), + Fq::from_montgomery_limbs([ + 15234580594321690160, + 14480758270368693259, + 7897576353120019799, + 1211836381357568240, + ]), + Fq::from_montgomery_limbs([ + 17534396175019205578, + 3323788238042131357, + 16622036826489890791, + 893487708746761741, + ]), + Fq::from_montgomery_limbs([ + 3851834168141787069, + 11582510337408899680, + 15343784808633432566, + 461896544402216282, + ]), + Fq::from_montgomery_limbs([ + 1182215324455482337, + 1943242735522063011, + 4144863718139895080, + 243576649285589719, + ]), + ]), + mds: MdsMatrix::new_from_known([ + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + ]), alpha: Alpha::Exponent(17), - rounds: RoundNumbers {r_P: 31, r_F: 8}, + rounds: RoundNumbers { r_P: 31, r_F: 8 }, optimized_mds: OptimizedMdsMatrices { - M_hat: SquareMatrix::<6, 36>::new_from_known([Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169])]), - v: Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), - w: Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), - M_prime: SquareMatrix::<7, 49>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169])]), - M_doubleprime: SquareMatrix::<7, 49>::new_from_known([Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([6933713838801944433, 16845582094611513195, 18106981831632269118, 1315719765541495999]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11025937787709817432, 2848215840891863663, 12003429085947921194, 123169188111155826]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12625372430371999830, 16677955247940128803, 7323211740492754581, 634092645821649835]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8476375831616065903, 8302751278140753414, 4675397025515049474, 916054888187664134]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10397071512469717592, 5168805500057287779, 15231087545157212262, 795647437775574917]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4753644871978862709, 5862282760667146308, 12460694012157225697, 599558919665641703]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), - M_inverse: SquareMatrix::<7, 49>::new_from_known([Fq::from_montgomery_limbs([18289540298934006401, 12620611207485559719, 12496121289749056322, 817144512748384706]), Fq::from_montgomery_limbs([15589773063064153532, 10937873166103048610, 6318262381745988044, 164305025615087669]), Fq::from_montgomery_limbs([15945838893269705074, 12231655940729207770, 16783976632846575746, 1109102887521365908]), Fq::from_montgomery_limbs([6834634673379885361, 14313980702431346769, 11799433102834887335, 414159939376644417]), Fq::from_montgomery_limbs([6202864031195801806, 9008291636618939950, 4452886644180013898, 834656796167786155]), Fq::from_montgomery_limbs([257831097013115576, 868816813650478155, 3804928554730106375, 37318070574597666]), Fq::from_montgomery_limbs([12731957617084167734, 10385122202334236509, 6304526407551965622, 473830859466044865]), Fq::from_montgomery_limbs([15589773063064153532, 10937873166103048610, 6318262381745988044, 164305025615087669]), Fq::from_montgomery_limbs([6846034351900465196, 14922456655897598264, 3385387262061980880, 41120221023296058]), Fq::from_montgomery_limbs([15382748348274919943, 17176897444608801178, 9672737639142736111, 667324299238078128]), Fq::from_montgomery_limbs([15347282079877344563, 7118861760574925591, 14639960435031189354, 496118406637979928]), Fq::from_montgomery_limbs([10633984218986397485, 1476776383719121929, 18242946201412975574, 235737836971566080]), Fq::from_montgomery_limbs([13255078662550912877, 6201099884138924934, 16598544366614787861, 517978551803961280]), Fq::from_montgomery_limbs([16511322183643786520, 12899213679171041629, 10327663219981717303, 101291905845336522]), Fq::from_montgomery_limbs([15945838893269705074, 12231655940729207770, 16783976632846575746, 1109102887521365908]), Fq::from_montgomery_limbs([15382748348274919943, 17176897444608801178, 9672737639142736111, 667324299238078128]), Fq::from_montgomery_limbs([14205197080554911234, 18284593956791143607, 9307844449907611885, 840522240017846486]), Fq::from_montgomery_limbs([15159258319784243147, 14082599260628033239, 6774164385877933413, 747982014981801174]), Fq::from_montgomery_limbs([1720795814776594401, 1331741422739941001, 1433030060135444919, 661580976464017359]), Fq::from_montgomery_limbs([18293763308414053579, 18299155137503640753, 10462936480575081846, 453983746301356936]), Fq::from_montgomery_limbs([4581286503082050232, 12284808854596259078, 3289926894666988909, 902128282614826112]), Fq::from_montgomery_limbs([6834634673379885361, 14313980702431346769, 11799433102834887335, 414159939376644417]), Fq::from_montgomery_limbs([15347282079877344563, 7118861760574925591, 14639960435031189354, 496118406637979928]), Fq::from_montgomery_limbs([15159258319784243147, 14082599260628033239, 6774164385877933413, 747982014981801174]), Fq::from_montgomery_limbs([8459024031946559011, 9756324734815253725, 14081981857002652443, 1295411099915753127]), Fq::from_montgomery_limbs([12916186197107076085, 5935794698380416041, 14163718741243160273, 1284207706380505486]), Fq::from_montgomery_limbs([18200592249652917081, 10952824854756428652, 13221851894140961386, 952100497899551398]), Fq::from_montgomery_limbs([7909306592215715661, 12372000920976206381, 13047646210570006173, 1134258014683902124]), Fq::from_montgomery_limbs([6202864031195801806, 9008291636618939950, 4452886644180013898, 834656796167786155]), Fq::from_montgomery_limbs([10633984218986397485, 1476776383719121929, 18242946201412975574, 235737836971566080]), Fq::from_montgomery_limbs([1720795814776594401, 1331741422739941001, 1433030060135444919, 661580976464017359]), Fq::from_montgomery_limbs([12916186197107076085, 5935794698380416041, 14163718741243160273, 1284207706380505486]), Fq::from_montgomery_limbs([3910809514494604292, 8483245271389311552, 16246267851842217096, 18865255698597878]), Fq::from_montgomery_limbs([3026843501192760993, 8380473052143493977, 3054950936628239486, 722212886196682246]), Fq::from_montgomery_limbs([17640176946983601983, 7851638753013976420, 7953773760774643320, 1060395049618029567]), Fq::from_montgomery_limbs([257831097013115576, 868816813650478155, 3804928554730106375, 37318070574597666]), Fq::from_montgomery_limbs([13255078662550912877, 6201099884138924934, 16598544366614787861, 517978551803961280]), Fq::from_montgomery_limbs([18293763308414053579, 18299155137503640753, 10462936480575081846, 453983746301356936]), Fq::from_montgomery_limbs([18200592249652917081, 10952824854756428652, 13221851894140961386, 952100497899551398]), Fq::from_montgomery_limbs([3026843501192760993, 8380473052143493977, 3054950936628239486, 722212886196682246]), Fq::from_montgomery_limbs([6947786146630418877, 15369056627168554704, 17602917142112233480, 860079864989181067]), Fq::from_montgomery_limbs([12292153329582579311, 12340018229585837748, 16138005556776207249, 689763430924300574]), Fq::from_montgomery_limbs([12731957617084167734, 10385122202334236509, 6304526407551965622, 473830859466044865]), Fq::from_montgomery_limbs([16511322183643786520, 12899213679171041629, 10327663219981717303, 101291905845336522]), Fq::from_montgomery_limbs([4581286503082050232, 12284808854596259078, 3289926894666988909, 902128282614826112]), Fq::from_montgomery_limbs([7909306592215715661, 12372000920976206381, 13047646210570006173, 1134258014683902124]), Fq::from_montgomery_limbs([17640176946983601983, 7851638753013976420, 7953773760774643320, 1060395049618029567]), Fq::from_montgomery_limbs([12292153329582579311, 12340018229585837748, 16138005556776207249, 689763430924300574]), Fq::from_montgomery_limbs([11306146037240305765, 10984198068608188499, 1191708097986331420, 836519420285054905])]), - M_hat_inverse: SquareMatrix::<6, 36>::new_from_known([Fq::from_montgomery_limbs([3792453098216396897, 12628553005522469477, 16642002769880465331, 421042619293543187]), Fq::from_montgomery_limbs([10263844291975416107, 13672341457628810763, 12509513995609872959, 205381282018859586]), Fq::from_montgomery_limbs([10784713721876928946, 5674574537437802090, 12687938002553184071, 136316472684139419]), Fq::from_montgomery_limbs([16070813810583366554, 1956961633890359529, 13965208031005279836, 927951972604280320]), Fq::from_montgomery_limbs([6738933144333850617, 6100304390614169754, 1210061970152249951, 909818292837236776]), Fq::from_montgomery_limbs([9669791352790763084, 10325954078533278386, 9503492366281944368, 1040674818174287413]), Fq::from_montgomery_limbs([10263844291975416107, 13672341457628810763, 12509513995609872959, 205381282018859586]), Fq::from_montgomery_limbs([6412844366295084778, 7666866282335076917, 1998128405856404681, 74724070388243614]), Fq::from_montgomery_limbs([2820801561543625657, 2418377097726488830, 6026234412050937676, 1126089764215992130]), Fq::from_montgomery_limbs([8551209674866173640, 6260366140671248954, 12081978629156052449, 1140556338048141522]), Fq::from_montgomery_limbs([3127468548134575066, 584585047777214689, 7762916153904627652, 166598529350882438]), Fq::from_montgomery_limbs([7594054111820467981, 8571015412052249811, 6107608647809765519, 1023873926642050928]), Fq::from_montgomery_limbs([10784713721876928946, 5674574537437802090, 12687938002553184071, 136316472684139419]), Fq::from_montgomery_limbs([2820801561543625657, 2418377097726488830, 6026234412050937676, 1126089764215992130]), Fq::from_montgomery_limbs([10427240268737712782, 8508693586717179156, 9391845005515956255, 937208025112203554]), Fq::from_montgomery_limbs([8182900134894401237, 12638356435589207249, 2514008238224928511, 262393601667707271]), Fq::from_montgomery_limbs([9827417092260447852, 9328415136733098350, 7749975888478067278, 1296132886589595648]), Fq::from_montgomery_limbs([16287831069372846812, 12117020194152290696, 2582012005292236373, 964219332138367410]), Fq::from_montgomery_limbs([16070813810583366554, 1956961633890359529, 13965208031005279836, 927951972604280320]), Fq::from_montgomery_limbs([8551209674866173640, 6260366140671248954, 12081978629156052449, 1140556338048141522]), Fq::from_montgomery_limbs([8182900134894401237, 12638356435589207249, 2514008238224928511, 262393601667707271]), Fq::from_montgomery_limbs([2689211423437640460, 9937738931024806642, 16752771701136165272, 1203240695252068537]), Fq::from_montgomery_limbs([4340203757804311965, 12676662818122060527, 8325672080044279362, 1087811919015138569]), Fq::from_montgomery_limbs([14389282186921406518, 13071685447061354484, 9323961789214815202, 798867032561203873]), Fq::from_montgomery_limbs([6738933144333850617, 6100304390614169754, 1210061970152249951, 909818292837236776]), Fq::from_montgomery_limbs([3127468548134575066, 584585047777214689, 7762916153904627652, 166598529350882438]), Fq::from_montgomery_limbs([9827417092260447852, 9328415136733098350, 7749975888478067278, 1296132886589595648]), Fq::from_montgomery_limbs([4340203757804311965, 12676662818122060527, 8325672080044279362, 1087811919015138569]), Fq::from_montgomery_limbs([16937615735900532927, 2828202157217662325, 11653172729566405164, 102608297022837914]), Fq::from_montgomery_limbs([10698441721372329435, 14189560518339287134, 16709548602960206315, 1115736315296030670]), Fq::from_montgomery_limbs([9669791352790763084, 10325954078533278386, 9503492366281944368, 1040674818174287413]), Fq::from_montgomery_limbs([7594054111820467981, 8571015412052249811, 6107608647809765519, 1023873926642050928]), Fq::from_montgomery_limbs([16287831069372846812, 12117020194152290696, 2582012005292236373, 964219332138367410]), Fq::from_montgomery_limbs([14389282186921406518, 13071685447061354484, 9323961789214815202, 798867032561203873]), Fq::from_montgomery_limbs([10698441721372329435, 14189560518339287134, 16709548602960206315, 1115736315296030670]), Fq::from_montgomery_limbs([4200873270792393235, 10250359348562610182, 13119023895300261973, 870734268521497409])]), - M_00: Fq::from_montgomery_limbs([14878706952858838161, 15410104227655356999, 17393275270132988194, 905602962502284432]), - M_i: Matrix::<7, 7, 49>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3417057834288542701, 14660334709638275173, 15697961235617927687, 541283478161011852]), Fq::from_montgomery_limbs([7015809488978334700, 16756137731097346041, 4299145747412822878, 425771021418967410]), Fq::from_montgomery_limbs([11403455157288865564, 17867822347283350530, 6642326758447081407, 347793598737965121]), Fq::from_montgomery_limbs([3281498772575130056, 15793155797823121930, 13825210503534495803, 403937498710078315]), Fq::from_montgomery_limbs([14433853750795786283, 6064690325535561885, 8568546552249237512, 321732587903564709]), Fq::from_montgomery_limbs([6678655391923876018, 8629057843778719427, 9842628707936041139, 63076861057827674]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7015809488978334700, 16756137731097346041, 4299145747412822878, 425771021418967410]), Fq::from_montgomery_limbs([2912519858324498512, 6507880465488943086, 4272821136041054916, 111743668526988613]), Fq::from_montgomery_limbs([1748445869324305294, 9551769637184621333, 15854660035338842641, 935843652651688174]), Fq::from_montgomery_limbs([16017478920517952465, 12052990841260496131, 1846258033159005439, 1283952887503997049]), Fq::from_montgomery_limbs([13375753074817350454, 1048153563921378033, 9203345202329021202, 240551250239901980]), Fq::from_montgomery_limbs([11153565452311437343, 15840896398791388390, 6651106066134943770, 1041420503258293522]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11403455157288865564, 17867822347283350530, 6642326758447081407, 347793598737965121]), Fq::from_montgomery_limbs([1748445869324305294, 9551769637184621333, 15854660035338842641, 935843652651688174]), Fq::from_montgomery_limbs([12634906865313795269, 11036595778607414197, 3160889789817653150, 123157168832279614]), Fq::from_montgomery_limbs([8716577469114679639, 13354977326657221151, 13192299021058097299, 1294655858266660253]), Fq::from_montgomery_limbs([13373336070740714862, 8730572127209811217, 7187749001613674585, 593376019371200200]), Fq::from_montgomery_limbs([10026036648949247362, 12678383936758102898, 11178426371544881076, 1002297129682557342]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3281498772575130056, 15793155797823121930, 13825210503534495803, 403937498710078315]), Fq::from_montgomery_limbs([16017478920517952465, 12052990841260496131, 1846258033159005439, 1283952887503997049]), Fq::from_montgomery_limbs([8716577469114679639, 13354977326657221151, 13192299021058097299, 1294655858266660253]), Fq::from_montgomery_limbs([14690633444146561299, 13456453518898387751, 10432348396252513416, 1242585437512358865]), Fq::from_montgomery_limbs([14102570081274067998, 8257296766039180005, 7790604469177448243, 143690956943080350]), Fq::from_montgomery_limbs([8465733138989536717, 2929735846155108951, 4450573983160870127, 472219173524401119]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14433853750795786283, 6064690325535561885, 8568546552249237512, 321732587903564709]), Fq::from_montgomery_limbs([13375753074817350454, 1048153563921378033, 9203345202329021202, 240551250239901980]), Fq::from_montgomery_limbs([13373336070740714862, 8730572127209811217, 7187749001613674585, 593376019371200200]), Fq::from_montgomery_limbs([14102570081274067998, 8257296766039180005, 7790604469177448243, 143690956943080350]), Fq::from_montgomery_limbs([4085032723309791110, 4665611504008924558, 11824165711550330487, 578201258376880126]), Fq::from_montgomery_limbs([11519276958617059096, 13454485508887725898, 7249926774019308728, 1072756789797212364]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6678655391923876018, 8629057843778719427, 9842628707936041139, 63076861057827674]), Fq::from_montgomery_limbs([11153565452311437343, 15840896398791388390, 6651106066134943770, 1041420503258293522]), Fq::from_montgomery_limbs([10026036648949247362, 12678383936758102898, 11178426371544881076, 1002297129682557342]), Fq::from_montgomery_limbs([8465733138989536717, 2929735846155108951, 4450573983160870127, 472219173524401119]), Fq::from_montgomery_limbs([11519276958617059096, 13454485508887725898, 7249926774019308728, 1072756789797212364]), Fq::from_montgomery_limbs([8573207762665625898, 16056334493165972918, 10346718250214646205, 1191123760209144883])]), - v_collection: [Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([10644639721044274615, 16734510270636734171, 6265966780522802029, 1180401342618465036]), Fq::from_montgomery_limbs([1254097908378330934, 13601601811345135765, 15071243631801644424, 297593012698954223]), Fq::from_montgomery_limbs([10771062345226876930, 7469649658028794228, 3597902033882677100, 608350358812428664]), Fq::from_montgomery_limbs([10231075707837198839, 11530522131003023037, 1802721152151214035, 1212125375706727806]), Fq::from_montgomery_limbs([548206758129328348, 778220363894850734, 12082251172806692919, 593860302507973656]), Fq::from_montgomery_limbs([6029427183938663855, 17136269120728144851, 7031277897576748532, 978052702327451285])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([14583548544607776390, 1455594659839297233, 7503148269133459078, 979881557166431467]), Fq::from_montgomery_limbs([4091794927241778027, 3984934849444513902, 4168704414264273635, 1243153189837659840]), Fq::from_montgomery_limbs([13672227389423134641, 7889118255497550145, 10535716868579808028, 727851871568307361]), Fq::from_montgomery_limbs([1805790605077811102, 13328027295111756288, 15284753467090911646, 476755389437853977]), Fq::from_montgomery_limbs([6818887996128827024, 12980010109101424586, 17837508282492360706, 804695904048021645]), Fq::from_montgomery_limbs([9531071905126860029, 10560990131084904417, 3843562488879133086, 427342220830413508])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([12999307184917437199, 4460278989335054240, 8039372983916400823, 524229825913330581]), Fq::from_montgomery_limbs([13201924241923240556, 11745564486322152121, 2471694394944636145, 181216534789741406]), Fq::from_montgomery_limbs([4934105058811497644, 12271038025203690017, 7436143789682315585, 998806416030886275]), Fq::from_montgomery_limbs([13725255261959326942, 8555513885879208558, 955378272993441581, 297008239472103166]), Fq::from_montgomery_limbs([10371095811858205849, 8804518571176544229, 11002636904361592873, 660578117299637260]), Fq::from_montgomery_limbs([8307653710943752623, 2839318436416200448, 12213117778126871947, 1025759164655249254])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([11863327563780294024, 10993730767593839696, 9502873035480842903, 1097248076762680248]), Fq::from_montgomery_limbs([6808878885915903933, 8278632955554852373, 12719166835729596674, 804467256685775329]), Fq::from_montgomery_limbs([16008107817056775055, 8608502583580218397, 2796011695423831437, 949203486167282741]), Fq::from_montgomery_limbs([9591171450453062265, 6399710760130247553, 16473627252289324238, 199489766710074990]), Fq::from_montgomery_limbs([2126693132859812176, 10946771068545746672, 16987361148217467014, 545647818048109007]), Fq::from_montgomery_limbs([11988059750093062229, 9298754840020496938, 15035120852882985245, 1192754512132360647])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([8283981142206306939, 15468588506068845291, 14286327059693983748, 168088448899207140]), Fq::from_montgomery_limbs([10471089395398769453, 96236653784383214, 16648343620891915559, 253629587649938570]), Fq::from_montgomery_limbs([2122557167897006073, 6496047148498928328, 4866370458783575330, 393653606927582732]), Fq::from_montgomery_limbs([1613936452873278524, 13810247455069732717, 15313868045534267346, 1243393042619890514]), Fq::from_montgomery_limbs([15475354144715027231, 7573523099482013249, 12718534995660881344, 1280011735315941795]), Fq::from_montgomery_limbs([16713988261819571430, 2839652657083011646, 3620474509759339159, 813365112700437390])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([5224860601737206030, 471099951455807337, 4240850224623809066, 1213277143090320240]), Fq::from_montgomery_limbs([8044997223262572963, 8080347158505061529, 3228586894312007285, 331597882779275433]), Fq::from_montgomery_limbs([1208998236383405070, 1447425529631254332, 8002978071615560825, 1168296975382357177]), Fq::from_montgomery_limbs([3717552334324548558, 14379760040658949225, 17287286958139444106, 498156372540796351]), Fq::from_montgomery_limbs([7205892599830853163, 15212333206847125686, 5699921803433736310, 905915093597247729]), Fq::from_montgomery_limbs([755943729919434357, 10577236669397908241, 14468710867857253298, 1024324011896165462])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([8058282063231996405, 17257430900010574484, 2158055163476481194, 595100858348853692]), Fq::from_montgomery_limbs([15085559623482919871, 3472078672722908583, 4599317711792091602, 222588611222065167]), Fq::from_montgomery_limbs([15424099905499014070, 8434797005632313353, 8131086932997815225, 1036565779889668097]), Fq::from_montgomery_limbs([1382697922847342157, 4665453833795528964, 9747274806721360803, 148779622932294522]), Fq::from_montgomery_limbs([4432837085227621901, 3625643010647482210, 9188161200126159834, 1031489011263833493]), Fq::from_montgomery_limbs([2595560161561027549, 10106811297951765366, 17488308776579863485, 206455909861435406])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([820166082021164174, 9749064658839893621, 2697165176777711952, 1013643423254794247]), Fq::from_montgomery_limbs([11434285783669558858, 13584809878479701720, 3915545683544186278, 1023126538570256918]), Fq::from_montgomery_limbs([2165364699284154689, 12685002878895760637, 6867136501788661212, 674836357022179385]), Fq::from_montgomery_limbs([9371284124941532260, 7254488926567729428, 14153148852060364975, 563833886155167209]), Fq::from_montgomery_limbs([12983913502532225115, 10422261732254055015, 9682741985590349706, 1152902980215236093]), Fq::from_montgomery_limbs([53453825694603265, 7363785068269762421, 10014136818496735189, 418364251047633957])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([9089547361822769623, 2614400882196504844, 18171746873737288094, 75978327930221735]), Fq::from_montgomery_limbs([16792233542280595044, 9194009742559712662, 16681314096151276162, 141104854369611948]), Fq::from_montgomery_limbs([14121587945665084254, 4285652051739813435, 908329507035055833, 1170458112249762210]), Fq::from_montgomery_limbs([17832160706398652605, 12757316993880307572, 17823976387828534641, 1060884446639737566]), Fq::from_montgomery_limbs([12238967831419693891, 17285564337796726189, 772363080009335540, 1133022491303716360]), Fq::from_montgomery_limbs([7101023699634357749, 6639281158265807289, 4981868997280764642, 985691418122098087])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([11269122037409773082, 12011421319544460999, 1334150225599331569, 2858146322225763]), Fq::from_montgomery_limbs([9313709853509185496, 16206428797220002184, 13680333402027486517, 1242753153191996216]), Fq::from_montgomery_limbs([17569743508708392526, 3142648113271106845, 1634996132313805038, 345389980530236831]), Fq::from_montgomery_limbs([13214675085238735159, 17546363296125310843, 15104140193957885186, 1009608979945975479]), Fq::from_montgomery_limbs([13156206507994500002, 15331136932468936255, 18120353711369546595, 212936761308279860]), Fq::from_montgomery_limbs([15728832258520667556, 2222718495126847960, 9069363803574780412, 1252511052567294538])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([15318220334729666071, 10085274749271496451, 13235713280652147722, 745052808139004576]), Fq::from_montgomery_limbs([13156235912943986954, 5448235351584523656, 14912753996910833259, 1074562042912540040]), Fq::from_montgomery_limbs([10973489371567110798, 13864494226359434162, 2551801121655091132, 842122627627640172]), Fq::from_montgomery_limbs([16434063247854180644, 4535379715543303383, 15837253172489347337, 811511753879666188]), Fq::from_montgomery_limbs([17168911107864577236, 43950174469174547, 5104860072131484949, 973362737471998355]), Fq::from_montgomery_limbs([7931655442728732623, 2231832287024216001, 1215678170119206083, 809922596417314673])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([11089365147905175739, 17689470198615435650, 1802029570881529665, 323182645037342266]), Fq::from_montgomery_limbs([15969427871111504498, 5489904452991350903, 6060256254335150822, 327519122975337122]), Fq::from_montgomery_limbs([8372741465623248660, 14241887742859321780, 5732992227950195767, 39295360183511289]), Fq::from_montgomery_limbs([1187756953137288615, 6353707652463699269, 16025288734445909769, 689723399381686930]), Fq::from_montgomery_limbs([3641027043425346704, 7529359599459005223, 2263874390889253898, 1174711192482135891]), Fq::from_montgomery_limbs([14213602576882685129, 1072450781726178504, 9166004798283088170, 288986234043895133])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([9857091378959575712, 4700244761781549157, 11886572911958021128, 978573057754163783]), Fq::from_montgomery_limbs([6859829417840328625, 5380908914233546421, 9985382358422821006, 809479275163892841]), Fq::from_montgomery_limbs([7129905675772133963, 9947583967153283633, 11488752011523120045, 70770661730429235]), Fq::from_montgomery_limbs([10339301687172431688, 7034120066892139373, 278535235730000358, 1037618672688193269]), Fq::from_montgomery_limbs([8073945182151246976, 8024480602729778451, 14228737842273667747, 5601376964086932]), Fq::from_montgomery_limbs([17455241286370251178, 5877720710031178913, 9559992722432789829, 1325168601990716931])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([4443170007910122686, 7353422220255768461, 15086677032035138267, 1000401307557218310]), Fq::from_montgomery_limbs([6016899902613423969, 17460518555665406782, 3732816219387681456, 602171657802810010]), Fq::from_montgomery_limbs([17215551508008455197, 14155576318076749717, 287763472218567445, 348594781061367360]), Fq::from_montgomery_limbs([13673281300516729195, 2214275010578136594, 5278640382055069707, 862836485498449760]), Fq::from_montgomery_limbs([14604602086577261525, 17331229080491881983, 9761345074674761926, 92431445071525752]), Fq::from_montgomery_limbs([288667004247211189, 8068558316435185759, 34133259048288536, 632325899262964414])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([4414532264671055849, 13933747433746332421, 13027565118143790352, 1050571576397137370]), Fq::from_montgomery_limbs([10778047724985809400, 1316157346886280268, 10174764403037871455, 1310251685035182702]), Fq::from_montgomery_limbs([2901779093000588757, 14345292131236108270, 325687763253834560, 1302296993426055332]), Fq::from_montgomery_limbs([10195270688246580514, 15529132938808577668, 16655748986619374751, 1334926369645181743]), Fq::from_montgomery_limbs([10219117138329677661, 17968691841862978952, 2586002244710590318, 890496969841145620]), Fq::from_montgomery_limbs([2498245601951074289, 1598646875827827107, 890275996690762376, 77165559003555915])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([2988605310258792866, 15957801327838169961, 7584840999811153279, 434926945147154735]), Fq::from_montgomery_limbs([9597713906228190573, 13530531350309731794, 11006707392867763256, 1180021669203726874]), Fq::from_montgomery_limbs([3103797984913840610, 13327065637625915613, 7317743376243954428, 454606898571769263]), Fq::from_montgomery_limbs([13418762319452988162, 7011698969983978549, 10043811570622910529, 1219725988569937648]), Fq::from_montgomery_limbs([16415739938738212197, 18000325972331813382, 2937222969358261592, 751420552035148970]), Fq::from_montgomery_limbs([18143523461998133814, 17501449569222234751, 11831229978852878240, 230065434288493720])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([390587431735370215, 6070182885512254444, 15678300086321846232, 658622796995655025]), Fq::from_montgomery_limbs([11187073703980753366, 11256592440200977896, 1503110027135689183, 1132851611041610655]), Fq::from_montgomery_limbs([13154916648506390915, 5339482676807482888, 7230250399862288620, 218460204422790571]), Fq::from_montgomery_limbs([9102410326146594084, 6165251247104570609, 17897733375690573799, 920164771069067785]), Fq::from_montgomery_limbs([17285085289295929853, 16238198804092185825, 16251509486414134096, 1084909706592090544]), Fq::from_montgomery_limbs([3880782017033225674, 4873252603362867352, 14459262730771211791, 163174741264077656])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([4363513037339290429, 11071402644779655945, 18203948441237058377, 487870628328334554]), Fq::from_montgomery_limbs([9854620422114551002, 11862250176770700568, 874594626487585300, 932096667364472947]), Fq::from_montgomery_limbs([2172530204291601442, 6393872278636522840, 684019909052108375, 180921268676761997]), Fq::from_montgomery_limbs([747820584568953283, 11441694611866320992, 4524856196876367929, 874564518710804172]), Fq::from_montgomery_limbs([7299335342253825037, 12867703813750147845, 7941311700245180087, 1108892033870182325]), Fq::from_montgomery_limbs([17832410557204971163, 4075792975869963488, 7197135716780572438, 152677169125496593])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([10163931248253127785, 1981713163631115965, 3150372916074444430, 470994848988866265]), Fq::from_montgomery_limbs([15083629881223276978, 2015879515814390952, 11644449746714623084, 946361618448877426]), Fq::from_montgomery_limbs([16592814677886046887, 8039452671655169748, 2594546365519790998, 584104276493702607]), Fq::from_montgomery_limbs([17407066489676124305, 8656046168534251407, 3138964226038501382, 514356098263219093]), Fq::from_montgomery_limbs([15942565322057954282, 6097316293590202889, 6372629697231874413, 113242342217125329]), Fq::from_montgomery_limbs([11571924722120150581, 13912164049336724059, 2502413236406840486, 679604324439169221])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([11231555889522859185, 12838308109173382219, 14989494611471795387, 1234334251746422128]), Fq::from_montgomery_limbs([11820760137592674131, 13233941704214912620, 9184955620669308585, 760535087243845704]), Fq::from_montgomery_limbs([18251843258930069429, 6913182660293023569, 15611295871669355399, 543202252785444658]), Fq::from_montgomery_limbs([3623801569902716815, 12012005568369974445, 8975238911566253998, 1306561840926137970]), Fq::from_montgomery_limbs([11553511503558092125, 12278824151250337447, 14503589672502199303, 1306659756102330132]), Fq::from_montgomery_limbs([15708785553057654326, 3840692890311772930, 4102206509788468425, 440698181344607784])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([8058055302582355971, 5700106105541005064, 7460926738156841111, 462277946682165887]), Fq::from_montgomery_limbs([4851568100746305461, 6584456459134975532, 17460185792418666468, 793703974849869892]), Fq::from_montgomery_limbs([1493013092751501655, 6157234009848897017, 14948235164845831294, 1116239172277392848]), Fq::from_montgomery_limbs([541291017778122597, 4361606389405799905, 13559255135673617904, 164046297400629617]), Fq::from_montgomery_limbs([6157883725635917010, 7921949762718398664, 8097426475493743176, 285172774886131081]), Fq::from_montgomery_limbs([276501516953041810, 15996807350070926146, 1269758076943886300, 195784581070827446])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([4853469952320798393, 17379711604415333498, 11341428304819039080, 766000305508925099]), Fq::from_montgomery_limbs([1723028172270801784, 7846165827796379646, 4636451005692610955, 871151940476972966]), Fq::from_montgomery_limbs([6590646061221323902, 889461654044032879, 1505496877923673922, 752475483640516924]), Fq::from_montgomery_limbs([13045448500706444324, 8361654882120486231, 4205925187373381862, 277826998934433801]), Fq::from_montgomery_limbs([9675553409793389785, 5667173122152825040, 8083271914684780456, 706216661468574727]), Fq::from_montgomery_limbs([14266510371042388064, 7106905440715991100, 10411622989018615279, 894382081849790039])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([9268336790197882301, 12070173591607011265, 7396189305808814103, 6826922221427887]), Fq::from_montgomery_limbs([11481176188982883772, 15479330738046464105, 15874300506335824, 418080356004810461]), Fq::from_montgomery_limbs([8402920895853151075, 11319528131289558551, 11236635718047704076, 590562434419913557]), Fq::from_montgomery_limbs([11942015297507883097, 16315121378556649183, 668425812435475072, 1203236348881767128]), Fq::from_montgomery_limbs([14719743395974511202, 1514583382813202278, 3223906165579006067, 1338589921222659040]), Fq::from_montgomery_limbs([11353873627418368002, 17696069599691683167, 17867255547403463352, 256390082737611698])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([3183181278357516648, 10539132954816790294, 14186140147230647162, 782128376830566716]), Fq::from_montgomery_limbs([24279344590760052, 1500125118480868266, 1805095232159146495, 1156936758956513949]), Fq::from_montgomery_limbs([10537024754772614474, 3289834431146907946, 204955315838625775, 635285322161689619]), Fq::from_montgomery_limbs([10063527467101509243, 6065807056365479935, 17027546583602504025, 991768228369353932]), Fq::from_montgomery_limbs([10809287584503006407, 1968797130899798907, 15335034484681843481, 581199600450356946]), Fq::from_montgomery_limbs([5342411348500260963, 6851928330103451454, 17931963062212165213, 1333165923948214303])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([5362873004958210141, 4780911804231906429, 491658981443450273, 865870945658130370]), Fq::from_montgomery_limbs([16170855628896579013, 16924415594421177943, 18099375624011254510, 1172947874675982311]), Fq::from_montgomery_limbs([2313253813846593553, 6024058999881721714, 3460494784065903603, 200192466049298184]), Fq::from_montgomery_limbs([16495862644170305555, 1027481903728649974, 18424464377133050050, 286370147149132790]), Fq::from_montgomery_limbs([10500420552294712757, 1190864375567816587, 7753792083623713506, 527733109368565721]), Fq::from_montgomery_limbs([14443372038206196537, 7620145268069197030, 14646532763986835342, 456340242357593922])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([9232251606394270216, 14408677736204106911, 13271324872968281, 759107595695446407]), Fq::from_montgomery_limbs([17249519010359595711, 3324593693860748091, 17110518692688522506, 1222951351162422358]), Fq::from_montgomery_limbs([18126276283902025445, 4360757737312030104, 7886535856284373354, 1092174897468921446]), Fq::from_montgomery_limbs([1062163077313937380, 11987404733688401354, 13771857460633546591, 404835587063112873]), Fq::from_montgomery_limbs([16497288776209779034, 2880366049054710506, 253042145042914898, 795216235095539205]), Fq::from_montgomery_limbs([13406148328760919071, 7241933139744138143, 12901549130103097508, 622176358374555103])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([8839697166194087406, 4483906360586614080, 14882309942760908718, 26805057196885842]), Fq::from_montgomery_limbs([7780277578177316464, 8830183239891425324, 17543080001337922949, 763106694028031052]), Fq::from_montgomery_limbs([1380876235740608953, 7727437954586184212, 6573237846455394763, 348129619934932866]), Fq::from_montgomery_limbs([14022759702194409553, 8495575903624052978, 4435568764932750980, 556954649769758600]), Fq::from_montgomery_limbs([10833230885057379503, 14946233534988385740, 3482517598744002245, 312685728556510786]), Fq::from_montgomery_limbs([4935346722124605172, 797590664817406232, 6711744841558593604, 1113832946092370199])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([4507604340829135994, 6192904589647086945, 349044365259597977, 1152686511406973589]), Fq::from_montgomery_limbs([195352152493747630, 5233440319211994798, 932481733874805995, 509755197807725335]), Fq::from_montgomery_limbs([6237574338367694863, 18409691934826828587, 2269618770290486313, 1105546858321591640]), Fq::from_montgomery_limbs([12982330271334867216, 3689728804743182371, 11969860905888785248, 384135728283136906]), Fq::from_montgomery_limbs([18265210337391869731, 11610294943475185851, 7713269183082030658, 64710928906612284]), Fq::from_montgomery_limbs([17581461696584771576, 1251761997536591051, 8677916614754373573, 11467824250957215])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([5293383473840045151, 14232932703686129211, 16580168622608048461, 944952712971843416]), Fq::from_montgomery_limbs([1172918766922903979, 5995995512044846696, 7739257607297521882, 1042510915533280011]), Fq::from_montgomery_limbs([1981724477088009475, 13354315713534102679, 11891854408097089989, 92846148123740243]), Fq::from_montgomery_limbs([976886551936370648, 14904356347049243804, 14591979302472212806, 1213715283121821429]), Fq::from_montgomery_limbs([15587984398787314569, 16826502960315805008, 12894364377505862261, 1260461626778401163]), Fq::from_montgomery_limbs([4959549071568407724, 16406890426995168379, 5205271867547136181, 625367672303411178])]), Matrix::<1, 6, 6>::new_from_known([Fq::from_montgomery_limbs([4469737807624992151, 13646441970050473001, 14103514615210198911, 951934596751743825]), Fq::from_montgomery_limbs([179935223424484463, 2716781758867967994, 13772831748270319508, 559465738003921114]), Fq::from_montgomery_limbs([3732370725359378315, 109679493243276219, 881555622161027305, 772217225730861177]), Fq::from_montgomery_limbs([2034891371688198908, 15927708347683796662, 2835422031008901944, 942335024460335016]), Fq::from_montgomery_limbs([10874231289292346814, 11117313284388646608, 16125883931973538451, 1333477728458259050]), Fq::from_montgomery_limbs([5836661691500937581, 2582555451477250318, 16743568702164980685, 1095040268607012655])])], - w_hat_collection: [Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([6933713838801944433, 16845582094611513195, 18106981831632269118, 1315719765541495999]), Fq::from_montgomery_limbs([11025937787709817432, 2848215840891863663, 12003429085947921194, 123169188111155826]), Fq::from_montgomery_limbs([12625372430371999830, 16677955247940128803, 7323211740492754581, 634092645821649835]), Fq::from_montgomery_limbs([8476375831616065903, 8302751278140753414, 4675397025515049474, 916054888187664134]), Fq::from_montgomery_limbs([10397071512469717592, 5168805500057287779, 15231087545157212262, 795647437775574917]), Fq::from_montgomery_limbs([4753644871978862709, 5862282760667146308, 12460694012157225697, 599558919665641703])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([3525611259680496361, 16850996105995319551, 5895804919214678528, 391214039273829079]), Fq::from_montgomery_limbs([16383982061649260213, 7412768188479417373, 18252968433587413341, 921842098972532091]), Fq::from_montgomery_limbs([4293960317930015621, 15005027020601642292, 14505531830207858927, 1015323632458039193]), Fq::from_montgomery_limbs([6752151532781968377, 16993009794999287001, 14092320031767020691, 1182677145301447547]), Fq::from_montgomery_limbs([16314233041829270002, 3649678206581272066, 11390243497395273567, 313040234242687401]), Fq::from_montgomery_limbs([16897077646049598862, 5408248314355013755, 10936401950030912526, 513592532346930326])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([10142077329767560760, 6792944251304638223, 7902051751595654458, 52562103742172771]), Fq::from_montgomery_limbs([4124245661449561978, 16104205151533781959, 12907591592992771975, 375874492004655234]), Fq::from_montgomery_limbs([721737094669186114, 9206501775775148139, 4450459856140585915, 711734015520322130]), Fq::from_montgomery_limbs([614920776545720184, 9338526590820186332, 3423803905067391290, 1297483125050494498]), Fq::from_montgomery_limbs([5114006628798839509, 10631775008980466663, 3587509331998934684, 1269615621594518563]), Fq::from_montgomery_limbs([10586294365539695697, 13070162917427803989, 5131427260750659378, 185094384545327415])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([15393156556409725569, 12069454178577165134, 10615051884848589576, 627431092634767494]), Fq::from_montgomery_limbs([2254585774072887271, 9054648099999668560, 10092512970859140868, 128794736276163271]), Fq::from_montgomery_limbs([9634188559612410031, 11231916523014098458, 9347609823309203991, 350537733562293921]), Fq::from_montgomery_limbs([712883344164921598, 12267969327296118133, 18415463544294982318, 453347153304216575]), Fq::from_montgomery_limbs([6354724406448162447, 16973074452059542227, 1742850061709863465, 29248222949323830]), Fq::from_montgomery_limbs([5847808690552004737, 2583092622487380856, 16226455529753322167, 622812582439549387])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([8037108896489144647, 11600187371086455875, 14226278393962213262, 1257430093680684711]), Fq::from_montgomery_limbs([17768344430228638036, 12362984821927414562, 8755702286219707347, 1052522743722421089]), Fq::from_montgomery_limbs([6518969013844050226, 10104698889580418215, 12831301188037688559, 783109772397025172]), Fq::from_montgomery_limbs([6181962216281397012, 8791420351320694807, 5845391987758232061, 691946495243473347]), Fq::from_montgomery_limbs([555663508144587651, 2813166513808555896, 9604748549845359549, 1115460934710212864]), Fq::from_montgomery_limbs([638373104524889548, 6961133691969109992, 16899272275885442322, 107354495377389126])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([359839753750440452, 16872903944693818879, 9182594678934428762, 157875028486713218]), Fq::from_montgomery_limbs([18133892901854313763, 2808183347815612802, 13420838164084790320, 592901990662685620]), Fq::from_montgomery_limbs([2972894661558754427, 10007808519010762631, 9092666282720580619, 1045475284031737143]), Fq::from_montgomery_limbs([11312374728773702090, 14199049380673735694, 6883328492121377672, 254205863439515968]), Fq::from_montgomery_limbs([1622439358680448127, 16670668058993745597, 4548903667405006277, 711571731093376968]), Fq::from_montgomery_limbs([17647983290779098291, 516914030435843715, 12098656310263379019, 275469573180901388])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([8548644889741041300, 16958143034062232997, 13155023865968925107, 527671552750155065]), Fq::from_montgomery_limbs([13280891140215524593, 3305529464796220554, 13769067712411857696, 194876564429210557]), Fq::from_montgomery_limbs([4744158468698697612, 16501033922635430369, 13118709481247752005, 455296334218894134]), Fq::from_montgomery_limbs([3276121206714262439, 4384108406151911994, 10320409945935199931, 1129505288669932775]), Fq::from_montgomery_limbs([4802683862047720627, 12048656597166121442, 2985941889978900161, 1215862908384237465]), Fq::from_montgomery_limbs([9878053342652269422, 6952038940472105574, 13204721887023621809, 104559270963520601])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([2884484268998399392, 7516340773367415265, 17967577411328781785, 71104776242823513]), Fq::from_montgomery_limbs([6836357534971200276, 12307486411100090586, 3725741383492541705, 708703587844324306]), Fq::from_montgomery_limbs([16065785508863042824, 13168438874677663185, 10334681499739682637, 537952869573618152]), Fq::from_montgomery_limbs([4276306945181457487, 11319798687621632943, 11337729997070203637, 154843360608516964]), Fq::from_montgomery_limbs([15091173599951556922, 10089665296762720564, 1001320269268178313, 1278999239679089342]), Fq::from_montgomery_limbs([6790806302663889439, 15630966142638650191, 7219114191273641870, 607000211505329118])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([10941156742810682792, 13379581544377778361, 13597487267674595073, 856893196159093362]), Fq::from_montgomery_limbs([12116163542944543584, 10494464956681785456, 5328861516400529745, 1198358765731586889]), Fq::from_montgomery_limbs([18189172451487902278, 4704482581638044529, 984078958545158234, 1214725173814978653]), Fq::from_montgomery_limbs([5693469689620468779, 9572644835043944500, 2366490855072377760, 976822768924111263]), Fq::from_montgomery_limbs([13490986302612722028, 1283285868432826268, 15164008493321253514, 443251753067442416]), Fq::from_montgomery_limbs([13150294025593833313, 5620721896853634047, 4766918037148084086, 1004371804232239176])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([11674076986569886445, 14273565036215986478, 7256033114853758831, 1243175635214446154]), Fq::from_montgomery_limbs([13391657488427814604, 11740905283874021531, 9224412564843665854, 277256927127426063]), Fq::from_montgomery_limbs([9479795538791379585, 12974816116199774846, 12093010719550875010, 5065395771365623]), Fq::from_montgomery_limbs([8817914873159831624, 2104380883716865129, 18076504449817050016, 651566378088004291]), Fq::from_montgomery_limbs([2593549556231375650, 9464329604880807882, 931952291445829364, 1296192193647975938]), Fq::from_montgomery_limbs([6791830127635900713, 5571583372402235342, 5980079258218847792, 609581694037305767])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([3590436137035362796, 6878827383468400586, 2087187619625759972, 366519334389468484]), Fq::from_montgomery_limbs([8466797588269795178, 6233162019605045514, 7818079020321919455, 1299893902682642414]), Fq::from_montgomery_limbs([13213818269144599466, 1289947883313972118, 4059701246652915385, 12056266522820237]), Fq::from_montgomery_limbs([4508800680162331521, 15986068886298500867, 14977838885955851194, 38157078418942241]), Fq::from_montgomery_limbs([13953378503175087488, 2632607770308512210, 13562084469560012417, 245249845748719170]), Fq::from_montgomery_limbs([14192710935721498803, 10423371171643016558, 8787645447508907660, 1222320713106865517])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([11672182316223918869, 6397196540158184432, 16362125278956639955, 487254253940971622]), Fq::from_montgomery_limbs([3466115228336022838, 17336865038830586933, 15011622032603429066, 886109464755529302]), Fq::from_montgomery_limbs([60790403003891626, 11789627958407425130, 18093678967772149866, 163664659042316929]), Fq::from_montgomery_limbs([11752605341201064356, 17735918082592333925, 6652470350194431394, 889452019796415044]), Fq::from_montgomery_limbs([8401712234167110287, 10960633415813906272, 11916450035773002049, 1182232446618175169]), Fq::from_montgomery_limbs([10396262244990196196, 13566621656449952195, 17637374041715454767, 487328172506255483])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([359851191963578459, 6093707674603330913, 12382809233400904418, 822869288595513424]), Fq::from_montgomery_limbs([8685375674428402008, 11116570913984986227, 13141958117760910576, 694631449425721940]), Fq::from_montgomery_limbs([13799808203577028319, 17015236177612766046, 13321925256996230040, 83728605392058044]), Fq::from_montgomery_limbs([11345927491644574710, 6729113552022061366, 489680359452713554, 1063665064872602168]), Fq::from_montgomery_limbs([5144672341518660971, 13584780511637830006, 8111044646642319859, 760808052520956883]), Fq::from_montgomery_limbs([10534617268344014793, 13365424830059569868, 15323686518176324368, 630253372526730391])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([5574736329985492350, 1394240824897034276, 12869158727379905882, 927371660714513620]), Fq::from_montgomery_limbs([6250879616233772588, 14830533363705576088, 11405716231454843078, 302485753651389813]), Fq::from_montgomery_limbs([9376998902591535768, 10870546783769916945, 8867938913668980167, 168036903158516371]), Fq::from_montgomery_limbs([17665300127173928717, 16211022938249470990, 17778018974492488988, 1035038949736118270]), Fq::from_montgomery_limbs([8713486127840843643, 12284089155092108591, 9199322335133216480, 1254936361875119138]), Fq::from_montgomery_limbs([10672903121209769745, 1541284167923703332, 354508315039816196, 1077919680069474774])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([6003956627532398687, 12900385821050494701, 13212436788748797499, 550552294639902063]), Fq::from_montgomery_limbs([14895950277557938580, 3197587119252958842, 1370401976516442748, 185312282262907769]), Fq::from_montgomery_limbs([4334813612319164060, 1249839787510419412, 2014732433360765992, 674486378020601344]), Fq::from_montgomery_limbs([16372536311394952793, 16876000734634230902, 16256142784705290990, 1216045970949193228]), Fq::from_montgomery_limbs([7511261605071474477, 12731027885113475848, 7275278577140348070, 1332751723743282012]), Fq::from_montgomery_limbs([2087120385657061588, 5805219940951110446, 13072060426636966211, 863754038349923743])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([9861938477894648572, 1261863888379893097, 1659273544923639757, 1175309734597332353]), Fq::from_montgomery_limbs([3160898884988868850, 12315548764431121182, 12829922584215852165, 56495588159121736]), Fq::from_montgomery_limbs([9126361106532779429, 8812351712430538764, 16651360315827640335, 488907765340195245]), Fq::from_montgomery_limbs([8831436795438293115, 389432919099331880, 4151373017145697434, 20487081091778889]), Fq::from_montgomery_limbs([1478664308612791336, 8186322499300142837, 14558475073251694928, 808252273304974762]), Fq::from_montgomery_limbs([15607838810385275909, 12674581021244262249, 1909980166381620782, 345071109506949067])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([10897251009229233031, 3820618022447517075, 10985787470877927823, 403556049280121762]), Fq::from_montgomery_limbs([930794418602631676, 4219345337777307051, 12545787195024594643, 727460251993377030]), Fq::from_montgomery_limbs([1295669867887905036, 9507152194066574702, 7109356788802489574, 787002368140653778]), Fq::from_montgomery_limbs([3498224858763889755, 302153864491265874, 14518919122820805288, 961799431413434867]), Fq::from_montgomery_limbs([14579188115252453346, 8486675243511966662, 4198502112353568422, 266466804927785090]), Fq::from_montgomery_limbs([5714787944090956648, 8773050216612558194, 4209799818844007033, 157683362695822804])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([7490636877172818331, 18234545141478570777, 4868926515076353497, 1040485086378507404]), Fq::from_montgomery_limbs([4007494498414670332, 11381886286508088565, 2983212756609056257, 310114683693996305]), Fq::from_montgomery_limbs([9176086588288648852, 1592592270921797535, 4569673380486221672, 1302061240324827715]), Fq::from_montgomery_limbs([16913435421079334086, 1877470558106542334, 3613514508584067134, 934461884972210272]), Fq::from_montgomery_limbs([5267175603942094137, 1748374762382459641, 4882024791077414221, 1068225445733947215]), Fq::from_montgomery_limbs([4248184777234069323, 13346185782403877767, 10153633758750203581, 141684902152107360])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([14329113735110304247, 4241308009922883952, 9772848400881136490, 239381311112673117]), Fq::from_montgomery_limbs([1815346937549645652, 3479767444023955389, 4985298868790684050, 355453443190923870]), Fq::from_montgomery_limbs([5747089878066396614, 5454329989338975845, 12341448373351673623, 1202238166588655979]), Fq::from_montgomery_limbs([9296701061462558971, 17770007858418801719, 9914793610472554336, 1281893899901916554]), Fq::from_montgomery_limbs([3010329870005884069, 2836286366415384158, 2351971757588955099, 425289972726450364]), Fq::from_montgomery_limbs([18291414506166784212, 810246456460775309, 17528761664504541127, 1189494422506112895])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([13873201020652076543, 6243622914124108573, 6903929397781795660, 574766800775597314]), Fq::from_montgomery_limbs([17971358622227978668, 15854652377477090302, 1063842904034816, 989523394960344619]), Fq::from_montgomery_limbs([8015553520299503933, 4607530076716157995, 7439330134573907822, 1104246105186017619]), Fq::from_montgomery_limbs([3986330100644126569, 17707403369263436100, 4053571974764234396, 108842167919011278]), Fq::from_montgomery_limbs([5227388868334111117, 12812207377137498929, 2588198532604965494, 961490407308315800]), Fq::from_montgomery_limbs([7646326553387833689, 12724139924596788661, 629496738895522970, 1201441128237966538])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([14866344307104327368, 4985794825846590702, 853871436616991822, 749367072047711970]), Fq::from_montgomery_limbs([1876020443251361508, 6552070073373315737, 12995514842585856406, 1275392944325677985]), Fq::from_montgomery_limbs([7601514916050054383, 16910631174758870764, 7353760964415941247, 324644049762087391]), Fq::from_montgomery_limbs([16565109856331579529, 458787328687847682, 5878204963586402256, 1322072415305233581]), Fq::from_montgomery_limbs([12729053080732475923, 11510453208755572522, 3723997403677235406, 73363110170067874]), Fq::from_montgomery_limbs([18174997862860579716, 6182018227945955817, 2127647890385770221, 870293941267412601])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([10698372380060816691, 7522180405775599951, 15832604002112875278, 521032436098731379]), Fq::from_montgomery_limbs([15319055731354684350, 1753334646577885863, 4505520717374373397, 984179811150887857]), Fq::from_montgomery_limbs([13141271355432538382, 14700998572061668181, 4549081783230234567, 806347686644718089]), Fq::from_montgomery_limbs([9975557437768999376, 11618707034451291844, 3181936011792873831, 576438052445019413]), Fq::from_montgomery_limbs([16609855326770322939, 13212944030983556053, 3039401190695389047, 1188561968753866414]), Fq::from_montgomery_limbs([10305504178314593273, 14719639554020787850, 2480984582534492384, 221582009878780852])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([13200038943773919312, 14432882432204232972, 3023115969282520533, 343418406639707901]), Fq::from_montgomery_limbs([9327873286332474704, 5954324830215207584, 3873074387113200139, 744988613833241266]), Fq::from_montgomery_limbs([15847102383028666437, 1096370811445384001, 10166653322883901200, 327347038183216223]), Fq::from_montgomery_limbs([17600124854622807025, 15328683957983696187, 3518858654096416419, 638859422450597084]), Fq::from_montgomery_limbs([3012983939074171362, 9083322861410244018, 4322938770639600225, 442252654129847313]), Fq::from_montgomery_limbs([10656857781541021576, 5978481768391996531, 2250259229090183585, 432977302373307667])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([14355870696105147319, 8480124686198992740, 4123496920141395243, 506237667861983638]), Fq::from_montgomery_limbs([12320253406233535520, 8322795092624377756, 9572334243002510406, 1226552575804851889]), Fq::from_montgomery_limbs([9845446342011599085, 17778086686673507324, 5271342849823127028, 1088489886300171520]), Fq::from_montgomery_limbs([10715976971447272221, 1556354685447448032, 16979954691422909924, 386763037013271508]), Fq::from_montgomery_limbs([6180856312104178084, 11877570767790110506, 11499883073784997611, 393033674847566959]), Fq::from_montgomery_limbs([7644299261552751667, 2236838738262968574, 8460748568952358391, 1177808537547336633])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([9135896072628350252, 17288794130611191656, 16136991324140875732, 84153041777780941]), Fq::from_montgomery_limbs([3384444111049248095, 5013442674731807719, 8362856530990022791, 1126331696064245534]), Fq::from_montgomery_limbs([13385137591549846388, 11889738158254938557, 17705852903381913949, 155996115818620695]), Fq::from_montgomery_limbs([15454217037527338314, 9036781253178038581, 12351768307285004715, 776821242022223621]), Fq::from_montgomery_limbs([1200501875000044263, 6384384240290446957, 15639254494736291770, 930709414948460626]), Fq::from_montgomery_limbs([2141846397057350878, 14687259326247822547, 2879743331055932654, 420053148927601148])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([18343404923952179637, 1978770268004633152, 18074842923392944526, 99740808436074128]), Fq::from_montgomery_limbs([16339172153591076879, 13902224968596916829, 10987490026958244901, 480318192898237950]), Fq::from_montgomery_limbs([16708778634825784370, 5310850661772903365, 16720939557594415942, 983754580352601152]), Fq::from_montgomery_limbs([8614768398997670932, 10441907275834816828, 11459906999048618974, 98256766838754326]), Fq::from_montgomery_limbs([5461219359492352050, 8928173417887044164, 5632769833875876015, 938637862379787936]), Fq::from_montgomery_limbs([14478729241761067482, 14593688601059211201, 14567193330233850704, 193411838718316245])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([6244372198079752707, 12764020255605820167, 3597323991837773264, 232811656021755322]), Fq::from_montgomery_limbs([12794321084179091283, 12550727012798192271, 5852541072119985136, 1021072807450583460]), Fq::from_montgomery_limbs([5843482488715644166, 17968652270397807267, 10729147049305849619, 157069170856760481]), Fq::from_montgomery_limbs([16486113458959504396, 3842616654194538021, 16267097259825943411, 595256064535306261]), Fq::from_montgomery_limbs([18403329840356376661, 17180721686489435607, 16602787769632693868, 1218551944743323947]), Fq::from_montgomery_limbs([15792003884980763548, 103687243243986150, 1015407070790759683, 925892726865866689])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([4737231254389322774, 1982930339222313430, 17171322757846703283, 898862720123176395]), Fq::from_montgomery_limbs([15341788185538116478, 15152543049620221847, 11673048694712682284, 322745914045333317]), Fq::from_montgomery_limbs([12638501658486051138, 13136127249934274833, 16835414843273620909, 830854396919510911]), Fq::from_montgomery_limbs([15895567503124768810, 17851680667009624675, 9790662472981446008, 688513180346337911]), Fq::from_montgomery_limbs([7539663061168884957, 14647473521866168085, 14254615857988792976, 4914529917008946]), Fq::from_montgomery_limbs([10355365805280135879, 1713320802629047069, 11781471822278287496, 696018085837035473])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([17208622806574606453, 2131863109694270375, 17267390257687220562, 717142744114900489]), Fq::from_montgomery_limbs([13115781297674767878, 11806487226059857638, 3832559734382202821, 1327223946228164221]), Fq::from_montgomery_limbs([1519942432011064348, 2971486323152134197, 10412234235600737234, 627890410365264901]), Fq::from_montgomery_limbs([10935974904415640609, 3329695497336026013, 13276582814401540013, 624327570851923410]), Fq::from_montgomery_limbs([110740126727160908, 1977000808556019402, 17939216501132184661, 456092178041276768]), Fq::from_montgomery_limbs([13974795879491265452, 16756058358467461957, 18345173225794766341, 1240468105851879043])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([16648425534044120166, 17300631023568278668, 3769987016608299300, 701256036605548976]), Fq::from_montgomery_limbs([9545137723467262343, 5920020285572073751, 5586902085914198509, 1101010118319202051]), Fq::from_montgomery_limbs([1804254836884575917, 5416042091971666706, 2881258114252429182, 68889272174393525]), Fq::from_montgomery_limbs([15468731159921956531, 15872344848072676105, 1678659996910931386, 827142061320044550]), Fq::from_montgomery_limbs([14524351942355153784, 10797623040866138576, 12874995891465211466, 522880520258235794]), Fq::from_montgomery_limbs([3987121765421903331, 10914786903369841306, 14357739193531493338, 159659900263967910])]), Matrix::<6, 1, 6>::new_from_known([Fq::from_montgomery_limbs([1502512509312401925, 17658662731474453106, 12409373669027537750, 369255404008259275]), Fq::from_montgomery_limbs([3933340182670563102, 17988389551284440931, 2662254549780507248, 455350437925171541]), Fq::from_montgomery_limbs([12151336628671687181, 16659863612142679844, 4275242264769905759, 226663222642898029]), Fq::from_montgomery_limbs([16130436743434681682, 11552440823414351188, 4441812352013272663, 1024571907948499450]), Fq::from_montgomery_limbs([6575764606651544368, 3768634045069377030, 18077248345407646289, 1109390810042386997]), Fq::from_montgomery_limbs([14122304828382902866, 7822601784757433157, 15085114466160105232, 454674386781135986])])], - }, - optimized_arc: OptimizedArcMatrix::<39, 7, 273>::new_from_known([Fq::from_montgomery_limbs([15142982440796561447, 11586951767160912790, 2554152473571518408, 1060132733599829191]), Fq::from_montgomery_limbs([5004052621280210368, 17001459709892607063, 7681637351760180567, 370325849830378477]), Fq::from_montgomery_limbs([12700316700887579682, 10527071459591008162, 4649940422809756001, 1164398790994859766]), Fq::from_montgomery_limbs([14166576988026094609, 7313392791454005322, 12003933110859736764, 497349496445067730]), Fq::from_montgomery_limbs([660800666505769101, 8654643871558439567, 14263148622483513593, 820049075817239934]), Fq::from_montgomery_limbs([3633256971691786185, 10090676851691033833, 14588357423182388197, 831634409758195705]), Fq::from_montgomery_limbs([6492287632409988134, 12046607076154115291, 17147959445519551317, 461021671425820687]), Fq::from_montgomery_limbs([14444046072241906262, 11260694318344083229, 15743364178797140854, 866446994798567454]), Fq::from_montgomery_limbs([3641312158605685211, 14157364044999263645, 16784472236570305027, 425843099497195003]), Fq::from_montgomery_limbs([17723864121788076174, 13911937024562874191, 12749454259525933628, 451378649043069085]), Fq::from_montgomery_limbs([12784133990119646353, 17654455838119254543, 14047536069777387226, 645204516252515303]), Fq::from_montgomery_limbs([1959581704190940037, 13929985394687694163, 11022302142929130035, 283707020686355664]), Fq::from_montgomery_limbs([8629032034013359758, 8320916390268264398, 11188435069201519314, 1277918481865788038]), Fq::from_montgomery_limbs([1783621120979741815, 10125702604889014266, 7859706914940359291, 1258189548796714111]), Fq::from_montgomery_limbs([4197085784563434882, 243889206587889894, 328885806087941395, 929695947751686179]), Fq::from_montgomery_limbs([6420634290533400711, 3371757063543007366, 8900632765923820105, 371199850895065588]), Fq::from_montgomery_limbs([9679924820095672851, 5191301328839079795, 1468702730043861612, 1130258788388916276]), Fq::from_montgomery_limbs([14270884667693338729, 18421783881067727877, 702505960635108322, 876601962183112334]), Fq::from_montgomery_limbs([12801928710162774032, 15709283060501093378, 2508615709628312314, 924328772397935430]), Fq::from_montgomery_limbs([9019134492733417932, 4614098400696239641, 291908476903718505, 879711180612784839]), Fq::from_montgomery_limbs([12296479578360854848, 3423354675244851904, 17098596077633953792, 378482623029323224]), Fq::from_montgomery_limbs([13200816203042245771, 15381254577926224952, 14688424257545082743, 884773501591309967]), Fq::from_montgomery_limbs([16263843110415550162, 14001011937262187824, 2325893788175944450, 427344840846697831]), Fq::from_montgomery_limbs([10712788406702291397, 14628016237392831746, 12076323935029775432, 746032296870665924]), Fq::from_montgomery_limbs([7577844083779539683, 8593563853045273470, 6762705862919489296, 1011466592883577533]), Fq::from_montgomery_limbs([10970204418416076913, 4397529361571105931, 15590416832284287611, 432035610777585218]), Fq::from_montgomery_limbs([13604542201065871088, 8000646895858538916, 7463535664974476191, 112496092381655883]), Fq::from_montgomery_limbs([5448941064349247150, 18035446383961421934, 9688851655819494355, 314108334517577725]), Fq::from_montgomery_limbs([13216339084640418338, 18208749029142079159, 2801888902925820506, 1144112407212441278]), Fq::from_montgomery_limbs([7414209360993783553, 9029452093631467477, 10351555314693636524, 588771856204784285]), Fq::from_montgomery_limbs([3108201764764012849, 9316564318794683488, 2890833741230407843, 2976751152949582]), Fq::from_montgomery_limbs([5531824355021026381, 12498142272625928587, 3715194578260983474, 1067798051179441316]), Fq::from_montgomery_limbs([5339344176782059900, 10307852721097022359, 14767036192885737246, 130540287097272817]), Fq::from_montgomery_limbs([7180958399368342439, 128655658219475950, 15207307979599970655, 1124647386318203846]), Fq::from_montgomery_limbs([10677712105355735228, 303877370541742151, 11456613512094797466, 1197130552973396923]), Fq::from_montgomery_limbs([1852186172212255919, 7732103194240143876, 3191072801518998585, 684231033415976440]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12344835392323260771, 2083746688625641780, 9843550839040352981, 651659425757649777]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1110121811836510524, 11074047049180975687, 15444325776340307889, 1176464439067465611]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15910765157617366987, 3536546922624744505, 13839442880050335167, 1052063195754658296]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15883615976440084496, 10513678964631690585, 17274484441634888004, 104967936091342947]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6481049124859745810, 12420828791682339353, 3515061109189248511, 2970636150410785]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9330561373397764193, 15220428410405742122, 3596976591192400082, 1172536306991915045]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11645314245053381169, 12447229279329596583, 2611021837182599503, 1121293333579047218]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5520645742684358372, 4184771738280864541, 4013355666407389724, 651341887764501817]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3861533222480473435, 8229127100534402633, 961020646123781410, 1093771644395281795]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7693571830729430183, 14740278293355277643, 7478396620768437721, 1020903160466582154]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13974629067477558431, 5721400371209900889, 788632258150877276, 1052522919478138392]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4992769493438078027, 6924382181722868018, 8263199750104564483, 169174671387869155]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11416436440841880348, 7910510255652583772, 2772926057469350664, 240489949253278513]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8550478801539329000, 17416455311840648130, 7713828782443004553, 1257322107749939919]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10946761173248535048, 6300893940302812177, 14214574452301493380, 1064839331942993571]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12881919676216378529, 6525643603496459068, 7739411544375049269, 121520118034913063]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14171005468190725795, 807987272814416859, 16062924926726151568, 258817012972523442]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5031548057386859908, 16708231376954786943, 3901002117807196384, 15277199136600693]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3470573257247529570, 3778398720483160839, 4271650771133121672, 366341134231605540]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17671590415686923470, 14797555043330379484, 2826722725742773774, 673498791246184156]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4599390077836288923, 15103704149833090169, 13723271685426770651, 1238708412855247473]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12304403800545959570, 12269595607865918824, 4224309437769311654, 1102826182464027344]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7422908892054624300, 6613469136954082264, 2435694939055735193, 465151622319296864]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9966121319294113392, 1036787719885473593, 16922917099071401564, 957685172296873589]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9346051242088429570, 5881327167233602278, 18366005774591742073, 1234098542793269307]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6556095991079572091, 15800350435028538953, 17490188894945751356, 318651152411458756]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9604843137147166704, 10750667974649036098, 15855520508812075513, 289244356768878157]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9330357980066794783, 17865465819235974796, 9112978452518873031, 700544745156046737]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6722735210481586279, 9213635375899356767, 3419293198746470858, 397188667470959331]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5033510300536938046, 14319156262351107248, 14453339555250931608, 1300088399042594667]), Fq::from_montgomery_limbs([586365878943401533, 10219333061949038245, 7972787616665459187, 1180682599170166362]), Fq::from_montgomery_limbs([8677310049713074877, 6209659062870853276, 6361763165884296788, 1086786531947345096]), Fq::from_montgomery_limbs([4779669491370037827, 13794675476884129106, 2856260482144566523, 815058410432730978]), Fq::from_montgomery_limbs([8349785262387520653, 14703604045323517453, 10665488643511503896, 1190736588532344714]), Fq::from_montgomery_limbs([9753136258891648437, 7592309943578822500, 18234430885873993524, 946608033429176051]), Fq::from_montgomery_limbs([8862120093151408513, 9919781382246740055, 1639967479777957120, 548895009658598348]), Fq::from_montgomery_limbs([13150047014556861649, 9895352886349978940, 607603433543469096, 825078058460205935]), Fq::from_montgomery_limbs([10677514517763000310, 1869057220976501750, 7668490026500068131, 645375934459787109]), Fq::from_montgomery_limbs([8393901821323241932, 7155803376644055598, 5465256629438666110, 467809976924970962]), Fq::from_montgomery_limbs([8008789779293081850, 17333068400582244417, 864473515802821379, 712131972755422562]), Fq::from_montgomery_limbs([5260641048740129119, 11495506189219575805, 1976170684554961654, 583558279245420304]), Fq::from_montgomery_limbs([10607922137491563126, 16997507064637422660, 16243052688991164520, 620318480202596319]), Fq::from_montgomery_limbs([8682850641454705537, 4234371891064954414, 11030571520428482979, 775687601614273649]), Fq::from_montgomery_limbs([12248979915462901096, 1794636648127247975, 16388845185353268388, 1257257804440120883]), Fq::from_montgomery_limbs([17181365213230240819, 3933917789297525218, 774796165591114183, 628159510187755171]), Fq::from_montgomery_limbs([9201407700189177387, 14700424513123193347, 18288661468232834482, 407382537568434540]), Fq::from_montgomery_limbs([11966891449526246216, 6846368159746727324, 5421814018651935761, 1007837491484494646]), Fq::from_montgomery_limbs([3054672449338249840, 772010416012553897, 804919836093674272, 60934971449786311]), Fq::from_montgomery_limbs([3349955854192164124, 12023516821995660430, 14073054570207692346, 391152224081538807]), Fq::from_montgomery_limbs([4393818606630194054, 11894249453630174803, 11407464681452601419, 527342257675756743]), Fq::from_montgomery_limbs([593191207061949875, 394301333075100218, 15992303837511873397, 1258463696198082538]), Fq::from_montgomery_limbs([7392815618978882544, 8600193649781721343, 10001082189003162790, 160465744058402439]), Fq::from_montgomery_limbs([5982722207731997556, 9327097271719907983, 16837081471143367937, 1323283752393867441]), Fq::from_montgomery_limbs([15234580594321690160, 14480758270368693259, 7897576353120019799, 1211836381357568240]), Fq::from_montgomery_limbs([17534396175019205578, 3323788238042131357, 16622036826489890791, 893487708746761741]), Fq::from_montgomery_limbs([3851834168141787069, 11582510337408899680, 15343784808633432566, 461896544402216282]), Fq::from_montgomery_limbs([1182215324455482337, 1943242735522063011, 4144863718139895080, 243576649285589719])]), + M_hat: SquareMatrix::<6, 36>::new_from_known([ + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + ]), + v: Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + ]), + w: Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + ]), + M_prime: SquareMatrix::<7, 49>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + ]), + M_doubleprime: SquareMatrix::<7, 49>::new_from_known([ + Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 6933713838801944433, + 16845582094611513195, + 18106981831632269118, + 1315719765541495999, + ]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11025937787709817432, + 2848215840891863663, + 12003429085947921194, + 123169188111155826, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12625372430371999830, + 16677955247940128803, + 7323211740492754581, + 634092645821649835, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 8476375831616065903, + 8302751278140753414, + 4675397025515049474, + 916054888187664134, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10397071512469717592, + 5168805500057287779, + 15231087545157212262, + 795647437775574917, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4753644871978862709, + 5862282760667146308, + 12460694012157225697, + 599558919665641703, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + ]), + M_inverse: SquareMatrix::<7, 49>::new_from_known([ + Fq::from_montgomery_limbs([ + 18289540298934006401, + 12620611207485559719, + 12496121289749056322, + 817144512748384706, + ]), + Fq::from_montgomery_limbs([ + 15589773063064153532, + 10937873166103048610, + 6318262381745988044, + 164305025615087669, + ]), + Fq::from_montgomery_limbs([ + 15945838893269705074, + 12231655940729207770, + 16783976632846575746, + 1109102887521365908, + ]), + Fq::from_montgomery_limbs([ + 6834634673379885361, + 14313980702431346769, + 11799433102834887335, + 414159939376644417, + ]), + Fq::from_montgomery_limbs([ + 6202864031195801806, + 9008291636618939950, + 4452886644180013898, + 834656796167786155, + ]), + Fq::from_montgomery_limbs([ + 257831097013115576, + 868816813650478155, + 3804928554730106375, + 37318070574597666, + ]), + Fq::from_montgomery_limbs([ + 12731957617084167734, + 10385122202334236509, + 6304526407551965622, + 473830859466044865, + ]), + Fq::from_montgomery_limbs([ + 15589773063064153532, + 10937873166103048610, + 6318262381745988044, + 164305025615087669, + ]), + Fq::from_montgomery_limbs([ + 6846034351900465196, + 14922456655897598264, + 3385387262061980880, + 41120221023296058, + ]), + Fq::from_montgomery_limbs([ + 15382748348274919943, + 17176897444608801178, + 9672737639142736111, + 667324299238078128, + ]), + Fq::from_montgomery_limbs([ + 15347282079877344563, + 7118861760574925591, + 14639960435031189354, + 496118406637979928, + ]), + Fq::from_montgomery_limbs([ + 10633984218986397485, + 1476776383719121929, + 18242946201412975574, + 235737836971566080, + ]), + Fq::from_montgomery_limbs([ + 13255078662550912877, + 6201099884138924934, + 16598544366614787861, + 517978551803961280, + ]), + Fq::from_montgomery_limbs([ + 16511322183643786520, + 12899213679171041629, + 10327663219981717303, + 101291905845336522, + ]), + Fq::from_montgomery_limbs([ + 15945838893269705074, + 12231655940729207770, + 16783976632846575746, + 1109102887521365908, + ]), + Fq::from_montgomery_limbs([ + 15382748348274919943, + 17176897444608801178, + 9672737639142736111, + 667324299238078128, + ]), + Fq::from_montgomery_limbs([ + 14205197080554911234, + 18284593956791143607, + 9307844449907611885, + 840522240017846486, + ]), + Fq::from_montgomery_limbs([ + 15159258319784243147, + 14082599260628033239, + 6774164385877933413, + 747982014981801174, + ]), + Fq::from_montgomery_limbs([ + 1720795814776594401, + 1331741422739941001, + 1433030060135444919, + 661580976464017359, + ]), + Fq::from_montgomery_limbs([ + 18293763308414053579, + 18299155137503640753, + 10462936480575081846, + 453983746301356936, + ]), + Fq::from_montgomery_limbs([ + 4581286503082050232, + 12284808854596259078, + 3289926894666988909, + 902128282614826112, + ]), + Fq::from_montgomery_limbs([ + 6834634673379885361, + 14313980702431346769, + 11799433102834887335, + 414159939376644417, + ]), + Fq::from_montgomery_limbs([ + 15347282079877344563, + 7118861760574925591, + 14639960435031189354, + 496118406637979928, + ]), + Fq::from_montgomery_limbs([ + 15159258319784243147, + 14082599260628033239, + 6774164385877933413, + 747982014981801174, + ]), + Fq::from_montgomery_limbs([ + 8459024031946559011, + 9756324734815253725, + 14081981857002652443, + 1295411099915753127, + ]), + Fq::from_montgomery_limbs([ + 12916186197107076085, + 5935794698380416041, + 14163718741243160273, + 1284207706380505486, + ]), + Fq::from_montgomery_limbs([ + 18200592249652917081, + 10952824854756428652, + 13221851894140961386, + 952100497899551398, + ]), + Fq::from_montgomery_limbs([ + 7909306592215715661, + 12372000920976206381, + 13047646210570006173, + 1134258014683902124, + ]), + Fq::from_montgomery_limbs([ + 6202864031195801806, + 9008291636618939950, + 4452886644180013898, + 834656796167786155, + ]), + Fq::from_montgomery_limbs([ + 10633984218986397485, + 1476776383719121929, + 18242946201412975574, + 235737836971566080, + ]), + Fq::from_montgomery_limbs([ + 1720795814776594401, + 1331741422739941001, + 1433030060135444919, + 661580976464017359, + ]), + Fq::from_montgomery_limbs([ + 12916186197107076085, + 5935794698380416041, + 14163718741243160273, + 1284207706380505486, + ]), + Fq::from_montgomery_limbs([ + 3910809514494604292, + 8483245271389311552, + 16246267851842217096, + 18865255698597878, + ]), + Fq::from_montgomery_limbs([ + 3026843501192760993, + 8380473052143493977, + 3054950936628239486, + 722212886196682246, + ]), + Fq::from_montgomery_limbs([ + 17640176946983601983, + 7851638753013976420, + 7953773760774643320, + 1060395049618029567, + ]), + Fq::from_montgomery_limbs([ + 257831097013115576, + 868816813650478155, + 3804928554730106375, + 37318070574597666, + ]), + Fq::from_montgomery_limbs([ + 13255078662550912877, + 6201099884138924934, + 16598544366614787861, + 517978551803961280, + ]), + Fq::from_montgomery_limbs([ + 18293763308414053579, + 18299155137503640753, + 10462936480575081846, + 453983746301356936, + ]), + Fq::from_montgomery_limbs([ + 18200592249652917081, + 10952824854756428652, + 13221851894140961386, + 952100497899551398, + ]), + Fq::from_montgomery_limbs([ + 3026843501192760993, + 8380473052143493977, + 3054950936628239486, + 722212886196682246, + ]), + Fq::from_montgomery_limbs([ + 6947786146630418877, + 15369056627168554704, + 17602917142112233480, + 860079864989181067, + ]), + Fq::from_montgomery_limbs([ + 12292153329582579311, + 12340018229585837748, + 16138005556776207249, + 689763430924300574, + ]), + Fq::from_montgomery_limbs([ + 12731957617084167734, + 10385122202334236509, + 6304526407551965622, + 473830859466044865, + ]), + Fq::from_montgomery_limbs([ + 16511322183643786520, + 12899213679171041629, + 10327663219981717303, + 101291905845336522, + ]), + Fq::from_montgomery_limbs([ + 4581286503082050232, + 12284808854596259078, + 3289926894666988909, + 902128282614826112, + ]), + Fq::from_montgomery_limbs([ + 7909306592215715661, + 12372000920976206381, + 13047646210570006173, + 1134258014683902124, + ]), + Fq::from_montgomery_limbs([ + 17640176946983601983, + 7851638753013976420, + 7953773760774643320, + 1060395049618029567, + ]), + Fq::from_montgomery_limbs([ + 12292153329582579311, + 12340018229585837748, + 16138005556776207249, + 689763430924300574, + ]), + Fq::from_montgomery_limbs([ + 11306146037240305765, + 10984198068608188499, + 1191708097986331420, + 836519420285054905, + ]), + ]), + M_hat_inverse: SquareMatrix::<6, 36>::new_from_known([ + Fq::from_montgomery_limbs([ + 3792453098216396897, + 12628553005522469477, + 16642002769880465331, + 421042619293543187, + ]), + Fq::from_montgomery_limbs([ + 10263844291975416107, + 13672341457628810763, + 12509513995609872959, + 205381282018859586, + ]), + Fq::from_montgomery_limbs([ + 10784713721876928946, + 5674574537437802090, + 12687938002553184071, + 136316472684139419, + ]), + Fq::from_montgomery_limbs([ + 16070813810583366554, + 1956961633890359529, + 13965208031005279836, + 927951972604280320, + ]), + Fq::from_montgomery_limbs([ + 6738933144333850617, + 6100304390614169754, + 1210061970152249951, + 909818292837236776, + ]), + Fq::from_montgomery_limbs([ + 9669791352790763084, + 10325954078533278386, + 9503492366281944368, + 1040674818174287413, + ]), + Fq::from_montgomery_limbs([ + 10263844291975416107, + 13672341457628810763, + 12509513995609872959, + 205381282018859586, + ]), + Fq::from_montgomery_limbs([ + 6412844366295084778, + 7666866282335076917, + 1998128405856404681, + 74724070388243614, + ]), + Fq::from_montgomery_limbs([ + 2820801561543625657, + 2418377097726488830, + 6026234412050937676, + 1126089764215992130, + ]), + Fq::from_montgomery_limbs([ + 8551209674866173640, + 6260366140671248954, + 12081978629156052449, + 1140556338048141522, + ]), + Fq::from_montgomery_limbs([ + 3127468548134575066, + 584585047777214689, + 7762916153904627652, + 166598529350882438, + ]), + Fq::from_montgomery_limbs([ + 7594054111820467981, + 8571015412052249811, + 6107608647809765519, + 1023873926642050928, + ]), + Fq::from_montgomery_limbs([ + 10784713721876928946, + 5674574537437802090, + 12687938002553184071, + 136316472684139419, + ]), + Fq::from_montgomery_limbs([ + 2820801561543625657, + 2418377097726488830, + 6026234412050937676, + 1126089764215992130, + ]), + Fq::from_montgomery_limbs([ + 10427240268737712782, + 8508693586717179156, + 9391845005515956255, + 937208025112203554, + ]), + Fq::from_montgomery_limbs([ + 8182900134894401237, + 12638356435589207249, + 2514008238224928511, + 262393601667707271, + ]), + Fq::from_montgomery_limbs([ + 9827417092260447852, + 9328415136733098350, + 7749975888478067278, + 1296132886589595648, + ]), + Fq::from_montgomery_limbs([ + 16287831069372846812, + 12117020194152290696, + 2582012005292236373, + 964219332138367410, + ]), + Fq::from_montgomery_limbs([ + 16070813810583366554, + 1956961633890359529, + 13965208031005279836, + 927951972604280320, + ]), + Fq::from_montgomery_limbs([ + 8551209674866173640, + 6260366140671248954, + 12081978629156052449, + 1140556338048141522, + ]), + Fq::from_montgomery_limbs([ + 8182900134894401237, + 12638356435589207249, + 2514008238224928511, + 262393601667707271, + ]), + Fq::from_montgomery_limbs([ + 2689211423437640460, + 9937738931024806642, + 16752771701136165272, + 1203240695252068537, + ]), + Fq::from_montgomery_limbs([ + 4340203757804311965, + 12676662818122060527, + 8325672080044279362, + 1087811919015138569, + ]), + Fq::from_montgomery_limbs([ + 14389282186921406518, + 13071685447061354484, + 9323961789214815202, + 798867032561203873, + ]), + Fq::from_montgomery_limbs([ + 6738933144333850617, + 6100304390614169754, + 1210061970152249951, + 909818292837236776, + ]), + Fq::from_montgomery_limbs([ + 3127468548134575066, + 584585047777214689, + 7762916153904627652, + 166598529350882438, + ]), + Fq::from_montgomery_limbs([ + 9827417092260447852, + 9328415136733098350, + 7749975888478067278, + 1296132886589595648, + ]), + Fq::from_montgomery_limbs([ + 4340203757804311965, + 12676662818122060527, + 8325672080044279362, + 1087811919015138569, + ]), + Fq::from_montgomery_limbs([ + 16937615735900532927, + 2828202157217662325, + 11653172729566405164, + 102608297022837914, + ]), + Fq::from_montgomery_limbs([ + 10698441721372329435, + 14189560518339287134, + 16709548602960206315, + 1115736315296030670, + ]), + Fq::from_montgomery_limbs([ + 9669791352790763084, + 10325954078533278386, + 9503492366281944368, + 1040674818174287413, + ]), + Fq::from_montgomery_limbs([ + 7594054111820467981, + 8571015412052249811, + 6107608647809765519, + 1023873926642050928, + ]), + Fq::from_montgomery_limbs([ + 16287831069372846812, + 12117020194152290696, + 2582012005292236373, + 964219332138367410, + ]), + Fq::from_montgomery_limbs([ + 14389282186921406518, + 13071685447061354484, + 9323961789214815202, + 798867032561203873, + ]), + Fq::from_montgomery_limbs([ + 10698441721372329435, + 14189560518339287134, + 16709548602960206315, + 1115736315296030670, + ]), + Fq::from_montgomery_limbs([ + 4200873270792393235, + 10250359348562610182, + 13119023895300261973, + 870734268521497409, + ]), + ]), + M_00: Fq::from_montgomery_limbs([ + 14878706952858838161, + 15410104227655356999, + 17393275270132988194, + 905602962502284432, + ]), + M_i: Matrix::<7, 7, 49>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3417057834288542701, + 14660334709638275173, + 15697961235617927687, + 541283478161011852, + ]), + Fq::from_montgomery_limbs([ + 7015809488978334700, + 16756137731097346041, + 4299145747412822878, + 425771021418967410, + ]), + Fq::from_montgomery_limbs([ + 11403455157288865564, + 17867822347283350530, + 6642326758447081407, + 347793598737965121, + ]), + Fq::from_montgomery_limbs([ + 3281498772575130056, + 15793155797823121930, + 13825210503534495803, + 403937498710078315, + ]), + Fq::from_montgomery_limbs([ + 14433853750795786283, + 6064690325535561885, + 8568546552249237512, + 321732587903564709, + ]), + Fq::from_montgomery_limbs([ + 6678655391923876018, + 8629057843778719427, + 9842628707936041139, + 63076861057827674, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7015809488978334700, + 16756137731097346041, + 4299145747412822878, + 425771021418967410, + ]), + Fq::from_montgomery_limbs([ + 2912519858324498512, + 6507880465488943086, + 4272821136041054916, + 111743668526988613, + ]), + Fq::from_montgomery_limbs([ + 1748445869324305294, + 9551769637184621333, + 15854660035338842641, + 935843652651688174, + ]), + Fq::from_montgomery_limbs([ + 16017478920517952465, + 12052990841260496131, + 1846258033159005439, + 1283952887503997049, + ]), + Fq::from_montgomery_limbs([ + 13375753074817350454, + 1048153563921378033, + 9203345202329021202, + 240551250239901980, + ]), + Fq::from_montgomery_limbs([ + 11153565452311437343, + 15840896398791388390, + 6651106066134943770, + 1041420503258293522, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11403455157288865564, + 17867822347283350530, + 6642326758447081407, + 347793598737965121, + ]), + Fq::from_montgomery_limbs([ + 1748445869324305294, + 9551769637184621333, + 15854660035338842641, + 935843652651688174, + ]), + Fq::from_montgomery_limbs([ + 12634906865313795269, + 11036595778607414197, + 3160889789817653150, + 123157168832279614, + ]), + Fq::from_montgomery_limbs([ + 8716577469114679639, + 13354977326657221151, + 13192299021058097299, + 1294655858266660253, + ]), + Fq::from_montgomery_limbs([ + 13373336070740714862, + 8730572127209811217, + 7187749001613674585, + 593376019371200200, + ]), + Fq::from_montgomery_limbs([ + 10026036648949247362, + 12678383936758102898, + 11178426371544881076, + 1002297129682557342, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3281498772575130056, + 15793155797823121930, + 13825210503534495803, + 403937498710078315, + ]), + Fq::from_montgomery_limbs([ + 16017478920517952465, + 12052990841260496131, + 1846258033159005439, + 1283952887503997049, + ]), + Fq::from_montgomery_limbs([ + 8716577469114679639, + 13354977326657221151, + 13192299021058097299, + 1294655858266660253, + ]), + Fq::from_montgomery_limbs([ + 14690633444146561299, + 13456453518898387751, + 10432348396252513416, + 1242585437512358865, + ]), + Fq::from_montgomery_limbs([ + 14102570081274067998, + 8257296766039180005, + 7790604469177448243, + 143690956943080350, + ]), + Fq::from_montgomery_limbs([ + 8465733138989536717, + 2929735846155108951, + 4450573983160870127, + 472219173524401119, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 14433853750795786283, + 6064690325535561885, + 8568546552249237512, + 321732587903564709, + ]), + Fq::from_montgomery_limbs([ + 13375753074817350454, + 1048153563921378033, + 9203345202329021202, + 240551250239901980, + ]), + Fq::from_montgomery_limbs([ + 13373336070740714862, + 8730572127209811217, + 7187749001613674585, + 593376019371200200, + ]), + Fq::from_montgomery_limbs([ + 14102570081274067998, + 8257296766039180005, + 7790604469177448243, + 143690956943080350, + ]), + Fq::from_montgomery_limbs([ + 4085032723309791110, + 4665611504008924558, + 11824165711550330487, + 578201258376880126, + ]), + Fq::from_montgomery_limbs([ + 11519276958617059096, + 13454485508887725898, + 7249926774019308728, + 1072756789797212364, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6678655391923876018, + 8629057843778719427, + 9842628707936041139, + 63076861057827674, + ]), + Fq::from_montgomery_limbs([ + 11153565452311437343, + 15840896398791388390, + 6651106066134943770, + 1041420503258293522, + ]), + Fq::from_montgomery_limbs([ + 10026036648949247362, + 12678383936758102898, + 11178426371544881076, + 1002297129682557342, + ]), + Fq::from_montgomery_limbs([ + 8465733138989536717, + 2929735846155108951, + 4450573983160870127, + 472219173524401119, + ]), + Fq::from_montgomery_limbs([ + 11519276958617059096, + 13454485508887725898, + 7249926774019308728, + 1072756789797212364, + ]), + Fq::from_montgomery_limbs([ + 8573207762665625898, + 16056334493165972918, + 10346718250214646205, + 1191123760209144883, + ]), + ]), + v_collection: [ + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 10644639721044274615, + 16734510270636734171, + 6265966780522802029, + 1180401342618465036, + ]), + Fq::from_montgomery_limbs([ + 1254097908378330934, + 13601601811345135765, + 15071243631801644424, + 297593012698954223, + ]), + Fq::from_montgomery_limbs([ + 10771062345226876930, + 7469649658028794228, + 3597902033882677100, + 608350358812428664, + ]), + Fq::from_montgomery_limbs([ + 10231075707837198839, + 11530522131003023037, + 1802721152151214035, + 1212125375706727806, + ]), + Fq::from_montgomery_limbs([ + 548206758129328348, + 778220363894850734, + 12082251172806692919, + 593860302507973656, + ]), + Fq::from_montgomery_limbs([ + 6029427183938663855, + 17136269120728144851, + 7031277897576748532, + 978052702327451285, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 14583548544607776390, + 1455594659839297233, + 7503148269133459078, + 979881557166431467, + ]), + Fq::from_montgomery_limbs([ + 4091794927241778027, + 3984934849444513902, + 4168704414264273635, + 1243153189837659840, + ]), + Fq::from_montgomery_limbs([ + 13672227389423134641, + 7889118255497550145, + 10535716868579808028, + 727851871568307361, + ]), + Fq::from_montgomery_limbs([ + 1805790605077811102, + 13328027295111756288, + 15284753467090911646, + 476755389437853977, + ]), + Fq::from_montgomery_limbs([ + 6818887996128827024, + 12980010109101424586, + 17837508282492360706, + 804695904048021645, + ]), + Fq::from_montgomery_limbs([ + 9531071905126860029, + 10560990131084904417, + 3843562488879133086, + 427342220830413508, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 12999307184917437199, + 4460278989335054240, + 8039372983916400823, + 524229825913330581, + ]), + Fq::from_montgomery_limbs([ + 13201924241923240556, + 11745564486322152121, + 2471694394944636145, + 181216534789741406, + ]), + Fq::from_montgomery_limbs([ + 4934105058811497644, + 12271038025203690017, + 7436143789682315585, + 998806416030886275, + ]), + Fq::from_montgomery_limbs([ + 13725255261959326942, + 8555513885879208558, + 955378272993441581, + 297008239472103166, + ]), + Fq::from_montgomery_limbs([ + 10371095811858205849, + 8804518571176544229, + 11002636904361592873, + 660578117299637260, + ]), + Fq::from_montgomery_limbs([ + 8307653710943752623, + 2839318436416200448, + 12213117778126871947, + 1025759164655249254, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 11863327563780294024, + 10993730767593839696, + 9502873035480842903, + 1097248076762680248, + ]), + Fq::from_montgomery_limbs([ + 6808878885915903933, + 8278632955554852373, + 12719166835729596674, + 804467256685775329, + ]), + Fq::from_montgomery_limbs([ + 16008107817056775055, + 8608502583580218397, + 2796011695423831437, + 949203486167282741, + ]), + Fq::from_montgomery_limbs([ + 9591171450453062265, + 6399710760130247553, + 16473627252289324238, + 199489766710074990, + ]), + Fq::from_montgomery_limbs([ + 2126693132859812176, + 10946771068545746672, + 16987361148217467014, + 545647818048109007, + ]), + Fq::from_montgomery_limbs([ + 11988059750093062229, + 9298754840020496938, + 15035120852882985245, + 1192754512132360647, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 8283981142206306939, + 15468588506068845291, + 14286327059693983748, + 168088448899207140, + ]), + Fq::from_montgomery_limbs([ + 10471089395398769453, + 96236653784383214, + 16648343620891915559, + 253629587649938570, + ]), + Fq::from_montgomery_limbs([ + 2122557167897006073, + 6496047148498928328, + 4866370458783575330, + 393653606927582732, + ]), + Fq::from_montgomery_limbs([ + 1613936452873278524, + 13810247455069732717, + 15313868045534267346, + 1243393042619890514, + ]), + Fq::from_montgomery_limbs([ + 15475354144715027231, + 7573523099482013249, + 12718534995660881344, + 1280011735315941795, + ]), + Fq::from_montgomery_limbs([ + 16713988261819571430, + 2839652657083011646, + 3620474509759339159, + 813365112700437390, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 5224860601737206030, + 471099951455807337, + 4240850224623809066, + 1213277143090320240, + ]), + Fq::from_montgomery_limbs([ + 8044997223262572963, + 8080347158505061529, + 3228586894312007285, + 331597882779275433, + ]), + Fq::from_montgomery_limbs([ + 1208998236383405070, + 1447425529631254332, + 8002978071615560825, + 1168296975382357177, + ]), + Fq::from_montgomery_limbs([ + 3717552334324548558, + 14379760040658949225, + 17287286958139444106, + 498156372540796351, + ]), + Fq::from_montgomery_limbs([ + 7205892599830853163, + 15212333206847125686, + 5699921803433736310, + 905915093597247729, + ]), + Fq::from_montgomery_limbs([ + 755943729919434357, + 10577236669397908241, + 14468710867857253298, + 1024324011896165462, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 8058282063231996405, + 17257430900010574484, + 2158055163476481194, + 595100858348853692, + ]), + Fq::from_montgomery_limbs([ + 15085559623482919871, + 3472078672722908583, + 4599317711792091602, + 222588611222065167, + ]), + Fq::from_montgomery_limbs([ + 15424099905499014070, + 8434797005632313353, + 8131086932997815225, + 1036565779889668097, + ]), + Fq::from_montgomery_limbs([ + 1382697922847342157, + 4665453833795528964, + 9747274806721360803, + 148779622932294522, + ]), + Fq::from_montgomery_limbs([ + 4432837085227621901, + 3625643010647482210, + 9188161200126159834, + 1031489011263833493, + ]), + Fq::from_montgomery_limbs([ + 2595560161561027549, + 10106811297951765366, + 17488308776579863485, + 206455909861435406, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 820166082021164174, + 9749064658839893621, + 2697165176777711952, + 1013643423254794247, + ]), + Fq::from_montgomery_limbs([ + 11434285783669558858, + 13584809878479701720, + 3915545683544186278, + 1023126538570256918, + ]), + Fq::from_montgomery_limbs([ + 2165364699284154689, + 12685002878895760637, + 6867136501788661212, + 674836357022179385, + ]), + Fq::from_montgomery_limbs([ + 9371284124941532260, + 7254488926567729428, + 14153148852060364975, + 563833886155167209, + ]), + Fq::from_montgomery_limbs([ + 12983913502532225115, + 10422261732254055015, + 9682741985590349706, + 1152902980215236093, + ]), + Fq::from_montgomery_limbs([ + 53453825694603265, + 7363785068269762421, + 10014136818496735189, + 418364251047633957, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 9089547361822769623, + 2614400882196504844, + 18171746873737288094, + 75978327930221735, + ]), + Fq::from_montgomery_limbs([ + 16792233542280595044, + 9194009742559712662, + 16681314096151276162, + 141104854369611948, + ]), + Fq::from_montgomery_limbs([ + 14121587945665084254, + 4285652051739813435, + 908329507035055833, + 1170458112249762210, + ]), + Fq::from_montgomery_limbs([ + 17832160706398652605, + 12757316993880307572, + 17823976387828534641, + 1060884446639737566, + ]), + Fq::from_montgomery_limbs([ + 12238967831419693891, + 17285564337796726189, + 772363080009335540, + 1133022491303716360, + ]), + Fq::from_montgomery_limbs([ + 7101023699634357749, + 6639281158265807289, + 4981868997280764642, + 985691418122098087, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 11269122037409773082, + 12011421319544460999, + 1334150225599331569, + 2858146322225763, + ]), + Fq::from_montgomery_limbs([ + 9313709853509185496, + 16206428797220002184, + 13680333402027486517, + 1242753153191996216, + ]), + Fq::from_montgomery_limbs([ + 17569743508708392526, + 3142648113271106845, + 1634996132313805038, + 345389980530236831, + ]), + Fq::from_montgomery_limbs([ + 13214675085238735159, + 17546363296125310843, + 15104140193957885186, + 1009608979945975479, + ]), + Fq::from_montgomery_limbs([ + 13156206507994500002, + 15331136932468936255, + 18120353711369546595, + 212936761308279860, + ]), + Fq::from_montgomery_limbs([ + 15728832258520667556, + 2222718495126847960, + 9069363803574780412, + 1252511052567294538, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 15318220334729666071, + 10085274749271496451, + 13235713280652147722, + 745052808139004576, + ]), + Fq::from_montgomery_limbs([ + 13156235912943986954, + 5448235351584523656, + 14912753996910833259, + 1074562042912540040, + ]), + Fq::from_montgomery_limbs([ + 10973489371567110798, + 13864494226359434162, + 2551801121655091132, + 842122627627640172, + ]), + Fq::from_montgomery_limbs([ + 16434063247854180644, + 4535379715543303383, + 15837253172489347337, + 811511753879666188, + ]), + Fq::from_montgomery_limbs([ + 17168911107864577236, + 43950174469174547, + 5104860072131484949, + 973362737471998355, + ]), + Fq::from_montgomery_limbs([ + 7931655442728732623, + 2231832287024216001, + 1215678170119206083, + 809922596417314673, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 11089365147905175739, + 17689470198615435650, + 1802029570881529665, + 323182645037342266, + ]), + Fq::from_montgomery_limbs([ + 15969427871111504498, + 5489904452991350903, + 6060256254335150822, + 327519122975337122, + ]), + Fq::from_montgomery_limbs([ + 8372741465623248660, + 14241887742859321780, + 5732992227950195767, + 39295360183511289, + ]), + Fq::from_montgomery_limbs([ + 1187756953137288615, + 6353707652463699269, + 16025288734445909769, + 689723399381686930, + ]), + Fq::from_montgomery_limbs([ + 3641027043425346704, + 7529359599459005223, + 2263874390889253898, + 1174711192482135891, + ]), + Fq::from_montgomery_limbs([ + 14213602576882685129, + 1072450781726178504, + 9166004798283088170, + 288986234043895133, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 9857091378959575712, + 4700244761781549157, + 11886572911958021128, + 978573057754163783, + ]), + Fq::from_montgomery_limbs([ + 6859829417840328625, + 5380908914233546421, + 9985382358422821006, + 809479275163892841, + ]), + Fq::from_montgomery_limbs([ + 7129905675772133963, + 9947583967153283633, + 11488752011523120045, + 70770661730429235, + ]), + Fq::from_montgomery_limbs([ + 10339301687172431688, + 7034120066892139373, + 278535235730000358, + 1037618672688193269, + ]), + Fq::from_montgomery_limbs([ + 8073945182151246976, + 8024480602729778451, + 14228737842273667747, + 5601376964086932, + ]), + Fq::from_montgomery_limbs([ + 17455241286370251178, + 5877720710031178913, + 9559992722432789829, + 1325168601990716931, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 4443170007910122686, + 7353422220255768461, + 15086677032035138267, + 1000401307557218310, + ]), + Fq::from_montgomery_limbs([ + 6016899902613423969, + 17460518555665406782, + 3732816219387681456, + 602171657802810010, + ]), + Fq::from_montgomery_limbs([ + 17215551508008455197, + 14155576318076749717, + 287763472218567445, + 348594781061367360, + ]), + Fq::from_montgomery_limbs([ + 13673281300516729195, + 2214275010578136594, + 5278640382055069707, + 862836485498449760, + ]), + Fq::from_montgomery_limbs([ + 14604602086577261525, + 17331229080491881983, + 9761345074674761926, + 92431445071525752, + ]), + Fq::from_montgomery_limbs([ + 288667004247211189, + 8068558316435185759, + 34133259048288536, + 632325899262964414, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 4414532264671055849, + 13933747433746332421, + 13027565118143790352, + 1050571576397137370, + ]), + Fq::from_montgomery_limbs([ + 10778047724985809400, + 1316157346886280268, + 10174764403037871455, + 1310251685035182702, + ]), + Fq::from_montgomery_limbs([ + 2901779093000588757, + 14345292131236108270, + 325687763253834560, + 1302296993426055332, + ]), + Fq::from_montgomery_limbs([ + 10195270688246580514, + 15529132938808577668, + 16655748986619374751, + 1334926369645181743, + ]), + Fq::from_montgomery_limbs([ + 10219117138329677661, + 17968691841862978952, + 2586002244710590318, + 890496969841145620, + ]), + Fq::from_montgomery_limbs([ + 2498245601951074289, + 1598646875827827107, + 890275996690762376, + 77165559003555915, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 2988605310258792866, + 15957801327838169961, + 7584840999811153279, + 434926945147154735, + ]), + Fq::from_montgomery_limbs([ + 9597713906228190573, + 13530531350309731794, + 11006707392867763256, + 1180021669203726874, + ]), + Fq::from_montgomery_limbs([ + 3103797984913840610, + 13327065637625915613, + 7317743376243954428, + 454606898571769263, + ]), + Fq::from_montgomery_limbs([ + 13418762319452988162, + 7011698969983978549, + 10043811570622910529, + 1219725988569937648, + ]), + Fq::from_montgomery_limbs([ + 16415739938738212197, + 18000325972331813382, + 2937222969358261592, + 751420552035148970, + ]), + Fq::from_montgomery_limbs([ + 18143523461998133814, + 17501449569222234751, + 11831229978852878240, + 230065434288493720, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 390587431735370215, + 6070182885512254444, + 15678300086321846232, + 658622796995655025, + ]), + Fq::from_montgomery_limbs([ + 11187073703980753366, + 11256592440200977896, + 1503110027135689183, + 1132851611041610655, + ]), + Fq::from_montgomery_limbs([ + 13154916648506390915, + 5339482676807482888, + 7230250399862288620, + 218460204422790571, + ]), + Fq::from_montgomery_limbs([ + 9102410326146594084, + 6165251247104570609, + 17897733375690573799, + 920164771069067785, + ]), + Fq::from_montgomery_limbs([ + 17285085289295929853, + 16238198804092185825, + 16251509486414134096, + 1084909706592090544, + ]), + Fq::from_montgomery_limbs([ + 3880782017033225674, + 4873252603362867352, + 14459262730771211791, + 163174741264077656, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 4363513037339290429, + 11071402644779655945, + 18203948441237058377, + 487870628328334554, + ]), + Fq::from_montgomery_limbs([ + 9854620422114551002, + 11862250176770700568, + 874594626487585300, + 932096667364472947, + ]), + Fq::from_montgomery_limbs([ + 2172530204291601442, + 6393872278636522840, + 684019909052108375, + 180921268676761997, + ]), + Fq::from_montgomery_limbs([ + 747820584568953283, + 11441694611866320992, + 4524856196876367929, + 874564518710804172, + ]), + Fq::from_montgomery_limbs([ + 7299335342253825037, + 12867703813750147845, + 7941311700245180087, + 1108892033870182325, + ]), + Fq::from_montgomery_limbs([ + 17832410557204971163, + 4075792975869963488, + 7197135716780572438, + 152677169125496593, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 10163931248253127785, + 1981713163631115965, + 3150372916074444430, + 470994848988866265, + ]), + Fq::from_montgomery_limbs([ + 15083629881223276978, + 2015879515814390952, + 11644449746714623084, + 946361618448877426, + ]), + Fq::from_montgomery_limbs([ + 16592814677886046887, + 8039452671655169748, + 2594546365519790998, + 584104276493702607, + ]), + Fq::from_montgomery_limbs([ + 17407066489676124305, + 8656046168534251407, + 3138964226038501382, + 514356098263219093, + ]), + Fq::from_montgomery_limbs([ + 15942565322057954282, + 6097316293590202889, + 6372629697231874413, + 113242342217125329, + ]), + Fq::from_montgomery_limbs([ + 11571924722120150581, + 13912164049336724059, + 2502413236406840486, + 679604324439169221, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 11231555889522859185, + 12838308109173382219, + 14989494611471795387, + 1234334251746422128, + ]), + Fq::from_montgomery_limbs([ + 11820760137592674131, + 13233941704214912620, + 9184955620669308585, + 760535087243845704, + ]), + Fq::from_montgomery_limbs([ + 18251843258930069429, + 6913182660293023569, + 15611295871669355399, + 543202252785444658, + ]), + Fq::from_montgomery_limbs([ + 3623801569902716815, + 12012005568369974445, + 8975238911566253998, + 1306561840926137970, + ]), + Fq::from_montgomery_limbs([ + 11553511503558092125, + 12278824151250337447, + 14503589672502199303, + 1306659756102330132, + ]), + Fq::from_montgomery_limbs([ + 15708785553057654326, + 3840692890311772930, + 4102206509788468425, + 440698181344607784, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 8058055302582355971, + 5700106105541005064, + 7460926738156841111, + 462277946682165887, + ]), + Fq::from_montgomery_limbs([ + 4851568100746305461, + 6584456459134975532, + 17460185792418666468, + 793703974849869892, + ]), + Fq::from_montgomery_limbs([ + 1493013092751501655, + 6157234009848897017, + 14948235164845831294, + 1116239172277392848, + ]), + Fq::from_montgomery_limbs([ + 541291017778122597, + 4361606389405799905, + 13559255135673617904, + 164046297400629617, + ]), + Fq::from_montgomery_limbs([ + 6157883725635917010, + 7921949762718398664, + 8097426475493743176, + 285172774886131081, + ]), + Fq::from_montgomery_limbs([ + 276501516953041810, + 15996807350070926146, + 1269758076943886300, + 195784581070827446, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 4853469952320798393, + 17379711604415333498, + 11341428304819039080, + 766000305508925099, + ]), + Fq::from_montgomery_limbs([ + 1723028172270801784, + 7846165827796379646, + 4636451005692610955, + 871151940476972966, + ]), + Fq::from_montgomery_limbs([ + 6590646061221323902, + 889461654044032879, + 1505496877923673922, + 752475483640516924, + ]), + Fq::from_montgomery_limbs([ + 13045448500706444324, + 8361654882120486231, + 4205925187373381862, + 277826998934433801, + ]), + Fq::from_montgomery_limbs([ + 9675553409793389785, + 5667173122152825040, + 8083271914684780456, + 706216661468574727, + ]), + Fq::from_montgomery_limbs([ + 14266510371042388064, + 7106905440715991100, + 10411622989018615279, + 894382081849790039, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 9268336790197882301, + 12070173591607011265, + 7396189305808814103, + 6826922221427887, + ]), + Fq::from_montgomery_limbs([ + 11481176188982883772, + 15479330738046464105, + 15874300506335824, + 418080356004810461, + ]), + Fq::from_montgomery_limbs([ + 8402920895853151075, + 11319528131289558551, + 11236635718047704076, + 590562434419913557, + ]), + Fq::from_montgomery_limbs([ + 11942015297507883097, + 16315121378556649183, + 668425812435475072, + 1203236348881767128, + ]), + Fq::from_montgomery_limbs([ + 14719743395974511202, + 1514583382813202278, + 3223906165579006067, + 1338589921222659040, + ]), + Fq::from_montgomery_limbs([ + 11353873627418368002, + 17696069599691683167, + 17867255547403463352, + 256390082737611698, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 3183181278357516648, + 10539132954816790294, + 14186140147230647162, + 782128376830566716, + ]), + Fq::from_montgomery_limbs([ + 24279344590760052, + 1500125118480868266, + 1805095232159146495, + 1156936758956513949, + ]), + Fq::from_montgomery_limbs([ + 10537024754772614474, + 3289834431146907946, + 204955315838625775, + 635285322161689619, + ]), + Fq::from_montgomery_limbs([ + 10063527467101509243, + 6065807056365479935, + 17027546583602504025, + 991768228369353932, + ]), + Fq::from_montgomery_limbs([ + 10809287584503006407, + 1968797130899798907, + 15335034484681843481, + 581199600450356946, + ]), + Fq::from_montgomery_limbs([ + 5342411348500260963, + 6851928330103451454, + 17931963062212165213, + 1333165923948214303, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 5362873004958210141, + 4780911804231906429, + 491658981443450273, + 865870945658130370, + ]), + Fq::from_montgomery_limbs([ + 16170855628896579013, + 16924415594421177943, + 18099375624011254510, + 1172947874675982311, + ]), + Fq::from_montgomery_limbs([ + 2313253813846593553, + 6024058999881721714, + 3460494784065903603, + 200192466049298184, + ]), + Fq::from_montgomery_limbs([ + 16495862644170305555, + 1027481903728649974, + 18424464377133050050, + 286370147149132790, + ]), + Fq::from_montgomery_limbs([ + 10500420552294712757, + 1190864375567816587, + 7753792083623713506, + 527733109368565721, + ]), + Fq::from_montgomery_limbs([ + 14443372038206196537, + 7620145268069197030, + 14646532763986835342, + 456340242357593922, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 9232251606394270216, + 14408677736204106911, + 13271324872968281, + 759107595695446407, + ]), + Fq::from_montgomery_limbs([ + 17249519010359595711, + 3324593693860748091, + 17110518692688522506, + 1222951351162422358, + ]), + Fq::from_montgomery_limbs([ + 18126276283902025445, + 4360757737312030104, + 7886535856284373354, + 1092174897468921446, + ]), + Fq::from_montgomery_limbs([ + 1062163077313937380, + 11987404733688401354, + 13771857460633546591, + 404835587063112873, + ]), + Fq::from_montgomery_limbs([ + 16497288776209779034, + 2880366049054710506, + 253042145042914898, + 795216235095539205, + ]), + Fq::from_montgomery_limbs([ + 13406148328760919071, + 7241933139744138143, + 12901549130103097508, + 622176358374555103, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 8839697166194087406, + 4483906360586614080, + 14882309942760908718, + 26805057196885842, + ]), + Fq::from_montgomery_limbs([ + 7780277578177316464, + 8830183239891425324, + 17543080001337922949, + 763106694028031052, + ]), + Fq::from_montgomery_limbs([ + 1380876235740608953, + 7727437954586184212, + 6573237846455394763, + 348129619934932866, + ]), + Fq::from_montgomery_limbs([ + 14022759702194409553, + 8495575903624052978, + 4435568764932750980, + 556954649769758600, + ]), + Fq::from_montgomery_limbs([ + 10833230885057379503, + 14946233534988385740, + 3482517598744002245, + 312685728556510786, + ]), + Fq::from_montgomery_limbs([ + 4935346722124605172, + 797590664817406232, + 6711744841558593604, + 1113832946092370199, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 4507604340829135994, + 6192904589647086945, + 349044365259597977, + 1152686511406973589, + ]), + Fq::from_montgomery_limbs([ + 195352152493747630, + 5233440319211994798, + 932481733874805995, + 509755197807725335, + ]), + Fq::from_montgomery_limbs([ + 6237574338367694863, + 18409691934826828587, + 2269618770290486313, + 1105546858321591640, + ]), + Fq::from_montgomery_limbs([ + 12982330271334867216, + 3689728804743182371, + 11969860905888785248, + 384135728283136906, + ]), + Fq::from_montgomery_limbs([ + 18265210337391869731, + 11610294943475185851, + 7713269183082030658, + 64710928906612284, + ]), + Fq::from_montgomery_limbs([ + 17581461696584771576, + 1251761997536591051, + 8677916614754373573, + 11467824250957215, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 5293383473840045151, + 14232932703686129211, + 16580168622608048461, + 944952712971843416, + ]), + Fq::from_montgomery_limbs([ + 1172918766922903979, + 5995995512044846696, + 7739257607297521882, + 1042510915533280011, + ]), + Fq::from_montgomery_limbs([ + 1981724477088009475, + 13354315713534102679, + 11891854408097089989, + 92846148123740243, + ]), + Fq::from_montgomery_limbs([ + 976886551936370648, + 14904356347049243804, + 14591979302472212806, + 1213715283121821429, + ]), + Fq::from_montgomery_limbs([ + 15587984398787314569, + 16826502960315805008, + 12894364377505862261, + 1260461626778401163, + ]), + Fq::from_montgomery_limbs([ + 4959549071568407724, + 16406890426995168379, + 5205271867547136181, + 625367672303411178, + ]), + ]), + Matrix::<1, 6, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 4469737807624992151, + 13646441970050473001, + 14103514615210198911, + 951934596751743825, + ]), + Fq::from_montgomery_limbs([ + 179935223424484463, + 2716781758867967994, + 13772831748270319508, + 559465738003921114, + ]), + Fq::from_montgomery_limbs([ + 3732370725359378315, + 109679493243276219, + 881555622161027305, + 772217225730861177, + ]), + Fq::from_montgomery_limbs([ + 2034891371688198908, + 15927708347683796662, + 2835422031008901944, + 942335024460335016, + ]), + Fq::from_montgomery_limbs([ + 10874231289292346814, + 11117313284388646608, + 16125883931973538451, + 1333477728458259050, + ]), + Fq::from_montgomery_limbs([ + 5836661691500937581, + 2582555451477250318, + 16743568702164980685, + 1095040268607012655, + ]), + ]), + ], + w_hat_collection: [ + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 6933713838801944433, + 16845582094611513195, + 18106981831632269118, + 1315719765541495999, + ]), + Fq::from_montgomery_limbs([ + 11025937787709817432, + 2848215840891863663, + 12003429085947921194, + 123169188111155826, + ]), + Fq::from_montgomery_limbs([ + 12625372430371999830, + 16677955247940128803, + 7323211740492754581, + 634092645821649835, + ]), + Fq::from_montgomery_limbs([ + 8476375831616065903, + 8302751278140753414, + 4675397025515049474, + 916054888187664134, + ]), + Fq::from_montgomery_limbs([ + 10397071512469717592, + 5168805500057287779, + 15231087545157212262, + 795647437775574917, + ]), + Fq::from_montgomery_limbs([ + 4753644871978862709, + 5862282760667146308, + 12460694012157225697, + 599558919665641703, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 3525611259680496361, + 16850996105995319551, + 5895804919214678528, + 391214039273829079, + ]), + Fq::from_montgomery_limbs([ + 16383982061649260213, + 7412768188479417373, + 18252968433587413341, + 921842098972532091, + ]), + Fq::from_montgomery_limbs([ + 4293960317930015621, + 15005027020601642292, + 14505531830207858927, + 1015323632458039193, + ]), + Fq::from_montgomery_limbs([ + 6752151532781968377, + 16993009794999287001, + 14092320031767020691, + 1182677145301447547, + ]), + Fq::from_montgomery_limbs([ + 16314233041829270002, + 3649678206581272066, + 11390243497395273567, + 313040234242687401, + ]), + Fq::from_montgomery_limbs([ + 16897077646049598862, + 5408248314355013755, + 10936401950030912526, + 513592532346930326, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 10142077329767560760, + 6792944251304638223, + 7902051751595654458, + 52562103742172771, + ]), + Fq::from_montgomery_limbs([ + 4124245661449561978, + 16104205151533781959, + 12907591592992771975, + 375874492004655234, + ]), + Fq::from_montgomery_limbs([ + 721737094669186114, + 9206501775775148139, + 4450459856140585915, + 711734015520322130, + ]), + Fq::from_montgomery_limbs([ + 614920776545720184, + 9338526590820186332, + 3423803905067391290, + 1297483125050494498, + ]), + Fq::from_montgomery_limbs([ + 5114006628798839509, + 10631775008980466663, + 3587509331998934684, + 1269615621594518563, + ]), + Fq::from_montgomery_limbs([ + 10586294365539695697, + 13070162917427803989, + 5131427260750659378, + 185094384545327415, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 15393156556409725569, + 12069454178577165134, + 10615051884848589576, + 627431092634767494, + ]), + Fq::from_montgomery_limbs([ + 2254585774072887271, + 9054648099999668560, + 10092512970859140868, + 128794736276163271, + ]), + Fq::from_montgomery_limbs([ + 9634188559612410031, + 11231916523014098458, + 9347609823309203991, + 350537733562293921, + ]), + Fq::from_montgomery_limbs([ + 712883344164921598, + 12267969327296118133, + 18415463544294982318, + 453347153304216575, + ]), + Fq::from_montgomery_limbs([ + 6354724406448162447, + 16973074452059542227, + 1742850061709863465, + 29248222949323830, + ]), + Fq::from_montgomery_limbs([ + 5847808690552004737, + 2583092622487380856, + 16226455529753322167, + 622812582439549387, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 8037108896489144647, + 11600187371086455875, + 14226278393962213262, + 1257430093680684711, + ]), + Fq::from_montgomery_limbs([ + 17768344430228638036, + 12362984821927414562, + 8755702286219707347, + 1052522743722421089, + ]), + Fq::from_montgomery_limbs([ + 6518969013844050226, + 10104698889580418215, + 12831301188037688559, + 783109772397025172, + ]), + Fq::from_montgomery_limbs([ + 6181962216281397012, + 8791420351320694807, + 5845391987758232061, + 691946495243473347, + ]), + Fq::from_montgomery_limbs([ + 555663508144587651, + 2813166513808555896, + 9604748549845359549, + 1115460934710212864, + ]), + Fq::from_montgomery_limbs([ + 638373104524889548, + 6961133691969109992, + 16899272275885442322, + 107354495377389126, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 359839753750440452, + 16872903944693818879, + 9182594678934428762, + 157875028486713218, + ]), + Fq::from_montgomery_limbs([ + 18133892901854313763, + 2808183347815612802, + 13420838164084790320, + 592901990662685620, + ]), + Fq::from_montgomery_limbs([ + 2972894661558754427, + 10007808519010762631, + 9092666282720580619, + 1045475284031737143, + ]), + Fq::from_montgomery_limbs([ + 11312374728773702090, + 14199049380673735694, + 6883328492121377672, + 254205863439515968, + ]), + Fq::from_montgomery_limbs([ + 1622439358680448127, + 16670668058993745597, + 4548903667405006277, + 711571731093376968, + ]), + Fq::from_montgomery_limbs([ + 17647983290779098291, + 516914030435843715, + 12098656310263379019, + 275469573180901388, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 8548644889741041300, + 16958143034062232997, + 13155023865968925107, + 527671552750155065, + ]), + Fq::from_montgomery_limbs([ + 13280891140215524593, + 3305529464796220554, + 13769067712411857696, + 194876564429210557, + ]), + Fq::from_montgomery_limbs([ + 4744158468698697612, + 16501033922635430369, + 13118709481247752005, + 455296334218894134, + ]), + Fq::from_montgomery_limbs([ + 3276121206714262439, + 4384108406151911994, + 10320409945935199931, + 1129505288669932775, + ]), + Fq::from_montgomery_limbs([ + 4802683862047720627, + 12048656597166121442, + 2985941889978900161, + 1215862908384237465, + ]), + Fq::from_montgomery_limbs([ + 9878053342652269422, + 6952038940472105574, + 13204721887023621809, + 104559270963520601, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 2884484268998399392, + 7516340773367415265, + 17967577411328781785, + 71104776242823513, + ]), + Fq::from_montgomery_limbs([ + 6836357534971200276, + 12307486411100090586, + 3725741383492541705, + 708703587844324306, + ]), + Fq::from_montgomery_limbs([ + 16065785508863042824, + 13168438874677663185, + 10334681499739682637, + 537952869573618152, + ]), + Fq::from_montgomery_limbs([ + 4276306945181457487, + 11319798687621632943, + 11337729997070203637, + 154843360608516964, + ]), + Fq::from_montgomery_limbs([ + 15091173599951556922, + 10089665296762720564, + 1001320269268178313, + 1278999239679089342, + ]), + Fq::from_montgomery_limbs([ + 6790806302663889439, + 15630966142638650191, + 7219114191273641870, + 607000211505329118, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 10941156742810682792, + 13379581544377778361, + 13597487267674595073, + 856893196159093362, + ]), + Fq::from_montgomery_limbs([ + 12116163542944543584, + 10494464956681785456, + 5328861516400529745, + 1198358765731586889, + ]), + Fq::from_montgomery_limbs([ + 18189172451487902278, + 4704482581638044529, + 984078958545158234, + 1214725173814978653, + ]), + Fq::from_montgomery_limbs([ + 5693469689620468779, + 9572644835043944500, + 2366490855072377760, + 976822768924111263, + ]), + Fq::from_montgomery_limbs([ + 13490986302612722028, + 1283285868432826268, + 15164008493321253514, + 443251753067442416, + ]), + Fq::from_montgomery_limbs([ + 13150294025593833313, + 5620721896853634047, + 4766918037148084086, + 1004371804232239176, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 11674076986569886445, + 14273565036215986478, + 7256033114853758831, + 1243175635214446154, + ]), + Fq::from_montgomery_limbs([ + 13391657488427814604, + 11740905283874021531, + 9224412564843665854, + 277256927127426063, + ]), + Fq::from_montgomery_limbs([ + 9479795538791379585, + 12974816116199774846, + 12093010719550875010, + 5065395771365623, + ]), + Fq::from_montgomery_limbs([ + 8817914873159831624, + 2104380883716865129, + 18076504449817050016, + 651566378088004291, + ]), + Fq::from_montgomery_limbs([ + 2593549556231375650, + 9464329604880807882, + 931952291445829364, + 1296192193647975938, + ]), + Fq::from_montgomery_limbs([ + 6791830127635900713, + 5571583372402235342, + 5980079258218847792, + 609581694037305767, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 3590436137035362796, + 6878827383468400586, + 2087187619625759972, + 366519334389468484, + ]), + Fq::from_montgomery_limbs([ + 8466797588269795178, + 6233162019605045514, + 7818079020321919455, + 1299893902682642414, + ]), + Fq::from_montgomery_limbs([ + 13213818269144599466, + 1289947883313972118, + 4059701246652915385, + 12056266522820237, + ]), + Fq::from_montgomery_limbs([ + 4508800680162331521, + 15986068886298500867, + 14977838885955851194, + 38157078418942241, + ]), + Fq::from_montgomery_limbs([ + 13953378503175087488, + 2632607770308512210, + 13562084469560012417, + 245249845748719170, + ]), + Fq::from_montgomery_limbs([ + 14192710935721498803, + 10423371171643016558, + 8787645447508907660, + 1222320713106865517, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 11672182316223918869, + 6397196540158184432, + 16362125278956639955, + 487254253940971622, + ]), + Fq::from_montgomery_limbs([ + 3466115228336022838, + 17336865038830586933, + 15011622032603429066, + 886109464755529302, + ]), + Fq::from_montgomery_limbs([ + 60790403003891626, + 11789627958407425130, + 18093678967772149866, + 163664659042316929, + ]), + Fq::from_montgomery_limbs([ + 11752605341201064356, + 17735918082592333925, + 6652470350194431394, + 889452019796415044, + ]), + Fq::from_montgomery_limbs([ + 8401712234167110287, + 10960633415813906272, + 11916450035773002049, + 1182232446618175169, + ]), + Fq::from_montgomery_limbs([ + 10396262244990196196, + 13566621656449952195, + 17637374041715454767, + 487328172506255483, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 359851191963578459, + 6093707674603330913, + 12382809233400904418, + 822869288595513424, + ]), + Fq::from_montgomery_limbs([ + 8685375674428402008, + 11116570913984986227, + 13141958117760910576, + 694631449425721940, + ]), + Fq::from_montgomery_limbs([ + 13799808203577028319, + 17015236177612766046, + 13321925256996230040, + 83728605392058044, + ]), + Fq::from_montgomery_limbs([ + 11345927491644574710, + 6729113552022061366, + 489680359452713554, + 1063665064872602168, + ]), + Fq::from_montgomery_limbs([ + 5144672341518660971, + 13584780511637830006, + 8111044646642319859, + 760808052520956883, + ]), + Fq::from_montgomery_limbs([ + 10534617268344014793, + 13365424830059569868, + 15323686518176324368, + 630253372526730391, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 5574736329985492350, + 1394240824897034276, + 12869158727379905882, + 927371660714513620, + ]), + Fq::from_montgomery_limbs([ + 6250879616233772588, + 14830533363705576088, + 11405716231454843078, + 302485753651389813, + ]), + Fq::from_montgomery_limbs([ + 9376998902591535768, + 10870546783769916945, + 8867938913668980167, + 168036903158516371, + ]), + Fq::from_montgomery_limbs([ + 17665300127173928717, + 16211022938249470990, + 17778018974492488988, + 1035038949736118270, + ]), + Fq::from_montgomery_limbs([ + 8713486127840843643, + 12284089155092108591, + 9199322335133216480, + 1254936361875119138, + ]), + Fq::from_montgomery_limbs([ + 10672903121209769745, + 1541284167923703332, + 354508315039816196, + 1077919680069474774, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 6003956627532398687, + 12900385821050494701, + 13212436788748797499, + 550552294639902063, + ]), + Fq::from_montgomery_limbs([ + 14895950277557938580, + 3197587119252958842, + 1370401976516442748, + 185312282262907769, + ]), + Fq::from_montgomery_limbs([ + 4334813612319164060, + 1249839787510419412, + 2014732433360765992, + 674486378020601344, + ]), + Fq::from_montgomery_limbs([ + 16372536311394952793, + 16876000734634230902, + 16256142784705290990, + 1216045970949193228, + ]), + Fq::from_montgomery_limbs([ + 7511261605071474477, + 12731027885113475848, + 7275278577140348070, + 1332751723743282012, + ]), + Fq::from_montgomery_limbs([ + 2087120385657061588, + 5805219940951110446, + 13072060426636966211, + 863754038349923743, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 9861938477894648572, + 1261863888379893097, + 1659273544923639757, + 1175309734597332353, + ]), + Fq::from_montgomery_limbs([ + 3160898884988868850, + 12315548764431121182, + 12829922584215852165, + 56495588159121736, + ]), + Fq::from_montgomery_limbs([ + 9126361106532779429, + 8812351712430538764, + 16651360315827640335, + 488907765340195245, + ]), + Fq::from_montgomery_limbs([ + 8831436795438293115, + 389432919099331880, + 4151373017145697434, + 20487081091778889, + ]), + Fq::from_montgomery_limbs([ + 1478664308612791336, + 8186322499300142837, + 14558475073251694928, + 808252273304974762, + ]), + Fq::from_montgomery_limbs([ + 15607838810385275909, + 12674581021244262249, + 1909980166381620782, + 345071109506949067, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 10897251009229233031, + 3820618022447517075, + 10985787470877927823, + 403556049280121762, + ]), + Fq::from_montgomery_limbs([ + 930794418602631676, + 4219345337777307051, + 12545787195024594643, + 727460251993377030, + ]), + Fq::from_montgomery_limbs([ + 1295669867887905036, + 9507152194066574702, + 7109356788802489574, + 787002368140653778, + ]), + Fq::from_montgomery_limbs([ + 3498224858763889755, + 302153864491265874, + 14518919122820805288, + 961799431413434867, + ]), + Fq::from_montgomery_limbs([ + 14579188115252453346, + 8486675243511966662, + 4198502112353568422, + 266466804927785090, + ]), + Fq::from_montgomery_limbs([ + 5714787944090956648, + 8773050216612558194, + 4209799818844007033, + 157683362695822804, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 7490636877172818331, + 18234545141478570777, + 4868926515076353497, + 1040485086378507404, + ]), + Fq::from_montgomery_limbs([ + 4007494498414670332, + 11381886286508088565, + 2983212756609056257, + 310114683693996305, + ]), + Fq::from_montgomery_limbs([ + 9176086588288648852, + 1592592270921797535, + 4569673380486221672, + 1302061240324827715, + ]), + Fq::from_montgomery_limbs([ + 16913435421079334086, + 1877470558106542334, + 3613514508584067134, + 934461884972210272, + ]), + Fq::from_montgomery_limbs([ + 5267175603942094137, + 1748374762382459641, + 4882024791077414221, + 1068225445733947215, + ]), + Fq::from_montgomery_limbs([ + 4248184777234069323, + 13346185782403877767, + 10153633758750203581, + 141684902152107360, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 14329113735110304247, + 4241308009922883952, + 9772848400881136490, + 239381311112673117, + ]), + Fq::from_montgomery_limbs([ + 1815346937549645652, + 3479767444023955389, + 4985298868790684050, + 355453443190923870, + ]), + Fq::from_montgomery_limbs([ + 5747089878066396614, + 5454329989338975845, + 12341448373351673623, + 1202238166588655979, + ]), + Fq::from_montgomery_limbs([ + 9296701061462558971, + 17770007858418801719, + 9914793610472554336, + 1281893899901916554, + ]), + Fq::from_montgomery_limbs([ + 3010329870005884069, + 2836286366415384158, + 2351971757588955099, + 425289972726450364, + ]), + Fq::from_montgomery_limbs([ + 18291414506166784212, + 810246456460775309, + 17528761664504541127, + 1189494422506112895, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 13873201020652076543, + 6243622914124108573, + 6903929397781795660, + 574766800775597314, + ]), + Fq::from_montgomery_limbs([ + 17971358622227978668, + 15854652377477090302, + 1063842904034816, + 989523394960344619, + ]), + Fq::from_montgomery_limbs([ + 8015553520299503933, + 4607530076716157995, + 7439330134573907822, + 1104246105186017619, + ]), + Fq::from_montgomery_limbs([ + 3986330100644126569, + 17707403369263436100, + 4053571974764234396, + 108842167919011278, + ]), + Fq::from_montgomery_limbs([ + 5227388868334111117, + 12812207377137498929, + 2588198532604965494, + 961490407308315800, + ]), + Fq::from_montgomery_limbs([ + 7646326553387833689, + 12724139924596788661, + 629496738895522970, + 1201441128237966538, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 14866344307104327368, + 4985794825846590702, + 853871436616991822, + 749367072047711970, + ]), + Fq::from_montgomery_limbs([ + 1876020443251361508, + 6552070073373315737, + 12995514842585856406, + 1275392944325677985, + ]), + Fq::from_montgomery_limbs([ + 7601514916050054383, + 16910631174758870764, + 7353760964415941247, + 324644049762087391, + ]), + Fq::from_montgomery_limbs([ + 16565109856331579529, + 458787328687847682, + 5878204963586402256, + 1322072415305233581, + ]), + Fq::from_montgomery_limbs([ + 12729053080732475923, + 11510453208755572522, + 3723997403677235406, + 73363110170067874, + ]), + Fq::from_montgomery_limbs([ + 18174997862860579716, + 6182018227945955817, + 2127647890385770221, + 870293941267412601, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 10698372380060816691, + 7522180405775599951, + 15832604002112875278, + 521032436098731379, + ]), + Fq::from_montgomery_limbs([ + 15319055731354684350, + 1753334646577885863, + 4505520717374373397, + 984179811150887857, + ]), + Fq::from_montgomery_limbs([ + 13141271355432538382, + 14700998572061668181, + 4549081783230234567, + 806347686644718089, + ]), + Fq::from_montgomery_limbs([ + 9975557437768999376, + 11618707034451291844, + 3181936011792873831, + 576438052445019413, + ]), + Fq::from_montgomery_limbs([ + 16609855326770322939, + 13212944030983556053, + 3039401190695389047, + 1188561968753866414, + ]), + Fq::from_montgomery_limbs([ + 10305504178314593273, + 14719639554020787850, + 2480984582534492384, + 221582009878780852, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 13200038943773919312, + 14432882432204232972, + 3023115969282520533, + 343418406639707901, + ]), + Fq::from_montgomery_limbs([ + 9327873286332474704, + 5954324830215207584, + 3873074387113200139, + 744988613833241266, + ]), + Fq::from_montgomery_limbs([ + 15847102383028666437, + 1096370811445384001, + 10166653322883901200, + 327347038183216223, + ]), + Fq::from_montgomery_limbs([ + 17600124854622807025, + 15328683957983696187, + 3518858654096416419, + 638859422450597084, + ]), + Fq::from_montgomery_limbs([ + 3012983939074171362, + 9083322861410244018, + 4322938770639600225, + 442252654129847313, + ]), + Fq::from_montgomery_limbs([ + 10656857781541021576, + 5978481768391996531, + 2250259229090183585, + 432977302373307667, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 14355870696105147319, + 8480124686198992740, + 4123496920141395243, + 506237667861983638, + ]), + Fq::from_montgomery_limbs([ + 12320253406233535520, + 8322795092624377756, + 9572334243002510406, + 1226552575804851889, + ]), + Fq::from_montgomery_limbs([ + 9845446342011599085, + 17778086686673507324, + 5271342849823127028, + 1088489886300171520, + ]), + Fq::from_montgomery_limbs([ + 10715976971447272221, + 1556354685447448032, + 16979954691422909924, + 386763037013271508, + ]), + Fq::from_montgomery_limbs([ + 6180856312104178084, + 11877570767790110506, + 11499883073784997611, + 393033674847566959, + ]), + Fq::from_montgomery_limbs([ + 7644299261552751667, + 2236838738262968574, + 8460748568952358391, + 1177808537547336633, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 9135896072628350252, + 17288794130611191656, + 16136991324140875732, + 84153041777780941, + ]), + Fq::from_montgomery_limbs([ + 3384444111049248095, + 5013442674731807719, + 8362856530990022791, + 1126331696064245534, + ]), + Fq::from_montgomery_limbs([ + 13385137591549846388, + 11889738158254938557, + 17705852903381913949, + 155996115818620695, + ]), + Fq::from_montgomery_limbs([ + 15454217037527338314, + 9036781253178038581, + 12351768307285004715, + 776821242022223621, + ]), + Fq::from_montgomery_limbs([ + 1200501875000044263, + 6384384240290446957, + 15639254494736291770, + 930709414948460626, + ]), + Fq::from_montgomery_limbs([ + 2141846397057350878, + 14687259326247822547, + 2879743331055932654, + 420053148927601148, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 18343404923952179637, + 1978770268004633152, + 18074842923392944526, + 99740808436074128, + ]), + Fq::from_montgomery_limbs([ + 16339172153591076879, + 13902224968596916829, + 10987490026958244901, + 480318192898237950, + ]), + Fq::from_montgomery_limbs([ + 16708778634825784370, + 5310850661772903365, + 16720939557594415942, + 983754580352601152, + ]), + Fq::from_montgomery_limbs([ + 8614768398997670932, + 10441907275834816828, + 11459906999048618974, + 98256766838754326, + ]), + Fq::from_montgomery_limbs([ + 5461219359492352050, + 8928173417887044164, + 5632769833875876015, + 938637862379787936, + ]), + Fq::from_montgomery_limbs([ + 14478729241761067482, + 14593688601059211201, + 14567193330233850704, + 193411838718316245, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 6244372198079752707, + 12764020255605820167, + 3597323991837773264, + 232811656021755322, + ]), + Fq::from_montgomery_limbs([ + 12794321084179091283, + 12550727012798192271, + 5852541072119985136, + 1021072807450583460, + ]), + Fq::from_montgomery_limbs([ + 5843482488715644166, + 17968652270397807267, + 10729147049305849619, + 157069170856760481, + ]), + Fq::from_montgomery_limbs([ + 16486113458959504396, + 3842616654194538021, + 16267097259825943411, + 595256064535306261, + ]), + Fq::from_montgomery_limbs([ + 18403329840356376661, + 17180721686489435607, + 16602787769632693868, + 1218551944743323947, + ]), + Fq::from_montgomery_limbs([ + 15792003884980763548, + 103687243243986150, + 1015407070790759683, + 925892726865866689, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 4737231254389322774, + 1982930339222313430, + 17171322757846703283, + 898862720123176395, + ]), + Fq::from_montgomery_limbs([ + 15341788185538116478, + 15152543049620221847, + 11673048694712682284, + 322745914045333317, + ]), + Fq::from_montgomery_limbs([ + 12638501658486051138, + 13136127249934274833, + 16835414843273620909, + 830854396919510911, + ]), + Fq::from_montgomery_limbs([ + 15895567503124768810, + 17851680667009624675, + 9790662472981446008, + 688513180346337911, + ]), + Fq::from_montgomery_limbs([ + 7539663061168884957, + 14647473521866168085, + 14254615857988792976, + 4914529917008946, + ]), + Fq::from_montgomery_limbs([ + 10355365805280135879, + 1713320802629047069, + 11781471822278287496, + 696018085837035473, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 17208622806574606453, + 2131863109694270375, + 17267390257687220562, + 717142744114900489, + ]), + Fq::from_montgomery_limbs([ + 13115781297674767878, + 11806487226059857638, + 3832559734382202821, + 1327223946228164221, + ]), + Fq::from_montgomery_limbs([ + 1519942432011064348, + 2971486323152134197, + 10412234235600737234, + 627890410365264901, + ]), + Fq::from_montgomery_limbs([ + 10935974904415640609, + 3329695497336026013, + 13276582814401540013, + 624327570851923410, + ]), + Fq::from_montgomery_limbs([ + 110740126727160908, + 1977000808556019402, + 17939216501132184661, + 456092178041276768, + ]), + Fq::from_montgomery_limbs([ + 13974795879491265452, + 16756058358467461957, + 18345173225794766341, + 1240468105851879043, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 16648425534044120166, + 17300631023568278668, + 3769987016608299300, + 701256036605548976, + ]), + Fq::from_montgomery_limbs([ + 9545137723467262343, + 5920020285572073751, + 5586902085914198509, + 1101010118319202051, + ]), + Fq::from_montgomery_limbs([ + 1804254836884575917, + 5416042091971666706, + 2881258114252429182, + 68889272174393525, + ]), + Fq::from_montgomery_limbs([ + 15468731159921956531, + 15872344848072676105, + 1678659996910931386, + 827142061320044550, + ]), + Fq::from_montgomery_limbs([ + 14524351942355153784, + 10797623040866138576, + 12874995891465211466, + 522880520258235794, + ]), + Fq::from_montgomery_limbs([ + 3987121765421903331, + 10914786903369841306, + 14357739193531493338, + 159659900263967910, + ]), + ]), + Matrix::<6, 1, 6>::new_from_known([ + Fq::from_montgomery_limbs([ + 1502512509312401925, + 17658662731474453106, + 12409373669027537750, + 369255404008259275, + ]), + Fq::from_montgomery_limbs([ + 3933340182670563102, + 17988389551284440931, + 2662254549780507248, + 455350437925171541, + ]), + Fq::from_montgomery_limbs([ + 12151336628671687181, + 16659863612142679844, + 4275242264769905759, + 226663222642898029, + ]), + Fq::from_montgomery_limbs([ + 16130436743434681682, + 11552440823414351188, + 4441812352013272663, + 1024571907948499450, + ]), + Fq::from_montgomery_limbs([ + 6575764606651544368, + 3768634045069377030, + 18077248345407646289, + 1109390810042386997, + ]), + Fq::from_montgomery_limbs([ + 14122304828382902866, + 7822601784757433157, + 15085114466160105232, + 454674386781135986, + ]), + ]), + ], + }, + optimized_arc: OptimizedArcMatrix::<39, 7, 273>::new_from_known([ + Fq::from_montgomery_limbs([ + 15142982440796561447, + 11586951767160912790, + 2554152473571518408, + 1060132733599829191, + ]), + Fq::from_montgomery_limbs([ + 5004052621280210368, + 17001459709892607063, + 7681637351760180567, + 370325849830378477, + ]), + Fq::from_montgomery_limbs([ + 12700316700887579682, + 10527071459591008162, + 4649940422809756001, + 1164398790994859766, + ]), + Fq::from_montgomery_limbs([ + 14166576988026094609, + 7313392791454005322, + 12003933110859736764, + 497349496445067730, + ]), + Fq::from_montgomery_limbs([ + 660800666505769101, + 8654643871558439567, + 14263148622483513593, + 820049075817239934, + ]), + Fq::from_montgomery_limbs([ + 3633256971691786185, + 10090676851691033833, + 14588357423182388197, + 831634409758195705, + ]), + Fq::from_montgomery_limbs([ + 6492287632409988134, + 12046607076154115291, + 17147959445519551317, + 461021671425820687, + ]), + Fq::from_montgomery_limbs([ + 14444046072241906262, + 11260694318344083229, + 15743364178797140854, + 866446994798567454, + ]), + Fq::from_montgomery_limbs([ + 3641312158605685211, + 14157364044999263645, + 16784472236570305027, + 425843099497195003, + ]), + Fq::from_montgomery_limbs([ + 17723864121788076174, + 13911937024562874191, + 12749454259525933628, + 451378649043069085, + ]), + Fq::from_montgomery_limbs([ + 12784133990119646353, + 17654455838119254543, + 14047536069777387226, + 645204516252515303, + ]), + Fq::from_montgomery_limbs([ + 1959581704190940037, + 13929985394687694163, + 11022302142929130035, + 283707020686355664, + ]), + Fq::from_montgomery_limbs([ + 8629032034013359758, + 8320916390268264398, + 11188435069201519314, + 1277918481865788038, + ]), + Fq::from_montgomery_limbs([ + 1783621120979741815, + 10125702604889014266, + 7859706914940359291, + 1258189548796714111, + ]), + Fq::from_montgomery_limbs([ + 4197085784563434882, + 243889206587889894, + 328885806087941395, + 929695947751686179, + ]), + Fq::from_montgomery_limbs([ + 6420634290533400711, + 3371757063543007366, + 8900632765923820105, + 371199850895065588, + ]), + Fq::from_montgomery_limbs([ + 9679924820095672851, + 5191301328839079795, + 1468702730043861612, + 1130258788388916276, + ]), + Fq::from_montgomery_limbs([ + 14270884667693338729, + 18421783881067727877, + 702505960635108322, + 876601962183112334, + ]), + Fq::from_montgomery_limbs([ + 12801928710162774032, + 15709283060501093378, + 2508615709628312314, + 924328772397935430, + ]), + Fq::from_montgomery_limbs([ + 9019134492733417932, + 4614098400696239641, + 291908476903718505, + 879711180612784839, + ]), + Fq::from_montgomery_limbs([ + 12296479578360854848, + 3423354675244851904, + 17098596077633953792, + 378482623029323224, + ]), + Fq::from_montgomery_limbs([ + 13200816203042245771, + 15381254577926224952, + 14688424257545082743, + 884773501591309967, + ]), + Fq::from_montgomery_limbs([ + 16263843110415550162, + 14001011937262187824, + 2325893788175944450, + 427344840846697831, + ]), + Fq::from_montgomery_limbs([ + 10712788406702291397, + 14628016237392831746, + 12076323935029775432, + 746032296870665924, + ]), + Fq::from_montgomery_limbs([ + 7577844083779539683, + 8593563853045273470, + 6762705862919489296, + 1011466592883577533, + ]), + Fq::from_montgomery_limbs([ + 10970204418416076913, + 4397529361571105931, + 15590416832284287611, + 432035610777585218, + ]), + Fq::from_montgomery_limbs([ + 13604542201065871088, + 8000646895858538916, + 7463535664974476191, + 112496092381655883, + ]), + Fq::from_montgomery_limbs([ + 5448941064349247150, + 18035446383961421934, + 9688851655819494355, + 314108334517577725, + ]), + Fq::from_montgomery_limbs([ + 13216339084640418338, + 18208749029142079159, + 2801888902925820506, + 1144112407212441278, + ]), + Fq::from_montgomery_limbs([ + 7414209360993783553, + 9029452093631467477, + 10351555314693636524, + 588771856204784285, + ]), + Fq::from_montgomery_limbs([ + 3108201764764012849, + 9316564318794683488, + 2890833741230407843, + 2976751152949582, + ]), + Fq::from_montgomery_limbs([ + 5531824355021026381, + 12498142272625928587, + 3715194578260983474, + 1067798051179441316, + ]), + Fq::from_montgomery_limbs([ + 5339344176782059900, + 10307852721097022359, + 14767036192885737246, + 130540287097272817, + ]), + Fq::from_montgomery_limbs([ + 7180958399368342439, + 128655658219475950, + 15207307979599970655, + 1124647386318203846, + ]), + Fq::from_montgomery_limbs([ + 10677712105355735228, + 303877370541742151, + 11456613512094797466, + 1197130552973396923, + ]), + Fq::from_montgomery_limbs([ + 1852186172212255919, + 7732103194240143876, + 3191072801518998585, + 684231033415976440, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12344835392323260771, + 2083746688625641780, + 9843550839040352981, + 651659425757649777, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 1110121811836510524, + 11074047049180975687, + 15444325776340307889, + 1176464439067465611, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 15910765157617366987, + 3536546922624744505, + 13839442880050335167, + 1052063195754658296, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 15883615976440084496, + 10513678964631690585, + 17274484441634888004, + 104967936091342947, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6481049124859745810, + 12420828791682339353, + 3515061109189248511, + 2970636150410785, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9330561373397764193, + 15220428410405742122, + 3596976591192400082, + 1172536306991915045, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11645314245053381169, + 12447229279329596583, + 2611021837182599503, + 1121293333579047218, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5520645742684358372, + 4184771738280864541, + 4013355666407389724, + 651341887764501817, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3861533222480473435, + 8229127100534402633, + 961020646123781410, + 1093771644395281795, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7693571830729430183, + 14740278293355277643, + 7478396620768437721, + 1020903160466582154, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 13974629067477558431, + 5721400371209900889, + 788632258150877276, + 1052522919478138392, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4992769493438078027, + 6924382181722868018, + 8263199750104564483, + 169174671387869155, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11416436440841880348, + 7910510255652583772, + 2772926057469350664, + 240489949253278513, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 8550478801539329000, + 17416455311840648130, + 7713828782443004553, + 1257322107749939919, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10946761173248535048, + 6300893940302812177, + 14214574452301493380, + 1064839331942993571, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12881919676216378529, + 6525643603496459068, + 7739411544375049269, + 121520118034913063, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 14171005468190725795, + 807987272814416859, + 16062924926726151568, + 258817012972523442, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5031548057386859908, + 16708231376954786943, + 3901002117807196384, + 15277199136600693, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3470573257247529570, + 3778398720483160839, + 4271650771133121672, + 366341134231605540, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17671590415686923470, + 14797555043330379484, + 2826722725742773774, + 673498791246184156, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4599390077836288923, + 15103704149833090169, + 13723271685426770651, + 1238708412855247473, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12304403800545959570, + 12269595607865918824, + 4224309437769311654, + 1102826182464027344, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7422908892054624300, + 6613469136954082264, + 2435694939055735193, + 465151622319296864, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9966121319294113392, + 1036787719885473593, + 16922917099071401564, + 957685172296873589, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9346051242088429570, + 5881327167233602278, + 18366005774591742073, + 1234098542793269307, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6556095991079572091, + 15800350435028538953, + 17490188894945751356, + 318651152411458756, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9604843137147166704, + 10750667974649036098, + 15855520508812075513, + 289244356768878157, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9330357980066794783, + 17865465819235974796, + 9112978452518873031, + 700544745156046737, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6722735210481586279, + 9213635375899356767, + 3419293198746470858, + 397188667470959331, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5033510300536938046, + 14319156262351107248, + 14453339555250931608, + 1300088399042594667, + ]), + Fq::from_montgomery_limbs([ + 586365878943401533, + 10219333061949038245, + 7972787616665459187, + 1180682599170166362, + ]), + Fq::from_montgomery_limbs([ + 8677310049713074877, + 6209659062870853276, + 6361763165884296788, + 1086786531947345096, + ]), + Fq::from_montgomery_limbs([ + 4779669491370037827, + 13794675476884129106, + 2856260482144566523, + 815058410432730978, + ]), + Fq::from_montgomery_limbs([ + 8349785262387520653, + 14703604045323517453, + 10665488643511503896, + 1190736588532344714, + ]), + Fq::from_montgomery_limbs([ + 9753136258891648437, + 7592309943578822500, + 18234430885873993524, + 946608033429176051, + ]), + Fq::from_montgomery_limbs([ + 8862120093151408513, + 9919781382246740055, + 1639967479777957120, + 548895009658598348, + ]), + Fq::from_montgomery_limbs([ + 13150047014556861649, + 9895352886349978940, + 607603433543469096, + 825078058460205935, + ]), + Fq::from_montgomery_limbs([ + 10677514517763000310, + 1869057220976501750, + 7668490026500068131, + 645375934459787109, + ]), + Fq::from_montgomery_limbs([ + 8393901821323241932, + 7155803376644055598, + 5465256629438666110, + 467809976924970962, + ]), + Fq::from_montgomery_limbs([ + 8008789779293081850, + 17333068400582244417, + 864473515802821379, + 712131972755422562, + ]), + Fq::from_montgomery_limbs([ + 5260641048740129119, + 11495506189219575805, + 1976170684554961654, + 583558279245420304, + ]), + Fq::from_montgomery_limbs([ + 10607922137491563126, + 16997507064637422660, + 16243052688991164520, + 620318480202596319, + ]), + Fq::from_montgomery_limbs([ + 8682850641454705537, + 4234371891064954414, + 11030571520428482979, + 775687601614273649, + ]), + Fq::from_montgomery_limbs([ + 12248979915462901096, + 1794636648127247975, + 16388845185353268388, + 1257257804440120883, + ]), + Fq::from_montgomery_limbs([ + 17181365213230240819, + 3933917789297525218, + 774796165591114183, + 628159510187755171, + ]), + Fq::from_montgomery_limbs([ + 9201407700189177387, + 14700424513123193347, + 18288661468232834482, + 407382537568434540, + ]), + Fq::from_montgomery_limbs([ + 11966891449526246216, + 6846368159746727324, + 5421814018651935761, + 1007837491484494646, + ]), + Fq::from_montgomery_limbs([ + 3054672449338249840, + 772010416012553897, + 804919836093674272, + 60934971449786311, + ]), + Fq::from_montgomery_limbs([ + 3349955854192164124, + 12023516821995660430, + 14073054570207692346, + 391152224081538807, + ]), + Fq::from_montgomery_limbs([ + 4393818606630194054, + 11894249453630174803, + 11407464681452601419, + 527342257675756743, + ]), + Fq::from_montgomery_limbs([ + 593191207061949875, + 394301333075100218, + 15992303837511873397, + 1258463696198082538, + ]), + Fq::from_montgomery_limbs([ + 7392815618978882544, + 8600193649781721343, + 10001082189003162790, + 160465744058402439, + ]), + Fq::from_montgomery_limbs([ + 5982722207731997556, + 9327097271719907983, + 16837081471143367937, + 1323283752393867441, + ]), + Fq::from_montgomery_limbs([ + 15234580594321690160, + 14480758270368693259, + 7897576353120019799, + 1211836381357568240, + ]), + Fq::from_montgomery_limbs([ + 17534396175019205578, + 3323788238042131357, + 16622036826489890791, + 893487708746761741, + ]), + Fq::from_montgomery_limbs([ + 3851834168141787069, + 11582510337408899680, + 15343784808633432566, + 461896544402216282, + ]), + Fq::from_montgomery_limbs([ + 1182215324455482337, + 1943242735522063011, + 4144863718139895080, + 243576649285589719, + ]), + ]), } } diff --git a/poseidon377/src/params/rate_7.rs b/poseidon377/src/params/rate_7.rs index e673724..131ec33 100644 --- a/poseidon377/src/params/rate_7.rs +++ b/poseidon377/src/params/rate_7.rs @@ -4,28 +4,7604 @@ use poseidon_parameters::v1::{ PoseidonParameters, RoundNumbers, SquareMatrix, }; - /// Parameters for the rate-7 instance of Poseidon. -pub const fn rate_7() -> PoseidonParameters<8, 7, 64, 49, 39, 8, 312, 31> { +pub const fn rate_7() -> PoseidonParameters<8, 7, 64, 49, 39, 8, 312, 31> { PoseidonParameters { M: 128, - arc: ArcMatrix::<39, 8, 312>::new_from_known([Fq::from_montgomery_limbs([17670646277747935280, 16706444459999957760, 7654997937391160943, 659194013361630234]), Fq::from_montgomery_limbs([9306410324956668761, 11918867663968452855, 16159669320449336406, 1027263653273380654]), Fq::from_montgomery_limbs([10424544810878645940, 11533042162917906716, 11405431418950019185, 1181592306684207657]), Fq::from_montgomery_limbs([15511314950168773025, 2706584092620486610, 12589344906057924987, 198949415522711747]), Fq::from_montgomery_limbs([6463242934034011456, 4480775049700236083, 1147244402884869561, 251099301522684222]), Fq::from_montgomery_limbs([6076653156556680739, 6058362204127962922, 2609006430585927072, 1274277644859784421]), Fq::from_montgomery_limbs([4034147285618545471, 16309046946281719379, 11732506942908882170, 1141734761043516350]), Fq::from_montgomery_limbs([15181402120606708665, 769117698742393942, 8000709366545785093, 128042919054960870]), Fq::from_montgomery_limbs([1723632755773767909, 7425611528820224114, 3846361608213771012, 1317157014229771878]), Fq::from_montgomery_limbs([1180004570926588292, 9835115993104089813, 255514544102365106, 370024046994873563]), Fq::from_montgomery_limbs([16507101987459533719, 15603514395660572922, 14849362947260167652, 1094669615299361663]), Fq::from_montgomery_limbs([1641419564627940104, 1734977130266781622, 2359844858057393580, 88569664018692634]), Fq::from_montgomery_limbs([16267328831985402574, 4504129177123355587, 2430336937000039615, 182724946762968945]), Fq::from_montgomery_limbs([17793535158928999608, 5634031392654154747, 10364337635238532583, 1179994829791766723]), Fq::from_montgomery_limbs([145700301814233551, 7743364595931833861, 13600389751414362190, 60896176710147956]), Fq::from_montgomery_limbs([17934232373820563709, 6533845630243602776, 15324676632824344806, 193078344538210235]), Fq::from_montgomery_limbs([3358859423299088468, 11840854300859333122, 8971776175135254558, 1017237487419914281]), Fq::from_montgomery_limbs([16328481477177681368, 1582997519876787207, 5731557971602616313, 498420306800783215]), Fq::from_montgomery_limbs([12526989383108933614, 11731194362815364383, 12171285115754354694, 1149426086446852474]), Fq::from_montgomery_limbs([809732533742229508, 9195963923014534752, 11886583635578374853, 1292532069463172705]), Fq::from_montgomery_limbs([15459398930996981001, 17972537529111616674, 6256384561719931081, 1099908904421687269]), Fq::from_montgomery_limbs([6194631511262826563, 5980361634035332899, 6132585703186883039, 1343152289862207638]), Fq::from_montgomery_limbs([13704532277655419198, 9493963458736770267, 12653804519172949169, 218428805830292650]), Fq::from_montgomery_limbs([8013496787819495990, 18081394694809078101, 14689354188530395484, 215594972753885108]), Fq::from_montgomery_limbs([1765918642197202432, 14609627278749496598, 17838479232731490790, 483435431183692300]), Fq::from_montgomery_limbs([16887594024800193480, 1328476430727273505, 17409984215868190656, 1068059229250495642]), Fq::from_montgomery_limbs([15487315671093445122, 4028755842123792652, 14118515559434131307, 600004660835889583]), Fq::from_montgomery_limbs([13620558349664282044, 9072735252525972202, 312787852320488038, 47231029883010665]), Fq::from_montgomery_limbs([9895950479699930991, 1320083262020086701, 9381389112858508819, 928504768072893822]), Fq::from_montgomery_limbs([10747871248019763953, 4479404654791651748, 11550770912037988700, 438216942461032792]), Fq::from_montgomery_limbs([18385142532667962947, 12272398000439779637, 7461987138462771945, 558726769125714997]), Fq::from_montgomery_limbs([14139485618053732983, 8348792317702713313, 367233286875102863, 186067690854023043]), Fq::from_montgomery_limbs([9041249832633195933, 456527929350696070, 3136123267563166118, 862425036609816636]), Fq::from_montgomery_limbs([9876321727332632023, 772451632218152169, 2580763841740601079, 1142028710995573927]), Fq::from_montgomery_limbs([10533796008132988682, 170935373731786369, 14423133339980810247, 95055508444762275]), Fq::from_montgomery_limbs([4649364153559136229, 7934671244579715116, 1725602943667409585, 43552745816587563]), Fq::from_montgomery_limbs([8961999013353095080, 2142418418315880644, 4123910506434734507, 397827113331247074]), Fq::from_montgomery_limbs([2830645454593024582, 16129482998540180384, 14637878185709838570, 838139034347032562]), Fq::from_montgomery_limbs([12946263415316598300, 14878150584739579253, 16849157713730765625, 1119287030817500036]), Fq::from_montgomery_limbs([15997726492611173881, 1184045769764515709, 17570821640390521168, 1030525166811213785]), Fq::from_montgomery_limbs([4265559081433102256, 11769099699992876903, 10631998596214553362, 629920260964559213]), Fq::from_montgomery_limbs([5157337023141684195, 9558723136849813533, 17067637485396248185, 1292601583198374157]), Fq::from_montgomery_limbs([11353399385134117629, 2171806967430036166, 13097746482717663094, 586742781877852644]), Fq::from_montgomery_limbs([1069667428899547423, 10788650400324959681, 5252327185070245031, 819088289991387988]), Fq::from_montgomery_limbs([4718192935689796196, 936436242961860243, 3017815728777383941, 780298204568547665]), Fq::from_montgomery_limbs([4440526970403334531, 4424298208172375576, 10234579833526167822, 505023592953711511]), Fq::from_montgomery_limbs([4918322558939638760, 9690520639912900881, 5542814067313497246, 380973540266134644]), Fq::from_montgomery_limbs([9286878702031291355, 4012311069843170007, 618344267270697646, 472052248696324346]), Fq::from_montgomery_limbs([5515965792241216655, 12550695208348294011, 659754676577929048, 656440060717186789]), Fq::from_montgomery_limbs([8831501139794786744, 7594112778983174926, 8104526671183916999, 495730236370502114]), Fq::from_montgomery_limbs([17540013351656383980, 526615498448493498, 1434949581303472569, 432295170184586654]), Fq::from_montgomery_limbs([16852826829533863229, 16646101864172251902, 17632936959873614814, 109658534507710529]), Fq::from_montgomery_limbs([10636456498263271254, 15109124910717906315, 11668474560270048234, 1296049032043861262]), Fq::from_montgomery_limbs([12825075668663632434, 5819798153387583193, 4880455503263027836, 801173774991292287]), Fq::from_montgomery_limbs([14486651003108579603, 2482031833299980317, 11187840813488772056, 509321777815437929]), Fq::from_montgomery_limbs([8118974380261220505, 16461246043293688641, 13082662763745388975, 1038588716762883494]), Fq::from_montgomery_limbs([5731200332460900228, 8786620433378472829, 13932094144651464518, 488785602167183804]), Fq::from_montgomery_limbs([10524031539917302527, 10788579146719387781, 2127880595616407095, 1059950077979303833]), Fq::from_montgomery_limbs([5949937211870070822, 4596156438811326001, 16863220530278231284, 1206526762260473240]), Fq::from_montgomery_limbs([8254843496528701475, 16430360916832531565, 7205448801338782124, 446338536784822815]), Fq::from_montgomery_limbs([289840651692288450, 17201836854477413895, 13970461968236180401, 1087853954070862964]), Fq::from_montgomery_limbs([580513008010762079, 829478851231913782, 10526131895320013439, 288889415938637383]), Fq::from_montgomery_limbs([9443502181797148323, 7700433399763019139, 6523170715391691579, 690320529397890241]), Fq::from_montgomery_limbs([17385565262285073596, 5652729129833809825, 5754846028854174174, 644301327458204078]), Fq::from_montgomery_limbs([10591125214113881524, 9225725266018596826, 9355747915664481308, 776410040105357079]), Fq::from_montgomery_limbs([9691894789652129853, 14667119801492707274, 4616580392236285481, 911862737929211265]), Fq::from_montgomery_limbs([5328612994946451300, 11901467171940119902, 12066779857870668281, 563430691473174027]), Fq::from_montgomery_limbs([5440290565189005724, 907133565222704805, 17434239031512456810, 1307317854813232623]), Fq::from_montgomery_limbs([1968218328054856894, 2870644718005301826, 11704111566790320318, 859557807871195562]), Fq::from_montgomery_limbs([9665243622030788996, 3894043111862548693, 8651495608452602974, 196890012228714384]), Fq::from_montgomery_limbs([1811318098116764117, 13655150694370398684, 6815946900059011917, 290581066009768770]), Fq::from_montgomery_limbs([5291662797603414486, 9976505778352937130, 18094101094996988099, 1244544548315716916]), Fq::from_montgomery_limbs([9550922411414470754, 2559237915370255061, 4289970449795683516, 700825515431345401]), Fq::from_montgomery_limbs([2966982422777393142, 3218865522692669697, 18384778728203892883, 1101167759984396250]), Fq::from_montgomery_limbs([2248950665261207727, 17785118295943931326, 17515375671127827105, 271356461720641826]), Fq::from_montgomery_limbs([2914870987885463507, 10687584786677185088, 9928447420467895555, 897829002169041990]), Fq::from_montgomery_limbs([9461028554882623448, 3241431013683194658, 4200859715375860214, 247909540912074667]), Fq::from_montgomery_limbs([9484762440333250094, 9154823463484785662, 5077140138132238606, 1217948890232839466]), Fq::from_montgomery_limbs([1721708237225335663, 6589142598549247219, 16963982649759394752, 1325370920515859453]), Fq::from_montgomery_limbs([1581154353773201694, 8859491775898173368, 3478556371389172479, 761951195116054505]), Fq::from_montgomery_limbs([5414431534772354985, 5784939336020461618, 8193906688438115902, 619056837793590578]), Fq::from_montgomery_limbs([5158566907177787182, 510437656260968539, 18375886464296814687, 496771913288779260]), Fq::from_montgomery_limbs([646494282535877757, 12737151480704198413, 5471421123526354063, 634833038935883700]), Fq::from_montgomery_limbs([16181443408673327918, 1926257882480036072, 190463000805340911, 725721205978748339]), Fq::from_montgomery_limbs([7167760716023892074, 5428322849307462840, 14114178188915343377, 442277493806724508]), Fq::from_montgomery_limbs([9842757490151171477, 12090204626601182995, 4235533359914016519, 235018089373226021]), Fq::from_montgomery_limbs([689571657822682190, 10120322490102263749, 15349544629296264734, 879110129942909963]), Fq::from_montgomery_limbs([10848673159730542826, 4254896082380917657, 7095278498028251644, 1283578418017245899]), Fq::from_montgomery_limbs([11397620827145756612, 12197349421718102268, 667097273385403287, 776832025612247811]), Fq::from_montgomery_limbs([9536830619644896323, 4636833749605880653, 12285714887794138165, 1202400709127503383]), Fq::from_montgomery_limbs([12430146514789240945, 4526156431412134307, 513622053209881149, 214778917602192418]), Fq::from_montgomery_limbs([6167098201419516498, 3154640343084703344, 14434779005902723423, 733632272342828673]), Fq::from_montgomery_limbs([18346541912745902187, 17556217100268103816, 14141252440750669936, 569875244889036285]), Fq::from_montgomery_limbs([15618469611711155008, 8545147381062171474, 13019086273197685281, 567609712932306745]), Fq::from_montgomery_limbs([10102215164832802529, 12690048864743685174, 5165853392556586922, 270489738300122432]), Fq::from_montgomery_limbs([11927164480530891201, 14108489374813791633, 13017388607106060581, 850938729783185225]), Fq::from_montgomery_limbs([17624557745440616873, 2058796150101806399, 3985511902134676603, 388277619947822053]), Fq::from_montgomery_limbs([2514382380191783963, 14675210002114941075, 17998140577033030519, 386023351355332372]), Fq::from_montgomery_limbs([10528288814462561256, 8933204649364546390, 14874592129223984742, 399487853473549061]), Fq::from_montgomery_limbs([5664751596212948671, 6514969831451331945, 12061422083014489160, 933043664098111606]), Fq::from_montgomery_limbs([12225851766128513711, 17952953998987374262, 13430826736801915124, 1339971583679078644]), Fq::from_montgomery_limbs([1845651887319106020, 6930431492749731513, 10484176960040080733, 1170790578042537798]), Fq::from_montgomery_limbs([6348862923042548556, 1486875087558341712, 4194544242438091841, 78164005256144789]), Fq::from_montgomery_limbs([14692463016290478473, 9329360702930196569, 1183214256895952754, 471672221434976115]), Fq::from_montgomery_limbs([12425146353419210200, 11291312622557382836, 17924529967710695385, 316781213195510748]), Fq::from_montgomery_limbs([18081335327542674793, 17730828508504228247, 15095343772187852738, 496240897850542584]), Fq::from_montgomery_limbs([6906018396868182531, 7580743900120262926, 1967444667836204859, 273417108766582414]), Fq::from_montgomery_limbs([16469004144906175061, 6719414013547880652, 7667039018964612703, 450462562192687741]), Fq::from_montgomery_limbs([3699459642673757801, 8364096682669340023, 10547343127916338322, 1039413061935527341]), Fq::from_montgomery_limbs([2771106982987870684, 8573563587841378420, 1206719325810700776, 143426260059118164]), Fq::from_montgomery_limbs([4238031571774841747, 10683460310325108305, 10841990503446643706, 1301654934696530594]), Fq::from_montgomery_limbs([5203929344429628388, 16885411007452841607, 17902872474369879449, 255936061345264752]), Fq::from_montgomery_limbs([16419947603551223738, 15661157019396954707, 3821221238374718246, 416126177086460787]), Fq::from_montgomery_limbs([16922553208005265111, 16360160113507055509, 536165461233550481, 608549986932555649]), Fq::from_montgomery_limbs([3592206260685120065, 1954831133507660101, 5600597071609130865, 213648140091026624]), Fq::from_montgomery_limbs([6516082392033585373, 13946838009919256327, 6452501836291584617, 506431739097044218]), Fq::from_montgomery_limbs([5518181572807062513, 292110089321494827, 8886174429861609032, 814625545290394060]), Fq::from_montgomery_limbs([12610347423199665749, 17943367344775386000, 17093121972053566454, 556259058966026962]), Fq::from_montgomery_limbs([5583294814190562448, 18088402493981602497, 15928392856949829098, 901622636021551608]), Fq::from_montgomery_limbs([16249951298748852814, 6111361788233877783, 12919350091432296884, 721226010556420107]), Fq::from_montgomery_limbs([2218172102857239703, 2329323851667514953, 6784983166719863241, 993993486987443276]), Fq::from_montgomery_limbs([14394544906593037198, 15461851001194987466, 12193473059473668298, 358314776306336360]), Fq::from_montgomery_limbs([2603326905829233946, 16916036572436423298, 5790056800663566282, 1283614572025968285]), Fq::from_montgomery_limbs([5913046777942823275, 8211910935104269782, 17190335617208567380, 38682663530408751]), Fq::from_montgomery_limbs([6279799617741999852, 2368459429864835947, 13817854282822876412, 857599403523844060]), Fq::from_montgomery_limbs([13513221728804468015, 11648472211124988287, 16337147311151149281, 1213356362315889859]), Fq::from_montgomery_limbs([6735193215800666100, 13415126246050738636, 6546772491702052570, 864959054725113379]), Fq::from_montgomery_limbs([13946560916675101048, 1305536234013471373, 1996487601117501987, 6637280482434640]), Fq::from_montgomery_limbs([17986217868852303932, 266126649469053928, 4699823734038470617, 1235954369265597233]), Fq::from_montgomery_limbs([9706578390759094801, 4557052655228011544, 6501501161504104166, 300118669717388750]), Fq::from_montgomery_limbs([17271021878237926614, 16508898608489641541, 2510098231880106517, 1253549827753884905]), Fq::from_montgomery_limbs([16081696380667951121, 12546061674505954303, 3027939816911481659, 1326122367352440135]), Fq::from_montgomery_limbs([8750820783999769857, 14131264523532409831, 11860451755197446498, 745462829225755593]), Fq::from_montgomery_limbs([7819519394598054633, 7533208822188068621, 3889432398222336031, 176964346604581200]), Fq::from_montgomery_limbs([13626588278396502750, 15706390030365469804, 12311149232441048374, 610208895283453621]), Fq::from_montgomery_limbs([11094868539621714049, 1330865564750703444, 8208579708506329523, 1146297945936422016]), Fq::from_montgomery_limbs([7814348133249287361, 6078857359953567878, 15411726589694581351, 1299224180894534955]), Fq::from_montgomery_limbs([8835381130778819320, 134779635200388096, 15334224426829348450, 785788572858947262]), Fq::from_montgomery_limbs([16203055023538295629, 13066812413033753111, 13966479479457537321, 675899367132765792]), Fq::from_montgomery_limbs([8545027219899966991, 6186973227993574577, 3038538378161392821, 535103590192673792]), Fq::from_montgomery_limbs([3360320054957481727, 34336684756912399, 3413779266271394009, 764051173981439036]), Fq::from_montgomery_limbs([293023250682873552, 7322391841105288851, 198244575944514326, 656738111777844461]), Fq::from_montgomery_limbs([18423107368729444354, 5597408372052789576, 7207721424788749840, 943687777186537434]), Fq::from_montgomery_limbs([13170086198505174331, 15859783812716989104, 5301807370963313339, 799729083241888205]), Fq::from_montgomery_limbs([17279707292509004232, 10595487011792355137, 12602364184919926920, 311754230366163159]), Fq::from_montgomery_limbs([8130970296785420178, 2169620052609587269, 1837093242073059498, 276242467334991300]), Fq::from_montgomery_limbs([15139243365203952649, 4858541150918282204, 1228673366499097007, 1293322423335373790]), Fq::from_montgomery_limbs([15413937563393284083, 365038001085082591, 11386425434875288889, 291771874675930828]), Fq::from_montgomery_limbs([3865668766578896210, 14190581838784817460, 2274316418059288551, 870991438678094683]), Fq::from_montgomery_limbs([9571157470530489958, 4980823355121973943, 5333320516499456270, 770038796278147152]), Fq::from_montgomery_limbs([16981726629451591296, 5326474426552210602, 1524717641929835760, 219842939123356623]), Fq::from_montgomery_limbs([16039208901368659229, 5184640515669419530, 3080932410472693273, 510043620105971072]), Fq::from_montgomery_limbs([10111763974722315511, 8329709076294929314, 16998679271562967459, 574065224827752177]), Fq::from_montgomery_limbs([8462560254681779659, 10954941970268851750, 14488455499782134046, 963141804021766550]), Fq::from_montgomery_limbs([8265856446621399759, 16247707484341474163, 12400770599134010433, 771647552338284605]), Fq::from_montgomery_limbs([5671942973524499, 18330128788177211715, 4789615159654137053, 622759709526318785]), Fq::from_montgomery_limbs([17479950722059179918, 7049818057003906554, 10084589816123170899, 1193808990238611595]), Fq::from_montgomery_limbs([896116343457540936, 2638281787069340966, 3380620512921535857, 36644632120836151]), Fq::from_montgomery_limbs([2322146546165600970, 271027138366968218, 7162645116150464142, 441026262100973114]), Fq::from_montgomery_limbs([11627404673587174924, 1016523621299971825, 8777376750651265173, 904797647346869914]), Fq::from_montgomery_limbs([2336599983193427372, 18294536733010623722, 1910254562936909612, 288459876244919538]), Fq::from_montgomery_limbs([10866222389981094234, 12754738301243938778, 2023962300189713384, 841827876240589471]), Fq::from_montgomery_limbs([12337869057490259818, 9301235609521246009, 16444168617638171143, 1108049112276481315]), Fq::from_montgomery_limbs([18388904709130326983, 14432270782760350172, 5671872767281599553, 996264049295637410]), Fq::from_montgomery_limbs([2918495984421967960, 15152292474410287951, 16695048790099726675, 206789987868447903]), Fq::from_montgomery_limbs([6798036226759712530, 2524547494567206246, 343094056066178021, 1079202981664139204]), Fq::from_montgomery_limbs([283923512386736187, 6373209277312452652, 11471152742161283191, 352597911054493754]), Fq::from_montgomery_limbs([18344480346791250887, 6055456955702765744, 13357935878541036141, 1170362631105533341]), Fq::from_montgomery_limbs([17978397370482672109, 5066451535613649009, 14053101851847429570, 384003300586620459]), Fq::from_montgomery_limbs([6537240767762022960, 15287887514003130639, 13714824082467376651, 325998042020099848]), Fq::from_montgomery_limbs([4220213521712332659, 17903257264224768614, 14353077305493411978, 1217616808421443849]), Fq::from_montgomery_limbs([6303107750424964008, 10553099269256611636, 5652309430855981542, 809187312341384962]), Fq::from_montgomery_limbs([1467640326258074734, 9958994673877282208, 948807165231437865, 847979042319462524]), Fq::from_montgomery_limbs([14465965197425638820, 1065990778266164589, 2272519010377842609, 171604326652711548]), Fq::from_montgomery_limbs([16535399098764373288, 6722849851726415551, 12327525818310696665, 617153762162922214]), Fq::from_montgomery_limbs([16271640629055517264, 6432350282845335097, 8618264300933865260, 264879473167088472]), Fq::from_montgomery_limbs([9343764438142603568, 4076892716460943411, 4516415268764304436, 15742193002987304]), Fq::from_montgomery_limbs([11522515971258098144, 3066993658503053898, 17512877804099724909, 611356418591586870]), Fq::from_montgomery_limbs([4963578364552643616, 6202702392079615379, 7168882355307838637, 299344600077925413]), Fq::from_montgomery_limbs([14129405866465653759, 354882826696964962, 9660427351909071801, 291149128932052640]), Fq::from_montgomery_limbs([6569686896435195187, 1896994952028172314, 2117936942259387423, 1226223740596210813]), Fq::from_montgomery_limbs([8136826296150976656, 5114560834461259857, 12698438831882127582, 1064812274674793315]), Fq::from_montgomery_limbs([5204762908686848050, 18170247715344035008, 10079839806977450219, 1015117163163578828]), Fq::from_montgomery_limbs([1971186989634095352, 5677558375626169162, 3790083583317699341, 158130166070339790]), Fq::from_montgomery_limbs([9180297996268451616, 10521870846784715198, 11257197750166742798, 1008680790543022462]), Fq::from_montgomery_limbs([15102432377621017232, 824737829862625480, 15733286904587679385, 359217550415334382]), Fq::from_montgomery_limbs([4981259850785194804, 15036275071388584091, 17758791361697138722, 236481669158055589]), Fq::from_montgomery_limbs([3901233362525026592, 12813965168957277386, 5314390603519503713, 998031094116574634]), Fq::from_montgomery_limbs([4078498358432220507, 12075726151602811779, 5342542781210762674, 21775695708843112]), Fq::from_montgomery_limbs([13735056988005095110, 9135371967743228564, 6185376342737833602, 666002395605514749]), Fq::from_montgomery_limbs([18046228494581227779, 8202114407403963695, 4947702695068466084, 788320793950394154]), Fq::from_montgomery_limbs([7218302974216051660, 3228464294576983613, 6671727537595126477, 173754647728010839]), Fq::from_montgomery_limbs([7621257321835633802, 8049874917307223403, 9478314901912088133, 870251875807451739]), Fq::from_montgomery_limbs([5044996355847148919, 273615366352511195, 4942152417670343549, 199398188932346157]), Fq::from_montgomery_limbs([2595093843514271275, 1154391123098543540, 4985894556505531500, 854386142979270925]), Fq::from_montgomery_limbs([12759949881257920813, 1010457605698465717, 5217636609151955807, 817084911938507107]), Fq::from_montgomery_limbs([5979737281050353100, 3539786440569025402, 14471457140846241143, 907982120351578122]), Fq::from_montgomery_limbs([16416626656337038566, 752298127295719085, 866476478245896231, 830777061413161901]), Fq::from_montgomery_limbs([17284526810241082338, 13213233959887135278, 2713075662623866960, 1171532591409183723]), Fq::from_montgomery_limbs([8064354122312926171, 4789249084747322790, 9919523931750221465, 419197152698850604]), Fq::from_montgomery_limbs([16629353489243762868, 11598883503129680580, 278636461422073174, 1203042448092989642]), Fq::from_montgomery_limbs([16545356932968522584, 10146757853340947518, 2437689509695855762, 464048598784979390]), Fq::from_montgomery_limbs([5331959515776232924, 3487514764868921659, 5860818581382620461, 167831223077979532]), Fq::from_montgomery_limbs([2682933818861368295, 7444683236761914337, 2283469126638096803, 272174229926312669]), Fq::from_montgomery_limbs([5483054922977937779, 318986619952765070, 4791617305206485237, 1275035358174361434]), Fq::from_montgomery_limbs([4586602402683656583, 11875566498302421311, 560651239278356123, 130789238180500900]), Fq::from_montgomery_limbs([13475546304629005641, 1809680849885580336, 6148758205685753344, 1015272727127650918]), Fq::from_montgomery_limbs([18199016777093209980, 5614538780880978862, 14532750892253808663, 1120673202287670548]), Fq::from_montgomery_limbs([7979559541587633926, 1549411440381912045, 13170209322716529702, 561270408065407020]), Fq::from_montgomery_limbs([15279595015844449808, 17853680372412830934, 12690878740975697658, 190806245751470341]), Fq::from_montgomery_limbs([1933135302920649522, 2329259343686385217, 5986214093116711712, 437917490927487372]), Fq::from_montgomery_limbs([12529279623600953551, 4004103524068207361, 17383023741426003338, 13318527301206951]), Fq::from_montgomery_limbs([18009701980761163605, 4547817745757475315, 17631087904948254977, 246989508356009632]), Fq::from_montgomery_limbs([14234349688403493927, 2241500746438474640, 1648115951043925356, 529436668472805988]), Fq::from_montgomery_limbs([14111082894836574658, 4098316701848925924, 3720696502600521690, 977251546365326678]), Fq::from_montgomery_limbs([2443616537395128437, 13678987928408466225, 16807254711436855033, 601335544571650468]), Fq::from_montgomery_limbs([12969308795370128797, 1532941629572075493, 9106717660115400778, 1089446992863060197]), Fq::from_montgomery_limbs([16646776755234291239, 15128084475268734564, 11393204553412007553, 838617701679652479]), Fq::from_montgomery_limbs([13260373450845806376, 13305876398081489975, 15328643090518932448, 818860400916977295]), Fq::from_montgomery_limbs([17906146044330204615, 17863342707079833111, 13022629852534083638, 1328181038047481506]), Fq::from_montgomery_limbs([10820137181908478766, 5520339361329099025, 6461544718626485262, 866252272778375002]), Fq::from_montgomery_limbs([14688227483907802311, 2519702212313051686, 8103674382557125023, 689198778502256390]), Fq::from_montgomery_limbs([4422411727383004887, 38494189414052956, 7231885838058987299, 306462357471198280]), Fq::from_montgomery_limbs([8147364543363235664, 5966406127022341654, 9906078756256022488, 1154653879133001463]), Fq::from_montgomery_limbs([17616667317393619629, 8830117592103096180, 10242736408532701810, 367000561528732856]), Fq::from_montgomery_limbs([9905329343001728010, 254719974105054165, 11980601159747742583, 1280526116709693810]), Fq::from_montgomery_limbs([6868659545386222523, 8844781874090119286, 10793326335526947043, 1292404946512391578]), Fq::from_montgomery_limbs([17850102253172036488, 16878929783220491580, 12148612402256632289, 1179496799944407367]), Fq::from_montgomery_limbs([6929880085758156619, 4120392668704643628, 11836473204519946866, 28485748677085595]), Fq::from_montgomery_limbs([7800178991375085209, 14774867153037785291, 11799747171946617460, 602919953250380891]), Fq::from_montgomery_limbs([17054340314101625508, 4698130283999778899, 4742470825260640374, 959009998492737982]), Fq::from_montgomery_limbs([2393186109518086396, 6858067904112781658, 250925929886996803, 813730459239750430]), Fq::from_montgomery_limbs([2218833032329181388, 552395772797949524, 6530705058787819865, 835936496067889425]), Fq::from_montgomery_limbs([3262056243364729906, 11024409760304501943, 1452785405793489479, 142671579891481074]), Fq::from_montgomery_limbs([6735174709999307467, 2125505582074675403, 4509781828031030374, 108593715289115480]), Fq::from_montgomery_limbs([498171931293929377, 12913268518770675643, 1815201461805994707, 946978086066606985]), Fq::from_montgomery_limbs([16200210184230174374, 3713355895827454434, 14718940205181940826, 1064592931466804937]), Fq::from_montgomery_limbs([13536929950841620194, 3713133295284324907, 4736815980159531884, 758794941833570859]), Fq::from_montgomery_limbs([861407446467585047, 12743454769660930162, 7792877431815389510, 943863054041968511]), Fq::from_montgomery_limbs([10460589994003660312, 13699084750678449563, 6912858821101282428, 983481932576822508]), Fq::from_montgomery_limbs([6395189001561693172, 909428077299806733, 14034485419172147354, 892696750070934303]), Fq::from_montgomery_limbs([16314238556028756835, 12721184065200972840, 4215220052710637306, 969581304771032797]), Fq::from_montgomery_limbs([15243970771075793563, 7265733909785546869, 11400286633658577098, 227245542346740687]), Fq::from_montgomery_limbs([2661479521314659209, 14172387955084721030, 12674281103636294869, 1085804564589438497]), Fq::from_montgomery_limbs([18227002291515532973, 15774793184931310359, 6437329245046594308, 396285509955206909]), Fq::from_montgomery_limbs([6914466148291815333, 4167126971788791314, 4527924238135969746, 1300810520025754908]), Fq::from_montgomery_limbs([14395967678844513466, 14422556923576200015, 191387961653560003, 729196198527215531]), Fq::from_montgomery_limbs([7196572830394614073, 16632412363674496211, 16792884878696839152, 457278866683205345]), Fq::from_montgomery_limbs([9831172453260561658, 4633416154293085629, 748737550195349212, 1194104217944615385]), Fq::from_montgomery_limbs([6973573180719962464, 5007888960458011612, 8062128917836753116, 744480032753315017]), Fq::from_montgomery_limbs([16633938277270943002, 664463662401382838, 12794755704372974494, 554917201554530927]), Fq::from_montgomery_limbs([13757343111051456383, 2277523607348509991, 12211485585154160377, 1191938841499200958]), Fq::from_montgomery_limbs([2099651241677249799, 16005931431677972788, 4057176764026877324, 707860945208429696]), Fq::from_montgomery_limbs([2165339887464167998, 7647994110899007446, 5094066233657896225, 709010531879165945]), Fq::from_montgomery_limbs([3831632088851469384, 13057932256077855788, 8222411545973514625, 843256628060293546]), Fq::from_montgomery_limbs([11183603857561726385, 11584937131366886392, 10218687281854749192, 1214449080735682681]), Fq::from_montgomery_limbs([4616248479126876226, 7741252456972311173, 15728165050985347386, 1181171544306467254]), Fq::from_montgomery_limbs([9990077617045592495, 15002413693275212677, 15144228310702885841, 620548150749293884]), Fq::from_montgomery_limbs([11425804337294316958, 7221778875452068210, 12010104440786017368, 1011771244946000970]), Fq::from_montgomery_limbs([5747596481169639613, 1104073856460899094, 9146430142057149431, 765525234705139109]), Fq::from_montgomery_limbs([3812959281946602235, 14465851686889375345, 10322234575416122404, 932678259808721672]), Fq::from_montgomery_limbs([8276661801860095514, 14823492496323764121, 13701004212965117137, 355220593809969742]), Fq::from_montgomery_limbs([2822736401887161227, 7201497867288478670, 17622780267628213622, 1209422737251283832]), Fq::from_montgomery_limbs([6817376778442520781, 4154445874851092990, 16808416654356258571, 874896460001984569]), Fq::from_montgomery_limbs([6944399192847445119, 11369644718917282470, 2667187192361233639, 556544027948695271]), Fq::from_montgomery_limbs([5985721645222736084, 16218645614583785224, 4868776535917705543, 340479768034825225]), Fq::from_montgomery_limbs([423267142339143725, 10672508482801134053, 10023426192840323691, 143702757733007341]), Fq::from_montgomery_limbs([16968412399372724525, 8496071221427589946, 10167242106830249881, 948296106142898645]), Fq::from_montgomery_limbs([6077151186983453387, 15293901317827186404, 14701565635632126093, 255295815714470534]), Fq::from_montgomery_limbs([2340976401132931162, 15060372762537152076, 53380542410648341, 264784757483154853]), Fq::from_montgomery_limbs([18327041937543135548, 9711578301735907982, 14543056172433622210, 917652325595281384]), Fq::from_montgomery_limbs([16912960214874381489, 15496697595960727025, 10003663904717205393, 692183641514800495]), Fq::from_montgomery_limbs([631791826835558467, 6501686441307729051, 3099396544628491613, 61251147299142612]), Fq::from_montgomery_limbs([17691931260195143223, 8098931117406259915, 9971027644422011861, 1136957700009068910]), Fq::from_montgomery_limbs([2062604623511907833, 2446845511672682965, 13161140743748372941, 284099378520214643]), Fq::from_montgomery_limbs([10652315713215424934, 14813440799481647832, 13466669344664711667, 1176746728204537787]), Fq::from_montgomery_limbs([340206030049443520, 12731571821339495677, 14595218864578621848, 861695502136866474]), Fq::from_montgomery_limbs([3281942488953589693, 3787812821549520969, 9952331543838149583, 1038372048519458034]), Fq::from_montgomery_limbs([18390450269856250573, 10364014773689157664, 17543739276626667853, 671606213095247190]), Fq::from_montgomery_limbs([12094846023530852586, 13769932740865047240, 113296399784931588, 214330261285932478]), Fq::from_montgomery_limbs([6374588877936433558, 11607665174546753642, 15847675340170713041, 474145143590361300]), Fq::from_montgomery_limbs([4088002413776997222, 16030858922743461837, 4313473177343544055, 817302900123673764]), Fq::from_montgomery_limbs([18216186189548814543, 5687648301273358200, 6564098766262925833, 235647764529877689]), Fq::from_montgomery_limbs([1421650618584051851, 9669410210003093316, 15430467067773365518, 994269415526604309]), Fq::from_montgomery_limbs([7574559796775011993, 9643962694113220666, 1013275434882478619, 543427156325963008]), Fq::from_montgomery_limbs([4532353768594877907, 2433286855157726742, 15167390808651362948, 914159030044677082]), Fq::from_montgomery_limbs([14155199821083030453, 3642619697360819367, 7765405773737076472, 1202115259646869817]), Fq::from_montgomery_limbs([16335533268534142579, 4358492749042076660, 16385044626223358243, 847268434257421024]), Fq::from_montgomery_limbs([726136436292617217, 4735276118883290434, 6495677390337301519, 1007951275499954400]), Fq::from_montgomery_limbs([1441892049918589996, 16125120862288806381, 5244917656153261337, 108755599353706277]), Fq::from_montgomery_limbs([9330223445766086137, 9406197553353640417, 13281468059023600014, 500503138812404763]), Fq::from_montgomery_limbs([5355456155777194776, 15418542913049291849, 7681885321566295504, 1188094463923126996]), Fq::from_montgomery_limbs([11882193142358058793, 4624069509548102427, 6735235437551193554, 962114122876706035]), Fq::from_montgomery_limbs([1819083831857771980, 8349663267034291058, 14403983179525206765, 942284040773068417]), Fq::from_montgomery_limbs([7024062436534453440, 15203692147142724388, 17082973923084045231, 1191890185052815108]), Fq::from_montgomery_limbs([6672719206476059341, 18362672287252020084, 3555226216430454216, 300718449399370145]), Fq::from_montgomery_limbs([5828458911011841758, 9271852277477872143, 18378348640149073615, 591074353691784318]), Fq::from_montgomery_limbs([15397757499179479361, 1878199828613873660, 4164621900891789384, 558990401377082502]), Fq::from_montgomery_limbs([11069496558892348093, 10253211614498485032, 11458203419889384673, 575447664584685933]), Fq::from_montgomery_limbs([9808353214047792416, 4805184465312945639, 3985871967202506787, 1229730183276593449]), Fq::from_montgomery_limbs([8420435996312062450, 11100705514596499443, 1523101111273631766, 639557004587150270]), Fq::from_montgomery_limbs([15630012259368829028, 15079774099427294323, 16765804689810369633, 834886070512612798]), Fq::from_montgomery_limbs([2000344807995355152, 8654391083188520616, 13301563010992444431, 490951127405891771]), Fq::from_montgomery_limbs([11761875542266860374, 709339183471929228, 17682621289319303167, 570040706396372700]), Fq::from_montgomery_limbs([3366481512891059038, 12720609556939839584, 1707138651265172645, 36940608792331559]), Fq::from_montgomery_limbs([2427334396528044490, 10170194639028880515, 18243990154741074229, 607502491270396977]), Fq::from_montgomery_limbs([6267947100515031640, 14520122887125811439, 6695614471931546770, 251319533602819784]), Fq::from_montgomery_limbs([7663026857490478572, 15777701966597798170, 10617198553182548195, 642318201966621785]), Fq::from_montgomery_limbs([9959998770754152632, 13119241263216166622, 6328810982306793729, 571460896430554998]), Fq::from_montgomery_limbs([12042605027273090048, 14859482580111939906, 11509134713697889199, 561895216440235106]), Fq::from_montgomery_limbs([1156916933025613310, 4529329408550568088, 14286907616576238972, 1309540780962817079]), Fq::from_montgomery_limbs([7510365353910652337, 14538991928012962248, 4644117500717216624, 1340316749461135700])]), - mds: MdsMatrix::<8, 7, 64, 49>::new_from_known([Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([13217949757478296855, 18361600593446830079, 18223280994163007859, 471593720435477782])]), + arc: ArcMatrix::<39, 8, 312>::new_from_known([ + Fq::from_montgomery_limbs([ + 17670646277747935280, + 16706444459999957760, + 7654997937391160943, + 659194013361630234, + ]), + Fq::from_montgomery_limbs([ + 9306410324956668761, + 11918867663968452855, + 16159669320449336406, + 1027263653273380654, + ]), + Fq::from_montgomery_limbs([ + 10424544810878645940, + 11533042162917906716, + 11405431418950019185, + 1181592306684207657, + ]), + Fq::from_montgomery_limbs([ + 15511314950168773025, + 2706584092620486610, + 12589344906057924987, + 198949415522711747, + ]), + Fq::from_montgomery_limbs([ + 6463242934034011456, + 4480775049700236083, + 1147244402884869561, + 251099301522684222, + ]), + Fq::from_montgomery_limbs([ + 6076653156556680739, + 6058362204127962922, + 2609006430585927072, + 1274277644859784421, + ]), + Fq::from_montgomery_limbs([ + 4034147285618545471, + 16309046946281719379, + 11732506942908882170, + 1141734761043516350, + ]), + Fq::from_montgomery_limbs([ + 15181402120606708665, + 769117698742393942, + 8000709366545785093, + 128042919054960870, + ]), + Fq::from_montgomery_limbs([ + 1723632755773767909, + 7425611528820224114, + 3846361608213771012, + 1317157014229771878, + ]), + Fq::from_montgomery_limbs([ + 1180004570926588292, + 9835115993104089813, + 255514544102365106, + 370024046994873563, + ]), + Fq::from_montgomery_limbs([ + 16507101987459533719, + 15603514395660572922, + 14849362947260167652, + 1094669615299361663, + ]), + Fq::from_montgomery_limbs([ + 1641419564627940104, + 1734977130266781622, + 2359844858057393580, + 88569664018692634, + ]), + Fq::from_montgomery_limbs([ + 16267328831985402574, + 4504129177123355587, + 2430336937000039615, + 182724946762968945, + ]), + Fq::from_montgomery_limbs([ + 17793535158928999608, + 5634031392654154747, + 10364337635238532583, + 1179994829791766723, + ]), + Fq::from_montgomery_limbs([ + 145700301814233551, + 7743364595931833861, + 13600389751414362190, + 60896176710147956, + ]), + Fq::from_montgomery_limbs([ + 17934232373820563709, + 6533845630243602776, + 15324676632824344806, + 193078344538210235, + ]), + Fq::from_montgomery_limbs([ + 3358859423299088468, + 11840854300859333122, + 8971776175135254558, + 1017237487419914281, + ]), + Fq::from_montgomery_limbs([ + 16328481477177681368, + 1582997519876787207, + 5731557971602616313, + 498420306800783215, + ]), + Fq::from_montgomery_limbs([ + 12526989383108933614, + 11731194362815364383, + 12171285115754354694, + 1149426086446852474, + ]), + Fq::from_montgomery_limbs([ + 809732533742229508, + 9195963923014534752, + 11886583635578374853, + 1292532069463172705, + ]), + Fq::from_montgomery_limbs([ + 15459398930996981001, + 17972537529111616674, + 6256384561719931081, + 1099908904421687269, + ]), + Fq::from_montgomery_limbs([ + 6194631511262826563, + 5980361634035332899, + 6132585703186883039, + 1343152289862207638, + ]), + Fq::from_montgomery_limbs([ + 13704532277655419198, + 9493963458736770267, + 12653804519172949169, + 218428805830292650, + ]), + Fq::from_montgomery_limbs([ + 8013496787819495990, + 18081394694809078101, + 14689354188530395484, + 215594972753885108, + ]), + Fq::from_montgomery_limbs([ + 1765918642197202432, + 14609627278749496598, + 17838479232731490790, + 483435431183692300, + ]), + Fq::from_montgomery_limbs([ + 16887594024800193480, + 1328476430727273505, + 17409984215868190656, + 1068059229250495642, + ]), + Fq::from_montgomery_limbs([ + 15487315671093445122, + 4028755842123792652, + 14118515559434131307, + 600004660835889583, + ]), + Fq::from_montgomery_limbs([ + 13620558349664282044, + 9072735252525972202, + 312787852320488038, + 47231029883010665, + ]), + Fq::from_montgomery_limbs([ + 9895950479699930991, + 1320083262020086701, + 9381389112858508819, + 928504768072893822, + ]), + Fq::from_montgomery_limbs([ + 10747871248019763953, + 4479404654791651748, + 11550770912037988700, + 438216942461032792, + ]), + Fq::from_montgomery_limbs([ + 18385142532667962947, + 12272398000439779637, + 7461987138462771945, + 558726769125714997, + ]), + Fq::from_montgomery_limbs([ + 14139485618053732983, + 8348792317702713313, + 367233286875102863, + 186067690854023043, + ]), + Fq::from_montgomery_limbs([ + 9041249832633195933, + 456527929350696070, + 3136123267563166118, + 862425036609816636, + ]), + Fq::from_montgomery_limbs([ + 9876321727332632023, + 772451632218152169, + 2580763841740601079, + 1142028710995573927, + ]), + Fq::from_montgomery_limbs([ + 10533796008132988682, + 170935373731786369, + 14423133339980810247, + 95055508444762275, + ]), + Fq::from_montgomery_limbs([ + 4649364153559136229, + 7934671244579715116, + 1725602943667409585, + 43552745816587563, + ]), + Fq::from_montgomery_limbs([ + 8961999013353095080, + 2142418418315880644, + 4123910506434734507, + 397827113331247074, + ]), + Fq::from_montgomery_limbs([ + 2830645454593024582, + 16129482998540180384, + 14637878185709838570, + 838139034347032562, + ]), + Fq::from_montgomery_limbs([ + 12946263415316598300, + 14878150584739579253, + 16849157713730765625, + 1119287030817500036, + ]), + Fq::from_montgomery_limbs([ + 15997726492611173881, + 1184045769764515709, + 17570821640390521168, + 1030525166811213785, + ]), + Fq::from_montgomery_limbs([ + 4265559081433102256, + 11769099699992876903, + 10631998596214553362, + 629920260964559213, + ]), + Fq::from_montgomery_limbs([ + 5157337023141684195, + 9558723136849813533, + 17067637485396248185, + 1292601583198374157, + ]), + Fq::from_montgomery_limbs([ + 11353399385134117629, + 2171806967430036166, + 13097746482717663094, + 586742781877852644, + ]), + Fq::from_montgomery_limbs([ + 1069667428899547423, + 10788650400324959681, + 5252327185070245031, + 819088289991387988, + ]), + Fq::from_montgomery_limbs([ + 4718192935689796196, + 936436242961860243, + 3017815728777383941, + 780298204568547665, + ]), + Fq::from_montgomery_limbs([ + 4440526970403334531, + 4424298208172375576, + 10234579833526167822, + 505023592953711511, + ]), + Fq::from_montgomery_limbs([ + 4918322558939638760, + 9690520639912900881, + 5542814067313497246, + 380973540266134644, + ]), + Fq::from_montgomery_limbs([ + 9286878702031291355, + 4012311069843170007, + 618344267270697646, + 472052248696324346, + ]), + Fq::from_montgomery_limbs([ + 5515965792241216655, + 12550695208348294011, + 659754676577929048, + 656440060717186789, + ]), + Fq::from_montgomery_limbs([ + 8831501139794786744, + 7594112778983174926, + 8104526671183916999, + 495730236370502114, + ]), + Fq::from_montgomery_limbs([ + 17540013351656383980, + 526615498448493498, + 1434949581303472569, + 432295170184586654, + ]), + Fq::from_montgomery_limbs([ + 16852826829533863229, + 16646101864172251902, + 17632936959873614814, + 109658534507710529, + ]), + Fq::from_montgomery_limbs([ + 10636456498263271254, + 15109124910717906315, + 11668474560270048234, + 1296049032043861262, + ]), + Fq::from_montgomery_limbs([ + 12825075668663632434, + 5819798153387583193, + 4880455503263027836, + 801173774991292287, + ]), + Fq::from_montgomery_limbs([ + 14486651003108579603, + 2482031833299980317, + 11187840813488772056, + 509321777815437929, + ]), + Fq::from_montgomery_limbs([ + 8118974380261220505, + 16461246043293688641, + 13082662763745388975, + 1038588716762883494, + ]), + Fq::from_montgomery_limbs([ + 5731200332460900228, + 8786620433378472829, + 13932094144651464518, + 488785602167183804, + ]), + Fq::from_montgomery_limbs([ + 10524031539917302527, + 10788579146719387781, + 2127880595616407095, + 1059950077979303833, + ]), + Fq::from_montgomery_limbs([ + 5949937211870070822, + 4596156438811326001, + 16863220530278231284, + 1206526762260473240, + ]), + Fq::from_montgomery_limbs([ + 8254843496528701475, + 16430360916832531565, + 7205448801338782124, + 446338536784822815, + ]), + Fq::from_montgomery_limbs([ + 289840651692288450, + 17201836854477413895, + 13970461968236180401, + 1087853954070862964, + ]), + Fq::from_montgomery_limbs([ + 580513008010762079, + 829478851231913782, + 10526131895320013439, + 288889415938637383, + ]), + Fq::from_montgomery_limbs([ + 9443502181797148323, + 7700433399763019139, + 6523170715391691579, + 690320529397890241, + ]), + Fq::from_montgomery_limbs([ + 17385565262285073596, + 5652729129833809825, + 5754846028854174174, + 644301327458204078, + ]), + Fq::from_montgomery_limbs([ + 10591125214113881524, + 9225725266018596826, + 9355747915664481308, + 776410040105357079, + ]), + Fq::from_montgomery_limbs([ + 9691894789652129853, + 14667119801492707274, + 4616580392236285481, + 911862737929211265, + ]), + Fq::from_montgomery_limbs([ + 5328612994946451300, + 11901467171940119902, + 12066779857870668281, + 563430691473174027, + ]), + Fq::from_montgomery_limbs([ + 5440290565189005724, + 907133565222704805, + 17434239031512456810, + 1307317854813232623, + ]), + Fq::from_montgomery_limbs([ + 1968218328054856894, + 2870644718005301826, + 11704111566790320318, + 859557807871195562, + ]), + Fq::from_montgomery_limbs([ + 9665243622030788996, + 3894043111862548693, + 8651495608452602974, + 196890012228714384, + ]), + Fq::from_montgomery_limbs([ + 1811318098116764117, + 13655150694370398684, + 6815946900059011917, + 290581066009768770, + ]), + Fq::from_montgomery_limbs([ + 5291662797603414486, + 9976505778352937130, + 18094101094996988099, + 1244544548315716916, + ]), + Fq::from_montgomery_limbs([ + 9550922411414470754, + 2559237915370255061, + 4289970449795683516, + 700825515431345401, + ]), + Fq::from_montgomery_limbs([ + 2966982422777393142, + 3218865522692669697, + 18384778728203892883, + 1101167759984396250, + ]), + Fq::from_montgomery_limbs([ + 2248950665261207727, + 17785118295943931326, + 17515375671127827105, + 271356461720641826, + ]), + Fq::from_montgomery_limbs([ + 2914870987885463507, + 10687584786677185088, + 9928447420467895555, + 897829002169041990, + ]), + Fq::from_montgomery_limbs([ + 9461028554882623448, + 3241431013683194658, + 4200859715375860214, + 247909540912074667, + ]), + Fq::from_montgomery_limbs([ + 9484762440333250094, + 9154823463484785662, + 5077140138132238606, + 1217948890232839466, + ]), + Fq::from_montgomery_limbs([ + 1721708237225335663, + 6589142598549247219, + 16963982649759394752, + 1325370920515859453, + ]), + Fq::from_montgomery_limbs([ + 1581154353773201694, + 8859491775898173368, + 3478556371389172479, + 761951195116054505, + ]), + Fq::from_montgomery_limbs([ + 5414431534772354985, + 5784939336020461618, + 8193906688438115902, + 619056837793590578, + ]), + Fq::from_montgomery_limbs([ + 5158566907177787182, + 510437656260968539, + 18375886464296814687, + 496771913288779260, + ]), + Fq::from_montgomery_limbs([ + 646494282535877757, + 12737151480704198413, + 5471421123526354063, + 634833038935883700, + ]), + Fq::from_montgomery_limbs([ + 16181443408673327918, + 1926257882480036072, + 190463000805340911, + 725721205978748339, + ]), + Fq::from_montgomery_limbs([ + 7167760716023892074, + 5428322849307462840, + 14114178188915343377, + 442277493806724508, + ]), + Fq::from_montgomery_limbs([ + 9842757490151171477, + 12090204626601182995, + 4235533359914016519, + 235018089373226021, + ]), + Fq::from_montgomery_limbs([ + 689571657822682190, + 10120322490102263749, + 15349544629296264734, + 879110129942909963, + ]), + Fq::from_montgomery_limbs([ + 10848673159730542826, + 4254896082380917657, + 7095278498028251644, + 1283578418017245899, + ]), + Fq::from_montgomery_limbs([ + 11397620827145756612, + 12197349421718102268, + 667097273385403287, + 776832025612247811, + ]), + Fq::from_montgomery_limbs([ + 9536830619644896323, + 4636833749605880653, + 12285714887794138165, + 1202400709127503383, + ]), + Fq::from_montgomery_limbs([ + 12430146514789240945, + 4526156431412134307, + 513622053209881149, + 214778917602192418, + ]), + Fq::from_montgomery_limbs([ + 6167098201419516498, + 3154640343084703344, + 14434779005902723423, + 733632272342828673, + ]), + Fq::from_montgomery_limbs([ + 18346541912745902187, + 17556217100268103816, + 14141252440750669936, + 569875244889036285, + ]), + Fq::from_montgomery_limbs([ + 15618469611711155008, + 8545147381062171474, + 13019086273197685281, + 567609712932306745, + ]), + Fq::from_montgomery_limbs([ + 10102215164832802529, + 12690048864743685174, + 5165853392556586922, + 270489738300122432, + ]), + Fq::from_montgomery_limbs([ + 11927164480530891201, + 14108489374813791633, + 13017388607106060581, + 850938729783185225, + ]), + Fq::from_montgomery_limbs([ + 17624557745440616873, + 2058796150101806399, + 3985511902134676603, + 388277619947822053, + ]), + Fq::from_montgomery_limbs([ + 2514382380191783963, + 14675210002114941075, + 17998140577033030519, + 386023351355332372, + ]), + Fq::from_montgomery_limbs([ + 10528288814462561256, + 8933204649364546390, + 14874592129223984742, + 399487853473549061, + ]), + Fq::from_montgomery_limbs([ + 5664751596212948671, + 6514969831451331945, + 12061422083014489160, + 933043664098111606, + ]), + Fq::from_montgomery_limbs([ + 12225851766128513711, + 17952953998987374262, + 13430826736801915124, + 1339971583679078644, + ]), + Fq::from_montgomery_limbs([ + 1845651887319106020, + 6930431492749731513, + 10484176960040080733, + 1170790578042537798, + ]), + Fq::from_montgomery_limbs([ + 6348862923042548556, + 1486875087558341712, + 4194544242438091841, + 78164005256144789, + ]), + Fq::from_montgomery_limbs([ + 14692463016290478473, + 9329360702930196569, + 1183214256895952754, + 471672221434976115, + ]), + Fq::from_montgomery_limbs([ + 12425146353419210200, + 11291312622557382836, + 17924529967710695385, + 316781213195510748, + ]), + Fq::from_montgomery_limbs([ + 18081335327542674793, + 17730828508504228247, + 15095343772187852738, + 496240897850542584, + ]), + Fq::from_montgomery_limbs([ + 6906018396868182531, + 7580743900120262926, + 1967444667836204859, + 273417108766582414, + ]), + Fq::from_montgomery_limbs([ + 16469004144906175061, + 6719414013547880652, + 7667039018964612703, + 450462562192687741, + ]), + Fq::from_montgomery_limbs([ + 3699459642673757801, + 8364096682669340023, + 10547343127916338322, + 1039413061935527341, + ]), + Fq::from_montgomery_limbs([ + 2771106982987870684, + 8573563587841378420, + 1206719325810700776, + 143426260059118164, + ]), + Fq::from_montgomery_limbs([ + 4238031571774841747, + 10683460310325108305, + 10841990503446643706, + 1301654934696530594, + ]), + Fq::from_montgomery_limbs([ + 5203929344429628388, + 16885411007452841607, + 17902872474369879449, + 255936061345264752, + ]), + Fq::from_montgomery_limbs([ + 16419947603551223738, + 15661157019396954707, + 3821221238374718246, + 416126177086460787, + ]), + Fq::from_montgomery_limbs([ + 16922553208005265111, + 16360160113507055509, + 536165461233550481, + 608549986932555649, + ]), + Fq::from_montgomery_limbs([ + 3592206260685120065, + 1954831133507660101, + 5600597071609130865, + 213648140091026624, + ]), + Fq::from_montgomery_limbs([ + 6516082392033585373, + 13946838009919256327, + 6452501836291584617, + 506431739097044218, + ]), + Fq::from_montgomery_limbs([ + 5518181572807062513, + 292110089321494827, + 8886174429861609032, + 814625545290394060, + ]), + Fq::from_montgomery_limbs([ + 12610347423199665749, + 17943367344775386000, + 17093121972053566454, + 556259058966026962, + ]), + Fq::from_montgomery_limbs([ + 5583294814190562448, + 18088402493981602497, + 15928392856949829098, + 901622636021551608, + ]), + Fq::from_montgomery_limbs([ + 16249951298748852814, + 6111361788233877783, + 12919350091432296884, + 721226010556420107, + ]), + Fq::from_montgomery_limbs([ + 2218172102857239703, + 2329323851667514953, + 6784983166719863241, + 993993486987443276, + ]), + Fq::from_montgomery_limbs([ + 14394544906593037198, + 15461851001194987466, + 12193473059473668298, + 358314776306336360, + ]), + Fq::from_montgomery_limbs([ + 2603326905829233946, + 16916036572436423298, + 5790056800663566282, + 1283614572025968285, + ]), + Fq::from_montgomery_limbs([ + 5913046777942823275, + 8211910935104269782, + 17190335617208567380, + 38682663530408751, + ]), + Fq::from_montgomery_limbs([ + 6279799617741999852, + 2368459429864835947, + 13817854282822876412, + 857599403523844060, + ]), + Fq::from_montgomery_limbs([ + 13513221728804468015, + 11648472211124988287, + 16337147311151149281, + 1213356362315889859, + ]), + Fq::from_montgomery_limbs([ + 6735193215800666100, + 13415126246050738636, + 6546772491702052570, + 864959054725113379, + ]), + Fq::from_montgomery_limbs([ + 13946560916675101048, + 1305536234013471373, + 1996487601117501987, + 6637280482434640, + ]), + Fq::from_montgomery_limbs([ + 17986217868852303932, + 266126649469053928, + 4699823734038470617, + 1235954369265597233, + ]), + Fq::from_montgomery_limbs([ + 9706578390759094801, + 4557052655228011544, + 6501501161504104166, + 300118669717388750, + ]), + Fq::from_montgomery_limbs([ + 17271021878237926614, + 16508898608489641541, + 2510098231880106517, + 1253549827753884905, + ]), + Fq::from_montgomery_limbs([ + 16081696380667951121, + 12546061674505954303, + 3027939816911481659, + 1326122367352440135, + ]), + Fq::from_montgomery_limbs([ + 8750820783999769857, + 14131264523532409831, + 11860451755197446498, + 745462829225755593, + ]), + Fq::from_montgomery_limbs([ + 7819519394598054633, + 7533208822188068621, + 3889432398222336031, + 176964346604581200, + ]), + Fq::from_montgomery_limbs([ + 13626588278396502750, + 15706390030365469804, + 12311149232441048374, + 610208895283453621, + ]), + Fq::from_montgomery_limbs([ + 11094868539621714049, + 1330865564750703444, + 8208579708506329523, + 1146297945936422016, + ]), + Fq::from_montgomery_limbs([ + 7814348133249287361, + 6078857359953567878, + 15411726589694581351, + 1299224180894534955, + ]), + Fq::from_montgomery_limbs([ + 8835381130778819320, + 134779635200388096, + 15334224426829348450, + 785788572858947262, + ]), + Fq::from_montgomery_limbs([ + 16203055023538295629, + 13066812413033753111, + 13966479479457537321, + 675899367132765792, + ]), + Fq::from_montgomery_limbs([ + 8545027219899966991, + 6186973227993574577, + 3038538378161392821, + 535103590192673792, + ]), + Fq::from_montgomery_limbs([ + 3360320054957481727, + 34336684756912399, + 3413779266271394009, + 764051173981439036, + ]), + Fq::from_montgomery_limbs([ + 293023250682873552, + 7322391841105288851, + 198244575944514326, + 656738111777844461, + ]), + Fq::from_montgomery_limbs([ + 18423107368729444354, + 5597408372052789576, + 7207721424788749840, + 943687777186537434, + ]), + Fq::from_montgomery_limbs([ + 13170086198505174331, + 15859783812716989104, + 5301807370963313339, + 799729083241888205, + ]), + Fq::from_montgomery_limbs([ + 17279707292509004232, + 10595487011792355137, + 12602364184919926920, + 311754230366163159, + ]), + Fq::from_montgomery_limbs([ + 8130970296785420178, + 2169620052609587269, + 1837093242073059498, + 276242467334991300, + ]), + Fq::from_montgomery_limbs([ + 15139243365203952649, + 4858541150918282204, + 1228673366499097007, + 1293322423335373790, + ]), + Fq::from_montgomery_limbs([ + 15413937563393284083, + 365038001085082591, + 11386425434875288889, + 291771874675930828, + ]), + Fq::from_montgomery_limbs([ + 3865668766578896210, + 14190581838784817460, + 2274316418059288551, + 870991438678094683, + ]), + Fq::from_montgomery_limbs([ + 9571157470530489958, + 4980823355121973943, + 5333320516499456270, + 770038796278147152, + ]), + Fq::from_montgomery_limbs([ + 16981726629451591296, + 5326474426552210602, + 1524717641929835760, + 219842939123356623, + ]), + Fq::from_montgomery_limbs([ + 16039208901368659229, + 5184640515669419530, + 3080932410472693273, + 510043620105971072, + ]), + Fq::from_montgomery_limbs([ + 10111763974722315511, + 8329709076294929314, + 16998679271562967459, + 574065224827752177, + ]), + Fq::from_montgomery_limbs([ + 8462560254681779659, + 10954941970268851750, + 14488455499782134046, + 963141804021766550, + ]), + Fq::from_montgomery_limbs([ + 8265856446621399759, + 16247707484341474163, + 12400770599134010433, + 771647552338284605, + ]), + Fq::from_montgomery_limbs([ + 5671942973524499, + 18330128788177211715, + 4789615159654137053, + 622759709526318785, + ]), + Fq::from_montgomery_limbs([ + 17479950722059179918, + 7049818057003906554, + 10084589816123170899, + 1193808990238611595, + ]), + Fq::from_montgomery_limbs([ + 896116343457540936, + 2638281787069340966, + 3380620512921535857, + 36644632120836151, + ]), + Fq::from_montgomery_limbs([ + 2322146546165600970, + 271027138366968218, + 7162645116150464142, + 441026262100973114, + ]), + Fq::from_montgomery_limbs([ + 11627404673587174924, + 1016523621299971825, + 8777376750651265173, + 904797647346869914, + ]), + Fq::from_montgomery_limbs([ + 2336599983193427372, + 18294536733010623722, + 1910254562936909612, + 288459876244919538, + ]), + Fq::from_montgomery_limbs([ + 10866222389981094234, + 12754738301243938778, + 2023962300189713384, + 841827876240589471, + ]), + Fq::from_montgomery_limbs([ + 12337869057490259818, + 9301235609521246009, + 16444168617638171143, + 1108049112276481315, + ]), + Fq::from_montgomery_limbs([ + 18388904709130326983, + 14432270782760350172, + 5671872767281599553, + 996264049295637410, + ]), + Fq::from_montgomery_limbs([ + 2918495984421967960, + 15152292474410287951, + 16695048790099726675, + 206789987868447903, + ]), + Fq::from_montgomery_limbs([ + 6798036226759712530, + 2524547494567206246, + 343094056066178021, + 1079202981664139204, + ]), + Fq::from_montgomery_limbs([ + 283923512386736187, + 6373209277312452652, + 11471152742161283191, + 352597911054493754, + ]), + Fq::from_montgomery_limbs([ + 18344480346791250887, + 6055456955702765744, + 13357935878541036141, + 1170362631105533341, + ]), + Fq::from_montgomery_limbs([ + 17978397370482672109, + 5066451535613649009, + 14053101851847429570, + 384003300586620459, + ]), + Fq::from_montgomery_limbs([ + 6537240767762022960, + 15287887514003130639, + 13714824082467376651, + 325998042020099848, + ]), + Fq::from_montgomery_limbs([ + 4220213521712332659, + 17903257264224768614, + 14353077305493411978, + 1217616808421443849, + ]), + Fq::from_montgomery_limbs([ + 6303107750424964008, + 10553099269256611636, + 5652309430855981542, + 809187312341384962, + ]), + Fq::from_montgomery_limbs([ + 1467640326258074734, + 9958994673877282208, + 948807165231437865, + 847979042319462524, + ]), + Fq::from_montgomery_limbs([ + 14465965197425638820, + 1065990778266164589, + 2272519010377842609, + 171604326652711548, + ]), + Fq::from_montgomery_limbs([ + 16535399098764373288, + 6722849851726415551, + 12327525818310696665, + 617153762162922214, + ]), + Fq::from_montgomery_limbs([ + 16271640629055517264, + 6432350282845335097, + 8618264300933865260, + 264879473167088472, + ]), + Fq::from_montgomery_limbs([ + 9343764438142603568, + 4076892716460943411, + 4516415268764304436, + 15742193002987304, + ]), + Fq::from_montgomery_limbs([ + 11522515971258098144, + 3066993658503053898, + 17512877804099724909, + 611356418591586870, + ]), + Fq::from_montgomery_limbs([ + 4963578364552643616, + 6202702392079615379, + 7168882355307838637, + 299344600077925413, + ]), + Fq::from_montgomery_limbs([ + 14129405866465653759, + 354882826696964962, + 9660427351909071801, + 291149128932052640, + ]), + Fq::from_montgomery_limbs([ + 6569686896435195187, + 1896994952028172314, + 2117936942259387423, + 1226223740596210813, + ]), + Fq::from_montgomery_limbs([ + 8136826296150976656, + 5114560834461259857, + 12698438831882127582, + 1064812274674793315, + ]), + Fq::from_montgomery_limbs([ + 5204762908686848050, + 18170247715344035008, + 10079839806977450219, + 1015117163163578828, + ]), + Fq::from_montgomery_limbs([ + 1971186989634095352, + 5677558375626169162, + 3790083583317699341, + 158130166070339790, + ]), + Fq::from_montgomery_limbs([ + 9180297996268451616, + 10521870846784715198, + 11257197750166742798, + 1008680790543022462, + ]), + Fq::from_montgomery_limbs([ + 15102432377621017232, + 824737829862625480, + 15733286904587679385, + 359217550415334382, + ]), + Fq::from_montgomery_limbs([ + 4981259850785194804, + 15036275071388584091, + 17758791361697138722, + 236481669158055589, + ]), + Fq::from_montgomery_limbs([ + 3901233362525026592, + 12813965168957277386, + 5314390603519503713, + 998031094116574634, + ]), + Fq::from_montgomery_limbs([ + 4078498358432220507, + 12075726151602811779, + 5342542781210762674, + 21775695708843112, + ]), + Fq::from_montgomery_limbs([ + 13735056988005095110, + 9135371967743228564, + 6185376342737833602, + 666002395605514749, + ]), + Fq::from_montgomery_limbs([ + 18046228494581227779, + 8202114407403963695, + 4947702695068466084, + 788320793950394154, + ]), + Fq::from_montgomery_limbs([ + 7218302974216051660, + 3228464294576983613, + 6671727537595126477, + 173754647728010839, + ]), + Fq::from_montgomery_limbs([ + 7621257321835633802, + 8049874917307223403, + 9478314901912088133, + 870251875807451739, + ]), + Fq::from_montgomery_limbs([ + 5044996355847148919, + 273615366352511195, + 4942152417670343549, + 199398188932346157, + ]), + Fq::from_montgomery_limbs([ + 2595093843514271275, + 1154391123098543540, + 4985894556505531500, + 854386142979270925, + ]), + Fq::from_montgomery_limbs([ + 12759949881257920813, + 1010457605698465717, + 5217636609151955807, + 817084911938507107, + ]), + Fq::from_montgomery_limbs([ + 5979737281050353100, + 3539786440569025402, + 14471457140846241143, + 907982120351578122, + ]), + Fq::from_montgomery_limbs([ + 16416626656337038566, + 752298127295719085, + 866476478245896231, + 830777061413161901, + ]), + Fq::from_montgomery_limbs([ + 17284526810241082338, + 13213233959887135278, + 2713075662623866960, + 1171532591409183723, + ]), + Fq::from_montgomery_limbs([ + 8064354122312926171, + 4789249084747322790, + 9919523931750221465, + 419197152698850604, + ]), + Fq::from_montgomery_limbs([ + 16629353489243762868, + 11598883503129680580, + 278636461422073174, + 1203042448092989642, + ]), + Fq::from_montgomery_limbs([ + 16545356932968522584, + 10146757853340947518, + 2437689509695855762, + 464048598784979390, + ]), + Fq::from_montgomery_limbs([ + 5331959515776232924, + 3487514764868921659, + 5860818581382620461, + 167831223077979532, + ]), + Fq::from_montgomery_limbs([ + 2682933818861368295, + 7444683236761914337, + 2283469126638096803, + 272174229926312669, + ]), + Fq::from_montgomery_limbs([ + 5483054922977937779, + 318986619952765070, + 4791617305206485237, + 1275035358174361434, + ]), + Fq::from_montgomery_limbs([ + 4586602402683656583, + 11875566498302421311, + 560651239278356123, + 130789238180500900, + ]), + Fq::from_montgomery_limbs([ + 13475546304629005641, + 1809680849885580336, + 6148758205685753344, + 1015272727127650918, + ]), + Fq::from_montgomery_limbs([ + 18199016777093209980, + 5614538780880978862, + 14532750892253808663, + 1120673202287670548, + ]), + Fq::from_montgomery_limbs([ + 7979559541587633926, + 1549411440381912045, + 13170209322716529702, + 561270408065407020, + ]), + Fq::from_montgomery_limbs([ + 15279595015844449808, + 17853680372412830934, + 12690878740975697658, + 190806245751470341, + ]), + Fq::from_montgomery_limbs([ + 1933135302920649522, + 2329259343686385217, + 5986214093116711712, + 437917490927487372, + ]), + Fq::from_montgomery_limbs([ + 12529279623600953551, + 4004103524068207361, + 17383023741426003338, + 13318527301206951, + ]), + Fq::from_montgomery_limbs([ + 18009701980761163605, + 4547817745757475315, + 17631087904948254977, + 246989508356009632, + ]), + Fq::from_montgomery_limbs([ + 14234349688403493927, + 2241500746438474640, + 1648115951043925356, + 529436668472805988, + ]), + Fq::from_montgomery_limbs([ + 14111082894836574658, + 4098316701848925924, + 3720696502600521690, + 977251546365326678, + ]), + Fq::from_montgomery_limbs([ + 2443616537395128437, + 13678987928408466225, + 16807254711436855033, + 601335544571650468, + ]), + Fq::from_montgomery_limbs([ + 12969308795370128797, + 1532941629572075493, + 9106717660115400778, + 1089446992863060197, + ]), + Fq::from_montgomery_limbs([ + 16646776755234291239, + 15128084475268734564, + 11393204553412007553, + 838617701679652479, + ]), + Fq::from_montgomery_limbs([ + 13260373450845806376, + 13305876398081489975, + 15328643090518932448, + 818860400916977295, + ]), + Fq::from_montgomery_limbs([ + 17906146044330204615, + 17863342707079833111, + 13022629852534083638, + 1328181038047481506, + ]), + Fq::from_montgomery_limbs([ + 10820137181908478766, + 5520339361329099025, + 6461544718626485262, + 866252272778375002, + ]), + Fq::from_montgomery_limbs([ + 14688227483907802311, + 2519702212313051686, + 8103674382557125023, + 689198778502256390, + ]), + Fq::from_montgomery_limbs([ + 4422411727383004887, + 38494189414052956, + 7231885838058987299, + 306462357471198280, + ]), + Fq::from_montgomery_limbs([ + 8147364543363235664, + 5966406127022341654, + 9906078756256022488, + 1154653879133001463, + ]), + Fq::from_montgomery_limbs([ + 17616667317393619629, + 8830117592103096180, + 10242736408532701810, + 367000561528732856, + ]), + Fq::from_montgomery_limbs([ + 9905329343001728010, + 254719974105054165, + 11980601159747742583, + 1280526116709693810, + ]), + Fq::from_montgomery_limbs([ + 6868659545386222523, + 8844781874090119286, + 10793326335526947043, + 1292404946512391578, + ]), + Fq::from_montgomery_limbs([ + 17850102253172036488, + 16878929783220491580, + 12148612402256632289, + 1179496799944407367, + ]), + Fq::from_montgomery_limbs([ + 6929880085758156619, + 4120392668704643628, + 11836473204519946866, + 28485748677085595, + ]), + Fq::from_montgomery_limbs([ + 7800178991375085209, + 14774867153037785291, + 11799747171946617460, + 602919953250380891, + ]), + Fq::from_montgomery_limbs([ + 17054340314101625508, + 4698130283999778899, + 4742470825260640374, + 959009998492737982, + ]), + Fq::from_montgomery_limbs([ + 2393186109518086396, + 6858067904112781658, + 250925929886996803, + 813730459239750430, + ]), + Fq::from_montgomery_limbs([ + 2218833032329181388, + 552395772797949524, + 6530705058787819865, + 835936496067889425, + ]), + Fq::from_montgomery_limbs([ + 3262056243364729906, + 11024409760304501943, + 1452785405793489479, + 142671579891481074, + ]), + Fq::from_montgomery_limbs([ + 6735174709999307467, + 2125505582074675403, + 4509781828031030374, + 108593715289115480, + ]), + Fq::from_montgomery_limbs([ + 498171931293929377, + 12913268518770675643, + 1815201461805994707, + 946978086066606985, + ]), + Fq::from_montgomery_limbs([ + 16200210184230174374, + 3713355895827454434, + 14718940205181940826, + 1064592931466804937, + ]), + Fq::from_montgomery_limbs([ + 13536929950841620194, + 3713133295284324907, + 4736815980159531884, + 758794941833570859, + ]), + Fq::from_montgomery_limbs([ + 861407446467585047, + 12743454769660930162, + 7792877431815389510, + 943863054041968511, + ]), + Fq::from_montgomery_limbs([ + 10460589994003660312, + 13699084750678449563, + 6912858821101282428, + 983481932576822508, + ]), + Fq::from_montgomery_limbs([ + 6395189001561693172, + 909428077299806733, + 14034485419172147354, + 892696750070934303, + ]), + Fq::from_montgomery_limbs([ + 16314238556028756835, + 12721184065200972840, + 4215220052710637306, + 969581304771032797, + ]), + Fq::from_montgomery_limbs([ + 15243970771075793563, + 7265733909785546869, + 11400286633658577098, + 227245542346740687, + ]), + Fq::from_montgomery_limbs([ + 2661479521314659209, + 14172387955084721030, + 12674281103636294869, + 1085804564589438497, + ]), + Fq::from_montgomery_limbs([ + 18227002291515532973, + 15774793184931310359, + 6437329245046594308, + 396285509955206909, + ]), + Fq::from_montgomery_limbs([ + 6914466148291815333, + 4167126971788791314, + 4527924238135969746, + 1300810520025754908, + ]), + Fq::from_montgomery_limbs([ + 14395967678844513466, + 14422556923576200015, + 191387961653560003, + 729196198527215531, + ]), + Fq::from_montgomery_limbs([ + 7196572830394614073, + 16632412363674496211, + 16792884878696839152, + 457278866683205345, + ]), + Fq::from_montgomery_limbs([ + 9831172453260561658, + 4633416154293085629, + 748737550195349212, + 1194104217944615385, + ]), + Fq::from_montgomery_limbs([ + 6973573180719962464, + 5007888960458011612, + 8062128917836753116, + 744480032753315017, + ]), + Fq::from_montgomery_limbs([ + 16633938277270943002, + 664463662401382838, + 12794755704372974494, + 554917201554530927, + ]), + Fq::from_montgomery_limbs([ + 13757343111051456383, + 2277523607348509991, + 12211485585154160377, + 1191938841499200958, + ]), + Fq::from_montgomery_limbs([ + 2099651241677249799, + 16005931431677972788, + 4057176764026877324, + 707860945208429696, + ]), + Fq::from_montgomery_limbs([ + 2165339887464167998, + 7647994110899007446, + 5094066233657896225, + 709010531879165945, + ]), + Fq::from_montgomery_limbs([ + 3831632088851469384, + 13057932256077855788, + 8222411545973514625, + 843256628060293546, + ]), + Fq::from_montgomery_limbs([ + 11183603857561726385, + 11584937131366886392, + 10218687281854749192, + 1214449080735682681, + ]), + Fq::from_montgomery_limbs([ + 4616248479126876226, + 7741252456972311173, + 15728165050985347386, + 1181171544306467254, + ]), + Fq::from_montgomery_limbs([ + 9990077617045592495, + 15002413693275212677, + 15144228310702885841, + 620548150749293884, + ]), + Fq::from_montgomery_limbs([ + 11425804337294316958, + 7221778875452068210, + 12010104440786017368, + 1011771244946000970, + ]), + Fq::from_montgomery_limbs([ + 5747596481169639613, + 1104073856460899094, + 9146430142057149431, + 765525234705139109, + ]), + Fq::from_montgomery_limbs([ + 3812959281946602235, + 14465851686889375345, + 10322234575416122404, + 932678259808721672, + ]), + Fq::from_montgomery_limbs([ + 8276661801860095514, + 14823492496323764121, + 13701004212965117137, + 355220593809969742, + ]), + Fq::from_montgomery_limbs([ + 2822736401887161227, + 7201497867288478670, + 17622780267628213622, + 1209422737251283832, + ]), + Fq::from_montgomery_limbs([ + 6817376778442520781, + 4154445874851092990, + 16808416654356258571, + 874896460001984569, + ]), + Fq::from_montgomery_limbs([ + 6944399192847445119, + 11369644718917282470, + 2667187192361233639, + 556544027948695271, + ]), + Fq::from_montgomery_limbs([ + 5985721645222736084, + 16218645614583785224, + 4868776535917705543, + 340479768034825225, + ]), + Fq::from_montgomery_limbs([ + 423267142339143725, + 10672508482801134053, + 10023426192840323691, + 143702757733007341, + ]), + Fq::from_montgomery_limbs([ + 16968412399372724525, + 8496071221427589946, + 10167242106830249881, + 948296106142898645, + ]), + Fq::from_montgomery_limbs([ + 6077151186983453387, + 15293901317827186404, + 14701565635632126093, + 255295815714470534, + ]), + Fq::from_montgomery_limbs([ + 2340976401132931162, + 15060372762537152076, + 53380542410648341, + 264784757483154853, + ]), + Fq::from_montgomery_limbs([ + 18327041937543135548, + 9711578301735907982, + 14543056172433622210, + 917652325595281384, + ]), + Fq::from_montgomery_limbs([ + 16912960214874381489, + 15496697595960727025, + 10003663904717205393, + 692183641514800495, + ]), + Fq::from_montgomery_limbs([ + 631791826835558467, + 6501686441307729051, + 3099396544628491613, + 61251147299142612, + ]), + Fq::from_montgomery_limbs([ + 17691931260195143223, + 8098931117406259915, + 9971027644422011861, + 1136957700009068910, + ]), + Fq::from_montgomery_limbs([ + 2062604623511907833, + 2446845511672682965, + 13161140743748372941, + 284099378520214643, + ]), + Fq::from_montgomery_limbs([ + 10652315713215424934, + 14813440799481647832, + 13466669344664711667, + 1176746728204537787, + ]), + Fq::from_montgomery_limbs([ + 340206030049443520, + 12731571821339495677, + 14595218864578621848, + 861695502136866474, + ]), + Fq::from_montgomery_limbs([ + 3281942488953589693, + 3787812821549520969, + 9952331543838149583, + 1038372048519458034, + ]), + Fq::from_montgomery_limbs([ + 18390450269856250573, + 10364014773689157664, + 17543739276626667853, + 671606213095247190, + ]), + Fq::from_montgomery_limbs([ + 12094846023530852586, + 13769932740865047240, + 113296399784931588, + 214330261285932478, + ]), + Fq::from_montgomery_limbs([ + 6374588877936433558, + 11607665174546753642, + 15847675340170713041, + 474145143590361300, + ]), + Fq::from_montgomery_limbs([ + 4088002413776997222, + 16030858922743461837, + 4313473177343544055, + 817302900123673764, + ]), + Fq::from_montgomery_limbs([ + 18216186189548814543, + 5687648301273358200, + 6564098766262925833, + 235647764529877689, + ]), + Fq::from_montgomery_limbs([ + 1421650618584051851, + 9669410210003093316, + 15430467067773365518, + 994269415526604309, + ]), + Fq::from_montgomery_limbs([ + 7574559796775011993, + 9643962694113220666, + 1013275434882478619, + 543427156325963008, + ]), + Fq::from_montgomery_limbs([ + 4532353768594877907, + 2433286855157726742, + 15167390808651362948, + 914159030044677082, + ]), + Fq::from_montgomery_limbs([ + 14155199821083030453, + 3642619697360819367, + 7765405773737076472, + 1202115259646869817, + ]), + Fq::from_montgomery_limbs([ + 16335533268534142579, + 4358492749042076660, + 16385044626223358243, + 847268434257421024, + ]), + Fq::from_montgomery_limbs([ + 726136436292617217, + 4735276118883290434, + 6495677390337301519, + 1007951275499954400, + ]), + Fq::from_montgomery_limbs([ + 1441892049918589996, + 16125120862288806381, + 5244917656153261337, + 108755599353706277, + ]), + Fq::from_montgomery_limbs([ + 9330223445766086137, + 9406197553353640417, + 13281468059023600014, + 500503138812404763, + ]), + Fq::from_montgomery_limbs([ + 5355456155777194776, + 15418542913049291849, + 7681885321566295504, + 1188094463923126996, + ]), + Fq::from_montgomery_limbs([ + 11882193142358058793, + 4624069509548102427, + 6735235437551193554, + 962114122876706035, + ]), + Fq::from_montgomery_limbs([ + 1819083831857771980, + 8349663267034291058, + 14403983179525206765, + 942284040773068417, + ]), + Fq::from_montgomery_limbs([ + 7024062436534453440, + 15203692147142724388, + 17082973923084045231, + 1191890185052815108, + ]), + Fq::from_montgomery_limbs([ + 6672719206476059341, + 18362672287252020084, + 3555226216430454216, + 300718449399370145, + ]), + Fq::from_montgomery_limbs([ + 5828458911011841758, + 9271852277477872143, + 18378348640149073615, + 591074353691784318, + ]), + Fq::from_montgomery_limbs([ + 15397757499179479361, + 1878199828613873660, + 4164621900891789384, + 558990401377082502, + ]), + Fq::from_montgomery_limbs([ + 11069496558892348093, + 10253211614498485032, + 11458203419889384673, + 575447664584685933, + ]), + Fq::from_montgomery_limbs([ + 9808353214047792416, + 4805184465312945639, + 3985871967202506787, + 1229730183276593449, + ]), + Fq::from_montgomery_limbs([ + 8420435996312062450, + 11100705514596499443, + 1523101111273631766, + 639557004587150270, + ]), + Fq::from_montgomery_limbs([ + 15630012259368829028, + 15079774099427294323, + 16765804689810369633, + 834886070512612798, + ]), + Fq::from_montgomery_limbs([ + 2000344807995355152, + 8654391083188520616, + 13301563010992444431, + 490951127405891771, + ]), + Fq::from_montgomery_limbs([ + 11761875542266860374, + 709339183471929228, + 17682621289319303167, + 570040706396372700, + ]), + Fq::from_montgomery_limbs([ + 3366481512891059038, + 12720609556939839584, + 1707138651265172645, + 36940608792331559, + ]), + Fq::from_montgomery_limbs([ + 2427334396528044490, + 10170194639028880515, + 18243990154741074229, + 607502491270396977, + ]), + Fq::from_montgomery_limbs([ + 6267947100515031640, + 14520122887125811439, + 6695614471931546770, + 251319533602819784, + ]), + Fq::from_montgomery_limbs([ + 7663026857490478572, + 15777701966597798170, + 10617198553182548195, + 642318201966621785, + ]), + Fq::from_montgomery_limbs([ + 9959998770754152632, + 13119241263216166622, + 6328810982306793729, + 571460896430554998, + ]), + Fq::from_montgomery_limbs([ + 12042605027273090048, + 14859482580111939906, + 11509134713697889199, + 561895216440235106, + ]), + Fq::from_montgomery_limbs([ + 1156916933025613310, + 4529329408550568088, + 14286907616576238972, + 1309540780962817079, + ]), + Fq::from_montgomery_limbs([ + 7510365353910652337, + 14538991928012962248, + 4644117500717216624, + 1340316749461135700, + ]), + ]), + mds: MdsMatrix::<8, 7, 64, 49>::new_from_known([ + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + Fq::from_montgomery_limbs([ + 14902495609461984461, + 16049616749407607193, + 8772353492731922841, + 1191393277823112260, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + Fq::from_montgomery_limbs([ + 14902495609461984461, + 16049616749407607193, + 8772353492731922841, + 1191393277823112260, + ]), + Fq::from_montgomery_limbs([ + 5443236819267423281, + 9444106377351672003, + 16592192658774520588, + 1198721234626210409, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + Fq::from_montgomery_limbs([ + 14902495609461984461, + 16049616749407607193, + 8772353492731922841, + 1191393277823112260, + ]), + Fq::from_montgomery_limbs([ + 5443236819267423281, + 9444106377351672003, + 16592192658774520588, + 1198721234626210409, + ]), + Fq::from_montgomery_limbs([ + 13217949757478296855, + 18361600593446830079, + 18223280994163007859, + 471593720435477782, + ]), + ]), alpha: Alpha::Exponent(17), - rounds: RoundNumbers {r_P: 31, r_F: 8}, + rounds: RoundNumbers { r_P: 31, r_F: 8 }, optimized_mds: OptimizedMdsMatrices { - M_hat: SquareMatrix::<7, 49>::new_from_known([Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([13217949757478296855, 18361600593446830079, 18223280994163007859, 471593720435477782])]), - v: Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214])]), - w: Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214])]), - M_prime: SquareMatrix::<8, 64>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), Fq::from_montgomery_limbs([829043150522309210, 7485532467658058089, 17072453966431109601, 610297755857677130]), Fq::from_montgomery_limbs([18043687544558598371, 8708325242362018018, 16625116017321440141, 277441131490434312]), Fq::from_montgomery_limbs([1903578231313020389, 13252279451564941743, 6429417326301386859, 900077037001125169]), Fq::from_montgomery_limbs([14902495609461984461, 16049616749407607193, 8772353492731922841, 1191393277823112260]), Fq::from_montgomery_limbs([5443236819267423281, 9444106377351672003, 16592192658774520588, 1198721234626210409]), Fq::from_montgomery_limbs([13217949757478296855, 18361600593446830079, 18223280994163007859, 471593720435477782])]), - M_doubleprime: SquareMatrix::<8, 64>::new_from_known([Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214]), Fq::from_montgomery_limbs([5469465372454405746, 11693688927749785195, 9284229770381589387, 263916402201309764]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8025142443496737775, 1611073224873590596, 1595200312703520851, 268362793599128279]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2646197433325367530, 3327161674116363870, 17523969835882673765, 1224872920276084181]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3531022552160069605, 1044916798369741293, 13484540382795405112, 975392012720575741]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3532672362950129848, 13232567668052949956, 3949082925084889589, 1169300250855119928]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17405909644706202533, 9068195655028130334, 4993737853698066182, 760630245260613434]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10760096219897954109, 15819961273994906871, 12000866060961275644, 494051747708222359]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437])]), - M_inverse: SquareMatrix::<8, 64>::new_from_known([Fq::from_montgomery_limbs([13084505025340709209, 6658414703856389670, 1229628874832604981, 544699057731131701]), Fq::from_montgomery_limbs([9271504314401065906, 16573554673674659136, 11112785265390720139, 695302674280213266]), Fq::from_montgomery_limbs([17755863455076530065, 714019269282123475, 2516777105896065646, 758853547373067215]), Fq::from_montgomery_limbs([18230149865394473823, 17597653080170983126, 8526134725373349310, 254065511080298010]), Fq::from_montgomery_limbs([12943062609168455850, 4036522178185995734, 13999395164871811986, 158263095242933732]), Fq::from_montgomery_limbs([9727917081763370379, 12523860206965601712, 6438415234309761598, 578292727069385307]), Fq::from_montgomery_limbs([4722164372208948539, 6191995659471889704, 9488304077820150497, 383493821809394045]), Fq::from_montgomery_limbs([6308417298426862088, 11443735935349473316, 5741617995111411363, 1072746374115513684]), Fq::from_montgomery_limbs([9271504314401065906, 16573554673674659136, 11112785265390720139, 695302674280213266]), Fq::from_montgomery_limbs([6461820328084053982, 3713881430924031860, 2384237101556363354, 925204973024161309]), Fq::from_montgomery_limbs([11045222492845432763, 12330616953129622165, 6721295490146207098, 737212261478666249]), Fq::from_montgomery_limbs([17374877272010299584, 12910097275334870758, 11030123918921243889, 999547114982057960]), Fq::from_montgomery_limbs([2710620113890028948, 7440189668352585633, 11434649235474493285, 24415954842353912]), Fq::from_montgomery_limbs([7017296967873341431, 5083670538613016079, 13450510072544819929, 553876772227031394]), Fq::from_montgomery_limbs([13756252569614172144, 10114182252140374927, 8424160399132869901, 370135544443278065]), Fq::from_montgomery_limbs([8192890567029291618, 6189339163642963502, 10515708329663122411, 718287917303790275]), Fq::from_montgomery_limbs([17755863455076530065, 714019269282123475, 2516777105896065646, 758853547373067215]), Fq::from_montgomery_limbs([11045222492845432763, 12330616953129622165, 6721295490146207098, 737212261478666249]), Fq::from_montgomery_limbs([1107303498763469844, 5522738209527454529, 7444362964372879018, 94326278492989394]), Fq::from_montgomery_limbs([17301615911438019293, 6207101570101901683, 6912719408314906153, 670136716188149414]), Fq::from_montgomery_limbs([8052773691804060961, 7894827066734284032, 17737200459541160653, 1344927881702280038]), Fq::from_montgomery_limbs([3579877764578944756, 17358359975581377230, 2902328015395623063, 1076553286270705854]), Fq::from_montgomery_limbs([7922495546740583511, 13377932406425725078, 312087136472518954, 724215661521432074]), Fq::from_montgomery_limbs([14304988956035390969, 2978747834443270582, 211153190861140083, 1101825800236420991]), Fq::from_montgomery_limbs([18230149865394473823, 17597653080170983126, 8526134725373349310, 254065511080298010]), Fq::from_montgomery_limbs([17374877272010299584, 12910097275334870758, 11030123918921243889, 999547114982057960]), Fq::from_montgomery_limbs([17301615911438019293, 6207101570101901683, 6912719408314906153, 670136716188149414]), Fq::from_montgomery_limbs([11280947822772662719, 3998258523005585690, 3083179120639342004, 919842772758514385]), Fq::from_montgomery_limbs([9288629788793402586, 2259376874925369448, 13217169487415398853, 539099117435770765]), Fq::from_montgomery_limbs([8430375547150652021, 1001249403497996831, 16789953243695164761, 1344355087100203329]), Fq::from_montgomery_limbs([527596723520651020, 15187839531048996200, 6255568353483246533, 170911683896477388]), Fq::from_montgomery_limbs([1734565667097520919, 12020388067710193448, 6095663732563761512, 1138214739842689620]), Fq::from_montgomery_limbs([12943062609168455850, 4036522178185995734, 13999395164871811986, 158263095242933732]), Fq::from_montgomery_limbs([2710620113890028948, 7440189668352585633, 11434649235474493285, 24415954842353912]), Fq::from_montgomery_limbs([8052773691804060961, 7894827066734284032, 17737200459541160653, 1344927881702280038]), Fq::from_montgomery_limbs([9288629788793402586, 2259376874925369448, 13217169487415398853, 539099117435770765]), Fq::from_montgomery_limbs([11829305752964125757, 10778200385642703226, 2095381984842221696, 365296429444826263]), Fq::from_montgomery_limbs([9209237328018148115, 9013177660724622161, 13411670809827118984, 1159740245409298491]), Fq::from_montgomery_limbs([1786760175787716883, 16585118128488698423, 3661827234912273881, 1175179421357105610]), Fq::from_montgomery_limbs([6997506992288193640, 3314349379260916067, 10669743096907430976, 828027530724672872]), Fq::from_montgomery_limbs([9727917081763370379, 12523860206965601712, 6438415234309761598, 578292727069385307]), Fq::from_montgomery_limbs([7017296967873341431, 5083670538613016079, 13450510072544819929, 553876772227031394]), Fq::from_montgomery_limbs([3579877764578944756, 17358359975581377230, 2902328015395623063, 1076553286270705854]), Fq::from_montgomery_limbs([8430375547150652021, 1001249403497996831, 16789953243695164761, 1344355087100203329]), Fq::from_montgomery_limbs([9209237328018148115, 9013177660724622161, 13411670809827118984, 1159740245409298491]), Fq::from_montgomery_limbs([2800053360411677182, 7739112841912438666, 4458443078052365313, 1221561517743072277]), Fq::from_montgomery_limbs([5714397546912390046, 7204578223640664713, 3369806468691410388, 19539807714888073]), Fq::from_montgomery_limbs([7912928165080095595, 10691173171385779887, 7900069818404182519, 558654216499734169]), Fq::from_montgomery_limbs([4722164372208948539, 6191995659471889704, 9488304077820150497, 383493821809394045]), Fq::from_montgomery_limbs([13756252569614172144, 10114182252140374927, 8424160399132869901, 370135544443278065]), Fq::from_montgomery_limbs([7922495546740583511, 13377932406425725078, 312087136472518954, 724215661521432074]), Fq::from_montgomery_limbs([527596723520651020, 15187839531048996200, 6255568353483246533, 170911683896477388]), Fq::from_montgomery_limbs([1786760175787716883, 16585118128488698423, 3661827234912273881, 1175179421357105610]), Fq::from_montgomery_limbs([5714397546912390046, 7204578223640664713, 3369806468691410388, 19539807714888073]), Fq::from_montgomery_limbs([11467623733094325177, 12601944683740404995, 14270804009154313170, 1283543454792166291]), Fq::from_montgomery_limbs([1591478553039085540, 13629203225225281079, 9223729349286412660, 541375501705678927]), Fq::from_montgomery_limbs([6308417298426862088, 11443735935349473316, 5741617995111411363, 1072746374115513684]), Fq::from_montgomery_limbs([8192890567029291618, 6189339163642963502, 10515708329663122411, 718287917303790275]), Fq::from_montgomery_limbs([14304988956035390969, 2978747834443270582, 211153190861140083, 1101825800236420991]), Fq::from_montgomery_limbs([1734565667097520919, 12020388067710193448, 6095663732563761512, 1138214739842689620]), Fq::from_montgomery_limbs([6997506992288193640, 3314349379260916067, 10669743096907430976, 828027530724672872]), Fq::from_montgomery_limbs([7912928165080095595, 10691173171385779887, 7900069818404182519, 558654216499734169]), Fq::from_montgomery_limbs([1591478553039085540, 13629203225225281079, 9223729349286412660, 541375501705678927]), Fq::from_montgomery_limbs([1183879673177082740, 4195985459140120089, 6602546398975040286, 268356784116832629])]), - M_hat_inverse: SquareMatrix::<7, 49>::new_from_known([Fq::from_montgomery_limbs([4596204885914937926, 7838695242625897787, 3035134948628881865, 1207227057562625259]), Fq::from_montgomery_limbs([15896440128761118173, 15649465122428497798, 4384954020081155217, 913236075158308182]), Fq::from_montgomery_limbs([2335397575999068166, 14422783505571319241, 2719190544357073120, 274885737548821162]), Fq::from_montgomery_limbs([9009029437947626511, 7346990291023997455, 3414440920242711508, 50729493538167678]), Fq::from_montgomery_limbs([1147572841630042462, 8929633407603160962, 14641836547291178689, 426104246454882272]), Fq::from_montgomery_limbs([17053865508971679549, 2198382506890441430, 11312636819879946010, 1106661992673439325]), Fq::from_montgomery_limbs([13854198271768011224, 4053309739918946052, 18433076019880982368, 615216866081782140]), Fq::from_montgomery_limbs([15896440128761118173, 15649465122428497798, 4384954020081155217, 913236075158308182]), Fq::from_montgomery_limbs([4761711418629517518, 591743220415883789, 2347216482122737487, 541885199414988935]), Fq::from_montgomery_limbs([16049706050976647208, 9176322874162797755, 12242590547654900654, 61012554895502211]), Fq::from_montgomery_limbs([10907149703911289876, 345335516406280141, 13671249158696272740, 1076200797284812494]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([7820919546658569809, 8474571377527450081, 15463257988737541409, 600187776405677822]), Fq::from_montgomery_limbs([17765856891579054878, 11653192174908829654, 4966200605019140816, 13151716642854399]), Fq::from_montgomery_limbs([2335397575999068166, 14422783505571319241, 2719190544357073120, 274885737548821162]), Fq::from_montgomery_limbs([16049706050976647208, 9176322874162797755, 12242590547654900654, 61012554895502211]), Fq::from_montgomery_limbs([13442108051579804680, 3187031622749351601, 18435466452818364440, 257424390549798158]), Fq::from_montgomery_limbs([14787872399840322022, 11612292071578382904, 2915446897265489403, 1027394734812832541]), Fq::from_montgomery_limbs([14650186278276933856, 11736505343490130034, 4478509448304020774, 790137565622286814]), Fq::from_montgomery_limbs([16227186307902919639, 13050765287152844350, 6672057872444298207, 1120660629979522345]), Fq::from_montgomery_limbs([17280730943809781377, 2101938472365641700, 2221542087098170284, 682975842437066220]), Fq::from_montgomery_limbs([9009029437947626511, 7346990291023997455, 3414440920242711508, 50729493538167678]), Fq::from_montgomery_limbs([10907149703911289876, 345335516406280141, 13671249158696272740, 1076200797284812494]), Fq::from_montgomery_limbs([14787872399840322022, 11612292071578382904, 2915446897265489403, 1027394734812832541]), Fq::from_montgomery_limbs([9754754145024164416, 9500194995930094065, 4605218223030367360, 489015282389927384]), Fq::from_montgomery_limbs([11235823697266068713, 9767911161281654263, 15004902496107301847, 1252504438181231825]), Fq::from_montgomery_limbs([773466991163756584, 6984379341355406564, 2865211391772182450, 1128797324971138943]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([1147572841630042462, 8929633407603160962, 14641836547291178689, 426104246454882272]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([14650186278276933856, 11736505343490130034, 4478509448304020774, 790137565622286814]), Fq::from_montgomery_limbs([11235823697266068713, 9767911161281654263, 15004902496107301847, 1252504438181231825]), Fq::from_montgomery_limbs([10750604789646168140, 372497979918419381, 10429606583776526343, 928966821232337907]), Fq::from_montgomery_limbs([10962493869149920375, 10887885654637674355, 384224715829329873, 165837155970255258]), Fq::from_montgomery_limbs([2645295168975782308, 13863838601458690618, 7409022743292405220, 617686796815916414]), Fq::from_montgomery_limbs([17053865508971679549, 2198382506890441430, 11312636819879946010, 1106661992673439325]), Fq::from_montgomery_limbs([7820919546658569809, 8474571377527450081, 15463257988737541409, 600187776405677822]), Fq::from_montgomery_limbs([16227186307902919639, 13050765287152844350, 6672057872444298207, 1120660629979522345]), Fq::from_montgomery_limbs([773466991163756584, 6984379341355406564, 2865211391772182450, 1128797324971138943]), Fq::from_montgomery_limbs([10962493869149920375, 10887885654637674355, 384224715829329873, 165837155970255258]), Fq::from_montgomery_limbs([17704196732594477900, 7529737242141985421, 3056083190610322131, 537754595320396000]), Fq::from_montgomery_limbs([4588045927327100104, 15273424236288740466, 3730020508107780990, 1184499396891674504]), Fq::from_montgomery_limbs([13854198271768011224, 4053309739918946052, 18433076019880982368, 615216866081782140]), Fq::from_montgomery_limbs([17765856891579054878, 11653192174908829654, 4966200605019140816, 13151716642854399]), Fq::from_montgomery_limbs([17280730943809781377, 2101938472365641700, 2221542087098170284, 682975842437066220]), Fq::from_montgomery_limbs([3783029764742972160, 8718337959668375608, 9493474458284681386, 1324609056502214356]), Fq::from_montgomery_limbs([2645295168975782308, 13863838601458690618, 7409022743292405220, 617686796815916414]), Fq::from_montgomery_limbs([4588045927327100104, 15273424236288740466, 3730020508107780990, 1184499396891674504]), Fq::from_montgomery_limbs([5513671693009890019, 13840477803572862779, 13148892977164251883, 530785029804846654])]), - M_00: Fq::from_montgomery_limbs([17721242321237835775, 11985636621509722110, 11478464757469040638, 960562638525520553]), - M_i: Matrix::<8, 8, 64>::new_from_known([Fq::from_montgomery_limbs([9015221291577245683, 8239323489949974514, 1646089257421115374, 958099254763297437]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6320288599439722802, 17139790906886685752, 15622446705354855394, 1250967766698858445]), Fq::from_montgomery_limbs([12907953951183108118, 570406863259453574, 9479663564103955646, 1023356057988386223]), Fq::from_montgomery_limbs([5445632916888334837, 1254961675994290676, 17739625680446876718, 887995330051968477]), Fq::from_montgomery_limbs([6322290143919737275, 6221802074515073157, 3956268074861890555, 1230594881276209560]), Fq::from_montgomery_limbs([6707360385690721071, 168555159922046132, 3944622502497320499, 871144945884010465]), Fq::from_montgomery_limbs([2037533433720590943, 11084683233172165964, 9053730132862546054, 793120143512682509]), Fq::from_montgomery_limbs([16034329588701802957, 3903236010590312092, 9048724434495743556, 974216030141738060]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12907953951183108118, 570406863259453574, 9479663564103955646, 1023356057988386223]), Fq::from_montgomery_limbs([2630356400630794821, 484400404306129097, 10294032504232056871, 1245743613753800727]), Fq::from_montgomery_limbs([7020374536790409354, 11449249974296852948, 11812715459389350230, 761793057268134936]), Fq::from_montgomery_limbs([14832891855204883256, 1120380609975889545, 13112310496604860424, 265468754987956357]), Fq::from_montgomery_limbs([1471871698735710625, 5066062283984961905, 18437666505161167766, 732132698348695885]), Fq::from_montgomery_limbs([12165164801578981607, 2595888614156384905, 3065973630931260883, 580278735590489736]), Fq::from_montgomery_limbs([14321853632102951979, 5605761176730605396, 4630454347263185176, 122758557320262262]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([5445632916888334837, 1254961675994290676, 17739625680446876718, 887995330051968477]), Fq::from_montgomery_limbs([7020374536790409354, 11449249974296852948, 11812715459389350230, 761793057268134936]), Fq::from_montgomery_limbs([8776438364931459725, 12817858402105398175, 11110959846851041399, 66365362687656724]), Fq::from_montgomery_limbs([8240747731577468633, 14565407531273622630, 3117214821926093855, 377503066268731506]), Fq::from_montgomery_limbs([3910521513192788403, 13982250796740762630, 7488541789654977578, 950543461716681145]), Fq::from_montgomery_limbs([13037154073613592925, 5935342861935913439, 15852552537899162249, 940304910644322576]), Fq::from_montgomery_limbs([6931234819087160937, 3778580043557980929, 15772931149205513556, 42782763261291533]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6322290143919737275, 6221802074515073157, 3956268074861890555, 1230594881276209560]), Fq::from_montgomery_limbs([14832891855204883256, 1120380609975889545, 13112310496604860424, 265468754987956357]), Fq::from_montgomery_limbs([8240747731577468633, 14565407531273622630, 3117214821926093855, 377503066268731506]), Fq::from_montgomery_limbs([11125067532471981344, 14191984257965181085, 12061981722855456559, 593208493053362841]), Fq::from_montgomery_limbs([12343763401003110605, 14101666204297852634, 12890733422632852105, 917529488625337921]), Fq::from_montgomery_limbs([12402063032118952752, 2700777936756282138, 16216549649819784559, 1155661828697936045]), Fq::from_montgomery_limbs([2194969812170857806, 13161078840371575175, 5264735936454844546, 101144700881461918]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6707360385690721071, 168555159922046132, 3944622502497320499, 871144945884010465]), Fq::from_montgomery_limbs([1471871698735710625, 5066062283984961905, 18437666505161167766, 732132698348695885]), Fq::from_montgomery_limbs([3910521513192788403, 13982250796740762630, 7488541789654977578, 950543461716681145]), Fq::from_montgomery_limbs([12343763401003110605, 14101666204297852634, 12890733422632852105, 917529488625337921]), Fq::from_montgomery_limbs([11359111242441949022, 11240352269459571893, 17263815313749644065, 781240072875924051]), Fq::from_montgomery_limbs([16712698548631210778, 8113828394758785535, 9984182942939561022, 781254146059533921]), Fq::from_montgomery_limbs([7404478796369705144, 1939616247903098428, 2043282094878258870, 67588237262069794]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2037533433720590943, 11084683233172165964, 9053730132862546054, 793120143512682509]), Fq::from_montgomery_limbs([12165164801578981607, 2595888614156384905, 3065973630931260883, 580278735590489736]), Fq::from_montgomery_limbs([13037154073613592925, 5935342861935913439, 15852552537899162249, 940304910644322576]), Fq::from_montgomery_limbs([12402063032118952752, 2700777936756282138, 16216549649819784559, 1155661828697936045]), Fq::from_montgomery_limbs([16712698548631210778, 8113828394758785535, 9984182942939561022, 781254146059533921]), Fq::from_montgomery_limbs([6959694198409880686, 10513484520296585955, 17245503495642767610, 326963768321955511]), Fq::from_montgomery_limbs([10751863449412314814, 12531617507536929183, 2333159255918151628, 108101348738232165]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16034329588701802957, 3903236010590312092, 9048724434495743556, 974216030141738060]), Fq::from_montgomery_limbs([14321853632102951979, 5605761176730605396, 4630454347263185176, 122758557320262262]), Fq::from_montgomery_limbs([6931234819087160937, 3778580043557980929, 15772931149205513556, 42782763261291533]), Fq::from_montgomery_limbs([2194969812170857806, 13161078840371575175, 5264735936454844546, 101144700881461918]), Fq::from_montgomery_limbs([7404478796369705144, 1939616247903098428, 2043282094878258870, 67588237262069794]), Fq::from_montgomery_limbs([10751863449412314814, 12531617507536929183, 2333159255918151628, 108101348738232165]), Fq::from_montgomery_limbs([8242539079403140188, 8061347952042345076, 11707135840504604934, 914785475508666052])]), - v_collection: [Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([17640631015407645126, 17416650484724036037, 14803487960933328666, 554882262980868625]), Fq::from_montgomery_limbs([10632745392742701465, 7191381972905833266, 10576427669223334706, 1037506184958051122]), Fq::from_montgomery_limbs([7989155441247042094, 18276457113184108543, 17999817914616464103, 943187440870955565]), Fq::from_montgomery_limbs([18204910156218979669, 16293041589642941780, 9975069610392864084, 1088801882579738168]), Fq::from_montgomery_limbs([15441359965645378481, 7022857083512140090, 11162758362666494739, 1108530997049617801]), Fq::from_montgomery_limbs([7802104352665277001, 1712233803072817444, 12180777293186749586, 1125441666595228915]), Fq::from_montgomery_limbs([7330330845985706257, 6947957132670498679, 9373711551562393463, 1140097580201425214])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([18366132767879360967, 5431013863214313926, 3325023203464288028, 747241129062195048]), Fq::from_montgomery_limbs([4861545468195100803, 11791803721085820360, 16861242526837808182, 587224779081284519]), Fq::from_montgomery_limbs([6038434302262732315, 17199494462234427620, 17847977008226730647, 613398622514363430]), Fq::from_montgomery_limbs([8422783269805610096, 16656220536572751252, 7918639979705401643, 170910085608382473]), Fq::from_montgomery_limbs([18349346982789927355, 8017591337915184637, 18372658176979362927, 927323834744911125]), Fq::from_montgomery_limbs([6098144161467281354, 2162126959782930019, 8016715582812993181, 87916415604842323]), Fq::from_montgomery_limbs([14926888907449900570, 16034226105739794058, 8242495446855270900, 170857479056428767])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([13761299995988853307, 10330765076738035315, 13655052507848964233, 121839220114831784]), Fq::from_montgomery_limbs([15369322242721768225, 7050142047224256972, 12643665775034470999, 1102328692521833676]), Fq::from_montgomery_limbs([10555474781715655116, 6656109843697517764, 16567476834724252290, 1315407115111807184]), Fq::from_montgomery_limbs([15635518385029844173, 579774923863089338, 4907175580968184975, 679471495325209728]), Fq::from_montgomery_limbs([11185461100085345821, 8221939874744266357, 12287775310123057539, 1019299127883999231]), Fq::from_montgomery_limbs([586274284242963056, 8310909834705600558, 3054222778649762639, 763190023338919332]), Fq::from_montgomery_limbs([6717490082866871699, 9561189803595277803, 2358146706687598339, 229707033421591253])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([9862704231385218313, 13914100249743202263, 10014223727046890158, 679200801234608014]), Fq::from_montgomery_limbs([16286005160576575401, 2766108936000922095, 13859049965904094985, 720362228683248654]), Fq::from_montgomery_limbs([18028696975939559798, 6945291324150110288, 3594371327059432745, 1256526022736975448]), Fq::from_montgomery_limbs([13724722228213474447, 17954541567374385206, 10748596771783277924, 116970063643881223]), Fq::from_montgomery_limbs([17627786090808150672, 7901620020601608720, 1877160764958626418, 756288000881176875]), Fq::from_montgomery_limbs([14537377980409294015, 18005737005152562388, 9571375812741383887, 59753059053707643]), Fq::from_montgomery_limbs([4228748937594043872, 11086846199995865064, 15359245871481193897, 1099589394616459299])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([6835681309479739469, 2522595035308448012, 13579423836020142879, 321430679545810677]), Fq::from_montgomery_limbs([8928134061485321773, 14157720579697729134, 10344780082168020995, 97202987142506800]), Fq::from_montgomery_limbs([3126697640027307204, 1153410184564297189, 4809813821719177551, 994774295722128937]), Fq::from_montgomery_limbs([3918576597698600036, 13183810862438807325, 15214887128855617985, 279159001700097111]), Fq::from_montgomery_limbs([2830967354854515654, 17469509170635724421, 8035672669498122237, 267629026497518109]), Fq::from_montgomery_limbs([13871567487914888086, 5246409741722402492, 16832389611931438025, 1295010963726258350]), Fq::from_montgomery_limbs([17057934674164606699, 6421519839681476555, 2956724044796119398, 327825682992218753])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([4795884052041907920, 14375534011696101577, 2427060550596560456, 393919458849239754]), Fq::from_montgomery_limbs([15372002461943753964, 11342165919824154367, 11980800855746001270, 994521975576249810]), Fq::from_montgomery_limbs([3093026885592381242, 16909708896875106142, 9191689902351332536, 192118286974103755]), Fq::from_montgomery_limbs([2545301077237922815, 15144706238324940883, 6113286606593174468, 372600161316484359]), Fq::from_montgomery_limbs([2142773713360590483, 4755608127774394592, 14813148169732966311, 917761966614679749]), Fq::from_montgomery_limbs([4228649950611283773, 11633437476481650378, 40335982213672820, 963989416626637070]), Fq::from_montgomery_limbs([7391565095119442761, 5231979613403440246, 15148609598356850747, 95369680580052342])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([6221242600163036024, 13151745595003222769, 1880070415953293074, 859483057557051135]), Fq::from_montgomery_limbs([4057704583061373110, 330438596431033553, 11138603368324646862, 567019942240333219]), Fq::from_montgomery_limbs([6808348652855723900, 16038145083514774712, 7335293401571608063, 1256860263027810296]), Fq::from_montgomery_limbs([14712597649859914536, 2461131389363589307, 14971367896336061978, 440886131765627826]), Fq::from_montgomery_limbs([12563821899625315748, 1397025790367362621, 11711011249975071041, 1326491445493487906]), Fq::from_montgomery_limbs([7386366618870533036, 17891650149672567880, 7623078793319051970, 896259535119079804]), Fq::from_montgomery_limbs([10076387373785417531, 11621404135443198278, 2342191148009104794, 1208570082728513479])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([15679839989875735864, 3094159736795405193, 8433247987399569527, 598394739716746812]), Fq::from_montgomery_limbs([13169926426306420693, 1494478164246339314, 1807871555080064306, 341871317105251652]), Fq::from_montgomery_limbs([8871477167695700102, 7124763693791718581, 9576781928097497051, 714519781637518717]), Fq::from_montgomery_limbs([5983131451216637528, 14746501237947100556, 5131581902376092495, 53578888100518755]), Fq::from_montgomery_limbs([4061768962354414816, 11864639021370326188, 865372274790703007, 960248048765553610]), Fq::from_montgomery_limbs([13741178490350281184, 16104064291813496481, 430569565272838614, 1002559943654640050]), Fq::from_montgomery_limbs([2394748621667543278, 9724971631453415812, 4137744279709050144, 1128204720227512009])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([8347131072359520901, 7051906710316929352, 16145803176151958291, 425602845445213918]), Fq::from_montgomery_limbs([1777783046051939958, 9344856863579469212, 15141578180236122558, 1282494716270035254]), Fq::from_montgomery_limbs([9034384578885080751, 4457232682759798992, 2752092198692805323, 133997596024339666]), Fq::from_montgomery_limbs([6632806707492790657, 4419466991289176034, 10545594397744340230, 225792487504094029]), Fq::from_montgomery_limbs([13666870638471858948, 6325954648727450515, 6820384268867641136, 650912658514216838]), Fq::from_montgomery_limbs([18425172866543397587, 460014089142918565, 13475177727189665478, 755199790640816277]), Fq::from_montgomery_limbs([17074816481639390245, 8326625026248068453, 11628221368426774047, 168403074861182097])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([6496117145112017285, 8108611305258852743, 1288333658986417240, 489166257449840915]), Fq::from_montgomery_limbs([5905164426314492425, 14726319284315803257, 15419119459033009106, 748785652021292365]), Fq::from_montgomery_limbs([2903900515980491508, 14518787377368638193, 5737950893394728457, 1246585555966129910]), Fq::from_montgomery_limbs([13545067403644787822, 12929589241462425919, 6328577959723156897, 669792805130642725]), Fq::from_montgomery_limbs([10880665937604410417, 12182942785008105675, 8043148962657686879, 114751567600998309]), Fq::from_montgomery_limbs([475884094757470315, 13519631230544868403, 15555278094421071668, 284046901452720062]), Fq::from_montgomery_limbs([4404185810772829111, 13082485550708084688, 4458404332519456617, 747118566938719314])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([9005422667436345080, 6610327294069915149, 3392047280994887983, 185928194404395622]), Fq::from_montgomery_limbs([5907489245706778002, 2611521107474717810, 15424563447378789128, 1081732924695236796]), Fq::from_montgomery_limbs([6936175948569238427, 16265819354303431672, 9296694820053549015, 380971488662375691]), Fq::from_montgomery_limbs([11847879878992849222, 17246157629192690467, 2240336221502957918, 551120206298529047]), Fq::from_montgomery_limbs([13322826606934505627, 11726197427344458839, 11800080869580456447, 426669602496174268]), Fq::from_montgomery_limbs([6217036164702465819, 14690910531871435703, 13161157531336562298, 732442567722820811]), Fq::from_montgomery_limbs([14882293327891629398, 9369498032959659338, 7000848696812799171, 754562041670533469])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([7595387151201254327, 16626796275200533088, 2940178911825115337, 1184031511121567741]), Fq::from_montgomery_limbs([9948362750111031958, 14209593175711129688, 8446364573948386189, 802006068920106393]), Fq::from_montgomery_limbs([15169311970095301438, 12318244252296365506, 11639105278755798079, 84817162733084173]), Fq::from_montgomery_limbs([5831579622220754273, 10846086049576885619, 15991974831220053526, 756084870377153501]), Fq::from_montgomery_limbs([4538407139413953048, 3210811593774606829, 7928892177512965493, 295438458271184500]), Fq::from_montgomery_limbs([16833512221632219759, 4464061448066183306, 13162091753490675863, 292236190186079508]), Fq::from_montgomery_limbs([13779800725609980259, 9773765625728017659, 15074810316420391540, 950783607166623145])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([15895706787288222123, 9777370406550782832, 1347824831892755594, 1241011767014366278]), Fq::from_montgomery_limbs([12826978362776209042, 10633709265050784734, 17957605540213546613, 887698438045779720]), Fq::from_montgomery_limbs([7324188878915493946, 6492479003127466111, 8377249725203128879, 1000161290003049779]), Fq::from_montgomery_limbs([6704086117324761110, 146265122731217307, 2383903051894120264, 719647807141165334]), Fq::from_montgomery_limbs([1940312057575972126, 17930067253838912265, 317360086895888872, 5748540581767140]), Fq::from_montgomery_limbs([17103257683729273147, 13931874259783487325, 11872224486078756015, 956814895668207498]), Fq::from_montgomery_limbs([13769500095117682353, 516850361598419166, 16964626273259476242, 769634211482580445])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([3113137472185380309, 3788943308088978270, 15570984136244536866, 64143465381601420]), Fq::from_montgomery_limbs([7162163846740423034, 17407158529676601980, 982523548091459495, 1241886141897586570]), Fq::from_montgomery_limbs([14248266967200521181, 12810010597713281838, 15956352259342376510, 1249991327654319042]), Fq::from_montgomery_limbs([14421471441198040024, 4052632755320875533, 10507979567878886533, 966126597683502788]), Fq::from_montgomery_limbs([1330169793100628257, 5902370011388045841, 4268141693837804182, 504954696237745802]), Fq::from_montgomery_limbs([12989224119893885561, 17234018500273188391, 10939008301878322098, 259903928118608299]), Fq::from_montgomery_limbs([10430146681254844704, 16501713083418526441, 1818813698196386223, 290604987547570674])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([2272958606081209500, 2462669223449072253, 9500254477224930595, 45443314528508583]), Fq::from_montgomery_limbs([15776657251710579335, 14822492561927322901, 3903750765721394200, 630182332308162068]), Fq::from_montgomery_limbs([12563868195165779174, 12561252953252587550, 11907364401269631108, 581676404653821486]), Fq::from_montgomery_limbs([148332194159159988, 10068425626588210986, 13535393921505334097, 153553395999465163]), Fq::from_montgomery_limbs([7747426768506042379, 7652171709845608793, 11069887529886935999, 60205371617013159]), Fq::from_montgomery_limbs([9292570341502960523, 3236193786725371597, 8898130554136882239, 1009410450149925646]), Fq::from_montgomery_limbs([12885815634665358426, 15963150787962414249, 4369817253063661209, 642948406974549063])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([1380867230584918716, 16725144872260989882, 11444322500251449972, 837022230218511427]), Fq::from_montgomery_limbs([1087920425360181417, 17141257576042242544, 8987292985620878561, 1110305532217600753]), Fq::from_montgomery_limbs([10359964772262918650, 10077460265989495047, 17578499003187392916, 757342367774183991]), Fq::from_montgomery_limbs([2779779035056260202, 2282975003625087828, 1919400866622348845, 493318954648288095]), Fq::from_montgomery_limbs([15672164960009522373, 3256607523370073938, 13852207222752867333, 1244522698781289416]), Fq::from_montgomery_limbs([12874545038411867774, 1217025423748364582, 75869870772488332, 1001217245879206186]), Fq::from_montgomery_limbs([8523257600072604774, 8621165006673159831, 1464388999950649637, 1217963817687697670])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([15922812187951378322, 4516460162368536866, 15018766830043386765, 1340613465456337965]), Fq::from_montgomery_limbs([287441026936003136, 14764192345714853717, 4173276030750185119, 472111033963352598]), Fq::from_montgomery_limbs([10839733167051473961, 3454260583859678864, 11304905847738494430, 650946296327920383]), Fq::from_montgomery_limbs([9515448149018827481, 3488032113770392732, 10593726245432275549, 583635792309485522]), Fq::from_montgomery_limbs([2742448600840811735, 6652758193289359848, 9635320418424938172, 967821689260084870]), Fq::from_montgomery_limbs([9881468678921411834, 11537438085600848038, 7216253876764370660, 1304070984061260617]), Fq::from_montgomery_limbs([6196769084394513175, 1271040910625745125, 11073763102896512393, 1165794523446068715])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([15799597978241847363, 12818531158251383624, 6963429972659041410, 397194962489148197]), Fq::from_montgomery_limbs([138391674938830183, 6888521073413350790, 13718840433311127770, 1101538822720967029]), Fq::from_montgomery_limbs([12684981053383903956, 5500073381157750545, 4169486943568405011, 879134225324190092]), Fq::from_montgomery_limbs([464851715795247463, 2927900015464510347, 17346267830876442053, 1137028262870600951]), Fq::from_montgomery_limbs([1966072756669882436, 14267740345733608423, 3868025407329923728, 1329300268340841458]), Fq::from_montgomery_limbs([12791556832852048085, 7187847328998161782, 6410129678700860221, 1141843742471101195]), Fq::from_montgomery_limbs([17394082241710727109, 3925707544410201182, 15631236622778680461, 867359934041458160])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([12197981561714622691, 3447558190007550222, 8731482567404865792, 504033851083789168]), Fq::from_montgomery_limbs([15548011549070215821, 18176746913742005334, 6759691930131684149, 748826448544702472]), Fq::from_montgomery_limbs([14426381672075599127, 6754779155763548400, 1569326308679565884, 301254674498691116]), Fq::from_montgomery_limbs([1190926793578469751, 4569874070454135204, 15349066761719847213, 1143729593598143496]), Fq::from_montgomery_limbs([4377698380788322951, 626231241120536954, 5782570196326664329, 794203002404066761]), Fq::from_montgomery_limbs([18203023968026598600, 769509082182406304, 14347905833288757784, 849309248009120890]), Fq::from_montgomery_limbs([6219667569923491560, 12993749535175636460, 9317843769426981121, 466063065647080758])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([12360205003642410439, 12233377474426101645, 8749241487473360725, 771733806369229100]), Fq::from_montgomery_limbs([12909744147344161535, 15270140525914393786, 958053852923168614, 1122903083941798107]), Fq::from_montgomery_limbs([11512594517381251244, 7788994558197263271, 17789727628017887833, 604964920168437514]), Fq::from_montgomery_limbs([11365008776320664479, 7674849678441687585, 10947191902817323894, 745598673291635479]), Fq::from_montgomery_limbs([9298337976025138670, 3504219772802793091, 18423486933153538231, 674863471944898182]), Fq::from_montgomery_limbs([10037370553997808960, 5643541321548796784, 3954322339884102888, 1116686823797890292]), Fq::from_montgomery_limbs([9151115627925470056, 1080688967380275155, 15991630648226528878, 1130423917661403285])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([16294982486276945283, 7049820508618491066, 8145571059898393342, 186002704339584638]), Fq::from_montgomery_limbs([755176559839955182, 11156178401444222993, 14456074258881310686, 278477091367678088]), Fq::from_montgomery_limbs([1257685548905109784, 5141440235439936072, 17862579642779035136, 330137635933850138]), Fq::from_montgomery_limbs([7830781886086349569, 12605497826381107847, 6483908192271317597, 742032532267494998]), Fq::from_montgomery_limbs([15889009530646425854, 4873730462912310136, 2661766248464352916, 886629163939946863]), Fq::from_montgomery_limbs([12291205541312705254, 7759245016766434277, 14282726477924298523, 275206715444074183]), Fq::from_montgomery_limbs([7015277851946876128, 6540146872039720132, 3413400018095950201, 488630649619127768])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([8080067703614789529, 14335022802712765520, 12181558540579879368, 1181883134308686818]), Fq::from_montgomery_limbs([3930610870091700987, 11870595227272460342, 5614691549969018824, 1036838548873476989]), Fq::from_montgomery_limbs([15116537084696928201, 6562302783432438956, 8446888808137423003, 1165521566881319341]), Fq::from_montgomery_limbs([7622363474306732593, 14018499983613194146, 5504535021523794239, 1156251508187455677]), Fq::from_montgomery_limbs([18353812883604490408, 7863175561039540930, 16157508248448358210, 295160799461001215]), Fq::from_montgomery_limbs([9630152100811825815, 18335618989479732132, 8847214215895375728, 938895491334142608]), Fq::from_montgomery_limbs([13116080893996470839, 13627909126954009780, 15760064020863415616, 884515223942721558])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([6687780439253411478, 6719196503388333019, 88771745794551678, 987619641692746386]), Fq::from_montgomery_limbs([18227317062064988196, 14045861136043637767, 16184554390694852575, 168316121892514264]), Fq::from_montgomery_limbs([2567020624281662578, 12408201210305429297, 15172611508502121839, 184308211509770511]), Fq::from_montgomery_limbs([6504349685450813046, 6151032549024957176, 8446915662866336279, 721911887099189465]), Fq::from_montgomery_limbs([3337661731072526341, 2993440831960528581, 1509729075929391927, 478329275350342603]), Fq::from_montgomery_limbs([1009230922039257241, 6930789170818330480, 4189309447677808153, 116099938331986078]), Fq::from_montgomery_limbs([11734050699831527761, 10637489645393719148, 526453959140559372, 879302010498683200])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([4873204063755775221, 9933480403362446589, 9949453296663390065, 246028972103247826]), Fq::from_montgomery_limbs([1486515864865111240, 8186666825731582288, 17298579416284146352, 75432580959795592]), Fq::from_montgomery_limbs([505624159752585300, 400192717675446053, 16830576854563029465, 1083591845791403649]), Fq::from_montgomery_limbs([15707645648143644435, 15104101221834649015, 2714910978190477603, 1152442812583011873]), Fq::from_montgomery_limbs([13680539759561187051, 166623071797346207, 14072328976002035503, 1262049047131890020]), Fq::from_montgomery_limbs([1997216355444588659, 4362151030955817495, 4119100627602964220, 86616090171999332]), Fq::from_montgomery_limbs([2511307420156057573, 14546073810053310617, 2740719298105876931, 1306803605810669667])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([9796594921607316066, 9046940149281062534, 3066668479453506525, 629717731494457650]), Fq::from_montgomery_limbs([15245080183700001743, 17772522498139932944, 1303200707700973869, 1321448515508953860]), Fq::from_montgomery_limbs([15382852889694635458, 13258286043643865801, 9129565020842704924, 647265428745294973]), Fq::from_montgomery_limbs([406339679439528630, 358526789424126981, 15360185281241795369, 402771395127408535]), Fq::from_montgomery_limbs([14729795014613647379, 6659603767330364601, 10382867237853880917, 983014168589450240]), Fq::from_montgomery_limbs([130913533882362207, 3464497722457480940, 6174897712775413536, 362284933576221116]), Fq::from_montgomery_limbs([6802705157024058052, 13442544871481896094, 13780491571272760495, 909644424511448796])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([15361452699552249664, 9640740743000109947, 5568737378741199451, 962844949024683508]), Fq::from_montgomery_limbs([459261181401017545, 7171449908290213843, 15871949118083492196, 158962359341824787]), Fq::from_montgomery_limbs([7906547241546612427, 7911718846541029411, 14951976648354808013, 421942213347946833]), Fq::from_montgomery_limbs([11183093321955941025, 11064782095852757040, 17028937525080502941, 84626144143427215]), Fq::from_montgomery_limbs([15224853022182992564, 6262171785917223470, 16177655818423871790, 1014568265658824394]), Fq::from_montgomery_limbs([625719919361420446, 8380808592474630812, 3431067771421433694, 687333698000967202]), Fq::from_montgomery_limbs([16024186533956349632, 6397405785318083633, 15989828043790400414, 850765743467676249])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([16821206357298616469, 1130392039725774709, 5626389420189454642, 1118339463429080277]), Fq::from_montgomery_limbs([8638502030638568937, 14913248685358382503, 2067471807256194154, 1100154439569300281]), Fq::from_montgomery_limbs([17564526714798056567, 2679133728209391057, 12485118550630518387, 962529009983964522]), Fq::from_montgomery_limbs([4671481911068696338, 11211404871059653651, 4714104003967750529, 460522700989518506]), Fq::from_montgomery_limbs([6601065644493764993, 6108401876661130452, 518511813649845646, 611513774682652448]), Fq::from_montgomery_limbs([2861830270848819795, 16356361265808876600, 12810879004275814176, 1286972374050895235]), Fq::from_montgomery_limbs([15194368129140163866, 4422109454732341537, 16494227980417936974, 290982210272018089])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([17007536869668539214, 3870339684122566773, 7418389053554657334, 263511272051190454]), Fq::from_montgomery_limbs([12410612082473707857, 4040398757796296521, 16094020059960359234, 939075584469470040]), Fq::from_montgomery_limbs([7418236128585187557, 15691596850766474049, 4839121991874976767, 1173030423683112566]), Fq::from_montgomery_limbs([5215564176166340124, 2655381196051933641, 6045374250672288630, 176416756249057657]), Fq::from_montgomery_limbs([13952195320089654608, 13938861125107555897, 13572960470464709581, 247820705708880751]), Fq::from_montgomery_limbs([7397318582807137181, 18043760894393149278, 14776480882092071507, 1134492376276011511]), Fq::from_montgomery_limbs([10024735062566598040, 5074414902312726054, 16541770110513564624, 1319392307629355494])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([17701692352398604469, 12227868835058163041, 6355645072062803626, 46662470597422118]), Fq::from_montgomery_limbs([17486353498011500258, 14688387905134443671, 86673003791736603, 334193962485781999]), Fq::from_montgomery_limbs([2725938978570184818, 12538279414757715369, 4423739824876634382, 990960136859773111]), Fq::from_montgomery_limbs([1658418413165666717, 4481948955101880251, 2380234418157645031, 242453692938449648]), Fq::from_montgomery_limbs([16462799862547279938, 15860491361132810167, 17855590817263886803, 566253932393246465]), Fq::from_montgomery_limbs([7795866114233701913, 671818567137775288, 8587656269292170703, 1248608466500904131]), Fq::from_montgomery_limbs([12734974453986836356, 13876952892523324606, 8958492656376686082, 1219220119207244562])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([16939094048589357804, 27828887622580244, 17879324893769825916, 1323982021311509582]), Fq::from_montgomery_limbs([3829148264852223810, 16344601064097516632, 17405856957400469367, 1015406940125315334]), Fq::from_montgomery_limbs([2496078501178333445, 3431033003985481851, 18046940389757892591, 78803126847324668]), Fq::from_montgomery_limbs([10354574228107355459, 2956204224517963071, 4281810991966937657, 773005109651151512]), Fq::from_montgomery_limbs([11661373254033173032, 7617994408757678472, 3818523458153749994, 1124211529831618075]), Fq::from_montgomery_limbs([5343527255304572547, 18057091451537453565, 7219465431491887651, 438777407253439449]), Fq::from_montgomery_limbs([6944386246740202781, 15457528402087694028, 3684425466632772887, 516255567451219667])]), Matrix::<1, 7, 7>::new_from_known([Fq::from_montgomery_limbs([11265451120049686448, 17733431402661201252, 10181100791013355567, 1222168459125423207]), Fq::from_montgomery_limbs([16541130910067039592, 8550248424255720611, 5388592089365012797, 401807388479450663]), Fq::from_montgomery_limbs([15535862948076515909, 14246335147027067446, 3440553300570031637, 1140798916603065405]), Fq::from_montgomery_limbs([181454369079184993, 10259998444066142751, 13378833995981646023, 1233479771041134216]), Fq::from_montgomery_limbs([16855179079358889281, 15202871199402424660, 10704979988227736970, 1092640973189828568]), Fq::from_montgomery_limbs([8641652447153871125, 14767053670343766852, 14349039701716536407, 776309354634057048]), Fq::from_montgomery_limbs([16709348381005515895, 522436120289473263, 2848448538858947951, 930729981926185853])])], - w_hat_collection: [Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([5469465372454405746, 11693688927749785195, 9284229770381589387, 263916402201309764]), Fq::from_montgomery_limbs([8025142443496737775, 1611073224873590596, 1595200312703520851, 268362793599128279]), Fq::from_montgomery_limbs([2646197433325367530, 3327161674116363870, 17523969835882673765, 1224872920276084181]), Fq::from_montgomery_limbs([3531022552160069605, 1044916798369741293, 13484540382795405112, 975392012720575741]), Fq::from_montgomery_limbs([3532672362950129848, 13232567668052949956, 3949082925084889589, 1169300250855119928]), Fq::from_montgomery_limbs([17405909644706202533, 9068195655028130334, 4993737853698066182, 760630245260613434]), Fq::from_montgomery_limbs([10760096219897954109, 15819961273994906871, 12000866060961275644, 494051747708222359])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([6362811837083607038, 10112120774028974554, 18223478424715278594, 334017453759956923]), Fq::from_montgomery_limbs([9425287269899366801, 11550170751949156528, 13535057945185910331, 481928711879823346]), Fq::from_montgomery_limbs([17472259370242997056, 5455690506444253075, 8901482994501262481, 216965978934341710]), Fq::from_montgomery_limbs([6461374808168440859, 2522061882145442234, 15960549034903032234, 172640120507478914]), Fq::from_montgomery_limbs([15948529219279584260, 15982605346874278694, 6269535640895470052, 598935737770408401]), Fq::from_montgomery_limbs([6387843144535167444, 3817387412721348785, 8453759171668596794, 249153266075439378]), Fq::from_montgomery_limbs([12733356128673768262, 1719659461140646111, 6773786044742649854, 1187765335723023490])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([13381096107094038201, 17813208526318089114, 18335536409132991824, 339697501389957039]), Fq::from_montgomery_limbs([17742161265183589279, 16788867255988109560, 14412857631192854758, 241525962952821929]), Fq::from_montgomery_limbs([3132656462108501803, 7337059831094147936, 10405916960575845901, 228104793330536468]), Fq::from_montgomery_limbs([4603265731852134279, 5399214122633296191, 8344043762552329652, 985455486033881462]), Fq::from_montgomery_limbs([14183899592653698860, 2177269342994828180, 10884678024220653483, 217447665355687992]), Fq::from_montgomery_limbs([11323936221359713158, 3341391736943984982, 17508560691141182274, 13239895022264913]), Fq::from_montgomery_limbs([13840945524485292215, 9974520753931283863, 4195523720400973895, 762227204403897594])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([4114179516470424298, 6425976053490693203, 12882959905974456947, 110103675307258331]), Fq::from_montgomery_limbs([15116210321604905525, 4118549106744296512, 3828886987178664227, 25697701772294022]), Fq::from_montgomery_limbs([17140438063675080897, 14878172760305139023, 16025135762152951507, 855206538655380046]), Fq::from_montgomery_limbs([10902652921411376407, 298732053043081440, 3474200546567636561, 73249755607734230]), Fq::from_montgomery_limbs([10553805817393106605, 11201074828085121396, 245273431044608348, 1118444153373328294]), Fq::from_montgomery_limbs([10914295885365195477, 9781502968861552189, 3016024785085649390, 1070566622248381309]), Fq::from_montgomery_limbs([17207023773498274582, 16270409020606599297, 15615674408609362833, 496415543408113636])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([12908589501999937487, 8065526495594728145, 14801981742319743709, 275346991162297736]), Fq::from_montgomery_limbs([17950935244956210974, 2150016307817314195, 16459867286579284659, 1042519399748946084]), Fq::from_montgomery_limbs([17900103050404502082, 14452186078281849672, 6480606341801761206, 622530813027865777]), Fq::from_montgomery_limbs([6659043465579778142, 5257478652828025077, 4476708827204863480, 16044674601944326]), Fq::from_montgomery_limbs([12982211781831995222, 12049124325752315255, 8705698258631367529, 1297634030024262944]), Fq::from_montgomery_limbs([6491213021781179190, 6621864740150572837, 16900492784527502379, 1222186981051134852]), Fq::from_montgomery_limbs([10406390218848689011, 15713870170786523261, 10757974052401463167, 1094311561986616580])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([7587047764889575280, 11453570134345482138, 6685160859155170229, 1173043895898907255]), Fq::from_montgomery_limbs([16754290437895255736, 9337309604462582506, 12206937090776739366, 420058562194519310]), Fq::from_montgomery_limbs([6762379518159147694, 8708770658919355547, 10850018038610162125, 1008085848049838570]), Fq::from_montgomery_limbs([13364112208667503342, 15694121621742726571, 10880035211673377855, 373642360429768529]), Fq::from_montgomery_limbs([2270999049018193688, 1120874468185376800, 411758025544146420, 1286339318101647584]), Fq::from_montgomery_limbs([6487825500972649335, 16454995602857338429, 5467561124775466727, 878704090415683008]), Fq::from_montgomery_limbs([1065155450424764553, 12374494253224172277, 8660000041795033471, 1111585064452242609])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([13207693125029693018, 4845337225517968099, 6777888238547968314, 1213784418907181141]), Fq::from_montgomery_limbs([8840475980926169942, 2439983533649319439, 10722568534952104178, 237040204857642763]), Fq::from_montgomery_limbs([12845192406743600306, 2989732167685602396, 9737375858921653666, 1230697363927166390]), Fq::from_montgomery_limbs([17347381872588777362, 13861116144606039805, 13092379011701123650, 764219716687899335]), Fq::from_montgomery_limbs([17560394342108123527, 2417597080550067173, 4892519055479234860, 41147728874013821]), Fq::from_montgomery_limbs([16525591378009204013, 15575464991459515509, 8422968616365174468, 411199147172891757]), Fq::from_montgomery_limbs([2381387149440902461, 5412036122050682991, 13528312040883572709, 906698787086289152])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([3906793572005745013, 18158346260651031144, 13885155522309058406, 81682927312739464]), Fq::from_montgomery_limbs([11556601788249882111, 16294603434168644341, 3233905800589936432, 205935519984731]), Fq::from_montgomery_limbs([15060956636956141748, 14545891040349678052, 11359264221189720465, 356824974507480378]), Fq::from_montgomery_limbs([13651037643855144634, 9057349283398801990, 11128939939991098829, 339192257850626331]), Fq::from_montgomery_limbs([13297032679166497156, 9615759066125111838, 17802636590285232697, 561508163130847528]), Fq::from_montgomery_limbs([8397658199708546603, 7714753189153428100, 7790178778963243461, 185139104215370464]), Fq::from_montgomery_limbs([2180790926999539040, 13412426570621087300, 11981287146222961423, 639288905678439923])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([14052035671409641250, 13059764049401289819, 11971569074865081653, 1150074447408905206]), Fq::from_montgomery_limbs([9430708294750522894, 10157980309621419039, 15263989057722108309, 986177323832836397]), Fq::from_montgomery_limbs([16901845294627087710, 3489277370587647922, 16697435307791475526, 77304496269930872]), Fq::from_montgomery_limbs([11082416581543669906, 10393162674600623371, 3285406343096341615, 1301030845466123760]), Fq::from_montgomery_limbs([18004954247480805141, 5840089398123238351, 10933632362911021710, 691842568234993272]), Fq::from_montgomery_limbs([17084441454288473640, 2235549442526480819, 4281084601663253516, 854500520628530615]), Fq::from_montgomery_limbs([15995978179451110635, 5254996480963543781, 12228168137501357375, 768298814850744789])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([14897923782972976882, 14769556083418318998, 1736582590048574781, 834637190815349022]), Fq::from_montgomery_limbs([15951362473351174286, 7550580364442366310, 1142582367377712360, 493901798774432186]), Fq::from_montgomery_limbs([6843713892592087790, 17187186375181169829, 2346758743517403254, 440860120126405528]), Fq::from_montgomery_limbs([16233685001159101924, 3591097020136681981, 3308092724991209243, 753631765436882275]), Fq::from_montgomery_limbs([12817371395153180792, 11781447572225130349, 6186298687319142696, 3684689165947228]), Fq::from_montgomery_limbs([373243522249877820, 14362378102133706173, 11334127490376039043, 1029386563565171794]), Fq::from_montgomery_limbs([3320051586177558481, 3693313581776176503, 4243258718797155237, 280296683627599109])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([15777714567664176983, 13315644392893971158, 17663595314793470728, 277994346352588461]), Fq::from_montgomery_limbs([10698748229571229513, 4993514528007275782, 9851470184989070944, 486473547501834583]), Fq::from_montgomery_limbs([15731541659238915573, 10580160097474154328, 14072730437229004460, 541485168141790138]), Fq::from_montgomery_limbs([3621838382408245781, 5140837518507686846, 692462686779552266, 1071238232671920069]), Fq::from_montgomery_limbs([16903035807706989718, 16402342976729397848, 6638418596135594138, 766006849863633370]), Fq::from_montgomery_limbs([3391835462656069558, 8478240763735883610, 6583767175704093831, 605702159954668519]), Fq::from_montgomery_limbs([13153440956937332187, 8778062398439311613, 14496687227146002795, 1184865635693926839])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([5492025723621450587, 4802310335533070821, 5103778166610184416, 1237824309223979752]), Fq::from_montgomery_limbs([13230781860208750726, 13444089818089484139, 17921412814723519524, 1222680843018701540]), Fq::from_montgomery_limbs([6469994574006187252, 9454411230540098121, 347262197325431191, 486705196263913773]), Fq::from_montgomery_limbs([3947674970632735265, 2916300977963946491, 6881904307166023017, 457112286806257099]), Fq::from_montgomery_limbs([8734203063029639947, 9235030054635977911, 17117573327238268274, 1336943205846791314]), Fq::from_montgomery_limbs([14915061407614767729, 5343187615398945512, 5552119928369165945, 230612833250200287]), Fq::from_montgomery_limbs([15343760251811669074, 11849716817931855852, 12235003752862513196, 1092174591577707855])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([16055670419025007879, 10167255563356161134, 5873677174484181331, 1119183194058634412]), Fq::from_montgomery_limbs([6545073505115712765, 12208880957985144024, 2413898051352165752, 200177087583496979]), Fq::from_montgomery_limbs([10675772825457541870, 13221200307080776964, 8360161479127911800, 166239764386669819]), Fq::from_montgomery_limbs([2006419824145230446, 1298290087846863922, 11954724771700273308, 1258575857924774921]), Fq::from_montgomery_limbs([5182647705377916601, 12490693483304324120, 16433633239279713593, 95750642123415707]), Fq::from_montgomery_limbs([95333990082317168, 17157473840728451869, 10012571168547117601, 89162384671094023]), Fq::from_montgomery_limbs([4909644498074356100, 4736187679400324044, 5882012018493447769, 1092049061252631253])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([7311109856180655396, 11772066066061778775, 4758323204662324777, 424401521788398695]), Fq::from_montgomery_limbs([10327551942056000767, 7896891757351259654, 5415141459879741043, 970729526627356745]), Fq::from_montgomery_limbs([16598021919990022911, 4748198554306289116, 17393884082489388120, 1042289367721564407]), Fq::from_montgomery_limbs([6071815438135838764, 6957160250256416369, 5727172448350823478, 363080876294209892]), Fq::from_montgomery_limbs([9289142807381535883, 17159982138314567248, 17888157697874972247, 525936327365438813]), Fq::from_montgomery_limbs([13845673834923418042, 3021171551531346231, 6196055431827427575, 879039969582851499]), Fq::from_montgomery_limbs([5868202154697212122, 13487005442942356371, 16163257120298149093, 656445568990681140])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([6021369790491535593, 2415914828808962567, 8804789562076458409, 141257607088107152]), Fq::from_montgomery_limbs([8888538666372726960, 417693810472292690, 6625260792856360214, 48639855527887045]), Fq::from_montgomery_limbs([6477686476345016713, 5099365493188187874, 9710843539546247353, 356644031678310872]), Fq::from_montgomery_limbs([514050899336931730, 1305432265166896997, 3022676376566559511, 992533360610514607]), Fq::from_montgomery_limbs([3586775418789355531, 9516764397514990497, 13077440505677103078, 1193605133897764836]), Fq::from_montgomery_limbs([11915336245727353796, 3787026284924392313, 9686187959466848805, 331336880299973516]), Fq::from_montgomery_limbs([13079652964588155522, 3686330961737298646, 12410090506639101095, 1254304946836077906])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([14841602521644800285, 9707581858559806753, 8194272850889842673, 1175777861699186223]), Fq::from_montgomery_limbs([8340457880130547197, 17733479127111148650, 9935013927746385786, 727641041410784864]), Fq::from_montgomery_limbs([15762625424586722564, 3435382265052399320, 8159926067386473340, 197998409655179296]), Fq::from_montgomery_limbs([8605915918798970675, 13692084072552856212, 4328810091072359910, 868588572376767645]), Fq::from_montgomery_limbs([1361081942051675201, 15249716130118278159, 2121941051566676057, 559576702023081922]), Fq::from_montgomery_limbs([10752810451997705936, 2862464874834320603, 10309748098106940300, 1304236557076849780]), Fq::from_montgomery_limbs([2835871431608154484, 1749514314752450621, 2725234542965358215, 1201694229063035252])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([1073940549267563537, 6847045449574399581, 17756819714770896582, 1117463338790312145]), Fq::from_montgomery_limbs([12704094153865092665, 8539050408973245584, 17734788789994913591, 929238621728331350]), Fq::from_montgomery_limbs([10082772236499648827, 15108304350645714070, 3086595294879967436, 1200387991311725607]), Fq::from_montgomery_limbs([5047622605931054175, 7557906648527048263, 9624095609160422424, 45506591031030909]), Fq::from_montgomery_limbs([6965550813182250949, 565066047981282920, 13462964114732145360, 980356066902323608]), Fq::from_montgomery_limbs([15558299170349086309, 1286346204199469533, 3574858446200038472, 851991524979889708]), Fq::from_montgomery_limbs([7325586067383897002, 10233684635542340023, 17557031856919477181, 132029230490414274])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([7217923862445368663, 3794612520606418012, 8670181285195573375, 240971390392704685]), Fq::from_montgomery_limbs([537441915444801171, 3014981172602304732, 1479722163959615169, 155749091741220885]), Fq::from_montgomery_limbs([13062793399299583557, 1159027774347651884, 2336679478816355142, 270200510125259051]), Fq::from_montgomery_limbs([3831694067573543757, 10964370664526245902, 4087998121879874921, 905965084930019006]), Fq::from_montgomery_limbs([13194259065052094927, 388722439697642959, 178624285496351497, 578824842066706531]), Fq::from_montgomery_limbs([17948259725763227950, 9014484167981796209, 6107081279184176814, 69534426400404264]), Fq::from_montgomery_limbs([7978550262967360739, 7491565367832202367, 4365729291374404994, 1335365781615388178])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([10669459440663038789, 6552676677342008487, 13316372054996453680, 550925049999738916]), Fq::from_montgomery_limbs([4419333495078684322, 6927538080001000341, 2225108594758156053, 1079053614093719540]), Fq::from_montgomery_limbs([1972675078636948291, 12089663092664065043, 17766574022138625521, 121432615644490431]), Fq::from_montgomery_limbs([1053520141057629369, 10770912132989963882, 1148187868111152786, 707938827427743885]), Fq::from_montgomery_limbs([3260322753636284964, 10729835216415125135, 716444025392599556, 690504199610876560]), Fq::from_montgomery_limbs([6934370135811844333, 6301658833825444793, 4848235658034124485, 472091301484588447]), Fq::from_montgomery_limbs([9777643377073268806, 791842489813847254, 12448150674843197239, 458910758561278370])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([15803810666230694733, 17547487450377911929, 11906139405746854533, 825285431509255503]), Fq::from_montgomery_limbs([16600353337473024459, 1886864376737549006, 616311009164692973, 639902607392049032]), Fq::from_montgomery_limbs([1680268521087434801, 1091097160854707765, 18087803601592847532, 572438372434779394]), Fq::from_montgomery_limbs([13425154509660903739, 7155042440442144058, 5484293510771639701, 440694050533320954]), Fq::from_montgomery_limbs([18374411341880395201, 14499066397809595914, 13606711309161552316, 988627169135416549]), Fq::from_montgomery_limbs([2227485226860398923, 6037771840516072237, 10092335873046301438, 263890669231622026]), Fq::from_montgomery_limbs([16396442279804673220, 11758563075897600330, 14728620288909029404, 1009629620490761817])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([17746049445618651584, 15474250106095074477, 6808865525843107141, 252069263355480366]), Fq::from_montgomery_limbs([10094119795803932244, 10978354614679659751, 7451382830965148493, 1131617137883762978]), Fq::from_montgomery_limbs([16463020271793267367, 16484453755363327531, 16299428051085732734, 1215317962997421603]), Fq::from_montgomery_limbs([222141886324808295, 13928396678279854231, 10143359980064533818, 815662865945589973]), Fq::from_montgomery_limbs([12231656940181472813, 6572412520702222123, 12613052303172694748, 266113525618574574]), Fq::from_montgomery_limbs([988110300489242272, 2246797931487708434, 10572926100714461647, 903118853801541805]), Fq::from_montgomery_limbs([530795899436597525, 8521163943052335338, 8151289800410686217, 36252124276088895])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([15950738796712300438, 5211784799364900458, 10872161777257884476, 622500837165264302]), Fq::from_montgomery_limbs([1796299668914971469, 10069069742410689124, 17398930418864211639, 571074796095573997]), Fq::from_montgomery_limbs([17415629526903541572, 60522099572337001, 7357276421993594658, 67139681069623750]), Fq::from_montgomery_limbs([3150476614427182634, 11400695529363767640, 9974085938634932190, 201799321821634924]), Fq::from_montgomery_limbs([17211147489720667761, 15454125189814636772, 1785683860014593630, 1234545901167080662]), Fq::from_montgomery_limbs([12917754021603623789, 10145571812631521550, 5237021007548635344, 113519696768852825]), Fq::from_montgomery_limbs([15503258828146475946, 914788767927389955, 8850539145480636682, 452504293017031100])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([3745554364046936255, 4597306622888789154, 5979651250338667136, 1238385628454513051]), Fq::from_montgomery_limbs([3776630884323931547, 3549782146440747750, 5508785071859620867, 701959603932551327]), Fq::from_montgomery_limbs([15669417982403128442, 4987063011318496848, 2675129774208819610, 752856218864954922]), Fq::from_montgomery_limbs([12384169795306075140, 13266521557806758758, 8976316392650036414, 779369456063978984]), Fq::from_montgomery_limbs([7882432423342926513, 17205292058596297059, 11479846445566224721, 1260089851413577942]), Fq::from_montgomery_limbs([14020835325904272518, 10352766579517264043, 15417820050597494655, 621361945178146722]), Fq::from_montgomery_limbs([17051687952810193326, 6871472877919148363, 3489400199188897362, 687766677359196782])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([17382705588788402853, 4598916697035859633, 4518832565581736311, 653080619696360531]), Fq::from_montgomery_limbs([2250500707327888710, 8472537755265510597, 8234912680399854173, 435433220178846885]), Fq::from_montgomery_limbs([11580178681277497490, 5498607256285409706, 4135785859002967214, 1124489661838811902]), Fq::from_montgomery_limbs([17779714097123614458, 8699423459123996923, 15631484148488778752, 909516986337557641]), Fq::from_montgomery_limbs([18163751795979980990, 11867922209368440763, 10515761459427034219, 1332994349752029313]), Fq::from_montgomery_limbs([6467500727988715108, 9306282235622577642, 13541102366651570877, 416775728642319774]), Fq::from_montgomery_limbs([10383099790322168017, 17058343682036470720, 16556281441888606360, 1108176927190266030])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([8622953880956768188, 7398970229585501839, 3084527402086859984, 1314489003639612227]), Fq::from_montgomery_limbs([2647974631426734642, 3924418247812102940, 4184932287519868312, 1194114797716949792]), Fq::from_montgomery_limbs([14598747211696490139, 10879316167117011549, 9287974170985802960, 731429090606059611]), Fq::from_montgomery_limbs([9444556880219125709, 5586056795682328427, 7367116120983861589, 588219877692556070]), Fq::from_montgomery_limbs([10966009764315859760, 10742608081271307349, 3709772539537310986, 497532886403996414]), Fq::from_montgomery_limbs([15416260817024711436, 431667905910500746, 1387964135713748516, 918060216721194080]), Fq::from_montgomery_limbs([11657403806820742348, 10510065601598889238, 8349835292055724063, 502241567933397208])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([5125027997144123095, 7303165910753964935, 10691796975927186405, 1054799562052499765]), Fq::from_montgomery_limbs([3677058682136778866, 2112392306281972958, 6200265695478657913, 720439016775781556]), Fq::from_montgomery_limbs([8272146025997512256, 10341698166702554611, 15851101317909170235, 452521866559100336]), Fq::from_montgomery_limbs([9968119379746477391, 13931547738079661500, 12809160964499846690, 770440521239403115]), Fq::from_montgomery_limbs([11434415940462413800, 16684667769948280834, 17418898698438354203, 1004769570334088081]), Fq::from_montgomery_limbs([3258653721799542419, 3871032496675885535, 15086212796812657551, 548348409520277973]), Fq::from_montgomery_limbs([9315341100800814485, 16973311177794380607, 9399876472392037546, 371744665007363788])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([13784204593688045203, 987916117600213001, 10766183396659311558, 616603627600417345]), Fq::from_montgomery_limbs([16045652418239566399, 8490486261587787544, 17701136459350400996, 200715104605533295]), Fq::from_montgomery_limbs([16284971980816740279, 8206294557799882679, 2790028614836001157, 1230396046687758171]), Fq::from_montgomery_limbs([9870167375285365220, 7246310481239931900, 17367559916410875637, 828013539220163509]), Fq::from_montgomery_limbs([16072962173730053757, 4193938980038706222, 11164976873168367038, 230857852443905890]), Fq::from_montgomery_limbs([7523323272036182261, 7860098358273104019, 14378442365280097332, 1330897076351403427]), Fq::from_montgomery_limbs([5166916295217303780, 12258429519770930476, 7573997247042435361, 682178487313104306])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([2043764091903620445, 4485903403091863087, 7882707843266586726, 32588602135411527]), Fq::from_montgomery_limbs([15445407966754968040, 18357001192960460653, 4704086230082948769, 786939246434391312]), Fq::from_montgomery_limbs([16117366278228333427, 18271129267524238221, 10279609063883049289, 1039698878929789014]), Fq::from_montgomery_limbs([7187518414442758799, 1779717612181090682, 11702580549115117112, 938810897647106356]), Fq::from_montgomery_limbs([17722222577775244941, 9996465098177475040, 6523413930963943566, 594985722442752339]), Fq::from_montgomery_limbs([14942503613037167587, 18043065733746265056, 18350946329946766564, 456482704506596726]), Fq::from_montgomery_limbs([413913659191909137, 6804960474770818549, 11211569852612831192, 29172099643213194])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([12244020429757927595, 7878431481226438368, 15736494002689538032, 952552586365680365]), Fq::from_montgomery_limbs([6811639335636941408, 13087253934833450042, 14243138544038514009, 802500736974958878]), Fq::from_montgomery_limbs([5119841013779673124, 924763452388520667, 13728889174508658116, 1253763325687067827]), Fq::from_montgomery_limbs([15043507624384025219, 14829641103772380163, 3009461704678867396, 937642236989310683]), Fq::from_montgomery_limbs([11671642017952121222, 16541053200478701290, 1980039776401781944, 588963913112990120]), Fq::from_montgomery_limbs([10584858696775764162, 11016739814752144940, 16324314276275577748, 654922621317102495]), Fq::from_montgomery_limbs([3244897877015736117, 11237789704802235882, 15022173147815144257, 40109243059779922])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([13421818826894964525, 6843121314819036302, 177656756133214759, 1219229288475674852]), Fq::from_montgomery_limbs([6718699512784917601, 586674041776306822, 18334677892276409595, 789222582574373919]), Fq::from_montgomery_limbs([2284827956975526833, 6582209151387402444, 16582912253436322211, 341803586231976372]), Fq::from_montgomery_limbs([7256396544134998118, 8214951682602116321, 3245431556959173874, 1245025275513704302]), Fq::from_montgomery_limbs([15432965983836887543, 14720892157109837025, 15495565877696769481, 28040874075986580]), Fq::from_montgomery_limbs([2845048156588876954, 8511864041625766030, 12227720668782503297, 751125685338714507]), Fq::from_montgomery_limbs([16400929974316258476, 14955948068318960184, 10179371694614714547, 1203413977422071153])]), Matrix::<7, 1, 7>::new_from_known([Fq::from_montgomery_limbs([6945749691605470013, 11814685140591736549, 9661986044853389934, 549110123010799116]), Fq::from_montgomery_limbs([10314852142802128718, 16931011931436831749, 6272554436628472312, 613946066674111963]), Fq::from_montgomery_limbs([7885885393747543748, 6205273416854026781, 3045614234898978712, 325443134576651832]), Fq::from_montgomery_limbs([16340716059032367665, 13900104810468791197, 13840116352417324181, 807825755702914983]), Fq::from_montgomery_limbs([11307065830129329386, 17314979792657924564, 1031027443933101440, 670942943796932032]), Fq::from_montgomery_limbs([16427383528817659047, 269318770779983782, 12646967434416881049, 792232402464509209]), Fq::from_montgomery_limbs([5305513183378836911, 3912518176481377699, 15813014949092997837, 717786010393961950])])], - }, - optimized_arc: OptimizedArcMatrix::<39, 8, 312>::new_from_known([Fq::from_montgomery_limbs([17670646277747935280, 16706444459999957760, 7654997937391160943, 659194013361630234]), Fq::from_montgomery_limbs([9306410324956668761, 11918867663968452855, 16159669320449336406, 1027263653273380654]), Fq::from_montgomery_limbs([10424544810878645940, 11533042162917906716, 11405431418950019185, 1181592306684207657]), Fq::from_montgomery_limbs([15511314950168773025, 2706584092620486610, 12589344906057924987, 198949415522711747]), Fq::from_montgomery_limbs([6463242934034011456, 4480775049700236083, 1147244402884869561, 251099301522684222]), Fq::from_montgomery_limbs([6076653156556680739, 6058362204127962922, 2609006430585927072, 1274277644859784421]), Fq::from_montgomery_limbs([4034147285618545471, 16309046946281719379, 11732506942908882170, 1141734761043516350]), Fq::from_montgomery_limbs([15181402120606708665, 769117698742393942, 8000709366545785093, 128042919054960870]), Fq::from_montgomery_limbs([1723632755773767909, 7425611528820224114, 3846361608213771012, 1317157014229771878]), Fq::from_montgomery_limbs([1180004570926588292, 9835115993104089813, 255514544102365106, 370024046994873563]), Fq::from_montgomery_limbs([16507101987459533719, 15603514395660572922, 14849362947260167652, 1094669615299361663]), Fq::from_montgomery_limbs([1641419564627940104, 1734977130266781622, 2359844858057393580, 88569664018692634]), Fq::from_montgomery_limbs([16267328831985402574, 4504129177123355587, 2430336937000039615, 182724946762968945]), Fq::from_montgomery_limbs([17793535158928999608, 5634031392654154747, 10364337635238532583, 1179994829791766723]), Fq::from_montgomery_limbs([145700301814233551, 7743364595931833861, 13600389751414362190, 60896176710147956]), Fq::from_montgomery_limbs([17934232373820563709, 6533845630243602776, 15324676632824344806, 193078344538210235]), Fq::from_montgomery_limbs([3358859423299088468, 11840854300859333122, 8971776175135254558, 1017237487419914281]), Fq::from_montgomery_limbs([16328481477177681368, 1582997519876787207, 5731557971602616313, 498420306800783215]), Fq::from_montgomery_limbs([12526989383108933614, 11731194362815364383, 12171285115754354694, 1149426086446852474]), Fq::from_montgomery_limbs([809732533742229508, 9195963923014534752, 11886583635578374853, 1292532069463172705]), Fq::from_montgomery_limbs([15459398930996981001, 17972537529111616674, 6256384561719931081, 1099908904421687269]), Fq::from_montgomery_limbs([6194631511262826563, 5980361634035332899, 6132585703186883039, 1343152289862207638]), Fq::from_montgomery_limbs([13704532277655419198, 9493963458736770267, 12653804519172949169, 218428805830292650]), Fq::from_montgomery_limbs([8013496787819495990, 18081394694809078101, 14689354188530395484, 215594972753885108]), Fq::from_montgomery_limbs([1765918642197202432, 14609627278749496598, 17838479232731490790, 483435431183692300]), Fq::from_montgomery_limbs([16887594024800193480, 1328476430727273505, 17409984215868190656, 1068059229250495642]), Fq::from_montgomery_limbs([15487315671093445122, 4028755842123792652, 14118515559434131307, 600004660835889583]), Fq::from_montgomery_limbs([13620558349664282044, 9072735252525972202, 312787852320488038, 47231029883010665]), Fq::from_montgomery_limbs([9895950479699930991, 1320083262020086701, 9381389112858508819, 928504768072893822]), Fq::from_montgomery_limbs([10747871248019763953, 4479404654791651748, 11550770912037988700, 438216942461032792]), Fq::from_montgomery_limbs([18385142532667962947, 12272398000439779637, 7461987138462771945, 558726769125714997]), Fq::from_montgomery_limbs([14139485618053732983, 8348792317702713313, 367233286875102863, 186067690854023043]), Fq::from_montgomery_limbs([9041249832633195933, 456527929350696070, 3136123267563166118, 862425036609816636]), Fq::from_montgomery_limbs([15124489565605096262, 9591776999407651202, 9949743867591863836, 379301809986101293]), Fq::from_montgomery_limbs([7936212225265692567, 5167873242552786141, 15086007892632579186, 34123317109097916]), Fq::from_montgomery_limbs([11979204740795107684, 9025639229793397244, 5413420333413553932, 863248811490344887]), Fq::from_montgomery_limbs([9695363700834200933, 8045139581671731368, 11369126945536873679, 469549910005852030]), Fq::from_montgomery_limbs([16001389245048329705, 14343919283544642008, 8770282828186128872, 609282374273682689]), Fq::from_montgomery_limbs([3823216797063303082, 1094417965873836739, 128140664081656267, 505393735803371332]), Fq::from_montgomery_limbs([11607694328136514560, 15466463320091898450, 1284330480161723488, 523170093647820661]), Fq::from_montgomery_limbs([6591976781647884526, 13155313999173994351, 5534892153549946238, 596288575025257402]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11245287468508932221, 6475072057356916286, 8955917100198612964, 906270931915685321]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([15725649958168108419, 4885330408482380508, 6484207300414290657, 1056573086606426860]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16437212199268506264, 15424576221688158299, 13027006101536779850, 608117920425829987]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([17697959731033747413, 881277620659586097, 12999020138550792084, 218994748484938916]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12187347033384567067, 17834331425991885966, 8111171543195993305, 1237278747760332198]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([11540996079264122621, 2083205448185058166, 346303233664255773, 67570065514985214]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10393932313960189738, 17658417030509504989, 4494310414388827903, 1083916009420136201]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2630959439345449795, 1305013099304121044, 14958893064556663587, 502133670161114876]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13496177055604370316, 12107925075218853848, 10893831346139387200, 735686689798442157]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([12364352345596204590, 12473718848164928984, 2425158662567034925, 904357473540167435]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14250114029266561642, 9657963390342822389, 16617255202449702017, 52229193358824331]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3393942568576243306, 15201405507578251139, 6434177138638406256, 116816845492109945]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14360127524315233155, 4631991403443744392, 10826720762323261633, 1154614674523717146]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([14829610837565210361, 7693159893394777397, 13277623225200387185, 263905793180518944]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4366690825327685189, 15770582084981330795, 9277162666554299542, 1073180600510589318]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([16303997479448678802, 7666294877889688289, 2209941188570371640, 1162514781528013202]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1444309609555002006, 10573827461364748619, 2213854418060563275, 401298293463815465]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([13603143649902644173, 267673648604347469, 14770735498081352270, 897064240488864979]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8455439882916778200, 7244379144226653693, 4901050804550540073, 742531378918583129]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9638569098999723413, 8668710516732565855, 12439587172429553092, 769864205315111320]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([10577866480500504509, 15180092538013446632, 5047010252898418108, 950851917894966177]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([3189260863075829869, 10864458126965265163, 3908173847970795616, 372196369105917792]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([2051981355439501951, 5174689290614735930, 13076787589476369050, 248791600711156417]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([18083408695123027967, 12620252496424532716, 15225720090085185173, 1087409511851215366]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([1151518846415312778, 2617847070972026268, 11920538756871768189, 372494371299109617]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([8129021687746030207, 5089594247705352277, 13404536729495455227, 996268291797137887]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9082481642086184012, 16123562957232930427, 113453873016526172, 1171240835007212511]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([9619017927874739465, 12861346968534199922, 6474341695138246789, 329774666529093679]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([4828844673239990367, 9237140426585666270, 4472429349292670700, 1211740921942321738]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([0, 0, 0, 0]), Fq::from_montgomery_limbs([6374588877936433558, 11607665174546753642, 15847675340170713041, 474145143590361300]), Fq::from_montgomery_limbs([4088002413776997222, 16030858922743461837, 4313473177343544055, 817302900123673764]), Fq::from_montgomery_limbs([18216186189548814543, 5687648301273358200, 6564098766262925833, 235647764529877689]), Fq::from_montgomery_limbs([1421650618584051851, 9669410210003093316, 15430467067773365518, 994269415526604309]), Fq::from_montgomery_limbs([7574559796775011993, 9643962694113220666, 1013275434882478619, 543427156325963008]), Fq::from_montgomery_limbs([4532353768594877907, 2433286855157726742, 15167390808651362948, 914159030044677082]), Fq::from_montgomery_limbs([14155199821083030453, 3642619697360819367, 7765405773737076472, 1202115259646869817]), Fq::from_montgomery_limbs([16335533268534142579, 4358492749042076660, 16385044626223358243, 847268434257421024]), Fq::from_montgomery_limbs([726136436292617217, 4735276118883290434, 6495677390337301519, 1007951275499954400]), Fq::from_montgomery_limbs([1441892049918589996, 16125120862288806381, 5244917656153261337, 108755599353706277]), Fq::from_montgomery_limbs([9330223445766086137, 9406197553353640417, 13281468059023600014, 500503138812404763]), Fq::from_montgomery_limbs([5355456155777194776, 15418542913049291849, 7681885321566295504, 1188094463923126996]), Fq::from_montgomery_limbs([11882193142358058793, 4624069509548102427, 6735235437551193554, 962114122876706035]), Fq::from_montgomery_limbs([1819083831857771980, 8349663267034291058, 14403983179525206765, 942284040773068417]), Fq::from_montgomery_limbs([7024062436534453440, 15203692147142724388, 17082973923084045231, 1191890185052815108]), Fq::from_montgomery_limbs([6672719206476059341, 18362672287252020084, 3555226216430454216, 300718449399370145]), Fq::from_montgomery_limbs([5828458911011841758, 9271852277477872143, 18378348640149073615, 591074353691784318]), Fq::from_montgomery_limbs([15397757499179479361, 1878199828613873660, 4164621900891789384, 558990401377082502]), Fq::from_montgomery_limbs([11069496558892348093, 10253211614498485032, 11458203419889384673, 575447664584685933]), Fq::from_montgomery_limbs([9808353214047792416, 4805184465312945639, 3985871967202506787, 1229730183276593449]), Fq::from_montgomery_limbs([8420435996312062450, 11100705514596499443, 1523101111273631766, 639557004587150270]), Fq::from_montgomery_limbs([15630012259368829028, 15079774099427294323, 16765804689810369633, 834886070512612798]), Fq::from_montgomery_limbs([2000344807995355152, 8654391083188520616, 13301563010992444431, 490951127405891771]), Fq::from_montgomery_limbs([11761875542266860374, 709339183471929228, 17682621289319303167, 570040706396372700]), Fq::from_montgomery_limbs([3366481512891059038, 12720609556939839584, 1707138651265172645, 36940608792331559]), Fq::from_montgomery_limbs([2427334396528044490, 10170194639028880515, 18243990154741074229, 607502491270396977]), Fq::from_montgomery_limbs([6267947100515031640, 14520122887125811439, 6695614471931546770, 251319533602819784]), Fq::from_montgomery_limbs([7663026857490478572, 15777701966597798170, 10617198553182548195, 642318201966621785]), Fq::from_montgomery_limbs([9959998770754152632, 13119241263216166622, 6328810982306793729, 571460896430554998]), Fq::from_montgomery_limbs([12042605027273090048, 14859482580111939906, 11509134713697889199, 561895216440235106]), Fq::from_montgomery_limbs([1156916933025613310, 4529329408550568088, 14286907616576238972, 1309540780962817079]), Fq::from_montgomery_limbs([7510365353910652337, 14538991928012962248, 4644117500717216624, 1340316749461135700])]), + M_hat: SquareMatrix::<7, 49>::new_from_known([ + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + Fq::from_montgomery_limbs([ + 14902495609461984461, + 16049616749407607193, + 8772353492731922841, + 1191393277823112260, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + Fq::from_montgomery_limbs([ + 14902495609461984461, + 16049616749407607193, + 8772353492731922841, + 1191393277823112260, + ]), + Fq::from_montgomery_limbs([ + 5443236819267423281, + 9444106377351672003, + 16592192658774520588, + 1198721234626210409, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + Fq::from_montgomery_limbs([ + 14902495609461984461, + 16049616749407607193, + 8772353492731922841, + 1191393277823112260, + ]), + Fq::from_montgomery_limbs([ + 5443236819267423281, + 9444106377351672003, + 16592192658774520588, + 1198721234626210409, + ]), + Fq::from_montgomery_limbs([ + 13217949757478296855, + 18361600593446830079, + 18223280994163007859, + 471593720435477782, + ]), + ]), + v: Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + ]), + w: Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + ]), + M_prime: SquareMatrix::<8, 64>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + Fq::from_montgomery_limbs([ + 14902495609461984461, + 16049616749407607193, + 8772353492731922841, + 1191393277823112260, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + Fq::from_montgomery_limbs([ + 14902495609461984461, + 16049616749407607193, + 8772353492731922841, + 1191393277823112260, + ]), + Fq::from_montgomery_limbs([ + 5443236819267423281, + 9444106377351672003, + 16592192658774520588, + 1198721234626210409, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 1152921504606846976]), + Fq::from_montgomery_limbs([ + 829043150522309210, + 7485532467658058089, + 17072453966431109601, + 610297755857677130, + ]), + Fq::from_montgomery_limbs([ + 18043687544558598371, + 8708325242362018018, + 16625116017321440141, + 277441131490434312, + ]), + Fq::from_montgomery_limbs([ + 1903578231313020389, + 13252279451564941743, + 6429417326301386859, + 900077037001125169, + ]), + Fq::from_montgomery_limbs([ + 14902495609461984461, + 16049616749407607193, + 8772353492731922841, + 1191393277823112260, + ]), + Fq::from_montgomery_limbs([ + 5443236819267423281, + 9444106377351672003, + 16592192658774520588, + 1198721234626210409, + ]), + Fq::from_montgomery_limbs([ + 13217949757478296855, + 18361600593446830079, + 18223280994163007859, + 471593720435477782, + ]), + ]), + M_doubleprime: SquareMatrix::<8, 64>::new_from_known([ + Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + Fq::from_montgomery_limbs([ + 5469465372454405746, + 11693688927749785195, + 9284229770381589387, + 263916402201309764, + ]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 8025142443496737775, + 1611073224873590596, + 1595200312703520851, + 268362793599128279, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2646197433325367530, + 3327161674116363870, + 17523969835882673765, + 1224872920276084181, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3531022552160069605, + 1044916798369741293, + 13484540382795405112, + 975392012720575741, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3532672362950129848, + 13232567668052949956, + 3949082925084889589, + 1169300250855119928, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17405909644706202533, + 9068195655028130334, + 4993737853698066182, + 760630245260613434, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10760096219897954109, + 15819961273994906871, + 12000866060961275644, + 494051747708222359, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + ]), + M_inverse: SquareMatrix::<8, 64>::new_from_known([ + Fq::from_montgomery_limbs([ + 13084505025340709209, + 6658414703856389670, + 1229628874832604981, + 544699057731131701, + ]), + Fq::from_montgomery_limbs([ + 9271504314401065906, + 16573554673674659136, + 11112785265390720139, + 695302674280213266, + ]), + Fq::from_montgomery_limbs([ + 17755863455076530065, + 714019269282123475, + 2516777105896065646, + 758853547373067215, + ]), + Fq::from_montgomery_limbs([ + 18230149865394473823, + 17597653080170983126, + 8526134725373349310, + 254065511080298010, + ]), + Fq::from_montgomery_limbs([ + 12943062609168455850, + 4036522178185995734, + 13999395164871811986, + 158263095242933732, + ]), + Fq::from_montgomery_limbs([ + 9727917081763370379, + 12523860206965601712, + 6438415234309761598, + 578292727069385307, + ]), + Fq::from_montgomery_limbs([ + 4722164372208948539, + 6191995659471889704, + 9488304077820150497, + 383493821809394045, + ]), + Fq::from_montgomery_limbs([ + 6308417298426862088, + 11443735935349473316, + 5741617995111411363, + 1072746374115513684, + ]), + Fq::from_montgomery_limbs([ + 9271504314401065906, + 16573554673674659136, + 11112785265390720139, + 695302674280213266, + ]), + Fq::from_montgomery_limbs([ + 6461820328084053982, + 3713881430924031860, + 2384237101556363354, + 925204973024161309, + ]), + Fq::from_montgomery_limbs([ + 11045222492845432763, + 12330616953129622165, + 6721295490146207098, + 737212261478666249, + ]), + Fq::from_montgomery_limbs([ + 17374877272010299584, + 12910097275334870758, + 11030123918921243889, + 999547114982057960, + ]), + Fq::from_montgomery_limbs([ + 2710620113890028948, + 7440189668352585633, + 11434649235474493285, + 24415954842353912, + ]), + Fq::from_montgomery_limbs([ + 7017296967873341431, + 5083670538613016079, + 13450510072544819929, + 553876772227031394, + ]), + Fq::from_montgomery_limbs([ + 13756252569614172144, + 10114182252140374927, + 8424160399132869901, + 370135544443278065, + ]), + Fq::from_montgomery_limbs([ + 8192890567029291618, + 6189339163642963502, + 10515708329663122411, + 718287917303790275, + ]), + Fq::from_montgomery_limbs([ + 17755863455076530065, + 714019269282123475, + 2516777105896065646, + 758853547373067215, + ]), + Fq::from_montgomery_limbs([ + 11045222492845432763, + 12330616953129622165, + 6721295490146207098, + 737212261478666249, + ]), + Fq::from_montgomery_limbs([ + 1107303498763469844, + 5522738209527454529, + 7444362964372879018, + 94326278492989394, + ]), + Fq::from_montgomery_limbs([ + 17301615911438019293, + 6207101570101901683, + 6912719408314906153, + 670136716188149414, + ]), + Fq::from_montgomery_limbs([ + 8052773691804060961, + 7894827066734284032, + 17737200459541160653, + 1344927881702280038, + ]), + Fq::from_montgomery_limbs([ + 3579877764578944756, + 17358359975581377230, + 2902328015395623063, + 1076553286270705854, + ]), + Fq::from_montgomery_limbs([ + 7922495546740583511, + 13377932406425725078, + 312087136472518954, + 724215661521432074, + ]), + Fq::from_montgomery_limbs([ + 14304988956035390969, + 2978747834443270582, + 211153190861140083, + 1101825800236420991, + ]), + Fq::from_montgomery_limbs([ + 18230149865394473823, + 17597653080170983126, + 8526134725373349310, + 254065511080298010, + ]), + Fq::from_montgomery_limbs([ + 17374877272010299584, + 12910097275334870758, + 11030123918921243889, + 999547114982057960, + ]), + Fq::from_montgomery_limbs([ + 17301615911438019293, + 6207101570101901683, + 6912719408314906153, + 670136716188149414, + ]), + Fq::from_montgomery_limbs([ + 11280947822772662719, + 3998258523005585690, + 3083179120639342004, + 919842772758514385, + ]), + Fq::from_montgomery_limbs([ + 9288629788793402586, + 2259376874925369448, + 13217169487415398853, + 539099117435770765, + ]), + Fq::from_montgomery_limbs([ + 8430375547150652021, + 1001249403497996831, + 16789953243695164761, + 1344355087100203329, + ]), + Fq::from_montgomery_limbs([ + 527596723520651020, + 15187839531048996200, + 6255568353483246533, + 170911683896477388, + ]), + Fq::from_montgomery_limbs([ + 1734565667097520919, + 12020388067710193448, + 6095663732563761512, + 1138214739842689620, + ]), + Fq::from_montgomery_limbs([ + 12943062609168455850, + 4036522178185995734, + 13999395164871811986, + 158263095242933732, + ]), + Fq::from_montgomery_limbs([ + 2710620113890028948, + 7440189668352585633, + 11434649235474493285, + 24415954842353912, + ]), + Fq::from_montgomery_limbs([ + 8052773691804060961, + 7894827066734284032, + 17737200459541160653, + 1344927881702280038, + ]), + Fq::from_montgomery_limbs([ + 9288629788793402586, + 2259376874925369448, + 13217169487415398853, + 539099117435770765, + ]), + Fq::from_montgomery_limbs([ + 11829305752964125757, + 10778200385642703226, + 2095381984842221696, + 365296429444826263, + ]), + Fq::from_montgomery_limbs([ + 9209237328018148115, + 9013177660724622161, + 13411670809827118984, + 1159740245409298491, + ]), + Fq::from_montgomery_limbs([ + 1786760175787716883, + 16585118128488698423, + 3661827234912273881, + 1175179421357105610, + ]), + Fq::from_montgomery_limbs([ + 6997506992288193640, + 3314349379260916067, + 10669743096907430976, + 828027530724672872, + ]), + Fq::from_montgomery_limbs([ + 9727917081763370379, + 12523860206965601712, + 6438415234309761598, + 578292727069385307, + ]), + Fq::from_montgomery_limbs([ + 7017296967873341431, + 5083670538613016079, + 13450510072544819929, + 553876772227031394, + ]), + Fq::from_montgomery_limbs([ + 3579877764578944756, + 17358359975581377230, + 2902328015395623063, + 1076553286270705854, + ]), + Fq::from_montgomery_limbs([ + 8430375547150652021, + 1001249403497996831, + 16789953243695164761, + 1344355087100203329, + ]), + Fq::from_montgomery_limbs([ + 9209237328018148115, + 9013177660724622161, + 13411670809827118984, + 1159740245409298491, + ]), + Fq::from_montgomery_limbs([ + 2800053360411677182, + 7739112841912438666, + 4458443078052365313, + 1221561517743072277, + ]), + Fq::from_montgomery_limbs([ + 5714397546912390046, + 7204578223640664713, + 3369806468691410388, + 19539807714888073, + ]), + Fq::from_montgomery_limbs([ + 7912928165080095595, + 10691173171385779887, + 7900069818404182519, + 558654216499734169, + ]), + Fq::from_montgomery_limbs([ + 4722164372208948539, + 6191995659471889704, + 9488304077820150497, + 383493821809394045, + ]), + Fq::from_montgomery_limbs([ + 13756252569614172144, + 10114182252140374927, + 8424160399132869901, + 370135544443278065, + ]), + Fq::from_montgomery_limbs([ + 7922495546740583511, + 13377932406425725078, + 312087136472518954, + 724215661521432074, + ]), + Fq::from_montgomery_limbs([ + 527596723520651020, + 15187839531048996200, + 6255568353483246533, + 170911683896477388, + ]), + Fq::from_montgomery_limbs([ + 1786760175787716883, + 16585118128488698423, + 3661827234912273881, + 1175179421357105610, + ]), + Fq::from_montgomery_limbs([ + 5714397546912390046, + 7204578223640664713, + 3369806468691410388, + 19539807714888073, + ]), + Fq::from_montgomery_limbs([ + 11467623733094325177, + 12601944683740404995, + 14270804009154313170, + 1283543454792166291, + ]), + Fq::from_montgomery_limbs([ + 1591478553039085540, + 13629203225225281079, + 9223729349286412660, + 541375501705678927, + ]), + Fq::from_montgomery_limbs([ + 6308417298426862088, + 11443735935349473316, + 5741617995111411363, + 1072746374115513684, + ]), + Fq::from_montgomery_limbs([ + 8192890567029291618, + 6189339163642963502, + 10515708329663122411, + 718287917303790275, + ]), + Fq::from_montgomery_limbs([ + 14304988956035390969, + 2978747834443270582, + 211153190861140083, + 1101825800236420991, + ]), + Fq::from_montgomery_limbs([ + 1734565667097520919, + 12020388067710193448, + 6095663732563761512, + 1138214739842689620, + ]), + Fq::from_montgomery_limbs([ + 6997506992288193640, + 3314349379260916067, + 10669743096907430976, + 828027530724672872, + ]), + Fq::from_montgomery_limbs([ + 7912928165080095595, + 10691173171385779887, + 7900069818404182519, + 558654216499734169, + ]), + Fq::from_montgomery_limbs([ + 1591478553039085540, + 13629203225225281079, + 9223729349286412660, + 541375501705678927, + ]), + Fq::from_montgomery_limbs([ + 1183879673177082740, + 4195985459140120089, + 6602546398975040286, + 268356784116832629, + ]), + ]), + M_hat_inverse: SquareMatrix::<7, 49>::new_from_known([ + Fq::from_montgomery_limbs([ + 4596204885914937926, + 7838695242625897787, + 3035134948628881865, + 1207227057562625259, + ]), + Fq::from_montgomery_limbs([ + 15896440128761118173, + 15649465122428497798, + 4384954020081155217, + 913236075158308182, + ]), + Fq::from_montgomery_limbs([ + 2335397575999068166, + 14422783505571319241, + 2719190544357073120, + 274885737548821162, + ]), + Fq::from_montgomery_limbs([ + 9009029437947626511, + 7346990291023997455, + 3414440920242711508, + 50729493538167678, + ]), + Fq::from_montgomery_limbs([ + 1147572841630042462, + 8929633407603160962, + 14641836547291178689, + 426104246454882272, + ]), + Fq::from_montgomery_limbs([ + 17053865508971679549, + 2198382506890441430, + 11312636819879946010, + 1106661992673439325, + ]), + Fq::from_montgomery_limbs([ + 13854198271768011224, + 4053309739918946052, + 18433076019880982368, + 615216866081782140, + ]), + Fq::from_montgomery_limbs([ + 15896440128761118173, + 15649465122428497798, + 4384954020081155217, + 913236075158308182, + ]), + Fq::from_montgomery_limbs([ + 4761711418629517518, + 591743220415883789, + 2347216482122737487, + 541885199414988935, + ]), + Fq::from_montgomery_limbs([ + 16049706050976647208, + 9176322874162797755, + 12242590547654900654, + 61012554895502211, + ]), + Fq::from_montgomery_limbs([ + 10907149703911289876, + 345335516406280141, + 13671249158696272740, + 1076200797284812494, + ]), + Fq::from_montgomery_limbs([ + 3783029764742972160, + 8718337959668375608, + 9493474458284681386, + 1324609056502214356, + ]), + Fq::from_montgomery_limbs([ + 7820919546658569809, + 8474571377527450081, + 15463257988737541409, + 600187776405677822, + ]), + Fq::from_montgomery_limbs([ + 17765856891579054878, + 11653192174908829654, + 4966200605019140816, + 13151716642854399, + ]), + Fq::from_montgomery_limbs([ + 2335397575999068166, + 14422783505571319241, + 2719190544357073120, + 274885737548821162, + ]), + Fq::from_montgomery_limbs([ + 16049706050976647208, + 9176322874162797755, + 12242590547654900654, + 61012554895502211, + ]), + Fq::from_montgomery_limbs([ + 13442108051579804680, + 3187031622749351601, + 18435466452818364440, + 257424390549798158, + ]), + Fq::from_montgomery_limbs([ + 14787872399840322022, + 11612292071578382904, + 2915446897265489403, + 1027394734812832541, + ]), + Fq::from_montgomery_limbs([ + 14650186278276933856, + 11736505343490130034, + 4478509448304020774, + 790137565622286814, + ]), + Fq::from_montgomery_limbs([ + 16227186307902919639, + 13050765287152844350, + 6672057872444298207, + 1120660629979522345, + ]), + Fq::from_montgomery_limbs([ + 17280730943809781377, + 2101938472365641700, + 2221542087098170284, + 682975842437066220, + ]), + Fq::from_montgomery_limbs([ + 9009029437947626511, + 7346990291023997455, + 3414440920242711508, + 50729493538167678, + ]), + Fq::from_montgomery_limbs([ + 10907149703911289876, + 345335516406280141, + 13671249158696272740, + 1076200797284812494, + ]), + Fq::from_montgomery_limbs([ + 14787872399840322022, + 11612292071578382904, + 2915446897265489403, + 1027394734812832541, + ]), + Fq::from_montgomery_limbs([ + 9754754145024164416, + 9500194995930094065, + 4605218223030367360, + 489015282389927384, + ]), + Fq::from_montgomery_limbs([ + 11235823697266068713, + 9767911161281654263, + 15004902496107301847, + 1252504438181231825, + ]), + Fq::from_montgomery_limbs([ + 773466991163756584, + 6984379341355406564, + 2865211391772182450, + 1128797324971138943, + ]), + Fq::from_montgomery_limbs([ + 3783029764742972160, + 8718337959668375608, + 9493474458284681386, + 1324609056502214356, + ]), + Fq::from_montgomery_limbs([ + 1147572841630042462, + 8929633407603160962, + 14641836547291178689, + 426104246454882272, + ]), + Fq::from_montgomery_limbs([ + 3783029764742972160, + 8718337959668375608, + 9493474458284681386, + 1324609056502214356, + ]), + Fq::from_montgomery_limbs([ + 14650186278276933856, + 11736505343490130034, + 4478509448304020774, + 790137565622286814, + ]), + Fq::from_montgomery_limbs([ + 11235823697266068713, + 9767911161281654263, + 15004902496107301847, + 1252504438181231825, + ]), + Fq::from_montgomery_limbs([ + 10750604789646168140, + 372497979918419381, + 10429606583776526343, + 928966821232337907, + ]), + Fq::from_montgomery_limbs([ + 10962493869149920375, + 10887885654637674355, + 384224715829329873, + 165837155970255258, + ]), + Fq::from_montgomery_limbs([ + 2645295168975782308, + 13863838601458690618, + 7409022743292405220, + 617686796815916414, + ]), + Fq::from_montgomery_limbs([ + 17053865508971679549, + 2198382506890441430, + 11312636819879946010, + 1106661992673439325, + ]), + Fq::from_montgomery_limbs([ + 7820919546658569809, + 8474571377527450081, + 15463257988737541409, + 600187776405677822, + ]), + Fq::from_montgomery_limbs([ + 16227186307902919639, + 13050765287152844350, + 6672057872444298207, + 1120660629979522345, + ]), + Fq::from_montgomery_limbs([ + 773466991163756584, + 6984379341355406564, + 2865211391772182450, + 1128797324971138943, + ]), + Fq::from_montgomery_limbs([ + 10962493869149920375, + 10887885654637674355, + 384224715829329873, + 165837155970255258, + ]), + Fq::from_montgomery_limbs([ + 17704196732594477900, + 7529737242141985421, + 3056083190610322131, + 537754595320396000, + ]), + Fq::from_montgomery_limbs([ + 4588045927327100104, + 15273424236288740466, + 3730020508107780990, + 1184499396891674504, + ]), + Fq::from_montgomery_limbs([ + 13854198271768011224, + 4053309739918946052, + 18433076019880982368, + 615216866081782140, + ]), + Fq::from_montgomery_limbs([ + 17765856891579054878, + 11653192174908829654, + 4966200605019140816, + 13151716642854399, + ]), + Fq::from_montgomery_limbs([ + 17280730943809781377, + 2101938472365641700, + 2221542087098170284, + 682975842437066220, + ]), + Fq::from_montgomery_limbs([ + 3783029764742972160, + 8718337959668375608, + 9493474458284681386, + 1324609056502214356, + ]), + Fq::from_montgomery_limbs([ + 2645295168975782308, + 13863838601458690618, + 7409022743292405220, + 617686796815916414, + ]), + Fq::from_montgomery_limbs([ + 4588045927327100104, + 15273424236288740466, + 3730020508107780990, + 1184499396891674504, + ]), + Fq::from_montgomery_limbs([ + 5513671693009890019, + 13840477803572862779, + 13148892977164251883, + 530785029804846654, + ]), + ]), + M_00: Fq::from_montgomery_limbs([ + 17721242321237835775, + 11985636621509722110, + 11478464757469040638, + 960562638525520553, + ]), + M_i: Matrix::<8, 8, 64>::new_from_known([ + Fq::from_montgomery_limbs([ + 9015221291577245683, + 8239323489949974514, + 1646089257421115374, + 958099254763297437, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6320288599439722802, + 17139790906886685752, + 15622446705354855394, + 1250967766698858445, + ]), + Fq::from_montgomery_limbs([ + 12907953951183108118, + 570406863259453574, + 9479663564103955646, + 1023356057988386223, + ]), + Fq::from_montgomery_limbs([ + 5445632916888334837, + 1254961675994290676, + 17739625680446876718, + 887995330051968477, + ]), + Fq::from_montgomery_limbs([ + 6322290143919737275, + 6221802074515073157, + 3956268074861890555, + 1230594881276209560, + ]), + Fq::from_montgomery_limbs([ + 6707360385690721071, + 168555159922046132, + 3944622502497320499, + 871144945884010465, + ]), + Fq::from_montgomery_limbs([ + 2037533433720590943, + 11084683233172165964, + 9053730132862546054, + 793120143512682509, + ]), + Fq::from_montgomery_limbs([ + 16034329588701802957, + 3903236010590312092, + 9048724434495743556, + 974216030141738060, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12907953951183108118, + 570406863259453574, + 9479663564103955646, + 1023356057988386223, + ]), + Fq::from_montgomery_limbs([ + 2630356400630794821, + 484400404306129097, + 10294032504232056871, + 1245743613753800727, + ]), + Fq::from_montgomery_limbs([ + 7020374536790409354, + 11449249974296852948, + 11812715459389350230, + 761793057268134936, + ]), + Fq::from_montgomery_limbs([ + 14832891855204883256, + 1120380609975889545, + 13112310496604860424, + 265468754987956357, + ]), + Fq::from_montgomery_limbs([ + 1471871698735710625, + 5066062283984961905, + 18437666505161167766, + 732132698348695885, + ]), + Fq::from_montgomery_limbs([ + 12165164801578981607, + 2595888614156384905, + 3065973630931260883, + 580278735590489736, + ]), + Fq::from_montgomery_limbs([ + 14321853632102951979, + 5605761176730605396, + 4630454347263185176, + 122758557320262262, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 5445632916888334837, + 1254961675994290676, + 17739625680446876718, + 887995330051968477, + ]), + Fq::from_montgomery_limbs([ + 7020374536790409354, + 11449249974296852948, + 11812715459389350230, + 761793057268134936, + ]), + Fq::from_montgomery_limbs([ + 8776438364931459725, + 12817858402105398175, + 11110959846851041399, + 66365362687656724, + ]), + Fq::from_montgomery_limbs([ + 8240747731577468633, + 14565407531273622630, + 3117214821926093855, + 377503066268731506, + ]), + Fq::from_montgomery_limbs([ + 3910521513192788403, + 13982250796740762630, + 7488541789654977578, + 950543461716681145, + ]), + Fq::from_montgomery_limbs([ + 13037154073613592925, + 5935342861935913439, + 15852552537899162249, + 940304910644322576, + ]), + Fq::from_montgomery_limbs([ + 6931234819087160937, + 3778580043557980929, + 15772931149205513556, + 42782763261291533, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6322290143919737275, + 6221802074515073157, + 3956268074861890555, + 1230594881276209560, + ]), + Fq::from_montgomery_limbs([ + 14832891855204883256, + 1120380609975889545, + 13112310496604860424, + 265468754987956357, + ]), + Fq::from_montgomery_limbs([ + 8240747731577468633, + 14565407531273622630, + 3117214821926093855, + 377503066268731506, + ]), + Fq::from_montgomery_limbs([ + 11125067532471981344, + 14191984257965181085, + 12061981722855456559, + 593208493053362841, + ]), + Fq::from_montgomery_limbs([ + 12343763401003110605, + 14101666204297852634, + 12890733422632852105, + 917529488625337921, + ]), + Fq::from_montgomery_limbs([ + 12402063032118952752, + 2700777936756282138, + 16216549649819784559, + 1155661828697936045, + ]), + Fq::from_montgomery_limbs([ + 2194969812170857806, + 13161078840371575175, + 5264735936454844546, + 101144700881461918, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6707360385690721071, + 168555159922046132, + 3944622502497320499, + 871144945884010465, + ]), + Fq::from_montgomery_limbs([ + 1471871698735710625, + 5066062283984961905, + 18437666505161167766, + 732132698348695885, + ]), + Fq::from_montgomery_limbs([ + 3910521513192788403, + 13982250796740762630, + 7488541789654977578, + 950543461716681145, + ]), + Fq::from_montgomery_limbs([ + 12343763401003110605, + 14101666204297852634, + 12890733422632852105, + 917529488625337921, + ]), + Fq::from_montgomery_limbs([ + 11359111242441949022, + 11240352269459571893, + 17263815313749644065, + 781240072875924051, + ]), + Fq::from_montgomery_limbs([ + 16712698548631210778, + 8113828394758785535, + 9984182942939561022, + 781254146059533921, + ]), + Fq::from_montgomery_limbs([ + 7404478796369705144, + 1939616247903098428, + 2043282094878258870, + 67588237262069794, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2037533433720590943, + 11084683233172165964, + 9053730132862546054, + 793120143512682509, + ]), + Fq::from_montgomery_limbs([ + 12165164801578981607, + 2595888614156384905, + 3065973630931260883, + 580278735590489736, + ]), + Fq::from_montgomery_limbs([ + 13037154073613592925, + 5935342861935913439, + 15852552537899162249, + 940304910644322576, + ]), + Fq::from_montgomery_limbs([ + 12402063032118952752, + 2700777936756282138, + 16216549649819784559, + 1155661828697936045, + ]), + Fq::from_montgomery_limbs([ + 16712698548631210778, + 8113828394758785535, + 9984182942939561022, + 781254146059533921, + ]), + Fq::from_montgomery_limbs([ + 6959694198409880686, + 10513484520296585955, + 17245503495642767610, + 326963768321955511, + ]), + Fq::from_montgomery_limbs([ + 10751863449412314814, + 12531617507536929183, + 2333159255918151628, + 108101348738232165, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16034329588701802957, + 3903236010590312092, + 9048724434495743556, + 974216030141738060, + ]), + Fq::from_montgomery_limbs([ + 14321853632102951979, + 5605761176730605396, + 4630454347263185176, + 122758557320262262, + ]), + Fq::from_montgomery_limbs([ + 6931234819087160937, + 3778580043557980929, + 15772931149205513556, + 42782763261291533, + ]), + Fq::from_montgomery_limbs([ + 2194969812170857806, + 13161078840371575175, + 5264735936454844546, + 101144700881461918, + ]), + Fq::from_montgomery_limbs([ + 7404478796369705144, + 1939616247903098428, + 2043282094878258870, + 67588237262069794, + ]), + Fq::from_montgomery_limbs([ + 10751863449412314814, + 12531617507536929183, + 2333159255918151628, + 108101348738232165, + ]), + Fq::from_montgomery_limbs([ + 8242539079403140188, + 8061347952042345076, + 11707135840504604934, + 914785475508666052, + ]), + ]), + v_collection: [ + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 17640631015407645126, + 17416650484724036037, + 14803487960933328666, + 554882262980868625, + ]), + Fq::from_montgomery_limbs([ + 10632745392742701465, + 7191381972905833266, + 10576427669223334706, + 1037506184958051122, + ]), + Fq::from_montgomery_limbs([ + 7989155441247042094, + 18276457113184108543, + 17999817914616464103, + 943187440870955565, + ]), + Fq::from_montgomery_limbs([ + 18204910156218979669, + 16293041589642941780, + 9975069610392864084, + 1088801882579738168, + ]), + Fq::from_montgomery_limbs([ + 15441359965645378481, + 7022857083512140090, + 11162758362666494739, + 1108530997049617801, + ]), + Fq::from_montgomery_limbs([ + 7802104352665277001, + 1712233803072817444, + 12180777293186749586, + 1125441666595228915, + ]), + Fq::from_montgomery_limbs([ + 7330330845985706257, + 6947957132670498679, + 9373711551562393463, + 1140097580201425214, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 18366132767879360967, + 5431013863214313926, + 3325023203464288028, + 747241129062195048, + ]), + Fq::from_montgomery_limbs([ + 4861545468195100803, + 11791803721085820360, + 16861242526837808182, + 587224779081284519, + ]), + Fq::from_montgomery_limbs([ + 6038434302262732315, + 17199494462234427620, + 17847977008226730647, + 613398622514363430, + ]), + Fq::from_montgomery_limbs([ + 8422783269805610096, + 16656220536572751252, + 7918639979705401643, + 170910085608382473, + ]), + Fq::from_montgomery_limbs([ + 18349346982789927355, + 8017591337915184637, + 18372658176979362927, + 927323834744911125, + ]), + Fq::from_montgomery_limbs([ + 6098144161467281354, + 2162126959782930019, + 8016715582812993181, + 87916415604842323, + ]), + Fq::from_montgomery_limbs([ + 14926888907449900570, + 16034226105739794058, + 8242495446855270900, + 170857479056428767, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 13761299995988853307, + 10330765076738035315, + 13655052507848964233, + 121839220114831784, + ]), + Fq::from_montgomery_limbs([ + 15369322242721768225, + 7050142047224256972, + 12643665775034470999, + 1102328692521833676, + ]), + Fq::from_montgomery_limbs([ + 10555474781715655116, + 6656109843697517764, + 16567476834724252290, + 1315407115111807184, + ]), + Fq::from_montgomery_limbs([ + 15635518385029844173, + 579774923863089338, + 4907175580968184975, + 679471495325209728, + ]), + Fq::from_montgomery_limbs([ + 11185461100085345821, + 8221939874744266357, + 12287775310123057539, + 1019299127883999231, + ]), + Fq::from_montgomery_limbs([ + 586274284242963056, + 8310909834705600558, + 3054222778649762639, + 763190023338919332, + ]), + Fq::from_montgomery_limbs([ + 6717490082866871699, + 9561189803595277803, + 2358146706687598339, + 229707033421591253, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 9862704231385218313, + 13914100249743202263, + 10014223727046890158, + 679200801234608014, + ]), + Fq::from_montgomery_limbs([ + 16286005160576575401, + 2766108936000922095, + 13859049965904094985, + 720362228683248654, + ]), + Fq::from_montgomery_limbs([ + 18028696975939559798, + 6945291324150110288, + 3594371327059432745, + 1256526022736975448, + ]), + Fq::from_montgomery_limbs([ + 13724722228213474447, + 17954541567374385206, + 10748596771783277924, + 116970063643881223, + ]), + Fq::from_montgomery_limbs([ + 17627786090808150672, + 7901620020601608720, + 1877160764958626418, + 756288000881176875, + ]), + Fq::from_montgomery_limbs([ + 14537377980409294015, + 18005737005152562388, + 9571375812741383887, + 59753059053707643, + ]), + Fq::from_montgomery_limbs([ + 4228748937594043872, + 11086846199995865064, + 15359245871481193897, + 1099589394616459299, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 6835681309479739469, + 2522595035308448012, + 13579423836020142879, + 321430679545810677, + ]), + Fq::from_montgomery_limbs([ + 8928134061485321773, + 14157720579697729134, + 10344780082168020995, + 97202987142506800, + ]), + Fq::from_montgomery_limbs([ + 3126697640027307204, + 1153410184564297189, + 4809813821719177551, + 994774295722128937, + ]), + Fq::from_montgomery_limbs([ + 3918576597698600036, + 13183810862438807325, + 15214887128855617985, + 279159001700097111, + ]), + Fq::from_montgomery_limbs([ + 2830967354854515654, + 17469509170635724421, + 8035672669498122237, + 267629026497518109, + ]), + Fq::from_montgomery_limbs([ + 13871567487914888086, + 5246409741722402492, + 16832389611931438025, + 1295010963726258350, + ]), + Fq::from_montgomery_limbs([ + 17057934674164606699, + 6421519839681476555, + 2956724044796119398, + 327825682992218753, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 4795884052041907920, + 14375534011696101577, + 2427060550596560456, + 393919458849239754, + ]), + Fq::from_montgomery_limbs([ + 15372002461943753964, + 11342165919824154367, + 11980800855746001270, + 994521975576249810, + ]), + Fq::from_montgomery_limbs([ + 3093026885592381242, + 16909708896875106142, + 9191689902351332536, + 192118286974103755, + ]), + Fq::from_montgomery_limbs([ + 2545301077237922815, + 15144706238324940883, + 6113286606593174468, + 372600161316484359, + ]), + Fq::from_montgomery_limbs([ + 2142773713360590483, + 4755608127774394592, + 14813148169732966311, + 917761966614679749, + ]), + Fq::from_montgomery_limbs([ + 4228649950611283773, + 11633437476481650378, + 40335982213672820, + 963989416626637070, + ]), + Fq::from_montgomery_limbs([ + 7391565095119442761, + 5231979613403440246, + 15148609598356850747, + 95369680580052342, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 6221242600163036024, + 13151745595003222769, + 1880070415953293074, + 859483057557051135, + ]), + Fq::from_montgomery_limbs([ + 4057704583061373110, + 330438596431033553, + 11138603368324646862, + 567019942240333219, + ]), + Fq::from_montgomery_limbs([ + 6808348652855723900, + 16038145083514774712, + 7335293401571608063, + 1256860263027810296, + ]), + Fq::from_montgomery_limbs([ + 14712597649859914536, + 2461131389363589307, + 14971367896336061978, + 440886131765627826, + ]), + Fq::from_montgomery_limbs([ + 12563821899625315748, + 1397025790367362621, + 11711011249975071041, + 1326491445493487906, + ]), + Fq::from_montgomery_limbs([ + 7386366618870533036, + 17891650149672567880, + 7623078793319051970, + 896259535119079804, + ]), + Fq::from_montgomery_limbs([ + 10076387373785417531, + 11621404135443198278, + 2342191148009104794, + 1208570082728513479, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 15679839989875735864, + 3094159736795405193, + 8433247987399569527, + 598394739716746812, + ]), + Fq::from_montgomery_limbs([ + 13169926426306420693, + 1494478164246339314, + 1807871555080064306, + 341871317105251652, + ]), + Fq::from_montgomery_limbs([ + 8871477167695700102, + 7124763693791718581, + 9576781928097497051, + 714519781637518717, + ]), + Fq::from_montgomery_limbs([ + 5983131451216637528, + 14746501237947100556, + 5131581902376092495, + 53578888100518755, + ]), + Fq::from_montgomery_limbs([ + 4061768962354414816, + 11864639021370326188, + 865372274790703007, + 960248048765553610, + ]), + Fq::from_montgomery_limbs([ + 13741178490350281184, + 16104064291813496481, + 430569565272838614, + 1002559943654640050, + ]), + Fq::from_montgomery_limbs([ + 2394748621667543278, + 9724971631453415812, + 4137744279709050144, + 1128204720227512009, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 8347131072359520901, + 7051906710316929352, + 16145803176151958291, + 425602845445213918, + ]), + Fq::from_montgomery_limbs([ + 1777783046051939958, + 9344856863579469212, + 15141578180236122558, + 1282494716270035254, + ]), + Fq::from_montgomery_limbs([ + 9034384578885080751, + 4457232682759798992, + 2752092198692805323, + 133997596024339666, + ]), + Fq::from_montgomery_limbs([ + 6632806707492790657, + 4419466991289176034, + 10545594397744340230, + 225792487504094029, + ]), + Fq::from_montgomery_limbs([ + 13666870638471858948, + 6325954648727450515, + 6820384268867641136, + 650912658514216838, + ]), + Fq::from_montgomery_limbs([ + 18425172866543397587, + 460014089142918565, + 13475177727189665478, + 755199790640816277, + ]), + Fq::from_montgomery_limbs([ + 17074816481639390245, + 8326625026248068453, + 11628221368426774047, + 168403074861182097, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 6496117145112017285, + 8108611305258852743, + 1288333658986417240, + 489166257449840915, + ]), + Fq::from_montgomery_limbs([ + 5905164426314492425, + 14726319284315803257, + 15419119459033009106, + 748785652021292365, + ]), + Fq::from_montgomery_limbs([ + 2903900515980491508, + 14518787377368638193, + 5737950893394728457, + 1246585555966129910, + ]), + Fq::from_montgomery_limbs([ + 13545067403644787822, + 12929589241462425919, + 6328577959723156897, + 669792805130642725, + ]), + Fq::from_montgomery_limbs([ + 10880665937604410417, + 12182942785008105675, + 8043148962657686879, + 114751567600998309, + ]), + Fq::from_montgomery_limbs([ + 475884094757470315, + 13519631230544868403, + 15555278094421071668, + 284046901452720062, + ]), + Fq::from_montgomery_limbs([ + 4404185810772829111, + 13082485550708084688, + 4458404332519456617, + 747118566938719314, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 9005422667436345080, + 6610327294069915149, + 3392047280994887983, + 185928194404395622, + ]), + Fq::from_montgomery_limbs([ + 5907489245706778002, + 2611521107474717810, + 15424563447378789128, + 1081732924695236796, + ]), + Fq::from_montgomery_limbs([ + 6936175948569238427, + 16265819354303431672, + 9296694820053549015, + 380971488662375691, + ]), + Fq::from_montgomery_limbs([ + 11847879878992849222, + 17246157629192690467, + 2240336221502957918, + 551120206298529047, + ]), + Fq::from_montgomery_limbs([ + 13322826606934505627, + 11726197427344458839, + 11800080869580456447, + 426669602496174268, + ]), + Fq::from_montgomery_limbs([ + 6217036164702465819, + 14690910531871435703, + 13161157531336562298, + 732442567722820811, + ]), + Fq::from_montgomery_limbs([ + 14882293327891629398, + 9369498032959659338, + 7000848696812799171, + 754562041670533469, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 7595387151201254327, + 16626796275200533088, + 2940178911825115337, + 1184031511121567741, + ]), + Fq::from_montgomery_limbs([ + 9948362750111031958, + 14209593175711129688, + 8446364573948386189, + 802006068920106393, + ]), + Fq::from_montgomery_limbs([ + 15169311970095301438, + 12318244252296365506, + 11639105278755798079, + 84817162733084173, + ]), + Fq::from_montgomery_limbs([ + 5831579622220754273, + 10846086049576885619, + 15991974831220053526, + 756084870377153501, + ]), + Fq::from_montgomery_limbs([ + 4538407139413953048, + 3210811593774606829, + 7928892177512965493, + 295438458271184500, + ]), + Fq::from_montgomery_limbs([ + 16833512221632219759, + 4464061448066183306, + 13162091753490675863, + 292236190186079508, + ]), + Fq::from_montgomery_limbs([ + 13779800725609980259, + 9773765625728017659, + 15074810316420391540, + 950783607166623145, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 15895706787288222123, + 9777370406550782832, + 1347824831892755594, + 1241011767014366278, + ]), + Fq::from_montgomery_limbs([ + 12826978362776209042, + 10633709265050784734, + 17957605540213546613, + 887698438045779720, + ]), + Fq::from_montgomery_limbs([ + 7324188878915493946, + 6492479003127466111, + 8377249725203128879, + 1000161290003049779, + ]), + Fq::from_montgomery_limbs([ + 6704086117324761110, + 146265122731217307, + 2383903051894120264, + 719647807141165334, + ]), + Fq::from_montgomery_limbs([ + 1940312057575972126, + 17930067253838912265, + 317360086895888872, + 5748540581767140, + ]), + Fq::from_montgomery_limbs([ + 17103257683729273147, + 13931874259783487325, + 11872224486078756015, + 956814895668207498, + ]), + Fq::from_montgomery_limbs([ + 13769500095117682353, + 516850361598419166, + 16964626273259476242, + 769634211482580445, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 3113137472185380309, + 3788943308088978270, + 15570984136244536866, + 64143465381601420, + ]), + Fq::from_montgomery_limbs([ + 7162163846740423034, + 17407158529676601980, + 982523548091459495, + 1241886141897586570, + ]), + Fq::from_montgomery_limbs([ + 14248266967200521181, + 12810010597713281838, + 15956352259342376510, + 1249991327654319042, + ]), + Fq::from_montgomery_limbs([ + 14421471441198040024, + 4052632755320875533, + 10507979567878886533, + 966126597683502788, + ]), + Fq::from_montgomery_limbs([ + 1330169793100628257, + 5902370011388045841, + 4268141693837804182, + 504954696237745802, + ]), + Fq::from_montgomery_limbs([ + 12989224119893885561, + 17234018500273188391, + 10939008301878322098, + 259903928118608299, + ]), + Fq::from_montgomery_limbs([ + 10430146681254844704, + 16501713083418526441, + 1818813698196386223, + 290604987547570674, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 2272958606081209500, + 2462669223449072253, + 9500254477224930595, + 45443314528508583, + ]), + Fq::from_montgomery_limbs([ + 15776657251710579335, + 14822492561927322901, + 3903750765721394200, + 630182332308162068, + ]), + Fq::from_montgomery_limbs([ + 12563868195165779174, + 12561252953252587550, + 11907364401269631108, + 581676404653821486, + ]), + Fq::from_montgomery_limbs([ + 148332194159159988, + 10068425626588210986, + 13535393921505334097, + 153553395999465163, + ]), + Fq::from_montgomery_limbs([ + 7747426768506042379, + 7652171709845608793, + 11069887529886935999, + 60205371617013159, + ]), + Fq::from_montgomery_limbs([ + 9292570341502960523, + 3236193786725371597, + 8898130554136882239, + 1009410450149925646, + ]), + Fq::from_montgomery_limbs([ + 12885815634665358426, + 15963150787962414249, + 4369817253063661209, + 642948406974549063, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 1380867230584918716, + 16725144872260989882, + 11444322500251449972, + 837022230218511427, + ]), + Fq::from_montgomery_limbs([ + 1087920425360181417, + 17141257576042242544, + 8987292985620878561, + 1110305532217600753, + ]), + Fq::from_montgomery_limbs([ + 10359964772262918650, + 10077460265989495047, + 17578499003187392916, + 757342367774183991, + ]), + Fq::from_montgomery_limbs([ + 2779779035056260202, + 2282975003625087828, + 1919400866622348845, + 493318954648288095, + ]), + Fq::from_montgomery_limbs([ + 15672164960009522373, + 3256607523370073938, + 13852207222752867333, + 1244522698781289416, + ]), + Fq::from_montgomery_limbs([ + 12874545038411867774, + 1217025423748364582, + 75869870772488332, + 1001217245879206186, + ]), + Fq::from_montgomery_limbs([ + 8523257600072604774, + 8621165006673159831, + 1464388999950649637, + 1217963817687697670, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 15922812187951378322, + 4516460162368536866, + 15018766830043386765, + 1340613465456337965, + ]), + Fq::from_montgomery_limbs([ + 287441026936003136, + 14764192345714853717, + 4173276030750185119, + 472111033963352598, + ]), + Fq::from_montgomery_limbs([ + 10839733167051473961, + 3454260583859678864, + 11304905847738494430, + 650946296327920383, + ]), + Fq::from_montgomery_limbs([ + 9515448149018827481, + 3488032113770392732, + 10593726245432275549, + 583635792309485522, + ]), + Fq::from_montgomery_limbs([ + 2742448600840811735, + 6652758193289359848, + 9635320418424938172, + 967821689260084870, + ]), + Fq::from_montgomery_limbs([ + 9881468678921411834, + 11537438085600848038, + 7216253876764370660, + 1304070984061260617, + ]), + Fq::from_montgomery_limbs([ + 6196769084394513175, + 1271040910625745125, + 11073763102896512393, + 1165794523446068715, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 15799597978241847363, + 12818531158251383624, + 6963429972659041410, + 397194962489148197, + ]), + Fq::from_montgomery_limbs([ + 138391674938830183, + 6888521073413350790, + 13718840433311127770, + 1101538822720967029, + ]), + Fq::from_montgomery_limbs([ + 12684981053383903956, + 5500073381157750545, + 4169486943568405011, + 879134225324190092, + ]), + Fq::from_montgomery_limbs([ + 464851715795247463, + 2927900015464510347, + 17346267830876442053, + 1137028262870600951, + ]), + Fq::from_montgomery_limbs([ + 1966072756669882436, + 14267740345733608423, + 3868025407329923728, + 1329300268340841458, + ]), + Fq::from_montgomery_limbs([ + 12791556832852048085, + 7187847328998161782, + 6410129678700860221, + 1141843742471101195, + ]), + Fq::from_montgomery_limbs([ + 17394082241710727109, + 3925707544410201182, + 15631236622778680461, + 867359934041458160, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 12197981561714622691, + 3447558190007550222, + 8731482567404865792, + 504033851083789168, + ]), + Fq::from_montgomery_limbs([ + 15548011549070215821, + 18176746913742005334, + 6759691930131684149, + 748826448544702472, + ]), + Fq::from_montgomery_limbs([ + 14426381672075599127, + 6754779155763548400, + 1569326308679565884, + 301254674498691116, + ]), + Fq::from_montgomery_limbs([ + 1190926793578469751, + 4569874070454135204, + 15349066761719847213, + 1143729593598143496, + ]), + Fq::from_montgomery_limbs([ + 4377698380788322951, + 626231241120536954, + 5782570196326664329, + 794203002404066761, + ]), + Fq::from_montgomery_limbs([ + 18203023968026598600, + 769509082182406304, + 14347905833288757784, + 849309248009120890, + ]), + Fq::from_montgomery_limbs([ + 6219667569923491560, + 12993749535175636460, + 9317843769426981121, + 466063065647080758, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 12360205003642410439, + 12233377474426101645, + 8749241487473360725, + 771733806369229100, + ]), + Fq::from_montgomery_limbs([ + 12909744147344161535, + 15270140525914393786, + 958053852923168614, + 1122903083941798107, + ]), + Fq::from_montgomery_limbs([ + 11512594517381251244, + 7788994558197263271, + 17789727628017887833, + 604964920168437514, + ]), + Fq::from_montgomery_limbs([ + 11365008776320664479, + 7674849678441687585, + 10947191902817323894, + 745598673291635479, + ]), + Fq::from_montgomery_limbs([ + 9298337976025138670, + 3504219772802793091, + 18423486933153538231, + 674863471944898182, + ]), + Fq::from_montgomery_limbs([ + 10037370553997808960, + 5643541321548796784, + 3954322339884102888, + 1116686823797890292, + ]), + Fq::from_montgomery_limbs([ + 9151115627925470056, + 1080688967380275155, + 15991630648226528878, + 1130423917661403285, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 16294982486276945283, + 7049820508618491066, + 8145571059898393342, + 186002704339584638, + ]), + Fq::from_montgomery_limbs([ + 755176559839955182, + 11156178401444222993, + 14456074258881310686, + 278477091367678088, + ]), + Fq::from_montgomery_limbs([ + 1257685548905109784, + 5141440235439936072, + 17862579642779035136, + 330137635933850138, + ]), + Fq::from_montgomery_limbs([ + 7830781886086349569, + 12605497826381107847, + 6483908192271317597, + 742032532267494998, + ]), + Fq::from_montgomery_limbs([ + 15889009530646425854, + 4873730462912310136, + 2661766248464352916, + 886629163939946863, + ]), + Fq::from_montgomery_limbs([ + 12291205541312705254, + 7759245016766434277, + 14282726477924298523, + 275206715444074183, + ]), + Fq::from_montgomery_limbs([ + 7015277851946876128, + 6540146872039720132, + 3413400018095950201, + 488630649619127768, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 8080067703614789529, + 14335022802712765520, + 12181558540579879368, + 1181883134308686818, + ]), + Fq::from_montgomery_limbs([ + 3930610870091700987, + 11870595227272460342, + 5614691549969018824, + 1036838548873476989, + ]), + Fq::from_montgomery_limbs([ + 15116537084696928201, + 6562302783432438956, + 8446888808137423003, + 1165521566881319341, + ]), + Fq::from_montgomery_limbs([ + 7622363474306732593, + 14018499983613194146, + 5504535021523794239, + 1156251508187455677, + ]), + Fq::from_montgomery_limbs([ + 18353812883604490408, + 7863175561039540930, + 16157508248448358210, + 295160799461001215, + ]), + Fq::from_montgomery_limbs([ + 9630152100811825815, + 18335618989479732132, + 8847214215895375728, + 938895491334142608, + ]), + Fq::from_montgomery_limbs([ + 13116080893996470839, + 13627909126954009780, + 15760064020863415616, + 884515223942721558, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 6687780439253411478, + 6719196503388333019, + 88771745794551678, + 987619641692746386, + ]), + Fq::from_montgomery_limbs([ + 18227317062064988196, + 14045861136043637767, + 16184554390694852575, + 168316121892514264, + ]), + Fq::from_montgomery_limbs([ + 2567020624281662578, + 12408201210305429297, + 15172611508502121839, + 184308211509770511, + ]), + Fq::from_montgomery_limbs([ + 6504349685450813046, + 6151032549024957176, + 8446915662866336279, + 721911887099189465, + ]), + Fq::from_montgomery_limbs([ + 3337661731072526341, + 2993440831960528581, + 1509729075929391927, + 478329275350342603, + ]), + Fq::from_montgomery_limbs([ + 1009230922039257241, + 6930789170818330480, + 4189309447677808153, + 116099938331986078, + ]), + Fq::from_montgomery_limbs([ + 11734050699831527761, + 10637489645393719148, + 526453959140559372, + 879302010498683200, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 4873204063755775221, + 9933480403362446589, + 9949453296663390065, + 246028972103247826, + ]), + Fq::from_montgomery_limbs([ + 1486515864865111240, + 8186666825731582288, + 17298579416284146352, + 75432580959795592, + ]), + Fq::from_montgomery_limbs([ + 505624159752585300, + 400192717675446053, + 16830576854563029465, + 1083591845791403649, + ]), + Fq::from_montgomery_limbs([ + 15707645648143644435, + 15104101221834649015, + 2714910978190477603, + 1152442812583011873, + ]), + Fq::from_montgomery_limbs([ + 13680539759561187051, + 166623071797346207, + 14072328976002035503, + 1262049047131890020, + ]), + Fq::from_montgomery_limbs([ + 1997216355444588659, + 4362151030955817495, + 4119100627602964220, + 86616090171999332, + ]), + Fq::from_montgomery_limbs([ + 2511307420156057573, + 14546073810053310617, + 2740719298105876931, + 1306803605810669667, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 9796594921607316066, + 9046940149281062534, + 3066668479453506525, + 629717731494457650, + ]), + Fq::from_montgomery_limbs([ + 15245080183700001743, + 17772522498139932944, + 1303200707700973869, + 1321448515508953860, + ]), + Fq::from_montgomery_limbs([ + 15382852889694635458, + 13258286043643865801, + 9129565020842704924, + 647265428745294973, + ]), + Fq::from_montgomery_limbs([ + 406339679439528630, + 358526789424126981, + 15360185281241795369, + 402771395127408535, + ]), + Fq::from_montgomery_limbs([ + 14729795014613647379, + 6659603767330364601, + 10382867237853880917, + 983014168589450240, + ]), + Fq::from_montgomery_limbs([ + 130913533882362207, + 3464497722457480940, + 6174897712775413536, + 362284933576221116, + ]), + Fq::from_montgomery_limbs([ + 6802705157024058052, + 13442544871481896094, + 13780491571272760495, + 909644424511448796, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 15361452699552249664, + 9640740743000109947, + 5568737378741199451, + 962844949024683508, + ]), + Fq::from_montgomery_limbs([ + 459261181401017545, + 7171449908290213843, + 15871949118083492196, + 158962359341824787, + ]), + Fq::from_montgomery_limbs([ + 7906547241546612427, + 7911718846541029411, + 14951976648354808013, + 421942213347946833, + ]), + Fq::from_montgomery_limbs([ + 11183093321955941025, + 11064782095852757040, + 17028937525080502941, + 84626144143427215, + ]), + Fq::from_montgomery_limbs([ + 15224853022182992564, + 6262171785917223470, + 16177655818423871790, + 1014568265658824394, + ]), + Fq::from_montgomery_limbs([ + 625719919361420446, + 8380808592474630812, + 3431067771421433694, + 687333698000967202, + ]), + Fq::from_montgomery_limbs([ + 16024186533956349632, + 6397405785318083633, + 15989828043790400414, + 850765743467676249, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 16821206357298616469, + 1130392039725774709, + 5626389420189454642, + 1118339463429080277, + ]), + Fq::from_montgomery_limbs([ + 8638502030638568937, + 14913248685358382503, + 2067471807256194154, + 1100154439569300281, + ]), + Fq::from_montgomery_limbs([ + 17564526714798056567, + 2679133728209391057, + 12485118550630518387, + 962529009983964522, + ]), + Fq::from_montgomery_limbs([ + 4671481911068696338, + 11211404871059653651, + 4714104003967750529, + 460522700989518506, + ]), + Fq::from_montgomery_limbs([ + 6601065644493764993, + 6108401876661130452, + 518511813649845646, + 611513774682652448, + ]), + Fq::from_montgomery_limbs([ + 2861830270848819795, + 16356361265808876600, + 12810879004275814176, + 1286972374050895235, + ]), + Fq::from_montgomery_limbs([ + 15194368129140163866, + 4422109454732341537, + 16494227980417936974, + 290982210272018089, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 17007536869668539214, + 3870339684122566773, + 7418389053554657334, + 263511272051190454, + ]), + Fq::from_montgomery_limbs([ + 12410612082473707857, + 4040398757796296521, + 16094020059960359234, + 939075584469470040, + ]), + Fq::from_montgomery_limbs([ + 7418236128585187557, + 15691596850766474049, + 4839121991874976767, + 1173030423683112566, + ]), + Fq::from_montgomery_limbs([ + 5215564176166340124, + 2655381196051933641, + 6045374250672288630, + 176416756249057657, + ]), + Fq::from_montgomery_limbs([ + 13952195320089654608, + 13938861125107555897, + 13572960470464709581, + 247820705708880751, + ]), + Fq::from_montgomery_limbs([ + 7397318582807137181, + 18043760894393149278, + 14776480882092071507, + 1134492376276011511, + ]), + Fq::from_montgomery_limbs([ + 10024735062566598040, + 5074414902312726054, + 16541770110513564624, + 1319392307629355494, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 17701692352398604469, + 12227868835058163041, + 6355645072062803626, + 46662470597422118, + ]), + Fq::from_montgomery_limbs([ + 17486353498011500258, + 14688387905134443671, + 86673003791736603, + 334193962485781999, + ]), + Fq::from_montgomery_limbs([ + 2725938978570184818, + 12538279414757715369, + 4423739824876634382, + 990960136859773111, + ]), + Fq::from_montgomery_limbs([ + 1658418413165666717, + 4481948955101880251, + 2380234418157645031, + 242453692938449648, + ]), + Fq::from_montgomery_limbs([ + 16462799862547279938, + 15860491361132810167, + 17855590817263886803, + 566253932393246465, + ]), + Fq::from_montgomery_limbs([ + 7795866114233701913, + 671818567137775288, + 8587656269292170703, + 1248608466500904131, + ]), + Fq::from_montgomery_limbs([ + 12734974453986836356, + 13876952892523324606, + 8958492656376686082, + 1219220119207244562, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 16939094048589357804, + 27828887622580244, + 17879324893769825916, + 1323982021311509582, + ]), + Fq::from_montgomery_limbs([ + 3829148264852223810, + 16344601064097516632, + 17405856957400469367, + 1015406940125315334, + ]), + Fq::from_montgomery_limbs([ + 2496078501178333445, + 3431033003985481851, + 18046940389757892591, + 78803126847324668, + ]), + Fq::from_montgomery_limbs([ + 10354574228107355459, + 2956204224517963071, + 4281810991966937657, + 773005109651151512, + ]), + Fq::from_montgomery_limbs([ + 11661373254033173032, + 7617994408757678472, + 3818523458153749994, + 1124211529831618075, + ]), + Fq::from_montgomery_limbs([ + 5343527255304572547, + 18057091451537453565, + 7219465431491887651, + 438777407253439449, + ]), + Fq::from_montgomery_limbs([ + 6944386246740202781, + 15457528402087694028, + 3684425466632772887, + 516255567451219667, + ]), + ]), + Matrix::<1, 7, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 11265451120049686448, + 17733431402661201252, + 10181100791013355567, + 1222168459125423207, + ]), + Fq::from_montgomery_limbs([ + 16541130910067039592, + 8550248424255720611, + 5388592089365012797, + 401807388479450663, + ]), + Fq::from_montgomery_limbs([ + 15535862948076515909, + 14246335147027067446, + 3440553300570031637, + 1140798916603065405, + ]), + Fq::from_montgomery_limbs([ + 181454369079184993, + 10259998444066142751, + 13378833995981646023, + 1233479771041134216, + ]), + Fq::from_montgomery_limbs([ + 16855179079358889281, + 15202871199402424660, + 10704979988227736970, + 1092640973189828568, + ]), + Fq::from_montgomery_limbs([ + 8641652447153871125, + 14767053670343766852, + 14349039701716536407, + 776309354634057048, + ]), + Fq::from_montgomery_limbs([ + 16709348381005515895, + 522436120289473263, + 2848448538858947951, + 930729981926185853, + ]), + ]), + ], + w_hat_collection: [ + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 5469465372454405746, + 11693688927749785195, + 9284229770381589387, + 263916402201309764, + ]), + Fq::from_montgomery_limbs([ + 8025142443496737775, + 1611073224873590596, + 1595200312703520851, + 268362793599128279, + ]), + Fq::from_montgomery_limbs([ + 2646197433325367530, + 3327161674116363870, + 17523969835882673765, + 1224872920276084181, + ]), + Fq::from_montgomery_limbs([ + 3531022552160069605, + 1044916798369741293, + 13484540382795405112, + 975392012720575741, + ]), + Fq::from_montgomery_limbs([ + 3532672362950129848, + 13232567668052949956, + 3949082925084889589, + 1169300250855119928, + ]), + Fq::from_montgomery_limbs([ + 17405909644706202533, + 9068195655028130334, + 4993737853698066182, + 760630245260613434, + ]), + Fq::from_montgomery_limbs([ + 10760096219897954109, + 15819961273994906871, + 12000866060961275644, + 494051747708222359, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 6362811837083607038, + 10112120774028974554, + 18223478424715278594, + 334017453759956923, + ]), + Fq::from_montgomery_limbs([ + 9425287269899366801, + 11550170751949156528, + 13535057945185910331, + 481928711879823346, + ]), + Fq::from_montgomery_limbs([ + 17472259370242997056, + 5455690506444253075, + 8901482994501262481, + 216965978934341710, + ]), + Fq::from_montgomery_limbs([ + 6461374808168440859, + 2522061882145442234, + 15960549034903032234, + 172640120507478914, + ]), + Fq::from_montgomery_limbs([ + 15948529219279584260, + 15982605346874278694, + 6269535640895470052, + 598935737770408401, + ]), + Fq::from_montgomery_limbs([ + 6387843144535167444, + 3817387412721348785, + 8453759171668596794, + 249153266075439378, + ]), + Fq::from_montgomery_limbs([ + 12733356128673768262, + 1719659461140646111, + 6773786044742649854, + 1187765335723023490, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 13381096107094038201, + 17813208526318089114, + 18335536409132991824, + 339697501389957039, + ]), + Fq::from_montgomery_limbs([ + 17742161265183589279, + 16788867255988109560, + 14412857631192854758, + 241525962952821929, + ]), + Fq::from_montgomery_limbs([ + 3132656462108501803, + 7337059831094147936, + 10405916960575845901, + 228104793330536468, + ]), + Fq::from_montgomery_limbs([ + 4603265731852134279, + 5399214122633296191, + 8344043762552329652, + 985455486033881462, + ]), + Fq::from_montgomery_limbs([ + 14183899592653698860, + 2177269342994828180, + 10884678024220653483, + 217447665355687992, + ]), + Fq::from_montgomery_limbs([ + 11323936221359713158, + 3341391736943984982, + 17508560691141182274, + 13239895022264913, + ]), + Fq::from_montgomery_limbs([ + 13840945524485292215, + 9974520753931283863, + 4195523720400973895, + 762227204403897594, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 4114179516470424298, + 6425976053490693203, + 12882959905974456947, + 110103675307258331, + ]), + Fq::from_montgomery_limbs([ + 15116210321604905525, + 4118549106744296512, + 3828886987178664227, + 25697701772294022, + ]), + Fq::from_montgomery_limbs([ + 17140438063675080897, + 14878172760305139023, + 16025135762152951507, + 855206538655380046, + ]), + Fq::from_montgomery_limbs([ + 10902652921411376407, + 298732053043081440, + 3474200546567636561, + 73249755607734230, + ]), + Fq::from_montgomery_limbs([ + 10553805817393106605, + 11201074828085121396, + 245273431044608348, + 1118444153373328294, + ]), + Fq::from_montgomery_limbs([ + 10914295885365195477, + 9781502968861552189, + 3016024785085649390, + 1070566622248381309, + ]), + Fq::from_montgomery_limbs([ + 17207023773498274582, + 16270409020606599297, + 15615674408609362833, + 496415543408113636, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 12908589501999937487, + 8065526495594728145, + 14801981742319743709, + 275346991162297736, + ]), + Fq::from_montgomery_limbs([ + 17950935244956210974, + 2150016307817314195, + 16459867286579284659, + 1042519399748946084, + ]), + Fq::from_montgomery_limbs([ + 17900103050404502082, + 14452186078281849672, + 6480606341801761206, + 622530813027865777, + ]), + Fq::from_montgomery_limbs([ + 6659043465579778142, + 5257478652828025077, + 4476708827204863480, + 16044674601944326, + ]), + Fq::from_montgomery_limbs([ + 12982211781831995222, + 12049124325752315255, + 8705698258631367529, + 1297634030024262944, + ]), + Fq::from_montgomery_limbs([ + 6491213021781179190, + 6621864740150572837, + 16900492784527502379, + 1222186981051134852, + ]), + Fq::from_montgomery_limbs([ + 10406390218848689011, + 15713870170786523261, + 10757974052401463167, + 1094311561986616580, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 7587047764889575280, + 11453570134345482138, + 6685160859155170229, + 1173043895898907255, + ]), + Fq::from_montgomery_limbs([ + 16754290437895255736, + 9337309604462582506, + 12206937090776739366, + 420058562194519310, + ]), + Fq::from_montgomery_limbs([ + 6762379518159147694, + 8708770658919355547, + 10850018038610162125, + 1008085848049838570, + ]), + Fq::from_montgomery_limbs([ + 13364112208667503342, + 15694121621742726571, + 10880035211673377855, + 373642360429768529, + ]), + Fq::from_montgomery_limbs([ + 2270999049018193688, + 1120874468185376800, + 411758025544146420, + 1286339318101647584, + ]), + Fq::from_montgomery_limbs([ + 6487825500972649335, + 16454995602857338429, + 5467561124775466727, + 878704090415683008, + ]), + Fq::from_montgomery_limbs([ + 1065155450424764553, + 12374494253224172277, + 8660000041795033471, + 1111585064452242609, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 13207693125029693018, + 4845337225517968099, + 6777888238547968314, + 1213784418907181141, + ]), + Fq::from_montgomery_limbs([ + 8840475980926169942, + 2439983533649319439, + 10722568534952104178, + 237040204857642763, + ]), + Fq::from_montgomery_limbs([ + 12845192406743600306, + 2989732167685602396, + 9737375858921653666, + 1230697363927166390, + ]), + Fq::from_montgomery_limbs([ + 17347381872588777362, + 13861116144606039805, + 13092379011701123650, + 764219716687899335, + ]), + Fq::from_montgomery_limbs([ + 17560394342108123527, + 2417597080550067173, + 4892519055479234860, + 41147728874013821, + ]), + Fq::from_montgomery_limbs([ + 16525591378009204013, + 15575464991459515509, + 8422968616365174468, + 411199147172891757, + ]), + Fq::from_montgomery_limbs([ + 2381387149440902461, + 5412036122050682991, + 13528312040883572709, + 906698787086289152, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 3906793572005745013, + 18158346260651031144, + 13885155522309058406, + 81682927312739464, + ]), + Fq::from_montgomery_limbs([ + 11556601788249882111, + 16294603434168644341, + 3233905800589936432, + 205935519984731, + ]), + Fq::from_montgomery_limbs([ + 15060956636956141748, + 14545891040349678052, + 11359264221189720465, + 356824974507480378, + ]), + Fq::from_montgomery_limbs([ + 13651037643855144634, + 9057349283398801990, + 11128939939991098829, + 339192257850626331, + ]), + Fq::from_montgomery_limbs([ + 13297032679166497156, + 9615759066125111838, + 17802636590285232697, + 561508163130847528, + ]), + Fq::from_montgomery_limbs([ + 8397658199708546603, + 7714753189153428100, + 7790178778963243461, + 185139104215370464, + ]), + Fq::from_montgomery_limbs([ + 2180790926999539040, + 13412426570621087300, + 11981287146222961423, + 639288905678439923, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 14052035671409641250, + 13059764049401289819, + 11971569074865081653, + 1150074447408905206, + ]), + Fq::from_montgomery_limbs([ + 9430708294750522894, + 10157980309621419039, + 15263989057722108309, + 986177323832836397, + ]), + Fq::from_montgomery_limbs([ + 16901845294627087710, + 3489277370587647922, + 16697435307791475526, + 77304496269930872, + ]), + Fq::from_montgomery_limbs([ + 11082416581543669906, + 10393162674600623371, + 3285406343096341615, + 1301030845466123760, + ]), + Fq::from_montgomery_limbs([ + 18004954247480805141, + 5840089398123238351, + 10933632362911021710, + 691842568234993272, + ]), + Fq::from_montgomery_limbs([ + 17084441454288473640, + 2235549442526480819, + 4281084601663253516, + 854500520628530615, + ]), + Fq::from_montgomery_limbs([ + 15995978179451110635, + 5254996480963543781, + 12228168137501357375, + 768298814850744789, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 14897923782972976882, + 14769556083418318998, + 1736582590048574781, + 834637190815349022, + ]), + Fq::from_montgomery_limbs([ + 15951362473351174286, + 7550580364442366310, + 1142582367377712360, + 493901798774432186, + ]), + Fq::from_montgomery_limbs([ + 6843713892592087790, + 17187186375181169829, + 2346758743517403254, + 440860120126405528, + ]), + Fq::from_montgomery_limbs([ + 16233685001159101924, + 3591097020136681981, + 3308092724991209243, + 753631765436882275, + ]), + Fq::from_montgomery_limbs([ + 12817371395153180792, + 11781447572225130349, + 6186298687319142696, + 3684689165947228, + ]), + Fq::from_montgomery_limbs([ + 373243522249877820, + 14362378102133706173, + 11334127490376039043, + 1029386563565171794, + ]), + Fq::from_montgomery_limbs([ + 3320051586177558481, + 3693313581776176503, + 4243258718797155237, + 280296683627599109, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 15777714567664176983, + 13315644392893971158, + 17663595314793470728, + 277994346352588461, + ]), + Fq::from_montgomery_limbs([ + 10698748229571229513, + 4993514528007275782, + 9851470184989070944, + 486473547501834583, + ]), + Fq::from_montgomery_limbs([ + 15731541659238915573, + 10580160097474154328, + 14072730437229004460, + 541485168141790138, + ]), + Fq::from_montgomery_limbs([ + 3621838382408245781, + 5140837518507686846, + 692462686779552266, + 1071238232671920069, + ]), + Fq::from_montgomery_limbs([ + 16903035807706989718, + 16402342976729397848, + 6638418596135594138, + 766006849863633370, + ]), + Fq::from_montgomery_limbs([ + 3391835462656069558, + 8478240763735883610, + 6583767175704093831, + 605702159954668519, + ]), + Fq::from_montgomery_limbs([ + 13153440956937332187, + 8778062398439311613, + 14496687227146002795, + 1184865635693926839, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 5492025723621450587, + 4802310335533070821, + 5103778166610184416, + 1237824309223979752, + ]), + Fq::from_montgomery_limbs([ + 13230781860208750726, + 13444089818089484139, + 17921412814723519524, + 1222680843018701540, + ]), + Fq::from_montgomery_limbs([ + 6469994574006187252, + 9454411230540098121, + 347262197325431191, + 486705196263913773, + ]), + Fq::from_montgomery_limbs([ + 3947674970632735265, + 2916300977963946491, + 6881904307166023017, + 457112286806257099, + ]), + Fq::from_montgomery_limbs([ + 8734203063029639947, + 9235030054635977911, + 17117573327238268274, + 1336943205846791314, + ]), + Fq::from_montgomery_limbs([ + 14915061407614767729, + 5343187615398945512, + 5552119928369165945, + 230612833250200287, + ]), + Fq::from_montgomery_limbs([ + 15343760251811669074, + 11849716817931855852, + 12235003752862513196, + 1092174591577707855, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 16055670419025007879, + 10167255563356161134, + 5873677174484181331, + 1119183194058634412, + ]), + Fq::from_montgomery_limbs([ + 6545073505115712765, + 12208880957985144024, + 2413898051352165752, + 200177087583496979, + ]), + Fq::from_montgomery_limbs([ + 10675772825457541870, + 13221200307080776964, + 8360161479127911800, + 166239764386669819, + ]), + Fq::from_montgomery_limbs([ + 2006419824145230446, + 1298290087846863922, + 11954724771700273308, + 1258575857924774921, + ]), + Fq::from_montgomery_limbs([ + 5182647705377916601, + 12490693483304324120, + 16433633239279713593, + 95750642123415707, + ]), + Fq::from_montgomery_limbs([ + 95333990082317168, + 17157473840728451869, + 10012571168547117601, + 89162384671094023, + ]), + Fq::from_montgomery_limbs([ + 4909644498074356100, + 4736187679400324044, + 5882012018493447769, + 1092049061252631253, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 7311109856180655396, + 11772066066061778775, + 4758323204662324777, + 424401521788398695, + ]), + Fq::from_montgomery_limbs([ + 10327551942056000767, + 7896891757351259654, + 5415141459879741043, + 970729526627356745, + ]), + Fq::from_montgomery_limbs([ + 16598021919990022911, + 4748198554306289116, + 17393884082489388120, + 1042289367721564407, + ]), + Fq::from_montgomery_limbs([ + 6071815438135838764, + 6957160250256416369, + 5727172448350823478, + 363080876294209892, + ]), + Fq::from_montgomery_limbs([ + 9289142807381535883, + 17159982138314567248, + 17888157697874972247, + 525936327365438813, + ]), + Fq::from_montgomery_limbs([ + 13845673834923418042, + 3021171551531346231, + 6196055431827427575, + 879039969582851499, + ]), + Fq::from_montgomery_limbs([ + 5868202154697212122, + 13487005442942356371, + 16163257120298149093, + 656445568990681140, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 6021369790491535593, + 2415914828808962567, + 8804789562076458409, + 141257607088107152, + ]), + Fq::from_montgomery_limbs([ + 8888538666372726960, + 417693810472292690, + 6625260792856360214, + 48639855527887045, + ]), + Fq::from_montgomery_limbs([ + 6477686476345016713, + 5099365493188187874, + 9710843539546247353, + 356644031678310872, + ]), + Fq::from_montgomery_limbs([ + 514050899336931730, + 1305432265166896997, + 3022676376566559511, + 992533360610514607, + ]), + Fq::from_montgomery_limbs([ + 3586775418789355531, + 9516764397514990497, + 13077440505677103078, + 1193605133897764836, + ]), + Fq::from_montgomery_limbs([ + 11915336245727353796, + 3787026284924392313, + 9686187959466848805, + 331336880299973516, + ]), + Fq::from_montgomery_limbs([ + 13079652964588155522, + 3686330961737298646, + 12410090506639101095, + 1254304946836077906, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 14841602521644800285, + 9707581858559806753, + 8194272850889842673, + 1175777861699186223, + ]), + Fq::from_montgomery_limbs([ + 8340457880130547197, + 17733479127111148650, + 9935013927746385786, + 727641041410784864, + ]), + Fq::from_montgomery_limbs([ + 15762625424586722564, + 3435382265052399320, + 8159926067386473340, + 197998409655179296, + ]), + Fq::from_montgomery_limbs([ + 8605915918798970675, + 13692084072552856212, + 4328810091072359910, + 868588572376767645, + ]), + Fq::from_montgomery_limbs([ + 1361081942051675201, + 15249716130118278159, + 2121941051566676057, + 559576702023081922, + ]), + Fq::from_montgomery_limbs([ + 10752810451997705936, + 2862464874834320603, + 10309748098106940300, + 1304236557076849780, + ]), + Fq::from_montgomery_limbs([ + 2835871431608154484, + 1749514314752450621, + 2725234542965358215, + 1201694229063035252, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 1073940549267563537, + 6847045449574399581, + 17756819714770896582, + 1117463338790312145, + ]), + Fq::from_montgomery_limbs([ + 12704094153865092665, + 8539050408973245584, + 17734788789994913591, + 929238621728331350, + ]), + Fq::from_montgomery_limbs([ + 10082772236499648827, + 15108304350645714070, + 3086595294879967436, + 1200387991311725607, + ]), + Fq::from_montgomery_limbs([ + 5047622605931054175, + 7557906648527048263, + 9624095609160422424, + 45506591031030909, + ]), + Fq::from_montgomery_limbs([ + 6965550813182250949, + 565066047981282920, + 13462964114732145360, + 980356066902323608, + ]), + Fq::from_montgomery_limbs([ + 15558299170349086309, + 1286346204199469533, + 3574858446200038472, + 851991524979889708, + ]), + Fq::from_montgomery_limbs([ + 7325586067383897002, + 10233684635542340023, + 17557031856919477181, + 132029230490414274, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 7217923862445368663, + 3794612520606418012, + 8670181285195573375, + 240971390392704685, + ]), + Fq::from_montgomery_limbs([ + 537441915444801171, + 3014981172602304732, + 1479722163959615169, + 155749091741220885, + ]), + Fq::from_montgomery_limbs([ + 13062793399299583557, + 1159027774347651884, + 2336679478816355142, + 270200510125259051, + ]), + Fq::from_montgomery_limbs([ + 3831694067573543757, + 10964370664526245902, + 4087998121879874921, + 905965084930019006, + ]), + Fq::from_montgomery_limbs([ + 13194259065052094927, + 388722439697642959, + 178624285496351497, + 578824842066706531, + ]), + Fq::from_montgomery_limbs([ + 17948259725763227950, + 9014484167981796209, + 6107081279184176814, + 69534426400404264, + ]), + Fq::from_montgomery_limbs([ + 7978550262967360739, + 7491565367832202367, + 4365729291374404994, + 1335365781615388178, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 10669459440663038789, + 6552676677342008487, + 13316372054996453680, + 550925049999738916, + ]), + Fq::from_montgomery_limbs([ + 4419333495078684322, + 6927538080001000341, + 2225108594758156053, + 1079053614093719540, + ]), + Fq::from_montgomery_limbs([ + 1972675078636948291, + 12089663092664065043, + 17766574022138625521, + 121432615644490431, + ]), + Fq::from_montgomery_limbs([ + 1053520141057629369, + 10770912132989963882, + 1148187868111152786, + 707938827427743885, + ]), + Fq::from_montgomery_limbs([ + 3260322753636284964, + 10729835216415125135, + 716444025392599556, + 690504199610876560, + ]), + Fq::from_montgomery_limbs([ + 6934370135811844333, + 6301658833825444793, + 4848235658034124485, + 472091301484588447, + ]), + Fq::from_montgomery_limbs([ + 9777643377073268806, + 791842489813847254, + 12448150674843197239, + 458910758561278370, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 15803810666230694733, + 17547487450377911929, + 11906139405746854533, + 825285431509255503, + ]), + Fq::from_montgomery_limbs([ + 16600353337473024459, + 1886864376737549006, + 616311009164692973, + 639902607392049032, + ]), + Fq::from_montgomery_limbs([ + 1680268521087434801, + 1091097160854707765, + 18087803601592847532, + 572438372434779394, + ]), + Fq::from_montgomery_limbs([ + 13425154509660903739, + 7155042440442144058, + 5484293510771639701, + 440694050533320954, + ]), + Fq::from_montgomery_limbs([ + 18374411341880395201, + 14499066397809595914, + 13606711309161552316, + 988627169135416549, + ]), + Fq::from_montgomery_limbs([ + 2227485226860398923, + 6037771840516072237, + 10092335873046301438, + 263890669231622026, + ]), + Fq::from_montgomery_limbs([ + 16396442279804673220, + 11758563075897600330, + 14728620288909029404, + 1009629620490761817, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 17746049445618651584, + 15474250106095074477, + 6808865525843107141, + 252069263355480366, + ]), + Fq::from_montgomery_limbs([ + 10094119795803932244, + 10978354614679659751, + 7451382830965148493, + 1131617137883762978, + ]), + Fq::from_montgomery_limbs([ + 16463020271793267367, + 16484453755363327531, + 16299428051085732734, + 1215317962997421603, + ]), + Fq::from_montgomery_limbs([ + 222141886324808295, + 13928396678279854231, + 10143359980064533818, + 815662865945589973, + ]), + Fq::from_montgomery_limbs([ + 12231656940181472813, + 6572412520702222123, + 12613052303172694748, + 266113525618574574, + ]), + Fq::from_montgomery_limbs([ + 988110300489242272, + 2246797931487708434, + 10572926100714461647, + 903118853801541805, + ]), + Fq::from_montgomery_limbs([ + 530795899436597525, + 8521163943052335338, + 8151289800410686217, + 36252124276088895, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 15950738796712300438, + 5211784799364900458, + 10872161777257884476, + 622500837165264302, + ]), + Fq::from_montgomery_limbs([ + 1796299668914971469, + 10069069742410689124, + 17398930418864211639, + 571074796095573997, + ]), + Fq::from_montgomery_limbs([ + 17415629526903541572, + 60522099572337001, + 7357276421993594658, + 67139681069623750, + ]), + Fq::from_montgomery_limbs([ + 3150476614427182634, + 11400695529363767640, + 9974085938634932190, + 201799321821634924, + ]), + Fq::from_montgomery_limbs([ + 17211147489720667761, + 15454125189814636772, + 1785683860014593630, + 1234545901167080662, + ]), + Fq::from_montgomery_limbs([ + 12917754021603623789, + 10145571812631521550, + 5237021007548635344, + 113519696768852825, + ]), + Fq::from_montgomery_limbs([ + 15503258828146475946, + 914788767927389955, + 8850539145480636682, + 452504293017031100, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 3745554364046936255, + 4597306622888789154, + 5979651250338667136, + 1238385628454513051, + ]), + Fq::from_montgomery_limbs([ + 3776630884323931547, + 3549782146440747750, + 5508785071859620867, + 701959603932551327, + ]), + Fq::from_montgomery_limbs([ + 15669417982403128442, + 4987063011318496848, + 2675129774208819610, + 752856218864954922, + ]), + Fq::from_montgomery_limbs([ + 12384169795306075140, + 13266521557806758758, + 8976316392650036414, + 779369456063978984, + ]), + Fq::from_montgomery_limbs([ + 7882432423342926513, + 17205292058596297059, + 11479846445566224721, + 1260089851413577942, + ]), + Fq::from_montgomery_limbs([ + 14020835325904272518, + 10352766579517264043, + 15417820050597494655, + 621361945178146722, + ]), + Fq::from_montgomery_limbs([ + 17051687952810193326, + 6871472877919148363, + 3489400199188897362, + 687766677359196782, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 17382705588788402853, + 4598916697035859633, + 4518832565581736311, + 653080619696360531, + ]), + Fq::from_montgomery_limbs([ + 2250500707327888710, + 8472537755265510597, + 8234912680399854173, + 435433220178846885, + ]), + Fq::from_montgomery_limbs([ + 11580178681277497490, + 5498607256285409706, + 4135785859002967214, + 1124489661838811902, + ]), + Fq::from_montgomery_limbs([ + 17779714097123614458, + 8699423459123996923, + 15631484148488778752, + 909516986337557641, + ]), + Fq::from_montgomery_limbs([ + 18163751795979980990, + 11867922209368440763, + 10515761459427034219, + 1332994349752029313, + ]), + Fq::from_montgomery_limbs([ + 6467500727988715108, + 9306282235622577642, + 13541102366651570877, + 416775728642319774, + ]), + Fq::from_montgomery_limbs([ + 10383099790322168017, + 17058343682036470720, + 16556281441888606360, + 1108176927190266030, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 8622953880956768188, + 7398970229585501839, + 3084527402086859984, + 1314489003639612227, + ]), + Fq::from_montgomery_limbs([ + 2647974631426734642, + 3924418247812102940, + 4184932287519868312, + 1194114797716949792, + ]), + Fq::from_montgomery_limbs([ + 14598747211696490139, + 10879316167117011549, + 9287974170985802960, + 731429090606059611, + ]), + Fq::from_montgomery_limbs([ + 9444556880219125709, + 5586056795682328427, + 7367116120983861589, + 588219877692556070, + ]), + Fq::from_montgomery_limbs([ + 10966009764315859760, + 10742608081271307349, + 3709772539537310986, + 497532886403996414, + ]), + Fq::from_montgomery_limbs([ + 15416260817024711436, + 431667905910500746, + 1387964135713748516, + 918060216721194080, + ]), + Fq::from_montgomery_limbs([ + 11657403806820742348, + 10510065601598889238, + 8349835292055724063, + 502241567933397208, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 5125027997144123095, + 7303165910753964935, + 10691796975927186405, + 1054799562052499765, + ]), + Fq::from_montgomery_limbs([ + 3677058682136778866, + 2112392306281972958, + 6200265695478657913, + 720439016775781556, + ]), + Fq::from_montgomery_limbs([ + 8272146025997512256, + 10341698166702554611, + 15851101317909170235, + 452521866559100336, + ]), + Fq::from_montgomery_limbs([ + 9968119379746477391, + 13931547738079661500, + 12809160964499846690, + 770440521239403115, + ]), + Fq::from_montgomery_limbs([ + 11434415940462413800, + 16684667769948280834, + 17418898698438354203, + 1004769570334088081, + ]), + Fq::from_montgomery_limbs([ + 3258653721799542419, + 3871032496675885535, + 15086212796812657551, + 548348409520277973, + ]), + Fq::from_montgomery_limbs([ + 9315341100800814485, + 16973311177794380607, + 9399876472392037546, + 371744665007363788, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 13784204593688045203, + 987916117600213001, + 10766183396659311558, + 616603627600417345, + ]), + Fq::from_montgomery_limbs([ + 16045652418239566399, + 8490486261587787544, + 17701136459350400996, + 200715104605533295, + ]), + Fq::from_montgomery_limbs([ + 16284971980816740279, + 8206294557799882679, + 2790028614836001157, + 1230396046687758171, + ]), + Fq::from_montgomery_limbs([ + 9870167375285365220, + 7246310481239931900, + 17367559916410875637, + 828013539220163509, + ]), + Fq::from_montgomery_limbs([ + 16072962173730053757, + 4193938980038706222, + 11164976873168367038, + 230857852443905890, + ]), + Fq::from_montgomery_limbs([ + 7523323272036182261, + 7860098358273104019, + 14378442365280097332, + 1330897076351403427, + ]), + Fq::from_montgomery_limbs([ + 5166916295217303780, + 12258429519770930476, + 7573997247042435361, + 682178487313104306, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 2043764091903620445, + 4485903403091863087, + 7882707843266586726, + 32588602135411527, + ]), + Fq::from_montgomery_limbs([ + 15445407966754968040, + 18357001192960460653, + 4704086230082948769, + 786939246434391312, + ]), + Fq::from_montgomery_limbs([ + 16117366278228333427, + 18271129267524238221, + 10279609063883049289, + 1039698878929789014, + ]), + Fq::from_montgomery_limbs([ + 7187518414442758799, + 1779717612181090682, + 11702580549115117112, + 938810897647106356, + ]), + Fq::from_montgomery_limbs([ + 17722222577775244941, + 9996465098177475040, + 6523413930963943566, + 594985722442752339, + ]), + Fq::from_montgomery_limbs([ + 14942503613037167587, + 18043065733746265056, + 18350946329946766564, + 456482704506596726, + ]), + Fq::from_montgomery_limbs([ + 413913659191909137, + 6804960474770818549, + 11211569852612831192, + 29172099643213194, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 12244020429757927595, + 7878431481226438368, + 15736494002689538032, + 952552586365680365, + ]), + Fq::from_montgomery_limbs([ + 6811639335636941408, + 13087253934833450042, + 14243138544038514009, + 802500736974958878, + ]), + Fq::from_montgomery_limbs([ + 5119841013779673124, + 924763452388520667, + 13728889174508658116, + 1253763325687067827, + ]), + Fq::from_montgomery_limbs([ + 15043507624384025219, + 14829641103772380163, + 3009461704678867396, + 937642236989310683, + ]), + Fq::from_montgomery_limbs([ + 11671642017952121222, + 16541053200478701290, + 1980039776401781944, + 588963913112990120, + ]), + Fq::from_montgomery_limbs([ + 10584858696775764162, + 11016739814752144940, + 16324314276275577748, + 654922621317102495, + ]), + Fq::from_montgomery_limbs([ + 3244897877015736117, + 11237789704802235882, + 15022173147815144257, + 40109243059779922, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 13421818826894964525, + 6843121314819036302, + 177656756133214759, + 1219229288475674852, + ]), + Fq::from_montgomery_limbs([ + 6718699512784917601, + 586674041776306822, + 18334677892276409595, + 789222582574373919, + ]), + Fq::from_montgomery_limbs([ + 2284827956975526833, + 6582209151387402444, + 16582912253436322211, + 341803586231976372, + ]), + Fq::from_montgomery_limbs([ + 7256396544134998118, + 8214951682602116321, + 3245431556959173874, + 1245025275513704302, + ]), + Fq::from_montgomery_limbs([ + 15432965983836887543, + 14720892157109837025, + 15495565877696769481, + 28040874075986580, + ]), + Fq::from_montgomery_limbs([ + 2845048156588876954, + 8511864041625766030, + 12227720668782503297, + 751125685338714507, + ]), + Fq::from_montgomery_limbs([ + 16400929974316258476, + 14955948068318960184, + 10179371694614714547, + 1203413977422071153, + ]), + ]), + Matrix::<7, 1, 7>::new_from_known([ + Fq::from_montgomery_limbs([ + 6945749691605470013, + 11814685140591736549, + 9661986044853389934, + 549110123010799116, + ]), + Fq::from_montgomery_limbs([ + 10314852142802128718, + 16931011931436831749, + 6272554436628472312, + 613946066674111963, + ]), + Fq::from_montgomery_limbs([ + 7885885393747543748, + 6205273416854026781, + 3045614234898978712, + 325443134576651832, + ]), + Fq::from_montgomery_limbs([ + 16340716059032367665, + 13900104810468791197, + 13840116352417324181, + 807825755702914983, + ]), + Fq::from_montgomery_limbs([ + 11307065830129329386, + 17314979792657924564, + 1031027443933101440, + 670942943796932032, + ]), + Fq::from_montgomery_limbs([ + 16427383528817659047, + 269318770779983782, + 12646967434416881049, + 792232402464509209, + ]), + Fq::from_montgomery_limbs([ + 5305513183378836911, + 3912518176481377699, + 15813014949092997837, + 717786010393961950, + ]), + ]), + ], + }, + optimized_arc: OptimizedArcMatrix::<39, 8, 312>::new_from_known([ + Fq::from_montgomery_limbs([ + 17670646277747935280, + 16706444459999957760, + 7654997937391160943, + 659194013361630234, + ]), + Fq::from_montgomery_limbs([ + 9306410324956668761, + 11918867663968452855, + 16159669320449336406, + 1027263653273380654, + ]), + Fq::from_montgomery_limbs([ + 10424544810878645940, + 11533042162917906716, + 11405431418950019185, + 1181592306684207657, + ]), + Fq::from_montgomery_limbs([ + 15511314950168773025, + 2706584092620486610, + 12589344906057924987, + 198949415522711747, + ]), + Fq::from_montgomery_limbs([ + 6463242934034011456, + 4480775049700236083, + 1147244402884869561, + 251099301522684222, + ]), + Fq::from_montgomery_limbs([ + 6076653156556680739, + 6058362204127962922, + 2609006430585927072, + 1274277644859784421, + ]), + Fq::from_montgomery_limbs([ + 4034147285618545471, + 16309046946281719379, + 11732506942908882170, + 1141734761043516350, + ]), + Fq::from_montgomery_limbs([ + 15181402120606708665, + 769117698742393942, + 8000709366545785093, + 128042919054960870, + ]), + Fq::from_montgomery_limbs([ + 1723632755773767909, + 7425611528820224114, + 3846361608213771012, + 1317157014229771878, + ]), + Fq::from_montgomery_limbs([ + 1180004570926588292, + 9835115993104089813, + 255514544102365106, + 370024046994873563, + ]), + Fq::from_montgomery_limbs([ + 16507101987459533719, + 15603514395660572922, + 14849362947260167652, + 1094669615299361663, + ]), + Fq::from_montgomery_limbs([ + 1641419564627940104, + 1734977130266781622, + 2359844858057393580, + 88569664018692634, + ]), + Fq::from_montgomery_limbs([ + 16267328831985402574, + 4504129177123355587, + 2430336937000039615, + 182724946762968945, + ]), + Fq::from_montgomery_limbs([ + 17793535158928999608, + 5634031392654154747, + 10364337635238532583, + 1179994829791766723, + ]), + Fq::from_montgomery_limbs([ + 145700301814233551, + 7743364595931833861, + 13600389751414362190, + 60896176710147956, + ]), + Fq::from_montgomery_limbs([ + 17934232373820563709, + 6533845630243602776, + 15324676632824344806, + 193078344538210235, + ]), + Fq::from_montgomery_limbs([ + 3358859423299088468, + 11840854300859333122, + 8971776175135254558, + 1017237487419914281, + ]), + Fq::from_montgomery_limbs([ + 16328481477177681368, + 1582997519876787207, + 5731557971602616313, + 498420306800783215, + ]), + Fq::from_montgomery_limbs([ + 12526989383108933614, + 11731194362815364383, + 12171285115754354694, + 1149426086446852474, + ]), + Fq::from_montgomery_limbs([ + 809732533742229508, + 9195963923014534752, + 11886583635578374853, + 1292532069463172705, + ]), + Fq::from_montgomery_limbs([ + 15459398930996981001, + 17972537529111616674, + 6256384561719931081, + 1099908904421687269, + ]), + Fq::from_montgomery_limbs([ + 6194631511262826563, + 5980361634035332899, + 6132585703186883039, + 1343152289862207638, + ]), + Fq::from_montgomery_limbs([ + 13704532277655419198, + 9493963458736770267, + 12653804519172949169, + 218428805830292650, + ]), + Fq::from_montgomery_limbs([ + 8013496787819495990, + 18081394694809078101, + 14689354188530395484, + 215594972753885108, + ]), + Fq::from_montgomery_limbs([ + 1765918642197202432, + 14609627278749496598, + 17838479232731490790, + 483435431183692300, + ]), + Fq::from_montgomery_limbs([ + 16887594024800193480, + 1328476430727273505, + 17409984215868190656, + 1068059229250495642, + ]), + Fq::from_montgomery_limbs([ + 15487315671093445122, + 4028755842123792652, + 14118515559434131307, + 600004660835889583, + ]), + Fq::from_montgomery_limbs([ + 13620558349664282044, + 9072735252525972202, + 312787852320488038, + 47231029883010665, + ]), + Fq::from_montgomery_limbs([ + 9895950479699930991, + 1320083262020086701, + 9381389112858508819, + 928504768072893822, + ]), + Fq::from_montgomery_limbs([ + 10747871248019763953, + 4479404654791651748, + 11550770912037988700, + 438216942461032792, + ]), + Fq::from_montgomery_limbs([ + 18385142532667962947, + 12272398000439779637, + 7461987138462771945, + 558726769125714997, + ]), + Fq::from_montgomery_limbs([ + 14139485618053732983, + 8348792317702713313, + 367233286875102863, + 186067690854023043, + ]), + Fq::from_montgomery_limbs([ + 9041249832633195933, + 456527929350696070, + 3136123267563166118, + 862425036609816636, + ]), + Fq::from_montgomery_limbs([ + 15124489565605096262, + 9591776999407651202, + 9949743867591863836, + 379301809986101293, + ]), + Fq::from_montgomery_limbs([ + 7936212225265692567, + 5167873242552786141, + 15086007892632579186, + 34123317109097916, + ]), + Fq::from_montgomery_limbs([ + 11979204740795107684, + 9025639229793397244, + 5413420333413553932, + 863248811490344887, + ]), + Fq::from_montgomery_limbs([ + 9695363700834200933, + 8045139581671731368, + 11369126945536873679, + 469549910005852030, + ]), + Fq::from_montgomery_limbs([ + 16001389245048329705, + 14343919283544642008, + 8770282828186128872, + 609282374273682689, + ]), + Fq::from_montgomery_limbs([ + 3823216797063303082, + 1094417965873836739, + 128140664081656267, + 505393735803371332, + ]), + Fq::from_montgomery_limbs([ + 11607694328136514560, + 15466463320091898450, + 1284330480161723488, + 523170093647820661, + ]), + Fq::from_montgomery_limbs([ + 6591976781647884526, + 13155313999173994351, + 5534892153549946238, + 596288575025257402, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11245287468508932221, + 6475072057356916286, + 8955917100198612964, + 906270931915685321, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 15725649958168108419, + 4885330408482380508, + 6484207300414290657, + 1056573086606426860, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16437212199268506264, + 15424576221688158299, + 13027006101536779850, + 608117920425829987, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 17697959731033747413, + 881277620659586097, + 12999020138550792084, + 218994748484938916, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12187347033384567067, + 17834331425991885966, + 8111171543195993305, + 1237278747760332198, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 11540996079264122621, + 2083205448185058166, + 346303233664255773, + 67570065514985214, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10393932313960189738, + 17658417030509504989, + 4494310414388827903, + 1083916009420136201, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2630959439345449795, + 1305013099304121044, + 14958893064556663587, + 502133670161114876, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 13496177055604370316, + 12107925075218853848, + 10893831346139387200, + 735686689798442157, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 12364352345596204590, + 12473718848164928984, + 2425158662567034925, + 904357473540167435, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 14250114029266561642, + 9657963390342822389, + 16617255202449702017, + 52229193358824331, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3393942568576243306, + 15201405507578251139, + 6434177138638406256, + 116816845492109945, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 14360127524315233155, + 4631991403443744392, + 10826720762323261633, + 1154614674523717146, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 14829610837565210361, + 7693159893394777397, + 13277623225200387185, + 263905793180518944, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4366690825327685189, + 15770582084981330795, + 9277162666554299542, + 1073180600510589318, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 16303997479448678802, + 7666294877889688289, + 2209941188570371640, + 1162514781528013202, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 1444309609555002006, + 10573827461364748619, + 2213854418060563275, + 401298293463815465, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 13603143649902644173, + 267673648604347469, + 14770735498081352270, + 897064240488864979, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 8455439882916778200, + 7244379144226653693, + 4901050804550540073, + 742531378918583129, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9638569098999723413, + 8668710516732565855, + 12439587172429553092, + 769864205315111320, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 10577866480500504509, + 15180092538013446632, + 5047010252898418108, + 950851917894966177, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 3189260863075829869, + 10864458126965265163, + 3908173847970795616, + 372196369105917792, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 2051981355439501951, + 5174689290614735930, + 13076787589476369050, + 248791600711156417, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 18083408695123027967, + 12620252496424532716, + 15225720090085185173, + 1087409511851215366, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 1151518846415312778, + 2617847070972026268, + 11920538756871768189, + 372494371299109617, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 8129021687746030207, + 5089594247705352277, + 13404536729495455227, + 996268291797137887, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9082481642086184012, + 16123562957232930427, + 113453873016526172, + 1171240835007212511, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 9619017927874739465, + 12861346968534199922, + 6474341695138246789, + 329774666529093679, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 4828844673239990367, + 9237140426585666270, + 4472429349292670700, + 1211740921942321738, + ]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([0, 0, 0, 0]), + Fq::from_montgomery_limbs([ + 6374588877936433558, + 11607665174546753642, + 15847675340170713041, + 474145143590361300, + ]), + Fq::from_montgomery_limbs([ + 4088002413776997222, + 16030858922743461837, + 4313473177343544055, + 817302900123673764, + ]), + Fq::from_montgomery_limbs([ + 18216186189548814543, + 5687648301273358200, + 6564098766262925833, + 235647764529877689, + ]), + Fq::from_montgomery_limbs([ + 1421650618584051851, + 9669410210003093316, + 15430467067773365518, + 994269415526604309, + ]), + Fq::from_montgomery_limbs([ + 7574559796775011993, + 9643962694113220666, + 1013275434882478619, + 543427156325963008, + ]), + Fq::from_montgomery_limbs([ + 4532353768594877907, + 2433286855157726742, + 15167390808651362948, + 914159030044677082, + ]), + Fq::from_montgomery_limbs([ + 14155199821083030453, + 3642619697360819367, + 7765405773737076472, + 1202115259646869817, + ]), + Fq::from_montgomery_limbs([ + 16335533268534142579, + 4358492749042076660, + 16385044626223358243, + 847268434257421024, + ]), + Fq::from_montgomery_limbs([ + 726136436292617217, + 4735276118883290434, + 6495677390337301519, + 1007951275499954400, + ]), + Fq::from_montgomery_limbs([ + 1441892049918589996, + 16125120862288806381, + 5244917656153261337, + 108755599353706277, + ]), + Fq::from_montgomery_limbs([ + 9330223445766086137, + 9406197553353640417, + 13281468059023600014, + 500503138812404763, + ]), + Fq::from_montgomery_limbs([ + 5355456155777194776, + 15418542913049291849, + 7681885321566295504, + 1188094463923126996, + ]), + Fq::from_montgomery_limbs([ + 11882193142358058793, + 4624069509548102427, + 6735235437551193554, + 962114122876706035, + ]), + Fq::from_montgomery_limbs([ + 1819083831857771980, + 8349663267034291058, + 14403983179525206765, + 942284040773068417, + ]), + Fq::from_montgomery_limbs([ + 7024062436534453440, + 15203692147142724388, + 17082973923084045231, + 1191890185052815108, + ]), + Fq::from_montgomery_limbs([ + 6672719206476059341, + 18362672287252020084, + 3555226216430454216, + 300718449399370145, + ]), + Fq::from_montgomery_limbs([ + 5828458911011841758, + 9271852277477872143, + 18378348640149073615, + 591074353691784318, + ]), + Fq::from_montgomery_limbs([ + 15397757499179479361, + 1878199828613873660, + 4164621900891789384, + 558990401377082502, + ]), + Fq::from_montgomery_limbs([ + 11069496558892348093, + 10253211614498485032, + 11458203419889384673, + 575447664584685933, + ]), + Fq::from_montgomery_limbs([ + 9808353214047792416, + 4805184465312945639, + 3985871967202506787, + 1229730183276593449, + ]), + Fq::from_montgomery_limbs([ + 8420435996312062450, + 11100705514596499443, + 1523101111273631766, + 639557004587150270, + ]), + Fq::from_montgomery_limbs([ + 15630012259368829028, + 15079774099427294323, + 16765804689810369633, + 834886070512612798, + ]), + Fq::from_montgomery_limbs([ + 2000344807995355152, + 8654391083188520616, + 13301563010992444431, + 490951127405891771, + ]), + Fq::from_montgomery_limbs([ + 11761875542266860374, + 709339183471929228, + 17682621289319303167, + 570040706396372700, + ]), + Fq::from_montgomery_limbs([ + 3366481512891059038, + 12720609556939839584, + 1707138651265172645, + 36940608792331559, + ]), + Fq::from_montgomery_limbs([ + 2427334396528044490, + 10170194639028880515, + 18243990154741074229, + 607502491270396977, + ]), + Fq::from_montgomery_limbs([ + 6267947100515031640, + 14520122887125811439, + 6695614471931546770, + 251319533602819784, + ]), + Fq::from_montgomery_limbs([ + 7663026857490478572, + 15777701966597798170, + 10617198553182548195, + 642318201966621785, + ]), + Fq::from_montgomery_limbs([ + 9959998770754152632, + 13119241263216166622, + 6328810982306793729, + 571460896430554998, + ]), + Fq::from_montgomery_limbs([ + 12042605027273090048, + 14859482580111939906, + 11509134713697889199, + 561895216440235106, + ]), + Fq::from_montgomery_limbs([ + 1156916933025613310, + 4529329408550568088, + 14286907616576238972, + 1309540780962817079, + ]), + Fq::from_montgomery_limbs([ + 7510365353910652337, + 14538991928012962248, + 4644117500717216624, + 1340316749461135700, + ]), + ]), } } diff --git a/poseidon377/tests/r1cs.rs b/poseidon377/tests/r1cs.rs index b82a7e4..8eaaaa0 100644 --- a/poseidon377/tests/r1cs.rs +++ b/poseidon377/tests/r1cs.rs @@ -10,7 +10,12 @@ use proptest::prelude::*; use rand_core::OsRng; // This is a domain separator we'll use as a constant in our circuits below. -const DOMAIN_SEP: Fq = Fq::from_montgomery_limbs([15545862963729521748, 8301038308012579564, 6940338389606830037, 431207966161902270]); +const DOMAIN_SEP: Fq = Fq::from_montgomery_limbs([ + 15545862963729521748, + 8301038308012579564, + 6940338389606830037, + 431207966161902270, +]); /// The maximum fixed-width Poseidon hash exposed to downstream users of this crate. const MAX_WIDTH_POSEIDON_HASH: usize = 7; From 6b25ac17557e90acc3992078714287618c0b8016 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Thu, 4 Apr 2024 15:20:37 -0400 Subject: [PATCH 54/54] test: migrate tests to dedicated crate --- Cargo.toml | 1 + README.md | 1 + poseidon-parameters/Cargo.toml | 5 ---- poseidon-parameters/src/lib.rs | 3 -- poseidon-tests/Cargo.toml | 30 +++++++++++++++++++ .../tests/parameters.rs | 10 +++---- .../tests/poseidon377_r1cs.rs | 0 poseidon377/Cargo.toml | 14 --------- 8 files changed, 36 insertions(+), 28 deletions(-) create mode 100644 poseidon-tests/Cargo.toml rename poseidon-parameters/src/tests.rs => poseidon-tests/tests/parameters.rs (97%) rename poseidon377/tests/r1cs.rs => poseidon-tests/tests/poseidon377_r1cs.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index acf5ebc..d3a0085 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,7 @@ members = [ "poseidon-permutation", # "poseidon-consistency", # Temporarily excluded until paramgen is refactored "poseidon-parameters", + "poseidon-tests", ] [profile.release] diff --git a/README.md b/README.md index 3632c82..6e6dc7d 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ This repository contains: parameters * [`poseidon-permutation`](../main/poseidon-permutation): an independent implementation of the Poseidon permutation * [`poseidon-consistency`](../main/poseidon-consistency): property-based tests for consistency between Poseidon implementations +* [`poseidon-tests`](../main/poseidon-tests): test vectors for `poseidon-parameters` and `poseidon377` ## Audits diff --git a/poseidon-parameters/Cargo.toml b/poseidon-parameters/Cargo.toml index dd32115..5039c78 100644 --- a/poseidon-parameters/Cargo.toml +++ b/poseidon-parameters/Cargo.toml @@ -11,11 +11,6 @@ repository = "https://github.com/penumbra-zone/poseidon377" [dependencies] decaf377 = { version="0.9", default-features = false } -[dev-dependencies] -ark-ff = { version = "^0.4.0", default-features = false } -ark-ed-on-bls12-377 = "0.4" -proptest = "1" - [features] default = ["std"] alloc = [ diff --git a/poseidon-parameters/src/lib.rs b/poseidon-parameters/src/lib.rs index a0916c1..aed3da7 100644 --- a/poseidon-parameters/src/lib.rs +++ b/poseidon-parameters/src/lib.rs @@ -13,9 +13,6 @@ mod matrix_ops; mod mds_matrix; mod round_numbers; -#[cfg(test)] -mod tests; - /// Structures related to Poseidon version 1 parameters. pub mod v1; diff --git a/poseidon-tests/Cargo.toml b/poseidon-tests/Cargo.toml new file mode 100644 index 0000000..044cefb --- /dev/null +++ b/poseidon-tests/Cargo.toml @@ -0,0 +1,30 @@ +[package] +name = "poseidon-tests" +version = "0.3.0" +edition = "2018" +authors = ["Penumbra ", "redshiftzero "] +description = "Common tests for penumbra's poseidon implementation" +license = "MIT OR Apache-2.0" +repository = "https://github.com/penumbra-zone/poseidon377" + +[dependencies] +poseidon-parameters = { path = "../poseidon-parameters", default-features = false } +#poseidon-paramgen = { path = "../poseidon-paramgen", default-features = false } +poseidon-permutation = { path="../poseidon-permutation", default-features = false } +decaf377 = { version="0.9", default-features = false } +poseidon377 = { path="../poseidon377", features = ["r1cs"] } + +[dev-dependencies] +ark-ff = { version = "^0.4.0", default-features = false } +ark-ed-on-bls12-377 = { version="0.4", default-features = false } +proptest = "1" +ark-ed-on-bls12-381 = "0.4" +rand_core = { version = "0.6.3", default-features=false } +rand_chacha = "0.3" +ark-groth16 = { version = "0.4", default-features = false } +ark-r1cs-std = {version = "0.4", default-features = false } +ark-relations = { version="0.4", default-features = false } +ark-snark = { version = "0.4", default-features = false } +ark-ec = { version = "0.4", default_features = false } +ark-std = { version = "0.4", default-features = false } +ark-serialize = { version = "0.4", default_features = false } \ No newline at end of file diff --git a/poseidon-parameters/src/tests.rs b/poseidon-tests/tests/parameters.rs similarity index 97% rename from poseidon-parameters/src/tests.rs rename to poseidon-tests/tests/parameters.rs index b339e6c..4c8539f 100644 --- a/poseidon-parameters/src/tests.rs +++ b/poseidon-tests/tests/parameters.rs @@ -1,11 +1,9 @@ use decaf377::Fq; use proptest::prelude::*; -use super::*; - -use crate::matrix::{mat_mul, square_mat_mul}; -use crate::{matrix::Matrix, matrix_ops::MatrixOperations}; -use crate::{matrix::SquareMatrix, matrix_ops::SquareMatrixOperations}; +use poseidon_parameters::v1::{mat_mul, square_mat_mul}; +use poseidon_parameters::v1::{Matrix, MatrixOperations}; +use poseidon_parameters::v1::{SquareMatrix, SquareMatrixOperations}; #[test] fn identity_matrix() { @@ -48,7 +46,7 @@ fn nonsquare_matmul_happy() { let matrix_2x3 = Matrix::<3, 2, 6>::new(test_elements); let matrix_3x2 = matrix_2x3.transpose(); - let res: matrix::Matrix<3, 3, 9> = mat_mul(&matrix_2x3, &matrix_3x2); + let res: Matrix<3, 3, 9> = mat_mul(&matrix_2x3, &matrix_3x2); assert_eq!(res.get_element(0, 0), Fq::from(5u64)); assert_eq!(res.get_element(0, 1), Fq::from(11u64)); assert_eq!(res.get_element(0, 2), Fq::from(17u64)); diff --git a/poseidon377/tests/r1cs.rs b/poseidon-tests/tests/poseidon377_r1cs.rs similarity index 100% rename from poseidon377/tests/r1cs.rs rename to poseidon-tests/tests/poseidon377_r1cs.rs diff --git a/poseidon377/Cargo.toml b/poseidon377/Cargo.toml index f2d251d..37a5173 100644 --- a/poseidon377/Cargo.toml +++ b/poseidon377/Cargo.toml @@ -21,16 +21,6 @@ ark-ec = { version = "0.4", default_features = false, optional=true } ark-std = { version = "0.4", default-features = false, optional=true } ark-serialize = { version = "0.4", default_features = false, optional=true } -[dev-dependencies] -ark-ed-on-bls12-381 = "0.4" -proptest = "1" -rand_core = { version = "0.6.3", default-features=false } -rand_chacha = "0.3" -ark-ff = "0.4" - -# Dependencies added for ark-sponge tests -ark-test-curves = { version = "0.4", features = ["bls12_381_curve", "mnt4_753_curve"]} - [features] default = ["arkworks"] alloc = ["decaf377/alloc"] @@ -66,7 +56,3 @@ parallel = [ "ark-std/parallel", "ark-ec/parallel", ] - -[[test]] -name = "r1cs" -required-features = ["r1cs"]