From c885ba387911d98cef65eee41b2f3bce9577d01c Mon Sep 17 00:00:00 2001 From: guorong009 Date: Thu, 26 Sep 2024 07:04:14 +0000 Subject: [PATCH] deploy: 81c70587302ef718f5211aa1e7d6a7fa0106655d --- .../arithmetic/trait.CurveAffine.html | 4 +- halo2_backend/arithmetic/trait.CurveExt.html | 16 +- halo2_backend/multicore/index.html | 2 +- .../multicore/trait.TryFoldAndReduce.html | 6 +- halo2_backend/plonk/enum.Error.html | 4 +- halo2_backend/plonk/keygen/fn.keygen_pk.html | 2 +- halo2_backend/plonk/keygen/fn.keygen_vk.html | 2 +- halo2_backend/plonk/prover/struct.Prover.html | 10 +- .../plonk/prover/struct.ProverSingle.html | 10 +- .../poly/commitment/struct.Blind.html | 2 +- halo2_backend/poly/commitment/trait.MSM.html | 8 +- .../poly/commitment/trait.Params.html | 4 +- .../poly/commitment/trait.ParamsProver.html | 4 +- .../poly/commitment/trait.Prover.html | 4 +- .../fn.create_proof_with_engine.html | 2 +- .../struct.IPACommitmentScheme.html | 10 +- .../poly/ipa/commitment/struct.ParamsIPA.html | 4 +- halo2_backend/poly/ipa/msm/struct.MSMIPA.html | 2 +- .../poly/ipa/multiopen/struct.ProverIPA.html | 2 +- .../ipa/multiopen/struct.VerifierIPA.html | 4 +- .../poly/ipa/strategy/struct.GuardIPA.html | 2 +- .../struct.KZGCommitmentScheme.html | 24 +- .../poly/kzg/commitment/struct.ParamsKZG.html | 4 +- .../commitment/struct.ParamsVerifierKZG.html | 2 +- .../poly/kzg/msm/struct.DualMSM.html | 2 +- halo2_backend/poly/kzg/msm/struct.MSMKZG.html | 2 +- .../poly/kzg/multiopen/struct.ProverGWC.html | 2 +- .../kzg/multiopen/struct.ProverSHPLONK.html | 2 +- .../poly/struct.EvaluationDomain.html | 4 +- halo2_backend/poly/struct.Polynomial.html | 4 +- .../transcript/struct.Challenge255.html | 20 +- .../circuit/fn.compile_circuit.html | 2 +- .../circuit/layouter/enum.RegionColumn.html | 6 +- .../circuit/layouter/struct.RegionShape.html | 2 +- .../layouter/trait.RegionLayouter.html | 4 +- halo2_frontend/circuit/struct.Cell.html | 4 +- halo2_frontend/circuit/struct.Region.html | 2 +- halo2_frontend/circuit/struct.Value.html | 36 +- halo2_frontend/dev/cost/index.html | 2 +- halo2_frontend/dev/enum.VerifyFailure.html | 6 +- .../dev/metadata/struct.Column.html | 16 +- .../dev/metadata/struct.Constraint.html | 2 +- halo2_frontend/dev/metadata/struct.Gate.html | 2 +- .../dev/metadata/struct.Region.html | 4 +- .../dev/metadata/struct.VirtualCell.html | 2 +- halo2_frontend/dev/struct.CircuitGates.html | 2 +- halo2_frontend/dev/struct.MockProver.html | 6 +- .../plonk/assigned/enum.Assigned.html | 4 +- .../struct.ConstraintSystem.html | 16 +- .../constraint_system/struct.VirtualCell.html | 6 +- .../struct.VirtualCells.html | 10 +- .../circuit/expression/enum.Expression.html | 4 +- .../expression/struct.AdviceQuery.html | 6 +- .../circuit/expression/struct.Challenge.html | 2 +- .../circuit/expression/struct.Column.html | 6 +- .../circuit/expression/struct.FixedQuery.html | 6 +- .../expression/struct.InstanceQuery.html | 6 +- .../plonk/circuit/struct.Advice.html | 2 +- .../plonk/circuit/struct.Fixed.html | 2 +- .../plonk/circuit/struct.Instance.html | 2 +- .../plonk/circuit/trait.Assignment.html | 12 +- .../plonk/circuit/trait.ColumnType.html | 8 +- .../plonk/error/enum.AssignmentError.html | 14 +- halo2_frontend/plonk/error/enum.Error.html | 6 +- .../plonk/permutation/struct.Argument.html | 2 +- halo2_middleware/circuit/enum.VarMid.html | 2 +- .../circuit/struct.ColumnMid.html | 2 +- .../expression/enum.Expression.html | 8 +- halo2_middleware/expression/index.html | 2 +- .../arithmetic/trait.CurveAffine.html | 4 +- halo2_proofs/arithmetic/trait.CurveExt.html | 16 +- halo2_proofs/circuit/struct.Value.html | 56 +- halo2_proofs/dev/metadata/struct.Column.html | 2 +- halo2_proofs/dev/metadata/struct.Region.html | 2 +- halo2_proofs/plonk/enum.Any.html | 2 +- halo2_proofs/plonk/enum.Assigned.html | 46 +- halo2_proofs/plonk/enum.Error.html | 2 +- halo2_proofs/plonk/enum.Expression.html | 4 +- halo2_proofs/plonk/struct.Column.html | 2 +- .../poly/commitment/struct.Blind.html | 4 +- .../struct.KZGCommitmentScheme.html | 16 +- .../transcript/struct.Challenge255.html | 16 +- p3_frontend/enum.SymbolicExpression.html | 6 +- p3_frontend/struct.FWrap.html | 8 +- p3_frontend/struct.SymbolicVariable.html | 2 +- search-index.js | 10 +- .../halo2_proofs/halo2_proofs-desc-0-.js | 2 +- src/halo2_backend/plonk/circuit.rs.html | 88 ++ src/halo2_frontend/dev/cost.rs.html | 14 +- src/halo2_frontend/dev/failure.rs.html | 884 ++++++++++++++++++ src/halo2_frontend/dev/gates.rs.html | 160 ++++ src/halo2_frontend/dev/tfp.rs.html | 250 +++++ src/halo2_middleware/expression.rs.html | 92 +- trait.impl/core/convert/trait.From.js | 2 +- trait.impl/core/convert/trait.TryFrom.js | 2 +- trait.impl/core/fmt/trait.Debug.js | 2 +- .../poly/ipa/commitment/struct.ParamsIPA.js | 2 +- .../expression/enum.Expression.js | 2 +- 98 files changed, 1789 insertions(+), 305 deletions(-) diff --git a/halo2_backend/arithmetic/trait.CurveAffine.html b/halo2_backend/arithmetic/trait.CurveAffine.html index 84408d9058..b7460d2ff4 100644 --- a/halo2_backend/arithmetic/trait.CurveAffine.html +++ b/halo2_backend/arithmetic/trait.CurveAffine.html @@ -48,10 +48,10 @@ ) -> CtOption<G1Affine>
§

fn a() -> <G1Affine as CurveAffine>::Base

§

fn b() -> <G1Affine as CurveAffine>::Base

§

impl CurveAffine for G1Affine

§

type ScalarExt = Fr

§

type Base = Fq

§

type CurveExt = G1

§

fn is_on_curve(&self) -> Choice

§

fn coordinates(&self) -> CtOption<Coordinates<G1Affine>>

§

fn from_xy( x: <G1Affine as CurveAffine>::Base, y: <G1Affine as CurveAffine>::Base -) -> CtOption<G1Affine>

§

fn a() -> <G1Affine as CurveAffine>::Base

§

fn b() -> <G1Affine as CurveAffine>::Base

§

impl CurveAffine for G1Affine

§

type ScalarExt = Fq

§

type Base = Fp

§

type CurveExt = G1

§

fn is_on_curve(&self) -> Choice

§

fn coordinates(&self) -> CtOption<Coordinates<G1Affine>>

§

fn from_xy( +) -> CtOption<G1Affine>

§

fn a() -> <G1Affine as CurveAffine>::Base

§

fn b() -> <G1Affine as CurveAffine>::Base

§

impl CurveAffine for G1Affine

§

type ScalarExt = Fr

§

type Base = Fq

§

type CurveExt = G1

§

fn is_on_curve(&self) -> Choice

§

fn coordinates(&self) -> CtOption<Coordinates<G1Affine>>

§

fn from_xy( x: <G1Affine as CurveAffine>::Base, y: <G1Affine as CurveAffine>::Base -) -> CtOption<G1Affine>

§

fn a() -> <G1Affine as CurveAffine>::Base

§

fn b() -> <G1Affine as CurveAffine>::Base

§

impl CurveAffine for G1Affine

§

type ScalarExt = Fr

§

type Base = Fq

§

type CurveExt = G1

§

fn is_on_curve(&self) -> Choice

§

fn coordinates(&self) -> CtOption<Coordinates<G1Affine>>

§

fn from_xy( +) -> CtOption<G1Affine>

§

fn a() -> <G1Affine as CurveAffine>::Base

§

fn b() -> <G1Affine as CurveAffine>::Base

§

impl CurveAffine for G1Affine

§

type ScalarExt = Fq

§

type Base = Fp

§

type CurveExt = G1

§

fn is_on_curve(&self) -> Choice

§

fn coordinates(&self) -> CtOption<Coordinates<G1Affine>>

§

fn from_xy( x: <G1Affine as CurveAffine>::Base, y: <G1Affine as CurveAffine>::Base ) -> CtOption<G1Affine>

§

fn a() -> <G1Affine as CurveAffine>::Base

§

fn b() -> <G1Affine as CurveAffine>::Base

§

impl CurveAffine for G2Affine

§

type ScalarExt = Fr

§

type Base = QuadExtField<Fq>

§

type CurveExt = G2

§

fn is_on_curve(&self) -> Choice

§

fn coordinates(&self) -> CtOption<Coordinates<G2Affine>>

§

fn from_xy( diff --git a/halo2_backend/arithmetic/trait.CurveExt.html b/halo2_backend/arithmetic/trait.CurveExt.html index fb5999b1fc..4ca8d1dfb8 100644 --- a/halo2_backend/arithmetic/trait.CurveExt.html +++ b/halo2_backend/arithmetic/trait.CurveExt.html @@ -70,19 +70,19 @@

§Example
x: <Eris as CurveExt>::Base, y: <Eris as CurveExt>::Base, z: <Eris as CurveExt>::Base -) -> CtOption<Eris>
§

impl CurveExt for G1

§

type ScalarExt = Fq

§

type Base = Fp

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "pluto"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fp, Fp, Fp)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( +) -> CtOption<Eris>

§

impl CurveExt for G1

§

type ScalarExt = Fr

§

type Base = Fq

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "bls12381_g1"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fq, Fq, Fq)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( x: <G1 as CurveExt>::Base, y: <G1 as CurveExt>::Base, z: <G1 as CurveExt>::Base -) -> CtOption<G1>

§

impl CurveExt for G1

§

type ScalarExt = Fr

§

type Base = Fq

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "bls12381_g1"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fq, Fq, Fq)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( +) -> CtOption<G1>

§

impl CurveExt for G1

§

type ScalarExt = Fr

§

type Base = Fq

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "bn256_g1"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fq, Fq, Fq)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( x: <G1 as CurveExt>::Base, y: <G1 as CurveExt>::Base, z: <G1 as CurveExt>::Base -) -> CtOption<G1>

§

impl CurveExt for G1

§

type ScalarExt = Fr

§

type Base = Fq

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "bn256_g1"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fq, Fq, Fq)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( +) -> CtOption<G1>

§

impl CurveExt for G1

§

type ScalarExt = Fq

§

type Base = Fr

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "grumpkin_g1"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fr, Fr, Fr)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( x: <G1 as CurveExt>::Base, y: <G1 as CurveExt>::Base, z: <G1 as CurveExt>::Base -) -> CtOption<G1>

§

impl CurveExt for G1

§

type ScalarExt = Fq

§

type Base = Fr

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "grumpkin_g1"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fr, Fr, Fr)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( +) -> CtOption<G1>

§

impl CurveExt for G1

§

type ScalarExt = Fq

§

type Base = Fp

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "pluto"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fp, Fp, Fp)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( x: <G1 as CurveExt>::Base, y: <G1 as CurveExt>::Base, z: <G1 as CurveExt>::Base @@ -92,15 +92,15 @@

§Example
x: <G2 as CurveExt>::Base, y: <G2 as CurveExt>::Base, z: <G2 as CurveExt>::Base -) -> CtOption<G2>
§

impl CurveExt for G2

§

type ScalarExt = Fr

§

type Base = QuadExtField<Fq>

§

type AffineExt = G2Affine

§

const CURVE_ID: &'static str = "bls12381_g2"

§

fn endo(&self) -> G2

§

fn jacobian_coordinates( +) -> CtOption<G2>

§

impl CurveExt for G2

§

type ScalarExt = Fq

§

type Base = QuadExtField<Fp>

§

type AffineExt = G2Affine

§

const CURVE_ID: &'static str = "triton"

§

fn endo(&self) -> G2

§

fn jacobian_coordinates( &self -) -> (QuadExtField<Fq>, QuadExtField<Fq>, QuadExtField<Fq>)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G2 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G2 as CurveExt>::Base

§

fn a() -> <G2 as CurveExt>::Base

§

fn new_jacobian( +) -> (QuadExtField<Fp>, QuadExtField<Fp>, QuadExtField<Fp>)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G2 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G2 as CurveExt>::Base

§

fn a() -> <G2 as CurveExt>::Base

§

fn new_jacobian( x: <G2 as CurveExt>::Base, y: <G2 as CurveExt>::Base, z: <G2 as CurveExt>::Base -) -> CtOption<G2>

§

impl CurveExt for G2

§

type ScalarExt = Fq

§

type Base = QuadExtField<Fp>

§

type AffineExt = G2Affine

§

const CURVE_ID: &'static str = "triton"

§

fn endo(&self) -> G2

§

fn jacobian_coordinates( +) -> CtOption<G2>

§

impl CurveExt for G2

§

type ScalarExt = Fr

§

type Base = QuadExtField<Fq>

§

type AffineExt = G2Affine

§

const CURVE_ID: &'static str = "bls12381_g2"

§

fn endo(&self) -> G2

§

fn jacobian_coordinates( &self -) -> (QuadExtField<Fp>, QuadExtField<Fp>, QuadExtField<Fp>)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G2 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G2 as CurveExt>::Base

§

fn a() -> <G2 as CurveExt>::Base

§

fn new_jacobian( +) -> (QuadExtField<Fq>, QuadExtField<Fq>, QuadExtField<Fq>)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G2 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G2 as CurveExt>::Base

§

fn a() -> <G2 as CurveExt>::Base

§

fn new_jacobian( x: <G2 as CurveExt>::Base, y: <G2 as CurveExt>::Base, z: <G2 as CurveExt>::Base diff --git a/halo2_backend/multicore/index.html b/halo2_backend/multicore/index.html index 3fb9c5f0ad..2bd0e8674c 100644 --- a/halo2_backend/multicore/index.html +++ b/halo2_backend/multicore/index.html @@ -14,7 +14,7 @@ }); -

Module halo2_backend::multicore

Structs§

Object Safety§

This trait is not object safe.

Implementors§

§

impl<T, E, I> TryFoldAndReduce<T, E> for I
where +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<T, E, I> TryFoldAndReduce<T, E> for I
where T: Send + Sync, E: Send + Sync, I: ParallelIterator<Item = Result<T, E>>,

\ No newline at end of file diff --git a/halo2_backend/plonk/enum.Error.html b/halo2_backend/plonk/enum.Error.html index f42f3a835e..7b4b24d810 100644 --- a/halo2_backend/plonk/enum.Error.html +++ b/halo2_backend/plonk/enum.Error.html @@ -24,7 +24,7 @@ current_k: u32, }, InstanceTooLarge, - ColumnNotInPermutation(ColumnMid), + ColumnNotInPermutation(ColumnMid), Other(String), }
Expand description

This is an error that could occur during proving.

Variants§

§

InvalidInstances

The provided instances do not match the circuit parameters.

@@ -35,7 +35,7 @@
§

NotEnoughRowsAvailable

k is too small for the given circuit.

Fields

§current_k: u32

The current value of k being used.

§

InstanceTooLarge

Instance provided exceeds number of available rows

-
§

ColumnNotInPermutation(ColumnMid)

The instance sets up a copy constraint involving a column that has not been +

§

ColumnNotInPermutation(ColumnMid)

The instance sets up a copy constraint involving a column that has not been included in the permutation.

§

Other(String)

Generic error not covered by previous cases

Implementations§

source§

impl Error

source

pub fn not_enough_rows_available(current_k: u32) -> Self

Constructs an Error::NotEnoughRowsAvailable.

diff --git a/halo2_backend/plonk/keygen/fn.keygen_pk.html b/halo2_backend/plonk/keygen/fn.keygen_pk.html index 45adce14b0..86132b43f5 100644 --- a/halo2_backend/plonk/keygen/fn.keygen_pk.html +++ b/halo2_backend/plonk/keygen/fn.keygen_pk.html @@ -17,7 +17,7 @@

Function halo2_backend::plonk::keygen::keygen_pk

source ·
pub fn keygen_pk<C, P>(
     params: &P,
     vk: VerifyingKey<C>,
-    circuit: &CompiledCircuit<C::Scalar>
+    circuit: &CompiledCircuit<C::Scalar>
 ) -> Result<ProvingKey<C>, Error>
where C: CurveAffine, P: Params<C>,
Expand description

Generate a ProvingKey from a VerifyingKey and an instance of CompiledCircuit.

diff --git a/halo2_backend/plonk/keygen/fn.keygen_vk.html b/halo2_backend/plonk/keygen/fn.keygen_vk.html index 5da1a4c4df..5b879104b8 100644 --- a/halo2_backend/plonk/keygen/fn.keygen_vk.html +++ b/halo2_backend/plonk/keygen/fn.keygen_vk.html @@ -16,7 +16,7 @@

Function halo2_backend::plonk::keygen::keygen_vk

source ·
pub fn keygen_vk<C, P>(
     params: &P,
-    circuit: &CompiledCircuit<C::Scalar>
+    circuit: &CompiledCircuit<C::Scalar>
 ) -> Result<VerifyingKey<C>, Error>
where C: CurveAffine, P: Params<C>, diff --git a/halo2_backend/plonk/prover/struct.Prover.html b/halo2_backend/plonk/prover/struct.Prover.html index 21465f511d..b61ba4a5fd 100644 --- a/halo2_backend/plonk/prover/struct.Prover.html +++ b/halo2_backend/plonk/prover/struct.Prover.html @@ -14,10 +14,10 @@ }); -

Struct halo2_backend::plonk::prover::Prover

source ·
pub struct Prover<'a, 'params, Scheme: CommitmentScheme, P: Prover<'params, Scheme>, E: EncodedChallenge<Scheme::Curve>, R: RngCore, T: TranscriptWrite<Scheme::Curve, E>, M: MsmAccel<Scheme::Curve>> { /* private fields */ }
Expand description

The prover object used to create proofs interactively by passing the witnesses to commit at +

Struct halo2_backend::plonk::prover::Prover

source ·
pub struct Prover<'a, 'params, Scheme: CommitmentScheme, P: Prover<'params, Scheme>, E: EncodedChallenge<Scheme::Curve>, R: RngCore, T: TranscriptWrite<Scheme::Curve, E>, M: MsmAccel<Scheme::Curve>> { /* private fields */ }
Expand description

The prover object used to create proofs interactively by passing the witnesses to commit at each phase. This supports batch proving.

-

Implementations§

source§

impl<'a, 'params, Scheme: CommitmentScheme, P: Prover<'params, Scheme>, E: EncodedChallenge<Scheme::Curve>, R: RngCore, T: TranscriptWrite<Scheme::Curve, E>, M: MsmAccel<Scheme::Curve>> Prover<'a, 'params, Scheme, P, E, R, T, M>

source

pub fn new_with_engine( - engine: PlonkEngine<Scheme::Curve, M>, +

Implementations§

source§

impl<'a, 'params, Scheme: CommitmentScheme, P: Prover<'params, Scheme>, E: EncodedChallenge<Scheme::Curve>, R: RngCore, T: TranscriptWrite<Scheme::Curve, E>, M: MsmAccel<Scheme::Curve>> Prover<'a, 'params, Scheme, P, E, R, T, M>

source

pub fn new_with_engine( + engine: PlonkEngine<Scheme::Curve, M>, params: &'params Scheme::ParamsProver, pk: &'a ProvingKey<Scheme::Curve>, circuits_instances: &[Vec<Vec<Scheme::Scalar>>], @@ -113,9 +113,9 @@ circuits_instances: &[Vec<Vec<Scheme::Scalar>>], rng: R, transcript: &'a mut T -) -> Result<Prover<'a, 'params, Scheme, P, E, R, T, H2cEngine>, Error>
where +) -> Result<Prover<'a, 'params, Scheme, P, E, R, T, H2cEngine>, Error>
where Scheme::Scalar: WithSmallOrderMulGroup<3> + FromUniformBytes<64>,

Create a new prover object

-

Trait Implementations§

source§

impl<'a, 'params, Scheme: Debug + CommitmentScheme, P: Debug + Prover<'params, Scheme>, E: Debug + EncodedChallenge<Scheme::Curve>, R: Debug + RngCore, T: Debug + TranscriptWrite<Scheme::Curve, E>, M: Debug + MsmAccel<Scheme::Curve>> Debug for Prover<'a, 'params, Scheme, P, E, R, T, M>
where +

Trait Implementations§

source§

impl<'a, 'params, Scheme: Debug + CommitmentScheme, P: Debug + Prover<'params, Scheme>, E: Debug + EncodedChallenge<Scheme::Curve>, R: Debug + RngCore, T: Debug + TranscriptWrite<Scheme::Curve, E>, M: Debug + MsmAccel<Scheme::Curve>> Debug for Prover<'a, 'params, Scheme, P, E, R, T, M>
where Scheme::Curve: Debug, Scheme::ParamsProver: Debug, Scheme::Scalar: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a, 'params, Scheme, P, E, R, T, M> Freeze for Prover<'a, 'params, Scheme, P, E, R, T, M>
where diff --git a/halo2_backend/plonk/prover/struct.ProverSingle.html b/halo2_backend/plonk/prover/struct.ProverSingle.html index 99d36758da..6f8dc4d033 100644 --- a/halo2_backend/plonk/prover/struct.ProverSingle.html +++ b/halo2_backend/plonk/prover/struct.ProverSingle.html @@ -14,10 +14,10 @@ }); -

Struct halo2_backend::plonk::prover::ProverSingle

source ·
pub struct ProverSingle<'a, 'params, Scheme: CommitmentScheme, P: Prover<'params, Scheme>, E: EncodedChallenge<Scheme::Curve>, R: RngCore, T: TranscriptWrite<Scheme::Curve, E>, M: MsmAccel<Scheme::Curve>>(/* private fields */);
Expand description

The prover object used to create proofs interactively by passing the witnesses to commit at +

Struct halo2_backend::plonk::prover::ProverSingle

source ·
pub struct ProverSingle<'a, 'params, Scheme: CommitmentScheme, P: Prover<'params, Scheme>, E: EncodedChallenge<Scheme::Curve>, R: RngCore, T: TranscriptWrite<Scheme::Curve, E>, M: MsmAccel<Scheme::Curve>>(/* private fields */);
Expand description

The prover object used to create proofs interactively by passing the witnesses to commit at each phase. This works for a single proof. This is a wrapper over Prover.

-

Implementations§

source§

impl<'a, 'params, Scheme: CommitmentScheme, P: Prover<'params, Scheme>, E: EncodedChallenge<Scheme::Curve>, R: RngCore, T: TranscriptWrite<Scheme::Curve, E>, M: MsmAccel<Scheme::Curve>> ProverSingle<'a, 'params, Scheme, P, E, R, T, M>

source

pub fn new_with_engine( - engine: PlonkEngine<Scheme::Curve, M>, +

Implementations§

source§

impl<'a, 'params, Scheme: CommitmentScheme, P: Prover<'params, Scheme>, E: EncodedChallenge<Scheme::Curve>, R: RngCore, T: TranscriptWrite<Scheme::Curve, E>, M: MsmAccel<Scheme::Curve>> ProverSingle<'a, 'params, Scheme, P, E, R, T, M>

source

pub fn new_with_engine( + engine: PlonkEngine<Scheme::Curve, M>, params: &'params Scheme::ParamsProver, pk: &'a ProvingKey<Scheme::Curve>, instance: Vec<Vec<Scheme::Scalar>>, @@ -31,7 +31,7 @@ instance: Vec<Vec<Scheme::Scalar>>, rng: R, transcript: &'a mut T -) -> Result<ProverSingle<'a, 'params, Scheme, P, E, R, T, H2cEngine>, Error>
where +) -> Result<ProverSingle<'a, 'params, Scheme, P, E, R, T, H2cEngine>, Error>
where Scheme::Scalar: WithSmallOrderMulGroup<3> + FromUniformBytes<64>,

source

pub fn commit_phase( &mut self, phase: u8, @@ -40,7 +40,7 @@ Scheme::Scalar: WithSmallOrderMulGroup<3> + FromUniformBytes<64>,

Commit the witness at phase and return the challenges after phase.

source

pub fn create_proof(self) -> Result<(), Error>
where Scheme::Scalar: WithSmallOrderMulGroup<3> + FromUniformBytes<64>,

Finalizes the proof creation.

-

Trait Implementations§

source§

impl<'a, 'params, Scheme: Debug + CommitmentScheme, P: Debug + Prover<'params, Scheme>, E: Debug + EncodedChallenge<Scheme::Curve>, R: Debug + RngCore, T: Debug + TranscriptWrite<Scheme::Curve, E>, M: Debug + MsmAccel<Scheme::Curve>> Debug for ProverSingle<'a, 'params, Scheme, P, E, R, T, M>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a, 'params, Scheme, P, E, R, T, M> Freeze for ProverSingle<'a, 'params, Scheme, P, E, R, T, M>
where +

Trait Implementations§

source§

impl<'a, 'params, Scheme: Debug + CommitmentScheme, P: Debug + Prover<'params, Scheme>, E: Debug + EncodedChallenge<Scheme::Curve>, R: Debug + RngCore, T: Debug + TranscriptWrite<Scheme::Curve, E>, M: Debug + MsmAccel<Scheme::Curve>> Debug for ProverSingle<'a, 'params, Scheme, P, E, R, T, M>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a, 'params, Scheme, P, E, R, T, M> Freeze for ProverSingle<'a, 'params, Scheme, P, E, R, T, M>
where R: Freeze, M: Freeze,

§

impl<'a, 'params, Scheme, P, E, R, T, M> RefUnwindSafe for ProverSingle<'a, 'params, Scheme, P, E, R, T, M>
where R: RefUnwindSafe, diff --git a/halo2_backend/poly/commitment/struct.Blind.html b/halo2_backend/poly/commitment/struct.Blind.html index 9f30bae7d4..80bc1a39e4 100644 --- a/halo2_backend/poly/commitment/struct.Blind.html +++ b/halo2_backend/poly/commitment/struct.Blind.html @@ -16,7 +16,7 @@

Struct halo2_backend::poly::commitment::Blind

source ·
pub struct Blind<F>(pub F);
Expand description

Wrapper type around a blinding factor.

Tuple Fields§

§0: F

Implementations§

source§

impl<F: Field> Blind<F>

source

pub fn new<R: RngCore>(rng: &mut R) -> Self

Given rng creates new blinding scalar

-

Trait Implementations§

source§

impl<F: Field> Add for Blind<F>

§

type Output = Blind<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Blind<F>) -> Self

Performs the + operation. Read more
source§

impl<F: Field> AddAssign<F> for Blind<F>

source§

fn add_assign(&mut self, rhs: F)

Performs the += operation. Read more
source§

impl<F: Field> AddAssign for Blind<F>

source§

fn add_assign(&mut self, rhs: Blind<F>)

Performs the += operation. Read more
source§

impl<F: Clone> Clone for Blind<F>

source§

fn clone(&self) -> Blind<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug> Debug for Blind<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> Default for Blind<F>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<F: Field> Mul for Blind<F>

§

type Output = Blind<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Blind<F>) -> Self

Performs the * operation. Read more
source§

impl<F: Field> MulAssign<F> for Blind<F>

source§

fn mul_assign(&mut self, rhs: F)

Performs the *= operation. Read more
source§

impl<F: Field> MulAssign for Blind<F>

source§

fn mul_assign(&mut self, rhs: Blind<F>)

Performs the *= operation. Read more
source§

impl<F: PartialEq> PartialEq for Blind<F>

source§

fn eq(&self, other: &Blind<F>) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl<F: Field> Add for Blind<F>

§

type Output = Blind<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Blind<F>) -> Self

Performs the + operation. Read more
source§

impl<F: Field> AddAssign<F> for Blind<F>

source§

fn add_assign(&mut self, rhs: F)

Performs the += operation. Read more
source§

impl<F: Field> AddAssign for Blind<F>

source§

fn add_assign(&mut self, rhs: Blind<F>)

Performs the += operation. Read more
source§

impl<F: Clone> Clone for Blind<F>

source§

fn clone(&self) -> Blind<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug> Debug for Blind<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> Default for Blind<F>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<F: Field> Mul for Blind<F>

§

type Output = Blind<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Blind<F>) -> Self

Performs the * operation. Read more
source§

impl<F: Field> MulAssign<F> for Blind<F>

source§

fn mul_assign(&mut self, rhs: F)

Performs the *= operation. Read more
source§

impl<F: Field> MulAssign for Blind<F>

source§

fn mul_assign(&mut self, rhs: Blind<F>)

Performs the *= operation. Read more
source§

impl<F: PartialEq> PartialEq for Blind<F>

source§

fn eq(&self, other: &Blind<F>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<F: Copy> Copy for Blind<F>

source§

impl<F: Eq> Eq for Blind<F>

source§

impl<F> StructuralPartialEq for Blind<F>

Auto Trait Implementations§

§

impl<F> Freeze for Blind<F>
where F: Freeze,

§

impl<F> RefUnwindSafe for Blind<F>
where diff --git a/halo2_backend/poly/commitment/trait.MSM.html b/halo2_backend/poly/commitment/trait.MSM.html index fb66d561e7..08963c3bba 100644 --- a/halo2_backend/poly/commitment/trait.MSM.html +++ b/halo2_backend/poly/commitment/trait.MSM.html @@ -20,8 +20,8 @@ fn add_msm(&mut self, other: &Self) where Self: Sized; fn scale(&mut self, factor: C::Scalar); - fn check(&self, engine: &impl MsmAccel<C>) -> bool; - fn eval(&self, engine: &impl MsmAccel<C>) -> C::CurveExt; + fn check(&self, engine: &impl MsmAccel<C>) -> bool; + fn eval(&self, engine: &impl MsmAccel<C>) -> C::CurveExt; fn bases(&self) -> Vec<C::CurveExt>; fn scalars(&self) -> Vec<C::Scalar>; }
Expand description

Multiscalar multiplication engine

@@ -29,8 +29,8 @@
source

fn add_msm(&mut self, other: &Self)
where Self: Sized,

Add another multiexp into this one

source

fn scale(&mut self, factor: C::Scalar)

Scale all scalars in the MSM by some scaling factor

-
source

fn check(&self, engine: &impl MsmAccel<C>) -> bool

Perform multiexp and check that it results in zero

-
source

fn eval(&self, engine: &impl MsmAccel<C>) -> C::CurveExt

Perform multiexp and return the result

+
source

fn check(&self, engine: &impl MsmAccel<C>) -> bool

Perform multiexp and check that it results in zero

+
source

fn eval(&self, engine: &impl MsmAccel<C>) -> C::CurveExt

Perform multiexp and return the result

source

fn bases(&self) -> Vec<C::CurveExt>

Return base points

source

fn scalars(&self) -> Vec<C::Scalar>

Scalars

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<'a, C: CurveAffine> MSM<C> for MSMIPA<'a, C>

source§

impl<E: Engine> MSM<<E as Engine>::G1Affine> for MSMKZG<E>
where diff --git a/halo2_backend/poly/commitment/trait.Params.html b/halo2_backend/poly/commitment/trait.Params.html index b639596910..db5957d138 100644 --- a/halo2_backend/poly/commitment/trait.Params.html +++ b/halo2_backend/poly/commitment/trait.Params.html @@ -21,7 +21,7 @@ fn downsize(&mut self, k: u32); fn commit_lagrange( &self, - engine: &impl MsmAccel<C>, + engine: &impl MsmAccel<C>, poly: &Polynomial<C::ScalarExt, LagrangeCoeff>, r: Blind<C::ScalarExt> ) -> C::CurveExt; @@ -34,7 +34,7 @@
source

fn downsize(&mut self, k: u32)

Downsize Params with smaller k.

source

fn commit_lagrange( &self, - engine: &impl MsmAccel<C>, + engine: &impl MsmAccel<C>, poly: &Polynomial<C::ScalarExt, LagrangeCoeff>, r: Blind<C::ScalarExt> ) -> C::CurveExt

This commits to a polynomial using its evaluations over the $2^k$ size diff --git a/halo2_backend/poly/commitment/trait.ParamsProver.html b/halo2_backend/poly/commitment/trait.ParamsProver.html index fa2ab7e0f7..db133b31e0 100644 --- a/halo2_backend/poly/commitment/trait.ParamsProver.html +++ b/halo2_backend/poly/commitment/trait.ParamsProver.html @@ -19,7 +19,7 @@ fn new(k: u32) -> Self; fn commit( &self, - engine: &impl MsmAccel<C>, + engine: &impl MsmAccel<C>, poly: &Polynomial<C::ScalarExt, Coeff>, r: Blind<C::ScalarExt> ) -> C::CurveExt; @@ -27,7 +27,7 @@

Required Methods§

source

fn new(k: u32) -> Self

Returns new instance of parameters

source

fn commit( &self, - engine: &impl MsmAccel<C>, + engine: &impl MsmAccel<C>, poly: &Polynomial<C::ScalarExt, Coeff>, r: Blind<C::ScalarExt> ) -> C::CurveExt

This computes a commitment to a polynomial described by the provided diff --git a/halo2_backend/poly/commitment/trait.Prover.html b/halo2_backend/poly/commitment/trait.Prover.html index 11be9474e8..0a8d489faa 100644 --- a/halo2_backend/poly/commitment/trait.Prover.html +++ b/halo2_backend/poly/commitment/trait.Prover.html @@ -21,7 +21,7 @@ fn new(params: &'params Scheme::ParamsProver) -> Self; fn create_proof_with_engine<'com, E: EncodedChallenge<Scheme::Curve>, T: TranscriptWrite<Scheme::Curve, E>, R, I>( &self, - engine: &impl MsmAccel<Scheme::Curve>, + engine: &impl MsmAccel<Scheme::Curve>, rng: R, transcript: &mut T, queries: I @@ -43,7 +43,7 @@

Required Methods§

source

fn new(params: &'params Scheme::ParamsProver) -> Self

Creates new prover instance

source

fn create_proof_with_engine<'com, E: EncodedChallenge<Scheme::Curve>, T: TranscriptWrite<Scheme::Curve, E>, R, I>( &self, - engine: &impl MsmAccel<Scheme::Curve>, + engine: &impl MsmAccel<Scheme::Curve>, rng: R, transcript: &mut T, queries: I diff --git a/halo2_backend/poly/ipa/commitment/fn.create_proof_with_engine.html b/halo2_backend/poly/ipa/commitment/fn.create_proof_with_engine.html index 5334176cac..7de3f4554b 100644 --- a/halo2_backend/poly/ipa/commitment/fn.create_proof_with_engine.html +++ b/halo2_backend/poly/ipa/commitment/fn.create_proof_with_engine.html @@ -15,7 +15,7 @@

Function halo2_backend::poly::ipa::commitment::create_proof_with_engine

source ·
pub fn create_proof_with_engine<C: CurveAffine, E: EncodedChallenge<C>, R: RngCore, T: TranscriptWrite<C, E>>(
-    engine: &impl MsmAccel<C>,
+    engine: &impl MsmAccel<C>,
     params: &ParamsIPA<C>,
     rng: R,
     transcript: &mut T,
diff --git a/halo2_backend/poly/ipa/commitment/struct.IPACommitmentScheme.html b/halo2_backend/poly/ipa/commitment/struct.IPACommitmentScheme.html
index fbd0482f1b..6c3d96b518 100644
--- a/halo2_backend/poly/ipa/commitment/struct.IPACommitmentScheme.html
+++ b/halo2_backend/poly/ipa/commitment/struct.IPACommitmentScheme.html
@@ -16,16 +16,16 @@
 
 

Struct halo2_backend::poly::ipa::commitment::IPACommitmentScheme

source ·
pub struct IPACommitmentScheme<C: CurveAffine> { /* private fields */ }
Expand description

Concrete IPA commitment scheme

Trait Implementations§

source§

impl<C: CurveAffine> CommitmentScheme for IPACommitmentScheme<C>

§

type Scalar = <C as CurveAffine>::ScalarExt

Application field of this commitment scheme
§

type Curve = C

Elliptic curve used to commit the application and witnesses
§

type ParamsProver = ParamsIPA<C>

Constant prover parameters
§

type ParamsVerifier = ParamsIPA<C>

Constant verifier parameters
source§

fn new_params(k: u32) -> Self::ParamsProver

Wrapper for parameter generator
source§

fn read_params<R: Read>(reader: &mut R) -> Result<Self::ParamsProver>

Wrapper for parameter reader
source§

impl<C: Debug + CurveAffine> Debug for IPACommitmentScheme<C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'params, C: CurveAffine> Guard<IPACommitmentScheme<C>> for GuardIPA<'params, C>

Define accumulator type as MSMIPA

-
§

type MSMAccumulator = MSMIPA<'params, C>

Multi scalar engine which is not evaluated yet.
source§

impl<'params, C: CurveAffine> Prover<'params, IPACommitmentScheme<C>> for ProverIPA<'params, C>

§

type MSMAccumulator = MSMIPA<'params, C>

Multi scalar engine which is not evaluated yet.
source§

impl<'params, C: CurveAffine> Prover<'params, IPACommitmentScheme<C>> for ProverIPA<'params, C>

source§

fn create_proof_with_engine<'com, Z: EncodedChallenge<C>, T: TranscriptWrite<C, Z>, R, I>( &self, - engine: &impl MsmAccel<C>, + engine: &impl MsmAccel<C>, rng: R, transcript: &mut T, queries: I ) -> Result<()>
where I: IntoIterator<Item = ProverQuery<'com, C>> + Clone, R: RngCore,

Create a multi-opening proof

-
source§

const QUERY_INSTANCE: bool = true

Query instance or not
source§

fn new(params: &'params ParamsIPA<C>) -> Self

Creates new prover instance
source§

fn create_proof<'com, E: EncodedChallenge<Scheme::Curve>, T: TranscriptWrite<Scheme::Curve, E>, R, I>( +

source§

const QUERY_INSTANCE: bool = true

Query instance or not
source§

fn new(params: &'params ParamsIPA<C>) -> Self

Creates new prover instance
source§

fn create_proof<'com, E: EncodedChallenge<Scheme::Curve>, T: TranscriptWrite<Scheme::Curve, E>, R, I>( &self, rng: R, transcript: &mut T, @@ -42,12 +42,12 @@ output.

source§

impl<'params, C: CurveAffine> VerificationStrategy<'params, IPACommitmentScheme<C>, VerifierIPA<C>> for SingleStrategy<'params, C>

source§

fn finalize(self) -> bool

Finalizes the batch and checks its validity.

Returns false if some proof was invalid. If the caller needs to identify specific failing proofs, it must re-process the proofs separately.

-
§

type Output = ()

The output type of this verification strategy after processing a proof.
source§

fn new(params: &'params ParamsIPA<C>) -> Self

Creates new verification strategy instance
source§

fn process( +

§

type Output = ()

The output type of this verification strategy after processing a proof.
source§

fn new(params: &'params ParamsIPA<C>) -> Self

Creates new verification strategy instance
source§

fn process( self, f: impl FnOnce(MSMIPA<'params, C>) -> Result<GuardIPA<'params, C>, Error> ) -> Result<Self::Output, Error>

Obtains an MSM from the verifier strategy and yields back the strategy’s output.
source§

impl<'params, C: CurveAffine> Verifier<'params, IPACommitmentScheme<C>> for VerifierIPA<C>

§

type Guard = GuardIPA<'params, C>

Unfinalized verification result. This is returned in verification -to allow developer to compress or combine verification results
§

type MSMAccumulator = MSMIPA<'params, C>

Accumulator for compressed verification
source§

const QUERY_INSTANCE: bool = true

Query instance or not
source§

fn new() -> Self

Creates new verifier instance
source§

fn verify_proof<'com, E: EncodedChallenge<C>, T: TranscriptRead<C, E>, I>( +to allow developer to compress or combine verification results

§

type MSMAccumulator = MSMIPA<'params, C>

Accumulator for compressed verification
source§

const QUERY_INSTANCE: bool = true

Query instance or not
source§

fn new() -> Self

Creates new verifier instance
source§

fn verify_proof<'com, E: EncodedChallenge<C>, T: TranscriptRead<C, E>, I>( &self, transcript: &mut T, queries: I, diff --git a/halo2_backend/poly/ipa/commitment/struct.ParamsIPA.html b/halo2_backend/poly/ipa/commitment/struct.ParamsIPA.html index 70586c819c..2d7ce329e3 100644 --- a/halo2_backend/poly/ipa/commitment/struct.ParamsIPA.html +++ b/halo2_backend/poly/ipa/commitment/struct.ParamsIPA.html @@ -17,7 +17,7 @@

Struct halo2_backend::poly::ipa::commitment::ParamsIPA

source ·
pub struct ParamsIPA<C: CurveAffine> { /* private fields */ }
Expand description

Public parameters for IPA commitment scheme

Trait Implementations§

source§

impl<C: Clone + CurveAffine> Clone for ParamsIPA<C>

source§

fn clone(&self) -> ParamsIPA<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<C: Debug + CurveAffine> Debug for ParamsIPA<C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<C: CurveAffine> Params<C> for ParamsIPA<C>

source§

fn commit_lagrange( &self, - engine: &impl MsmAccel<C>, + engine: &impl MsmAccel<C>, poly: &Polynomial<C::Scalar, LagrangeCoeff>, r: Blind<C::Scalar> ) -> C::Curve

This commits to a polynomial using its evaluations over the $2^k$ size @@ -29,7 +29,7 @@ points from.

source§

fn commit( &self, - engine: &impl MsmAccel<C>, + engine: &impl MsmAccel<C>, poly: &Polynomial<C::Scalar, Coeff>, r: Blind<C::Scalar> ) -> C::Curve

This computes a commitment to a polynomial described by the provided diff --git a/halo2_backend/poly/ipa/msm/struct.MSMIPA.html b/halo2_backend/poly/ipa/msm/struct.MSMIPA.html index df7edb3a1e..4cd4b6c319 100644 --- a/halo2_backend/poly/ipa/msm/struct.MSMIPA.html +++ b/halo2_backend/poly/ipa/msm/struct.MSMIPA.html @@ -27,7 +27,7 @@ C::Base: Clone,

source§

fn clone(&self) -> MSMIPA<'params, C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'params, C: Debug + CurveAffine> Debug for MSMIPA<'params, C>
where C::Scalar: Debug, C::Base: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a, C: CurveAffine> MSM<C> for MSMIPA<'a, C>

source§

fn add_msm(&mut self, other: &Self)

Add another multiexp into this one

-
source§

fn append_term(&mut self, scalar: C::Scalar, point: C::Curve)

Add arbitrary term (the scalar and the point)
source§

fn scale(&mut self, factor: C::Scalar)

Scale all scalars in the MSM by some scaling factor
source§

fn check(&self, engine: &impl MsmAccel<C>) -> bool

Perform multiexp and check that it results in zero
source§

fn eval(&self, engine: &impl MsmAccel<C>) -> C::Curve

Perform multiexp and return the result
source§

fn bases(&self) -> Vec<C::CurveExt>

Return base points
source§

fn scalars(&self) -> Vec<C::Scalar>

Scalars

Auto Trait Implementations§

§

impl<'params, C> Freeze for MSMIPA<'params, C>
where +
source§

fn append_term(&mut self, scalar: C::Scalar, point: C::Curve)

Add arbitrary term (the scalar and the point)
source§

fn scale(&mut self, factor: C::Scalar)

Scale all scalars in the MSM by some scaling factor
source§

fn check(&self, engine: &impl MsmAccel<C>) -> bool

Perform multiexp and check that it results in zero
source§

fn eval(&self, engine: &impl MsmAccel<C>) -> C::Curve

Perform multiexp and return the result
source§

fn bases(&self) -> Vec<C::CurveExt>

Return base points
source§

fn scalars(&self) -> Vec<C::Scalar>

Scalars

Auto Trait Implementations§

§

impl<'params, C> Freeze for MSMIPA<'params, C>
where <C as CurveAffine>::ScalarExt: Freeze,

§

impl<'params, C> RefUnwindSafe for MSMIPA<'params, C>
where <C as CurveAffine>::ScalarExt: RefUnwindSafe, C: RefUnwindSafe, diff --git a/halo2_backend/poly/ipa/multiopen/struct.ProverIPA.html b/halo2_backend/poly/ipa/multiopen/struct.ProverIPA.html index 0387e56233..595eb3e912 100644 --- a/halo2_backend/poly/ipa/multiopen/struct.ProverIPA.html +++ b/halo2_backend/poly/ipa/multiopen/struct.ProverIPA.html @@ -17,7 +17,7 @@

Struct halo2_backend::poly::ipa::multiopen::ProverIPA

source ·
pub struct ProverIPA<'params, C: CurveAffine> { /* private fields */ }
Expand description

IPA multi-open prover

Trait Implementations§

source§

impl<'params, C: Debug + CurveAffine> Debug for ProverIPA<'params, C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'params, C: CurveAffine> Prover<'params, IPACommitmentScheme<C>> for ProverIPA<'params, C>

source§

fn create_proof_with_engine<'com, Z: EncodedChallenge<C>, T: TranscriptWrite<C, Z>, R, I>( &self, - engine: &impl MsmAccel<C>, + engine: &impl MsmAccel<C>, rng: R, transcript: &mut T, queries: I diff --git a/halo2_backend/poly/ipa/multiopen/struct.VerifierIPA.html b/halo2_backend/poly/ipa/multiopen/struct.VerifierIPA.html index c84786a2b2..dd2a5b18b2 100644 --- a/halo2_backend/poly/ipa/multiopen/struct.VerifierIPA.html +++ b/halo2_backend/poly/ipa/multiopen/struct.VerifierIPA.html @@ -25,12 +25,12 @@ output.

source§

impl<'params, C: CurveAffine> VerificationStrategy<'params, IPACommitmentScheme<C>, VerifierIPA<C>> for SingleStrategy<'params, C>

source§

fn finalize(self) -> bool

Finalizes the batch and checks its validity.

Returns false if some proof was invalid. If the caller needs to identify specific failing proofs, it must re-process the proofs separately.

-
§

type Output = ()

The output type of this verification strategy after processing a proof.
source§

fn new(params: &'params ParamsIPA<C>) -> Self

Creates new verification strategy instance
source§

fn process( +

§

type Output = ()

The output type of this verification strategy after processing a proof.
source§

fn new(params: &'params ParamsIPA<C>) -> Self

Creates new verification strategy instance
source§

fn process( self, f: impl FnOnce(MSMIPA<'params, C>) -> Result<GuardIPA<'params, C>, Error> ) -> Result<Self::Output, Error>

Obtains an MSM from the verifier strategy and yields back the strategy’s output.
source§

impl<'params, C: CurveAffine> Verifier<'params, IPACommitmentScheme<C>> for VerifierIPA<C>

§

type Guard = GuardIPA<'params, C>

Unfinalized verification result. This is returned in verification -to allow developer to compress or combine verification results
§

type MSMAccumulator = MSMIPA<'params, C>

Accumulator for compressed verification
source§

const QUERY_INSTANCE: bool = true

Query instance or not
source§

fn new() -> Self

Creates new verifier instance
source§

fn verify_proof<'com, E: EncodedChallenge<C>, T: TranscriptRead<C, E>, I>( +to allow developer to compress or combine verification results

§

type MSMAccumulator = MSMIPA<'params, C>

Accumulator for compressed verification
source§

const QUERY_INSTANCE: bool = true

Query instance or not
source§

fn new() -> Self

Creates new verifier instance
source§

fn verify_proof<'com, E: EncodedChallenge<C>, T: TranscriptRead<C, E>, I>( &self, transcript: &mut T, queries: I, diff --git a/halo2_backend/poly/ipa/strategy/struct.GuardIPA.html b/halo2_backend/poly/ipa/strategy/struct.GuardIPA.html index 2f9d04bebb..9fe5d4cb44 100644 --- a/halo2_backend/poly/ipa/strategy/struct.GuardIPA.html +++ b/halo2_backend/poly/ipa/strategy/struct.GuardIPA.html @@ -20,7 +20,7 @@ scalars and points.

source

pub fn use_g(self, g: C) -> (MSMIPA<'params, C>, Accumulator<C>)

Lets caller supply the purported G point and simply appends [-c] G to return an updated MSM.

-
source

pub fn compute_g(&self, engine: &impl MsmAccel<C>) -> C

Computes G = ⟨s, params.g⟩

+
source

pub fn compute_g(&self, engine: &impl MsmAccel<C>) -> C

Computes G = ⟨s, params.g⟩

Trait Implementations§

source§

impl<'params, C: Clone + CurveAffine> Clone for GuardIPA<'params, C>
where C::Scalar: Clone,

source§

fn clone(&self) -> GuardIPA<'params, C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'params, C: Debug + CurveAffine> Debug for GuardIPA<'params, C>
where C::Scalar: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'params, C: CurveAffine> Guard<IPACommitmentScheme<C>> for GuardIPA<'params, C>

Define accumulator type as MSMIPA

diff --git a/halo2_backend/poly/kzg/commitment/struct.KZGCommitmentScheme.html b/halo2_backend/poly/kzg/commitment/struct.KZGCommitmentScheme.html index 5f3d4c23eb..94a6cec69e 100644 --- a/halo2_backend/poly/kzg/commitment/struct.KZGCommitmentScheme.html +++ b/halo2_backend/poly/kzg/commitment/struct.KZGCommitmentScheme.html @@ -23,20 +23,20 @@ E::G1Affine: SerdeCurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>, E::G1: CurveExt<AffineExt = E::G1Affine>, E::G2Affine: SerdeCurveAffine,

Define accumulator type as DualMSM

-
§

type MSMAccumulator = DualMSM<E>

Multi scalar engine which is not evaluated yet.
source§

impl<'params, E: Engine + Debug> Prover<'params, KZGCommitmentScheme<E>> for ProverGWC<'params, E>
where +
§

type MSMAccumulator = DualMSM<E>

Multi scalar engine which is not evaluated yet.

source§

impl<'params, E: Engine + Debug> Prover<'params, KZGCommitmentScheme<E>> for ProverGWC<'params, E>
where E::G1Affine: SerdeCurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>, E::G1: CurveExt<AffineExt = E::G1Affine>, E::G2Affine: SerdeCurveAffine,

Create a multi-opening proof

-
source§

fn create_proof_with_engine<'com, Ch: EncodedChallenge<E::G1Affine>, T: TranscriptWrite<E::G1Affine, Ch>, R, I>( +

source§

fn create_proof_with_engine<'com, Ch: EncodedChallenge<E::G1Affine>, T: TranscriptWrite<E::G1Affine, Ch>, R, I>( &self, - engine: &impl MsmAccel<E::G1Affine>, + engine: &impl MsmAccel<E::G1Affine>, _: R, transcript: &mut T, queries: I ) -> Result<()>
where I: IntoIterator<Item = ProverQuery<'com, E::G1Affine>> + Clone, R: RngCore,

Create a multi-opening proof

-
source§

const QUERY_INSTANCE: bool = false

Query instance or not
source§

fn new(params: &'params ParamsKZG<E>) -> Self

Creates new prover instance
source§

fn create_proof<'com, E: EncodedChallenge<Scheme::Curve>, T: TranscriptWrite<Scheme::Curve, E>, R, I>( +

source§

const QUERY_INSTANCE: bool = false

Query instance or not
source§

fn new(params: &'params ParamsKZG<E>) -> Self

Creates new prover instance
source§

fn create_proof<'com, E: EncodedChallenge<Scheme::Curve>, T: TranscriptWrite<Scheme::Curve, E>, R, I>( &self, rng: R, transcript: &mut T, @@ -48,16 +48,16 @@ E::G1Affine: SerdeCurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>, E::G1: CurveExt<AffineExt = E::G1Affine>, E::G2Affine: SerdeCurveAffine,

Create a multi-opening proof

-
source§

fn create_proof_with_engine<'com, Ch: EncodedChallenge<E::G1Affine>, T: TranscriptWrite<E::G1Affine, Ch>, R, I>( +

source§

fn create_proof_with_engine<'com, Ch: EncodedChallenge<E::G1Affine>, T: TranscriptWrite<E::G1Affine, Ch>, R, I>( &self, - engine: &impl MsmAccel<E::G1Affine>, + engine: &impl MsmAccel<E::G1Affine>, _: R, transcript: &mut T, queries: I ) -> Result<()>
where I: IntoIterator<Item = ProverQuery<'com, E::G1Affine>> + Clone, R: RngCore,

Create a multi-opening proof

-
source§

const QUERY_INSTANCE: bool = false

Query instance or not
source§

fn new(params: &'params ParamsKZG<E>) -> Self

Creates new prover instance
source§

fn create_proof<'com, E: EncodedChallenge<Scheme::Curve>, T: TranscriptWrite<Scheme::Curve, E>, R, I>( +

source§

const QUERY_INSTANCE: bool = false

Query instance or not
source§

fn new(params: &'params ParamsKZG<E>) -> Self

Creates new prover instance
source§

fn create_proof<'com, E: EncodedChallenge<Scheme::Curve>, T: TranscriptWrite<Scheme::Curve, E>, R, I>( &self, rng: R, transcript: &mut T, @@ -69,20 +69,20 @@ V: Verifier<'params, KZGCommitmentScheme<E>, MSMAccumulator = DualMSM<E>, Guard = GuardKZG<E>>, E::G1Affine: SerdeCurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>, E::G1: CurveExt<AffineExt = E::G1Affine>, - E::G2Affine: SerdeCurveAffine,

§

type Output = AccumulatorStrategy<E>

The output type of this verification strategy after processing a proof.
source§

fn new(params: &'params ParamsVerifierKZG<E>) -> Self

Creates new verification strategy instance
source§

fn process( + E::G2Affine: SerdeCurveAffine,

§

type Output = AccumulatorStrategy<E>

The output type of this verification strategy after processing a proof.
source§

fn new(params: &'params ParamsVerifierKZG<E>) -> Self

Creates new verification strategy instance
source§

fn process( self, f: impl FnOnce(V::MSMAccumulator) -> Result<V::Guard, Error> ) -> Result<Self::Output, Error>

Obtains an MSM from the verifier strategy and yields back the strategy’s -output.
source§

fn finalize(self) -> bool

Finalizes the batch and checks its validity. Read more
source§

impl<'params, E, V> VerificationStrategy<'params, KZGCommitmentScheme<E>, V> for SingleStrategy<E>
where +output.

source§

fn finalize(self) -> bool

Finalizes the batch and checks its validity. Read more
source§

impl<'params, E, V> VerificationStrategy<'params, KZGCommitmentScheme<E>, V> for SingleStrategy<E>
where E: MultiMillerLoop + Debug, V: Verifier<'params, KZGCommitmentScheme<E>, MSMAccumulator = DualMSM<E>, Guard = GuardKZG<E>>, E::G1Affine: SerdeCurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>, E::G1: CurveExt<AffineExt = E::G1Affine>, - E::G2Affine: SerdeCurveAffine,

§

type Output = ()

The output type of this verification strategy after processing a proof.
source§

fn new(params: &'params ParamsVerifierKZG<E>) -> Self

Creates new verification strategy instance
source§

fn process( + E::G2Affine: SerdeCurveAffine,

§

type Output = ()

The output type of this verification strategy after processing a proof.
source§

fn new(params: &'params ParamsVerifierKZG<E>) -> Self

Creates new verification strategy instance
source§

fn process( self, f: impl FnOnce(V::MSMAccumulator) -> Result<V::Guard, Error> ) -> Result<Self::Output, Error>

Obtains an MSM from the verifier strategy and yields back the strategy’s -output.
source§

fn finalize(self) -> bool

Finalizes the batch and checks its validity. Read more
source§

impl<'params, E> Verifier<'params, KZGCommitmentScheme<E>> for VerifierGWC<E>
where +output.

source§

fn finalize(self) -> bool

Finalizes the batch and checks its validity. Read more
source§

impl<'params, E> Verifier<'params, KZGCommitmentScheme<E>> for VerifierGWC<E>
where E: MultiMillerLoop + Debug, E::G1Affine: SerdeCurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>, E::G1: CurveExt<AffineExt = E::G1Affine>, @@ -106,7 +106,7 @@ ) -> Result<Self::Guard, Error>
where I: IntoIterator<Item = VerifierQuery<'com, E::G1Affine, MSMKZG<E>>> + Clone,

Verify a multi-opening proof

§

type Guard = GuardKZG<E>

Unfinalized verification result. This is returned in verification -to allow developer to compress or combine verification results
§

type MSMAccumulator = DualMSM<E>

Accumulator for compressed verification
source§

const QUERY_INSTANCE: bool = false

Query instance or not
source§

fn new() -> Self

Creates new verifier instance

Auto Trait Implementations§

§

impl<E> Freeze for KZGCommitmentScheme<E>

§

impl<E> RefUnwindSafe for KZGCommitmentScheme<E>
where +to allow developer to compress or combine verification results
§

type MSMAccumulator = DualMSM<E>

Accumulator for compressed verification
source§

const QUERY_INSTANCE: bool = false

Query instance or not
source§

fn new() -> Self

Creates new verifier instance

Auto Trait Implementations§

§

impl<E> Freeze for KZGCommitmentScheme<E>

§

impl<E> RefUnwindSafe for KZGCommitmentScheme<E>
where E: RefUnwindSafe,

§

impl<E> Send for KZGCommitmentScheme<E>

§

impl<E> Sync for KZGCommitmentScheme<E>

§

impl<E> Unpin for KZGCommitmentScheme<E>
where E: Unpin,

§

impl<E> UnwindSafe for KZGCommitmentScheme<E>
where E: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/halo2_backend/poly/kzg/commitment/struct.ParamsKZG.html b/halo2_backend/poly/kzg/commitment/struct.ParamsKZG.html index 8cfa4e7300..421f184083 100644 --- a/halo2_backend/poly/kzg/commitment/struct.ParamsKZG.html +++ b/halo2_backend/poly/kzg/commitment/struct.ParamsKZG.html @@ -49,7 +49,7 @@

source§

fn read<R: Read>(reader: &mut R) -> Result<Self>

Reads params from a buffer.

source§

fn k(&self) -> u32

Logarithmic size of the circuit
source§

fn n(&self) -> u64

Size of the circuit
source§

fn commit_lagrange( &self, - engine: &impl MsmAccel<E::G1Affine>, + engine: &impl MsmAccel<E::G1Affine>, poly: &Polynomial<E::Fr, LagrangeCoeff>, _: Blind<E::Fr> ) -> E::G1

This commits to a polynomial using its evaluations over the $2^k$ size @@ -59,7 +59,7 @@ E::G1: CurveExt<AffineExt = E::G1Affine>, E::G2Affine: SerdeCurveAffine,
source§

fn new(k: u32) -> Self

Returns new instance of parameters
source§

fn commit( &self, - engine: &impl MsmAccel<E::G1Affine>, + engine: &impl MsmAccel<E::G1Affine>, poly: &Polynomial<E::Fr, Coeff>, _: Blind<E::Fr> ) -> E::G1

This computes a commitment to a polynomial described by the provided diff --git a/halo2_backend/poly/kzg/commitment/struct.ParamsVerifierKZG.html b/halo2_backend/poly/kzg/commitment/struct.ParamsVerifierKZG.html index 50085ee55d..006a064a9d 100644 --- a/halo2_backend/poly/kzg/commitment/struct.ParamsVerifierKZG.html +++ b/halo2_backend/poly/kzg/commitment/struct.ParamsVerifierKZG.html @@ -34,7 +34,7 @@
source§

fn read<R: Read>(reader: &mut R) -> Result<Self>

Reads params from a buffer.

source§

fn k(&self) -> u32

Logarithmic size of the circuit
source§

fn n(&self) -> u64

Size of the circuit
source§

fn downsize(&mut self, k: u32)

Downsize Params with smaller k.
source§

fn commit_lagrange( &self, - _engine: &impl MsmAccel<E::G1Affine>, + _engine: &impl MsmAccel<E::G1Affine>, _poly: &Polynomial<E::Fr, LagrangeCoeff>, _: Blind<E::Fr> ) -> E::G1

This commits to a polynomial using its evaluations over the $2^k$ size diff --git a/halo2_backend/poly/kzg/msm/struct.DualMSM.html b/halo2_backend/poly/kzg/msm/struct.DualMSM.html index 0dcb3d6ba5..c7f9bf633d 100644 --- a/halo2_backend/poly/kzg/msm/struct.DualMSM.html +++ b/halo2_backend/poly/kzg/msm/struct.DualMSM.html @@ -24,7 +24,7 @@
source

pub fn add_msm(&mut self, other: Self)

Add another multiexp into this one

source

pub fn check( self, - engine: &impl MsmAccel<E::G1Affine>, + engine: &impl MsmAccel<E::G1Affine>, params: &ParamsVerifierKZG<E> ) -> bool

Performs final pairing check with given verifier params and two channel linear combination

Trait Implementations§

source§

impl<E: Clone + Engine> Clone for DualMSM<E>
where diff --git a/halo2_backend/poly/kzg/msm/struct.MSMKZG.html b/halo2_backend/poly/kzg/msm/struct.MSMKZG.html index ceafe94346..3fb69d2935 100644 --- a/halo2_backend/poly/kzg/msm/struct.MSMKZG.html +++ b/halo2_backend/poly/kzg/msm/struct.MSMKZG.html @@ -32,7 +32,7 @@ E::G1: CurveExt<AffineExt = E::G1Affine> + Default, E::Fr: Default,

source§

fn default() -> MSMKZG<E>

Returns the “default value” for a type. Read more
source§

impl<E: Engine> MSM<<E as Engine>::G1Affine> for MSMKZG<E>
where E::G1Affine: CurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>, - E::G1: CurveExt<AffineExt = E::G1Affine>,

source§

fn append_term(&mut self, scalar: E::Fr, point: E::G1)

Add arbitrary term (the scalar and the point)
source§

fn add_msm(&mut self, other: &Self)

Add another multiexp into this one
source§

fn scale(&mut self, factor: E::Fr)

Scale all scalars in the MSM by some scaling factor
source§

fn check(&self, engine: &impl MsmAccel<E::G1Affine>) -> bool

Perform multiexp and check that it results in zero
source§

fn eval(&self, engine: &impl MsmAccel<E::G1Affine>) -> E::G1

Perform multiexp and return the result
source§

fn bases(&self) -> Vec<E::G1>

Return base points
source§

fn scalars(&self) -> Vec<E::Fr>

Scalars

Auto Trait Implementations§

§

impl<E> Freeze for MSMKZG<E>
where + E::G1: CurveExt<AffineExt = E::G1Affine>,

source§

fn append_term(&mut self, scalar: E::Fr, point: E::G1)

Add arbitrary term (the scalar and the point)
source§

fn add_msm(&mut self, other: &Self)

Add another multiexp into this one
source§

fn scale(&mut self, factor: E::Fr)

Scale all scalars in the MSM by some scaling factor
source§

fn check(&self, engine: &impl MsmAccel<E::G1Affine>) -> bool

Perform multiexp and check that it results in zero
source§

fn eval(&self, engine: &impl MsmAccel<E::G1Affine>) -> E::G1

Perform multiexp and return the result
source§

fn bases(&self) -> Vec<E::G1>

Return base points
source§

fn scalars(&self) -> Vec<E::Fr>

Scalars

Auto Trait Implementations§

§

impl<E> Freeze for MSMKZG<E>
where <E as Engine>::G1: Sized, <E as Engine>::G1Affine: Sized,

§

impl<E> RefUnwindSafe for MSMKZG<E>
where <E as Engine>::G1: Sized + RefUnwindSafe, diff --git a/halo2_backend/poly/kzg/multiopen/struct.ProverGWC.html b/halo2_backend/poly/kzg/multiopen/struct.ProverGWC.html index 182e6c326d..8733a37529 100644 --- a/halo2_backend/poly/kzg/multiopen/struct.ProverGWC.html +++ b/halo2_backend/poly/kzg/multiopen/struct.ProverGWC.html @@ -21,7 +21,7 @@ E::G2Affine: SerdeCurveAffine,

Create a multi-opening proof

source§

fn create_proof_with_engine<'com, Ch: EncodedChallenge<E::G1Affine>, T: TranscriptWrite<E::G1Affine, Ch>, R, I>( &self, - engine: &impl MsmAccel<E::G1Affine>, + engine: &impl MsmAccel<E::G1Affine>, _: R, transcript: &mut T, queries: I diff --git a/halo2_backend/poly/kzg/multiopen/struct.ProverSHPLONK.html b/halo2_backend/poly/kzg/multiopen/struct.ProverSHPLONK.html index b57d12a020..0e46c70d05 100644 --- a/halo2_backend/poly/kzg/multiopen/struct.ProverSHPLONK.html +++ b/halo2_backend/poly/kzg/multiopen/struct.ProverSHPLONK.html @@ -23,7 +23,7 @@ E::G2Affine: SerdeCurveAffine,

Create a multi-opening proof

source§

fn create_proof_with_engine<'com, Ch: EncodedChallenge<E::G1Affine>, T: TranscriptWrite<E::G1Affine, Ch>, R, I>( &self, - engine: &impl MsmAccel<E::G1Affine>, + engine: &impl MsmAccel<E::G1Affine>, _: R, transcript: &mut T, queries: I diff --git a/halo2_backend/poly/struct.EvaluationDomain.html b/halo2_backend/poly/struct.EvaluationDomain.html index 04e1bd3db3..b5ee0554ce 100644 --- a/halo2_backend/poly/struct.EvaluationDomain.html +++ b/halo2_backend/poly/struct.EvaluationDomain.html @@ -52,7 +52,7 @@ ) -> Polynomial<F, ExtendedLagrangeCoeff>

source

pub fn rotate_extended( &self, poly: &Polynomial<F, ExtendedLagrangeCoeff>, - rotation: Rotation + rotation: Rotation ) -> Polynomial<F, ExtendedLagrangeCoeff>

Rotate the extended domain polynomial over the original domain.

source

pub fn extended_to_coeff( &self, @@ -73,7 +73,7 @@

source

pub fn get_omega_inv(&self) -> F

Get $\omega^{-1}$, the inverse of the generator of the $2^k$ order multiplicative subgroup.

source

pub fn get_extended_omega(&self) -> F

Get the generator of the extended domain’s multiplicative subgroup.

-
source

pub fn rotate_omega(&self, value: F, rotation: Rotation) -> F

Multiplies a value by some power of $\omega$, essentially rotating over +

source

pub fn rotate_omega(&self, value: F, rotation: Rotation) -> F

Multiplies a value by some power of $\omega$, essentially rotating over the domain.

source

pub fn l_i_range<I: IntoIterator<Item = i32> + Clone>( &self, diff --git a/halo2_backend/poly/struct.Polynomial.html b/halo2_backend/poly/struct.Polynomial.html index 91fc06266f..1eb4da478b 100644 --- a/halo2_backend/poly/struct.Polynomial.html +++ b/halo2_backend/poly/struct.Polynomial.html @@ -28,7 +28,7 @@ evaluation form depending on the basis B.

source

pub fn num_coeffs(&self) -> usize

Gets the size of this polynomial in terms of the number of coefficients used to describe it.

-
source§

impl<F: Field> Polynomial<F, LagrangeCoeff>

source

pub fn rotate(&self, rotation: Rotation) -> Polynomial<F, LagrangeCoeff>

Rotates the values in a Lagrange basis polynomial by Rotation

+
source§

impl<F: Field> Polynomial<F, LagrangeCoeff>

source

pub fn rotate(&self, rotation: Rotation) -> Polynomial<F, LagrangeCoeff>

Rotates the values in a Lagrange basis polynomial by Rotation

Methods from Deref<Target = [F]>§

source

pub fn sort_floats(&mut self)

🔬This is a nightly-only experimental API. (sort_floats)

Sorts the slice of floats.

This sort is in-place (i.e. does not allocate), O(n * log(n)) worst-case, and uses the ordering defined by f64::total_cmp.

@@ -2417,7 +2417,7 @@
§Examples<

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, but non-ASCII letters are unchanged.

To lowercase the value in-place, use make_ascii_lowercase.

-

Trait Implementations§

source§

impl<'a, F: Field, B: Basis> Add<&'a Polynomial<F, B>> for Polynomial<F, B>

§

type Output = Polynomial<F, B>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &'a Polynomial<F, B>) -> Polynomial<F, B>

Performs the + operation. Read more
source§

impl<F: Clone, B: Clone> Clone for Polynomial<F, B>

source§

fn clone(&self) -> Polynomial<F, B>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug, B: Debug> Debug for Polynomial<F, B>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F, B> Deref for Polynomial<F, B>

§

type Target = [F]

The resulting type after dereferencing.
source§

fn deref(&self) -> &[F]

Dereferences the value.
source§

impl<F, B> DerefMut for Polynomial<F, B>

source§

fn deref_mut(&mut self) -> &mut [F]

Mutably dereferences the value.
source§

impl<F, B> Index<RangeFrom<usize>> for Polynomial<F, B>

§

type Output = [F]

The returned type after indexing.
source§

fn index(&self, index: RangeFrom<usize>) -> &[F]

Performs the indexing (container[index]) operation. Read more
source§

impl<F, B> Index<RangeFull> for Polynomial<F, B>

§

type Output = [F]

The returned type after indexing.
source§

fn index(&self, index: RangeFull) -> &[F]

Performs the indexing (container[index]) operation. Read more
source§

impl<F, B> Index<usize> for Polynomial<F, B>

§

type Output = F

The returned type after indexing.
source§

fn index(&self, index: usize) -> &F

Performs the indexing (container[index]) operation. Read more
source§

impl<F, B> IndexMut<RangeFrom<usize>> for Polynomial<F, B>

source§

fn index_mut(&mut self, index: RangeFrom<usize>) -> &mut [F]

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<F, B> IndexMut<RangeFull> for Polynomial<F, B>

source§

fn index_mut(&mut self, index: RangeFull) -> &mut [F]

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<F, B> IndexMut<usize> for Polynomial<F, B>

source§

fn index_mut(&mut self, index: usize) -> &mut F

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<F: Field, B: Basis> Mul<F> for Polynomial<F, B>

§

type Output = Polynomial<F, B>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Polynomial<F, B>

Performs the * operation. Read more
source§

impl<'a, F: Field, B: Basis> Sub<&'a Polynomial<F, B>> for Polynomial<F, B>

§

type Output = Polynomial<F, B>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &'a Polynomial<F, B>) -> Polynomial<F, B>

Performs the - operation. Read more
source§

impl<'a, F: Field, B: Basis> Sub<F> for &'a Polynomial<F, B>

§

type Output = Polynomial<F, B>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Polynomial<F, B>

Performs the - operation. Read more

Auto Trait Implementations§

§

impl<F, B> Freeze for Polynomial<F, B>

§

impl<F, B> RefUnwindSafe for Polynomial<F, B>
where +

Trait Implementations§

source§

impl<'a, F: Field, B: Basis> Add<&'a Polynomial<F, B>> for Polynomial<F, B>

§

type Output = Polynomial<F, B>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &'a Polynomial<F, B>) -> Polynomial<F, B>

Performs the + operation. Read more
source§

impl<F: Clone, B: Clone> Clone for Polynomial<F, B>

source§

fn clone(&self) -> Polynomial<F, B>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug, B: Debug> Debug for Polynomial<F, B>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F, B> Deref for Polynomial<F, B>

§

type Target = [F]

The resulting type after dereferencing.
source§

fn deref(&self) -> &[F]

Dereferences the value.
source§

impl<F, B> DerefMut for Polynomial<F, B>

source§

fn deref_mut(&mut self) -> &mut [F]

Mutably dereferences the value.
source§

impl<F, B> Index<RangeFrom<usize>> for Polynomial<F, B>

§

type Output = [F]

The returned type after indexing.
source§

fn index(&self, index: RangeFrom<usize>) -> &[F]

Performs the indexing (container[index]) operation. Read more
source§

impl<F, B> Index<RangeFull> for Polynomial<F, B>

§

type Output = [F]

The returned type after indexing.
source§

fn index(&self, index: RangeFull) -> &[F]

Performs the indexing (container[index]) operation. Read more
source§

impl<F, B> Index<usize> for Polynomial<F, B>

§

type Output = F

The returned type after indexing.
source§

fn index(&self, index: usize) -> &F

Performs the indexing (container[index]) operation. Read more
source§

impl<F, B> IndexMut<RangeFrom<usize>> for Polynomial<F, B>

source§

fn index_mut(&mut self, index: RangeFrom<usize>) -> &mut [F]

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<F, B> IndexMut<RangeFull> for Polynomial<F, B>

source§

fn index_mut(&mut self, index: RangeFull) -> &mut [F]

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<F, B> IndexMut<usize> for Polynomial<F, B>

source§

fn index_mut(&mut self, index: usize) -> &mut F

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<F: Field, B: Basis> Mul<F> for Polynomial<F, B>

§

type Output = Polynomial<F, B>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Polynomial<F, B>

Performs the * operation. Read more
source§

impl<'a, F: Field, B: Basis> Sub<&'a Polynomial<F, B>> for Polynomial<F, B>

§

type Output = Polynomial<F, B>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &'a Polynomial<F, B>) -> Polynomial<F, B>

Performs the - operation. Read more
source§

impl<'a, F: Field, B: Basis> Sub<F> for &'a Polynomial<F, B>

§

type Output = Polynomial<F, B>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Polynomial<F, B>

Performs the - operation. Read more

Auto Trait Implementations§

§

impl<F, B> Freeze for Polynomial<F, B>

§

impl<F, B> RefUnwindSafe for Polynomial<F, B>

§

impl<F, B> Send for Polynomial<F, B>
where B: Send, diff --git a/halo2_backend/transcript/struct.Challenge255.html b/halo2_backend/transcript/struct.Challenge255.html index f34035b9f5..fb5657de7d 100644 --- a/halo2_backend/transcript/struct.Challenge255.html +++ b/halo2_backend/transcript/struct.Challenge255.html @@ -113,23 +113,23 @@
§Examples
C::Scalar: FromUniformBytes<64>,

source§

fn squeeze_challenge(&mut self) -> Challenge255<C>

Squeeze an encoded verifier challenge from the transcript.
source§

fn common_point(&mut self, point: C) -> Result<()>

Writing the point to the transcript without writing it to the proof, treating it as a common input.
source§

fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>

Writing the scalar to the transcript without writing it to the proof, treating it as a common input.
source§

fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

Squeeze a typed challenge (in the scalar field) from the transcript.
source§

impl<R: Read, C: CurveAffine> Transcript<C, Challenge255<C>> for Keccak256Read<R, C, Challenge255<C>>
where - C::Scalar: FromUniformBytes<64>,

source§

fn squeeze_challenge(&mut self) -> Challenge255<C>

Squeeze an encoded verifier challenge from the transcript.
source§

fn common_point(&mut self, point: C) -> Result<()>

Writing the point to the transcript without writing it to the proof, -treating it as a common input.
source§

fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>

Writing the scalar to the transcript without writing it to the proof, -treating it as a common input.
source§

fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

Squeeze a typed challenge (in the scalar field) from the transcript.
source§

impl<W: Write, C: CurveAffine> Transcript<C, Challenge255<C>> for Keccak256Write<W, C, Challenge255<C>>
where - C::Scalar: FromUniformBytes<64>,

source§

fn squeeze_challenge(&mut self) -> Challenge255<C>

Squeeze an encoded verifier challenge from the transcript.
source§

fn common_point(&mut self, point: C) -> Result<()>

Writing the point to the transcript without writing it to the proof, -treating it as a common input.
source§

fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>

Writing the scalar to the transcript without writing it to the proof, -treating it as a common input.
source§

fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

Squeeze a typed challenge (in the scalar field) from the transcript.
source§

impl<R: Read, C: CurveAffine> TranscriptRead<C, Challenge255<C>> for Blake2bRead<R, C, Challenge255<C>>
where + C::Scalar: FromUniformBytes<64>,

source§

fn squeeze_challenge(&mut self) -> Challenge255<C>

Squeeze an encoded verifier challenge from the transcript.
source§

fn common_point(&mut self, point: C) -> Result<()>

Writing the point to the transcript without writing it to the proof, +treating it as a common input.
source§

fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>

Writing the scalar to the transcript without writing it to the proof, +treating it as a common input.
source§

fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

Squeeze a typed challenge (in the scalar field) from the transcript.
source§

impl<W: Write, C: CurveAffine> Transcript<C, Challenge255<C>> for Keccak256Write<W, C, Challenge255<C>>
where + C::Scalar: FromUniformBytes<64>,

source§

fn squeeze_challenge(&mut self) -> Challenge255<C>

Squeeze an encoded verifier challenge from the transcript.
source§

fn common_point(&mut self, point: C) -> Result<()>

Writing the point to the transcript without writing it to the proof, +treating it as a common input.
source§

fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>

Writing the scalar to the transcript without writing it to the proof, +treating it as a common input.
source§

fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

Squeeze a typed challenge (in the scalar field) from the transcript.
source§

impl<R: Read, C: CurveAffine> TranscriptRead<C, Challenge255<C>> for Blake2bRead<R, C, Challenge255<C>>
where C::Scalar: FromUniformBytes<64>,

source§

fn read_point(&mut self) -> Result<C>

Read a curve point from the prover.
source§

fn read_scalar(&mut self) -> Result<C::Scalar>

Read a curve scalar from the prover.
source§

impl<R: Read, C: CurveAffine> TranscriptRead<C, Challenge255<C>> for Keccak256Read<R, C, Challenge255<C>>
where C::Scalar: FromUniformBytes<64>,

source§

fn read_point(&mut self) -> Result<C>

Read a curve point from the prover.
source§

fn read_scalar(&mut self) -> Result<C::Scalar>

Read a curve scalar from the prover.
source§

impl<R: Read, C: CurveAffine> TranscriptReadBuffer<R, C, Challenge255<C>> for Blake2bRead<R, C, Challenge255<C>>
where - C::Scalar: FromUniformBytes<64>,

source§

fn init(reader: R) -> Self

Initialize a transcript given an input buffer.

+ C::Scalar: FromUniformBytes<64>,
source§

fn init(reader: R) -> Self

Initialize a transcript given an input buffer.

source§

impl<R: Read, C: CurveAffine> TranscriptReadBuffer<R, C, Challenge255<C>> for Keccak256Read<R, C, Challenge255<C>>
where - C::Scalar: FromUniformBytes<64>,

source§

fn init(reader: R) -> Self

Initialize a transcript given an input buffer.

+ C::Scalar: FromUniformBytes<64>,
source§

fn init(reader: R) -> Self

Initialize a transcript given an input buffer.

source§

impl<W: Write, C: CurveAffine> TranscriptWrite<C, Challenge255<C>> for Blake2bWrite<W, C, Challenge255<C>>
where C::Scalar: FromUniformBytes<64>,

source§

fn write_point(&mut self, point: C) -> Result<()>

Write a curve point to the proof and the transcript.
source§

fn write_scalar(&mut self, scalar: C::Scalar) -> Result<()>

Write a scalar to the proof and the transcript.
source§

impl<W: Write, C: CurveAffine> TranscriptWrite<C, Challenge255<C>> for Keccak256Write<W, C, Challenge255<C>>
where C::Scalar: FromUniformBytes<64>,

source§

fn write_point(&mut self, point: C) -> Result<()>

Write a curve point to the proof and the transcript.
source§

fn write_scalar(&mut self, scalar: C::Scalar) -> Result<()>

Write a scalar to the proof and the transcript.
source§

impl<W: Write, C: CurveAffine> TranscriptWriterBuffer<W, C, Challenge255<C>> for Blake2bWrite<W, C, Challenge255<C>>
where - C::Scalar: FromUniformBytes<64>,

source§

fn init(writer: W) -> Self

Initialize a transcript given an output buffer.

+ C::Scalar: FromUniformBytes<64>,
source§

fn init(writer: W) -> Self

Initialize a transcript given an output buffer.

source§

fn finalize(self) -> W

Conclude the interaction and return the output buffer (writer).
source§

impl<W: Write, C: CurveAffine> TranscriptWriterBuffer<W, C, Challenge255<C>> for Keccak256Write<W, C, Challenge255<C>>
where - C::Scalar: FromUniformBytes<64>,

source§

fn init(writer: W) -> Self

Initialize a transcript given an output buffer.

+ C::Scalar: FromUniformBytes<64>,
source§

fn init(writer: W) -> Self

Initialize a transcript given an output buffer.

source§

fn finalize(self) -> W

Conclude the interaction and return the output buffer (writer).

source§

impl<C: Copy + CurveAffine> Copy for Challenge255<C>

Auto Trait Implementations§

§

impl<C> Freeze for Challenge255<C>

§

impl<C> RefUnwindSafe for Challenge255<C>
where C: RefUnwindSafe,

§

impl<C> Send for Challenge255<C>

§

impl<C> Sync for Challenge255<C>

§

impl<C> Unpin for Challenge255<C>
where diff --git a/halo2_frontend/circuit/fn.compile_circuit.html b/halo2_frontend/circuit/fn.compile_circuit.html index af34dd3503..6418a6a217 100644 --- a/halo2_frontend/circuit/fn.compile_circuit.html +++ b/halo2_frontend/circuit/fn.compile_circuit.html @@ -18,7 +18,7 @@ k: u32, circuit: &ConcreteCircuit, compress_selectors: bool -) -> Result<(CompiledCircuit<F>, ConcreteCircuit::Config, ConstraintSystem<F>), Error>
Expand description

Compile a circuit. Runs configure and synthesize on the circuit in order to materialize the +) -> Result<(CompiledCircuit<F>, ConcreteCircuit::Config, ConstraintSystem<F>), Error>

Expand description

Compile a circuit. Runs configure and synthesize on the circuit in order to materialize the circuit into its columns and the column configuration; as well as doing the fixed column and copy constraints assignments. The output of this function can then be used for the key generation, and proof generation. diff --git a/halo2_frontend/circuit/layouter/enum.RegionColumn.html b/halo2_frontend/circuit/layouter/enum.RegionColumn.html index 5e014b37f7..c5d9e04745 100644 --- a/halo2_frontend/circuit/layouter/enum.RegionColumn.html +++ b/halo2_frontend/circuit/layouter/enum.RegionColumn.html @@ -15,13 +15,13 @@

Enum halo2_frontend::circuit::layouter::RegionColumn

source ·
pub enum RegionColumn {
-    Column(Column<Any>),
+    Column(Column<Any>),
     Selector(Selector),
 }
Expand description

The virtual column involved in a region. This includes concrete columns, as well as selectors that are not concrete columns at this stage.

-

Variants§

§

Column(Column<Any>)

Concrete column

+

Variants§

§

Column(Column<Any>)

Concrete column

§

Selector(Selector)

Virtual column representing a (boolean) selector

-

Trait Implementations§

source§

impl Clone for RegionColumn

source§

fn clone(&self) -> RegionColumn

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for RegionColumn

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Column<Any>> for RegionColumn

source§

fn from(column: Column<Any>) -> RegionColumn

Converts to this type from the input type.
source§

impl From<Selector> for RegionColumn

source§

fn from(selector: Selector) -> RegionColumn

Converts to this type from the input type.
source§

impl Hash for RegionColumn

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

source§

impl Clone for RegionColumn

source§

fn clone(&self) -> RegionColumn

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for RegionColumn

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Column<Any>> for RegionColumn

source§

fn from(column: Column<Any>) -> RegionColumn

Converts to this type from the input type.
source§

impl From<Selector> for RegionColumn

source§

fn from(selector: Selector) -> RegionColumn

Converts to this type from the input type.
source§

impl Hash for RegionColumn

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for RegionColumn

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where diff --git a/halo2_frontend/circuit/layouter/struct.RegionShape.html b/halo2_frontend/circuit/layouter/struct.RegionShape.html index 9cf9b51dd8..50f971f3f5 100644 --- a/halo2_frontend/circuit/layouter/struct.RegionShape.html +++ b/halo2_frontend/circuit/layouter/struct.RegionShape.html @@ -58,7 +58,7 @@ ) -> Result<Cell, Error>

Assigns a fixed value
source§

fn name_column<'v>( &'v mut self, _annotation: &'v (dyn Fn() -> String + 'v), - _column: Column<Any> + _column: Column<Any> )

Allows the circuit implementor to name/annotate a Column within a Region context. Read more
source§

fn constrain_constant( &mut self, _cell: Cell, diff --git a/halo2_frontend/circuit/layouter/trait.RegionLayouter.html b/halo2_frontend/circuit/layouter/trait.RegionLayouter.html index 80c0a92f87..ad35fae76e 100644 --- a/halo2_frontend/circuit/layouter/trait.RegionLayouter.html +++ b/halo2_frontend/circuit/layouter/trait.RegionLayouter.html @@ -25,7 +25,7 @@ fn name_column<'v>( &'v mut self, annotation: &'v (dyn Fn() -> String + 'v), - column: Column<Any> + column: Column<Any> ); fn assign_advice<'v>( &'v mut self, @@ -100,7 +100,7 @@

source

fn name_column<'v>( &'v mut self, annotation: &'v (dyn Fn() -> String + 'v), - column: Column<Any> + column: Column<Any> )

Allows the circuit implementor to name/annotate a Column within a Region context.

This is useful in order to improve the amount of information that prover.verify() and prover.assert_satisfied() can provide.

diff --git a/halo2_frontend/circuit/struct.Cell.html b/halo2_frontend/circuit/struct.Cell.html index 5dcae45e3c..a9c2572333 100644 --- a/halo2_frontend/circuit/struct.Cell.html +++ b/halo2_frontend/circuit/struct.Cell.html @@ -17,11 +17,11 @@

Struct halo2_frontend::circuit::Cell

source ·
pub struct Cell {
     pub region_index: RegionIndex,
     pub row_offset: usize,
-    pub column: Column<Any>,
+    pub column: Column<Any>,
 }
Expand description

A pointer to a cell within a circuit.

Fields§

§region_index: RegionIndex

Identifies the region in which this cell resides.

§row_offset: usize

The relative offset of this cell within its region.

-
§column: Column<Any>

The column of this cell.

+
§column: Column<Any>

The column of this cell.

Trait Implementations§

source§

impl Clone for Cell

source§

fn clone(&self) -> Cell

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Cell

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Copy for Cell

Auto Trait Implementations§

§

impl Freeze for Cell

§

impl RefUnwindSafe for Cell

§

impl Send for Cell

§

impl Sync for Cell

§

impl Unpin for Cell

§

impl UnwindSafe for Cell

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/halo2_frontend/circuit/struct.Region.html b/halo2_frontend/circuit/struct.Region.html index 2776dc058b..8dfeee1b8d 100644 --- a/halo2_frontend/circuit/struct.Region.html +++ b/halo2_frontend/circuit/struct.Region.html @@ -33,7 +33,7 @@

source

pub fn name_column<A, AR, T>(&mut self, annotation: A, column: T)
where A: Fn() -> AR, AR: Into<String>, - T: Into<Column<Any>>,

Allows the circuit implementor to name/annotate a Column within a Region context.

+ T: Into<Column<Any>>,

Allows the circuit implementor to name/annotate a Column within a Region context.

This is useful in order to improve the amount of information that prover.verify() and prover.assert_satisfied() can provide.

source

pub fn assign_advice<'v, V, VR, A, AR>( diff --git a/halo2_frontend/circuit/struct.Value.html b/halo2_frontend/circuit/struct.Value.html index dece78c125..5217de8366 100644 --- a/halo2_frontend/circuit/struct.Value.html +++ b/halo2_frontend/circuit/struct.Value.html @@ -91,28 +91,28 @@

§Examples
source§

impl<F: Field> Value<Assigned<F>>

source

pub fn evaluate(self) -> Value<F>

Evaluates this value directly, performing an unbatched inversion if necessary.

If the denominator is zero, the returned value is zero.

Trait Implementations§

source§

impl<V, O> Add<&Value<V>> for Value<V>
where - for<'v> V: Add<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Self) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<F> for Value<&Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<F> for Value<Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Self::Output

Performs the + operation. Read more
source§

impl<V, O> Add<Value<&V>> for Value<V>
where - for<'v> V: Add<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<&V>) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<Value<F>> for Value<&Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<F>) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<Value<F>> for Value<Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<F>) -> Self::Output

Performs the + operation. Read more
source§

impl<V, O> Add<Value<V>> for &Value<V>
where - for<'v> &'v V: Add<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<V>) -> Self::Output

Performs the + operation. Read more
source§

impl<V, O> Add<Value<V>> for Value<&V>
where - for<'v> &'v V: Add<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<V>) -> Self::Output

Performs the + operation. Read more
source§

impl<V, O> Add for &Value<V>
where - for<'v> &'v V: Add<Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
source§

impl<V, O> Add for Value<V>
where - V: Add<Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
source§

impl<V: Clone> Clone for Value<V>

source§

fn clone(&self) -> Value<V>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<V: Debug> Debug for Value<V>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<V> Default for Value<V>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<F: Field> From<Value<F>> for Value<Assigned<F>>

source§

fn from(value: Value<F>) -> Self

Converts to this type from the input type.
source§

impl<A, V: FromIterator<A>> FromIterator<Value<A>> for Value<V>

source§

fn from_iter<I: IntoIterator<Item = Value<A>>>(iter: I) -> Self

Takes each element in the Iterator: if it is Value::unknown(), no further + for<'v> V: Add<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Self) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<F> for Value<&Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<F> for Value<Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Self::Output

Performs the + operation. Read more
source§

impl<V, O> Add<Value<&V>> for Value<V>
where + for<'v> V: Add<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<&V>) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<Value<F>> for Value<&Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<F>) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<Value<F>> for Value<Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<F>) -> Self::Output

Performs the + operation. Read more
source§

impl<V, O> Add<Value<V>> for &Value<V>
where + for<'v> &'v V: Add<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<V>) -> Self::Output

Performs the + operation. Read more
source§

impl<V, O> Add<Value<V>> for Value<&V>
where + for<'v> &'v V: Add<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<V>) -> Self::Output

Performs the + operation. Read more
source§

impl<V, O> Add for &Value<V>
where + for<'v> &'v V: Add<Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
source§

impl<V, O> Add for Value<V>
where + V: Add<Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
source§

impl<V: Clone> Clone for Value<V>

source§

fn clone(&self) -> Value<V>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<V: Debug> Debug for Value<V>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<V> Default for Value<V>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<F: Field> From<Value<F>> for Value<Assigned<F>>

source§

fn from(value: Value<F>) -> Self

Converts to this type from the input type.
source§

impl<A, V: FromIterator<A>> FromIterator<Value<A>> for Value<V>

source§

fn from_iter<I: IntoIterator<Item = Value<A>>>(iter: I) -> Self

Takes each element in the Iterator: if it is Value::unknown(), no further elements are taken, and the Value::unknown() is returned. Should no Value::unknown() occur, a container of type V containing the values of each Value is returned.

source§

impl<V, O> Mul<&Value<V>> for Value<V>
where - for<'v> V: Mul<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Self) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<F> for Value<&Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<F> for Value<Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Self::Output

Performs the * operation. Read more
source§

impl<V, O> Mul<Value<&V>> for Value<V>
where - for<'v> V: Mul<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<&V>) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<Value<F>> for Value<&Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<F>) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<Value<F>> for Value<Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<F>) -> Self::Output

Performs the * operation. Read more
source§

impl<V, O> Mul<Value<V>> for &Value<V>
where - for<'v> &'v V: Mul<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<V>) -> Self::Output

Performs the * operation. Read more
source§

impl<V, O> Mul<Value<V>> for Value<&V>
where - for<'v> &'v V: Mul<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<V>) -> Self::Output

Performs the * operation. Read more
source§

impl<V, O> Mul for &Value<V>
where - for<'v> &'v V: Mul<Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Self) -> Self::Output

Performs the * operation. Read more
source§

impl<V, O> Mul for Value<V>
where - V: Mul<Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Self) -> Self::Output

Performs the * operation. Read more
source§

impl<V: Neg> Neg for Value<V>

§

type Output = Value<<V as Neg>::Output>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<V, O> Sub<&Value<V>> for Value<V>
where - for<'v> V: Sub<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Self) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<F> for Value<&Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<F> for Value<Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Self::Output

Performs the - operation. Read more
source§

impl<V, O> Sub<Value<&V>> for Value<V>
where - for<'v> V: Sub<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<&V>) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<Value<F>> for Value<&Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<F>) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<Value<F>> for Value<Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<F>) -> Self::Output

Performs the - operation. Read more
source§

impl<V, O> Sub<Value<V>> for &Value<V>
where - for<'v> &'v V: Sub<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<V>) -> Self::Output

Performs the - operation. Read more
source§

impl<V, O> Sub<Value<V>> for Value<&V>
where - for<'v> &'v V: Sub<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<V>) -> Self::Output

Performs the - operation. Read more
source§

impl<V, O> Sub for &Value<V>
where - for<'v> &'v V: Sub<Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl<V, O> Sub for Value<V>
where - V: Sub<Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl<V: Copy> Copy for Value<V>

Auto Trait Implementations§

§

impl<V> Freeze for Value<V>
where + for<'v> V: Mul<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Self) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<F> for Value<&Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<F> for Value<Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Self::Output

Performs the * operation. Read more
source§

impl<V, O> Mul<Value<&V>> for Value<V>
where + for<'v> V: Mul<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<&V>) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<Value<F>> for Value<&Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<F>) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<Value<F>> for Value<Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<F>) -> Self::Output

Performs the * operation. Read more
source§

impl<V, O> Mul<Value<V>> for &Value<V>
where + for<'v> &'v V: Mul<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<V>) -> Self::Output

Performs the * operation. Read more
source§

impl<V, O> Mul<Value<V>> for Value<&V>
where + for<'v> &'v V: Mul<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<V>) -> Self::Output

Performs the * operation. Read more
source§

impl<V, O> Mul for &Value<V>
where + for<'v> &'v V: Mul<Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Self) -> Self::Output

Performs the * operation. Read more
source§

impl<V, O> Mul for Value<V>
where + V: Mul<Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Self) -> Self::Output

Performs the * operation. Read more
source§

impl<V: Neg> Neg for Value<V>

§

type Output = Value<<V as Neg>::Output>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<V, O> Sub<&Value<V>> for Value<V>
where + for<'v> V: Sub<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Self) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<F> for Value<&Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<F> for Value<Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Self::Output

Performs the - operation. Read more
source§

impl<V, O> Sub<Value<&V>> for Value<V>
where + for<'v> V: Sub<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<&V>) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<Value<F>> for Value<&Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<F>) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<Value<F>> for Value<Assigned<F>>

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<F>) -> Self::Output

Performs the - operation. Read more
source§

impl<V, O> Sub<Value<V>> for &Value<V>
where + for<'v> &'v V: Sub<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<V>) -> Self::Output

Performs the - operation. Read more
source§

impl<V, O> Sub<Value<V>> for Value<&V>
where + for<'v> &'v V: Sub<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<V>) -> Self::Output

Performs the - operation. Read more
source§

impl<V, O> Sub for &Value<V>
where + for<'v> &'v V: Sub<Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl<V, O> Sub for Value<V>
where + V: Sub<Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl<V: Copy> Copy for Value<V>

Auto Trait Implementations§

§

impl<V> Freeze for Value<V>
where V: Freeze,

§

impl<V> RefUnwindSafe for Value<V>
where V: RefUnwindSafe,

§

impl<V> Send for Value<V>
where V: Send,

§

impl<V> Sync for Value<V>
where diff --git a/halo2_frontend/dev/cost/index.html b/halo2_frontend/dev/cost/index.html index 1854368241..b0f58ce0db 100644 --- a/halo2_frontend/dev/cost/index.html +++ b/halo2_frontend/dev/cost/index.html @@ -14,5 +14,5 @@ }); -

Module halo2_frontend::dev::cost

source ·
Expand description

Developer tools for investigating the cost of a circuit.

+

Module halo2_frontend::dev::cost

source ·
Expand description

Developer tools for investigating the cost of a circuit.

Structs§

  • Measures a circuit to determine its costs, and explain what contributes to them.
  • The marginal size of a Halo 2 proof, broken down into its contributing factors.
  • The size of a Halo 2 proof, broken down into its contributing factors.
\ No newline at end of file diff --git a/halo2_frontend/dev/enum.VerifyFailure.html b/halo2_frontend/dev/enum.VerifyFailure.html index d9388e62e3..03964793dd 100644 --- a/halo2_frontend/dev/enum.VerifyFailure.html +++ b/halo2_frontend/dev/enum.VerifyFailure.html @@ -19,7 +19,7 @@ gate: Gate, region: Region, gate_offset: usize, - column: Column<Any>, + column: Column<Any>, offset: isize, }, InstanceCellNotAssigned { @@ -57,7 +57,7 @@
§region: Region

The region in which this cell should be assigned.

§gate_offset: usize

The offset (relative to the start of the region) at which the active gate queries this cell.

-
§column: Column<Any>

The column in which this cell should be assigned.

+
§column: Column<Any>

The column in which this cell should be assigned.

§offset: isize

The offset (relative to the start of the region) at which this cell should be assigned. This may be negative (for example, if a selector enables a gate at offset 0, but the gate uses Rotation::prev()).

@@ -114,7 +114,7 @@

Fields

§column: Column

The column in which this permutation is not satisfied.

§location: FailureLocation

The location at which the permutation is not satisfied.

Implementations§

source§

impl VerifyFailure

source

pub fn emit<F: Field>(&self, prover: &MockProver<F>)

Emits this failure in pretty-printed format to stderr.

-

Trait Implementations§

source§

impl Clone for VerifyFailure

source§

fn clone(&self) -> VerifyFailure

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for VerifyFailure

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for VerifyFailure

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for VerifyFailure

source§

fn eq(&self, other: &VerifyFailure) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl Clone for VerifyFailure

source§

fn clone(&self) -> VerifyFailure

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for VerifyFailure

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for VerifyFailure

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for VerifyFailure

source§

fn eq(&self, other: &VerifyFailure) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for VerifyFailure

source§

impl StructuralPartialEq for VerifyFailure

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/halo2_frontend/dev/metadata/struct.Column.html b/halo2_frontend/dev/metadata/struct.Column.html index 521428ec73..58cdbcc4fc 100644 --- a/halo2_frontend/dev/metadata/struct.Column.html +++ b/halo2_frontend/dev/metadata/struct.Column.html @@ -14,23 +14,23 @@ }); -

Fields§

§column_type: Any

The type of the column.

§index: usize

The index of the column.

-

Implementations§

§

impl ColumnMid

pub fn new(column_type: Any, index: usize) -> ColumnMid

Trait Implementations§

§

impl Clone for ColumnMid

§

fn clone(&self) -> ColumnMid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for ColumnMid

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Display for ColumnMid

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<Column<Any>> for ColumnMid

source§

fn from(val: Column<Any>) -> Self

Converts to this type from the input type.
source§

impl From<ColumnMid> for Column<Any>

source§

fn from(column: ColumnMid) -> Column<Any>

Converts to this type from the input type.
§

impl Hash for ColumnMid

§

fn hash<__H>(&self, state: &mut __H)
where +

Implementations§

source§

impl ColumnMid

source

pub fn new(column_type: Any, index: usize) -> ColumnMid

Trait Implementations§

source§

impl Clone for ColumnMid

source§

fn clone(&self) -> ColumnMid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ColumnMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Display for ColumnMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<Column<Any>> for ColumnMid

source§

fn from(val: Column<Any>) -> Self

Converts to this type from the input type.
source§

impl From<ColumnMid> for Column<Any>

source§

fn from(column: ColumnMid) -> Column<Any>

Converts to this type from the input type.
source§

impl Hash for ColumnMid

source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
§

impl Ord for ColumnMid

§

fn cmp(&self, other: &ColumnMid) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for ColumnMid

source§

fn cmp(&self, other: &ColumnMid) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where - Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
§

impl PartialEq for ColumnMid

§

fn eq(&self, other: &ColumnMid) -> bool

This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for ColumnMid

source§

fn eq(&self, other: &ColumnMid) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
§

impl PartialOrd for ColumnMid

§

fn partial_cmp(&self, other: &ColumnMid) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for ColumnMid

source§

fn partial_cmp(&self, other: &ColumnMid) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
§

impl Copy for ColumnMid

§

impl Eq for ColumnMid

§

impl StructuralPartialEq for ColumnMid

Auto Trait Implementations§

§

impl Freeze for ColumnMid

§

impl RefUnwindSafe for ColumnMid

§

impl Send for ColumnMid

§

impl Sync for ColumnMid

§

impl Unpin for ColumnMid

§

impl UnwindSafe for ColumnMid

Blanket Implementations§

source§

impl<T> Any for T
where +operator. Read more

source§

impl Copy for ColumnMid

source§

impl Eq for ColumnMid

source§

impl StructuralPartialEq for ColumnMid

Auto Trait Implementations§

§

impl Freeze for ColumnMid

§

impl RefUnwindSafe for ColumnMid

§

impl Send for ColumnMid

§

impl Sync for ColumnMid

§

impl Unpin for ColumnMid

§

impl UnwindSafe for ColumnMid

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where diff --git a/halo2_frontend/dev/metadata/struct.Constraint.html b/halo2_frontend/dev/metadata/struct.Constraint.html index e573bbb407..a9491fec44 100644 --- a/halo2_frontend/dev/metadata/struct.Constraint.html +++ b/halo2_frontend/dev/metadata/struct.Constraint.html @@ -15,7 +15,7 @@

Struct halo2_frontend::dev::metadata::Constraint

source ·
pub struct Constraint { /* private fields */ }
Expand description

Metadata about a configured constraint within a circuit.

-

Trait Implementations§

source§

impl Clone for Constraint

source§

fn clone(&self) -> Constraint

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Constraint

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Constraint

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<S: AsRef<str>> From<(Gate, usize, S)> for Constraint

source§

fn from((gate, index, name): (Gate, usize, S)) -> Self

Converts to this type from the input type.
source§

impl PartialEq for Constraint

source§

fn eq(&self, other: &Constraint) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl Clone for Constraint

source§

fn clone(&self) -> Constraint

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Constraint

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Constraint

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<S: AsRef<str>> From<(Gate, usize, S)> for Constraint

source§

fn from((gate, index, name): (Gate, usize, S)) -> Self

Converts to this type from the input type.
source§

impl PartialEq for Constraint

source§

fn eq(&self, other: &Constraint) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Constraint

source§

impl StructuralPartialEq for Constraint

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/halo2_frontend/dev/metadata/struct.Gate.html b/halo2_frontend/dev/metadata/struct.Gate.html index 680ea7badb..7c67cdfc49 100644 --- a/halo2_frontend/dev/metadata/struct.Gate.html +++ b/halo2_frontend/dev/metadata/struct.Gate.html @@ -15,7 +15,7 @@

Struct halo2_frontend::dev::metadata::Gate

source ·
pub struct Gate { /* private fields */ }
Expand description

Metadata about a configured gate within a circuit.

-

Trait Implementations§

source§

impl Clone for Gate

source§

fn clone(&self) -> Gate

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Gate

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Gate

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<S: AsRef<str>> From<(usize, S)> for Gate

source§

fn from((index, name): (usize, S)) -> Self

Converts to this type from the input type.
source§

impl PartialEq for Gate

source§

fn eq(&self, other: &Gate) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl Clone for Gate

source§

fn clone(&self) -> Gate

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Gate

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Gate

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<S: AsRef<str>> From<(usize, S)> for Gate

source§

fn from((index, name): (usize, S)) -> Self

Converts to this type from the input type.
source§

impl PartialEq for Gate

source§

fn eq(&self, other: &Gate) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Gate

source§

impl StructuralPartialEq for Gate

Auto Trait Implementations§

§

impl Freeze for Gate

§

impl RefUnwindSafe for Gate

§

impl Send for Gate

§

impl Sync for Gate

§

impl Unpin for Gate

§

impl UnwindSafe for Gate

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/halo2_frontend/dev/metadata/struct.Region.html b/halo2_frontend/dev/metadata/struct.Region.html index 8ade021445..6bc09b33f8 100644 --- a/halo2_frontend/dev/metadata/struct.Region.html +++ b/halo2_frontend/dev/metadata/struct.Region.html @@ -15,9 +15,9 @@

Struct halo2_frontend::dev::metadata::Region

source ·
pub struct Region { /* private fields */ }
Expand description

Metadata about an assigned region within a circuit.

-

Trait Implementations§

source§

impl Clone for Region

source§

fn clone(&self) -> Region

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Region

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Region

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<(usize, &str)> for Region

source§

fn from((index, name): (usize, &str)) -> Self

Converts to this type from the input type.
source§

impl From<(usize, &str, HashMap<ColumnMid, String>)> for Region

Trait Implementations§

source§

impl Clone for Region

source§

fn clone(&self) -> Region

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Region

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Region

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<(usize, &str)> for Region

source§

fn from((index, name): (usize, &str)) -> Self

Converts to this type from the input type.
source§

impl From<(usize, &str, HashMap<ColumnMid, String>)> for Region

source§

fn from( (index, name, annotations): (usize, &str, HashMap<ColumnMetadata, String>) -) -> Self

Converts to this type from the input type.
source§

impl From<(usize, String)> for Region

source§

fn from((index, name): (usize, String)) -> Self

Converts to this type from the input type.
source§

impl From<(usize, String, HashMap<ColumnMid, String>)> for Region

source§

fn from( +) -> Self

Converts to this type from the input type.
source§

impl From<(usize, String)> for Region

source§

fn from((index, name): (usize, String)) -> Self

Converts to this type from the input type.
source§

impl From<(usize, String, HashMap<ColumnMid, String>)> for Region

source§

fn from( (index, name, annotations): (usize, String, HashMap<ColumnMetadata, String>) ) -> Self

Converts to this type from the input type.
source§

impl PartialEq for Region

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always diff --git a/halo2_frontend/dev/metadata/struct.VirtualCell.html b/halo2_frontend/dev/metadata/struct.VirtualCell.html index 5031bdaeb1..118ed66c19 100644 --- a/halo2_frontend/dev/metadata/struct.VirtualCell.html +++ b/halo2_frontend/dev/metadata/struct.VirtualCell.html @@ -16,7 +16,7 @@

Struct halo2_frontend::dev::metadata::VirtualCell

source ·
pub struct VirtualCell { /* private fields */ }
Expand description

A “virtual cell” is a PLONK cell that has been queried at a particular relative offset within a custom gate.

-

Trait Implementations§

source§

impl Clone for VirtualCell

source§

fn clone(&self) -> VirtualCell

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for VirtualCell

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for VirtualCell

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<(ColumnMid, i32)> for VirtualCell

source§

fn from((column, rotation): (Column, i32)) -> Self

Converts to this type from the input type.
source§

impl<S: AsRef<str>> From<(S, ColumnMid, i32)> for VirtualCell

source§

fn from((name, column, rotation): (S, Column, i32)) -> Self

Converts to this type from the input type.
source§

impl From<VirtualCell> for VirtualCell

source§

fn from(c: VirtualCell) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtualCell

source§

fn cmp(&self, other: &VirtualCell) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

Trait Implementations§

source§

impl Clone for VirtualCell

source§

fn clone(&self) -> VirtualCell

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for VirtualCell

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for VirtualCell

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<(ColumnMid, i32)> for VirtualCell

source§

fn from((column, rotation): (Column, i32)) -> Self

Converts to this type from the input type.
source§

impl<S: AsRef<str>> From<(S, ColumnMid, i32)> for VirtualCell

source§

fn from((name, column, rotation): (S, Column, i32)) -> Self

Converts to this type from the input type.
source§

impl From<VirtualCell> for VirtualCell

source§

fn from(c: VirtualCell) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtualCell

source§

fn cmp(&self, other: &VirtualCell) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for VirtualCell

source§

fn eq(&self, other: &VirtualCell) -> bool

This method tests for self and other values to be equal, and is used diff --git a/halo2_frontend/dev/struct.CircuitGates.html b/halo2_frontend/dev/struct.CircuitGates.html index aede82c04b..6aec54ff5a 100644 --- a/halo2_frontend/dev/struct.CircuitGates.html +++ b/halo2_frontend/dev/struct.CircuitGates.html @@ -84,7 +84,7 @@

§Examples

);

Implementations§

source§

impl CircuitGates

source

pub fn collect<F: PrimeField, C: Circuit<F>>(params: C::Params) -> Self

Collects the gates from within the circuit.

source

pub fn queries_to_csv(&self) -> String

Prints the queries in this circuit to a CSV grid.

-

Trait Implementations§

source§

impl Debug for CircuitGates

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for CircuitGates

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Debug for CircuitGates

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for CircuitGates

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where diff --git a/halo2_frontend/dev/struct.MockProver.html b/halo2_frontend/dev/struct.MockProver.html index 79ff42b92f..dd913178fb 100644 --- a/halo2_frontend/dev/struct.MockProver.html +++ b/halo2_frontend/dev/struct.MockProver.html @@ -172,7 +172,7 @@

§Examples

source

pub fn instance(&self) -> &Vec<Vec<InstanceValue<F>>>

Returns the list of Instance Columns used within a MockProver instance and the associated values contained on each Cell.

Trait Implementations§

source§

impl<F: Field> Assignment<F> for MockProver<F>

source§

fn enter_region<NR, N>(&mut self, name: N)
where NR: Into<String>, - N: FnOnce() -> NR,

Creates a new region and enters into it. Read more
source§

fn exit_region(&mut self)

Exits the current region. Read more
source§

fn annotate_column<A, AR>(&mut self, annotation: A, column: Column<Any>)
where + N: FnOnce() -> NR,

Creates a new region and enters into it. Read more
source§

fn exit_region(&mut self)

Exits the current region. Read more
source§

fn annotate_column<A, AR>(&mut self, annotation: A, column: Column<Any>)
where A: FnOnce() -> AR, AR: Into<String>,

Allows the developer to include an annotation for an specific column within a Region. Read more
source§

fn enable_selector<A, AR>( &mut self, @@ -207,9 +207,9 @@

§Examples

A: FnOnce() -> AR, AR: Into<String>,

Assign a fixed value
source§

fn copy( &mut self, - left_column: Column<Any>, + left_column: Column<Any>, left_row: usize, - right_column: Column<Any>, + right_column: Column<Any>, right_row: usize ) -> Result<(), Error>

Assign two cells to have the same value
source§

fn fill_from_row( &mut self, diff --git a/halo2_frontend/plonk/assigned/enum.Assigned.html b/halo2_frontend/plonk/assigned/enum.Assigned.html index 4bb0fae138..f421dafd69 100644 --- a/halo2_frontend/plonk/assigned/enum.Assigned.html +++ b/halo2_frontend/plonk/assigned/enum.Assigned.html @@ -34,9 +34,9 @@

source

pub fn evaluate(self) -> F

Evaluates this assigned value directly, performing an unbatched inversion if necessary.

If the denominator is zero, this returns zero.

-

Trait Implementations§

source§

impl<F: Field> Add<&Assigned<F>> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F: Field> Add<&Assigned<F>> for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Self) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F: Field> Add<Assigned<F>> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F: Field> Add<F> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F: Field> Add<F> for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F: Field> Add for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F: Field> AddAssign<&Assigned<F>> for Assigned<F>

source§

fn add_assign(&mut self, rhs: &Self)

Performs the += operation. Read more
source§

impl<F: Field> AddAssign for Assigned<F>

source§

fn add_assign(&mut self, rhs: Self)

Performs the += operation. Read more
source§

impl<F: Clone> Clone for Assigned<F>

source§

fn clone(&self) -> Assigned<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug> Debug for Assigned<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> From<&Assigned<F>> for Assigned<F>

source§

fn from(val: &Assigned<F>) -> Self

Converts to this type from the input type.
source§

impl<F: Field> From<&F> for Assigned<F>

source§

fn from(numerator: &F) -> Self

Converts to this type from the input type.
source§

impl<F: Field> From<(F, F)> for Assigned<F>

source§

fn from((numerator, denominator): (F, F)) -> Self

Converts to this type from the input type.
source§

impl<F: Field> From<F> for Assigned<F>

source§

fn from(numerator: F) -> Self

Converts to this type from the input type.
source§

impl<F: Field> Mul<&Assigned<F>> for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F: Field> Mul<F> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F: Field> Mul<F> for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F: Field> Mul for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Assigned<F>) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F: Field> MulAssign<&Assigned<F>> for Assigned<F>

source§

fn mul_assign(&mut self, rhs: &Self)

Performs the *= operation. Read more
source§

impl<F: Field> MulAssign for Assigned<F>

source§

fn mul_assign(&mut self, rhs: Self)

Performs the *= operation. Read more
source§

impl<F: Field> Neg for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<F: Field> Neg for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<F: Field> PartialEq for Assigned<F>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl<F: Field> Add<&Assigned<F>> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F: Field> Add<&Assigned<F>> for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Self) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F: Field> Add<Assigned<F>> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F: Field> Add<F> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F: Field> Add<F> for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F: Field> Add for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F: Field> AddAssign<&Assigned<F>> for Assigned<F>

source§

fn add_assign(&mut self, rhs: &Self)

Performs the += operation. Read more
source§

impl<F: Field> AddAssign for Assigned<F>

source§

fn add_assign(&mut self, rhs: Self)

Performs the += operation. Read more
source§

impl<F: Clone> Clone for Assigned<F>

source§

fn clone(&self) -> Assigned<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug> Debug for Assigned<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> From<&Assigned<F>> for Assigned<F>

source§

fn from(val: &Assigned<F>) -> Self

Converts to this type from the input type.
source§

impl<F: Field> From<&F> for Assigned<F>

source§

fn from(numerator: &F) -> Self

Converts to this type from the input type.
source§

impl<F: Field> From<(F, F)> for Assigned<F>

source§

fn from((numerator, denominator): (F, F)) -> Self

Converts to this type from the input type.
source§

impl<F: Field> From<F> for Assigned<F>

source§

fn from(numerator: F) -> Self

Converts to this type from the input type.
source§

impl<F: Field> Mul<&Assigned<F>> for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F: Field> Mul<F> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F: Field> Mul<F> for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F: Field> Mul for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Assigned<F>) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F: Field> MulAssign<&Assigned<F>> for Assigned<F>

source§

fn mul_assign(&mut self, rhs: &Self)

Performs the *= operation. Read more
source§

impl<F: Field> MulAssign for Assigned<F>

source§

fn mul_assign(&mut self, rhs: Self)

Performs the *= operation. Read more
source§

impl<F: Field> Neg for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<F: Field> Neg for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<F: Field> PartialEq for Assigned<F>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl<F: Field> Sub<&Assigned<F>> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F: Field> Sub<&Assigned<F>> for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Self) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F: Field> Sub<Assigned<F>> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F: Field> Sub<F> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F: Field> Sub<F> for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F: Field> Sub for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F: Field> SubAssign<&Assigned<F>> for Assigned<F>

source§

fn sub_assign(&mut self, rhs: &Self)

Performs the -= operation. Read more
source§

impl<F: Field> SubAssign for Assigned<F>

source§

fn sub_assign(&mut self, rhs: Self)

Performs the -= operation. Read more
source§

impl<F: Copy> Copy for Assigned<F>

source§

impl<F: Field> Eq for Assigned<F>

Auto Trait Implementations§

§

impl<F> Freeze for Assigned<F>
where +sufficient, and should not be overridden without very good reason.

source§

impl<F: Field> Sub<&Assigned<F>> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F: Field> Sub<&Assigned<F>> for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Self) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F: Field> Sub<Assigned<F>> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F: Field> Sub<F> for &Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F: Field> Sub<F> for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F: Field> Sub for Assigned<F>

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F: Field> SubAssign<&Assigned<F>> for Assigned<F>

source§

fn sub_assign(&mut self, rhs: &Self)

Performs the -= operation. Read more
source§

impl<F: Field> SubAssign for Assigned<F>

source§

fn sub_assign(&mut self, rhs: Self)

Performs the -= operation. Read more
source§

impl<F: Copy> Copy for Assigned<F>

source§

impl<F: Field> Eq for Assigned<F>

Auto Trait Implementations§

§

impl<F> Freeze for Assigned<F>
where F: Freeze,

§

impl<F> RefUnwindSafe for Assigned<F>
where F: RefUnwindSafe,

§

impl<F> Send for Assigned<F>
where F: Send,

§

impl<F> Sync for Assigned<F>
where diff --git a/halo2_frontend/plonk/circuit/constraint_system/struct.ConstraintSystem.html b/halo2_frontend/plonk/circuit/constraint_system/struct.ConstraintSystem.html index af42c61111..80b9d439fd 100644 --- a/halo2_frontend/plonk/circuit/constraint_system/struct.ConstraintSystem.html +++ b/halo2_frontend/plonk/circuit/constraint_system/struct.ConstraintSystem.html @@ -19,7 +19,7 @@

Implementations§

source§

impl<F: Field> ConstraintSystem<F>

source

pub fn enable_constant(&mut self, column: Column<Fixed>)

Enables this fixed column to be used for global constant assignments.

§Side-effects

The column will be equality-enabled.

-
source

pub fn enable_equality<C: Into<Column<Any>>>(&mut self, column: C)

Enable the ability to enforce equality over cells in this column

+
source

pub fn enable_equality<C: Into<Column<Any>>>(&mut self, column: C)

Enable the ability to enforce equality over cells in this column

source

pub fn lookup<S: AsRef<str>>( &mut self, name: S, @@ -46,7 +46,7 @@

§Side-effe name: S, shuffle_map: impl FnOnce(&mut VirtualCells<'_, F>) -> Vec<(Expression<F>, Expression<F>)> ) -> usize

Add a shuffle argument for some input expressions and table expressions.

-
source

pub fn get_any_query_index(&self, column: Column<Any>, at: Rotation) -> usize

source

pub fn set_minimum_degree(&mut self, degree: usize)

Sets the minimum degree required by the circuit, which can be set to a +

source

pub fn get_any_query_index(&self, column: Column<Any>, at: Rotation) -> usize

source

pub fn set_minimum_degree(&mut self, degree: usize)

Sets the minimum degree required by the circuit, which can be set to a larger amount than actually needed. This can be used, for example, to force the permutation argument to involve more columns in the same set.

source

pub fn create_gate<C: Into<Constraint<F>>, Iter: IntoIterator<Item = C>, S: AsRef<str>>( @@ -87,11 +87,11 @@

§Panics
source

pub fn annotate_lookup_any_column<A, AR, T>(&mut self, column: T, annotation: A)
where A: Fn() -> AR, AR: Into<String>, - T: Into<Column<Any>>,

Annotate an Instance column.

+ T: Into<Column<Any>>,

Annotate an Instance column.

source

pub fn annotate_column<A, AR, T>(&mut self, column: T, annotation: A)
where A: Fn() -> AR, AR: Into<String>, - T: Into<Column<Any>>,

Annotate a column.

+ T: Into<Column<Any>>,

Annotate a column.

source

pub fn fixed_column(&mut self) -> Column<Fixed>

Allocate a new fixed column

source

pub fn unblinded_advice_column(&mut self) -> Column<Advice>

Allocate a new unblinded advice column at FirstPhase

source

pub fn advice_column(&mut self) -> Column<Advice>

Allocate a new advice column at FirstPhase

@@ -123,14 +123,14 @@
§Panics
source

pub fn challenge_phase(&self) -> Vec<u8>

Returns phase of challenges

source

pub fn gates(&self) -> &Vec<Gate<F>>

Returns gates

source

pub fn general_column_annotations(&self) -> &HashMap<ColumnMid, String>

Returns general column annotations

-
source

pub fn advice_queries(&self) -> &Vec<(Column<Advice>, Rotation)>

Returns advice queries

-
source

pub fn instance_queries(&self) -> &Vec<(Column<Instance>, Rotation)>

Returns instance queries

-
source

pub fn fixed_queries(&self) -> &Vec<(Column<Fixed>, Rotation)>

Returns fixed queries

+
source

pub fn advice_queries(&self) -> &Vec<(Column<Advice>, Rotation)>

Returns advice queries

+
source

pub fn instance_queries(&self) -> &Vec<(Column<Instance>, Rotation)>

Returns instance queries

+
source

pub fn fixed_queries(&self) -> &Vec<(Column<Fixed>, Rotation)>

Returns fixed queries

source

pub fn permutation(&self) -> &Argument

Returns permutation argument

source

pub fn lookups(&self) -> &Vec<Argument<F>>

Returns lookup arguments

source

pub fn shuffles(&self) -> &Vec<Argument<F>>

Returns shuffle arguments

source

pub fn constants(&self) -> &Vec<Column<Fixed>>

Returns constants

-

Trait Implementations§

source§

impl<F: Clone + Field> Clone for ConstraintSystem<F>

source§

fn clone(&self) -> ConstraintSystem<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug + Field> Debug for ConstraintSystem<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> Default for ConstraintSystem<F>

source§

fn default() -> ConstraintSystem<F>

Returns the “default value” for a type. Read more
source§

impl<F: Field> From<ConstraintSystem<F>> for ConstraintSystemMid<F>

source§

fn from(cs: ConstraintSystem<F>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<F> Freeze for ConstraintSystem<F>

§

impl<F> RefUnwindSafe for ConstraintSystem<F>
where +

Trait Implementations§

source§

impl<F: Clone + Field> Clone for ConstraintSystem<F>

source§

fn clone(&self) -> ConstraintSystem<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug + Field> Debug for ConstraintSystem<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> Default for ConstraintSystem<F>

source§

fn default() -> ConstraintSystem<F>

Returns the “default value” for a type. Read more
source§

impl<F: Field> From<ConstraintSystem<F>> for ConstraintSystemMid<F>

source§

fn from(cs: ConstraintSystem<F>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<F> Freeze for ConstraintSystem<F>

§

impl<F> RefUnwindSafe for ConstraintSystem<F>
where F: RefUnwindSafe,

§

impl<F> Send for ConstraintSystem<F>

§

impl<F> Sync for ConstraintSystem<F>

§

impl<F> Unpin for ConstraintSystem<F>
where F: Unpin,

§

impl<F> UnwindSafe for ConstraintSystem<F>
where F: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/halo2_frontend/plonk/circuit/constraint_system/struct.VirtualCell.html b/halo2_frontend/plonk/circuit/constraint_system/struct.VirtualCell.html index 6b9e846346..f1a824f280 100644 --- a/halo2_frontend/plonk/circuit/constraint_system/struct.VirtualCell.html +++ b/halo2_frontend/plonk/circuit/constraint_system/struct.VirtualCell.html @@ -15,11 +15,11 @@
pub struct VirtualCell {
-    pub column: Column<Any>,
-    pub rotation: Rotation,
+    pub column: Column<Any>,
+    pub rotation: Rotation,
 }
Expand description

A “virtual cell” is a PLONK cell that has been queried at a particular relative offset within a custom gate.

-

Fields§

§column: Column<Any>§rotation: Rotation

Trait Implementations§

source§

impl Clone for VirtualCell

source§

fn clone(&self) -> VirtualCell

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for VirtualCell

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Col: Into<Column<Any>>> From<(Col, Rotation)> for VirtualCell

source§

fn from((column, rotation): (Col, Rotation)) -> Self

Converts to this type from the input type.
source§

impl From<VirtualCell> for VirtualCell

source§

fn from(c: VirtualCell) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Fields§

§column: Column<Any>§rotation: Rotation

Trait Implementations§

source§

impl Clone for VirtualCell

source§

fn clone(&self) -> VirtualCell

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for VirtualCell

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Col: Into<Column<Any>>> From<(Col, Rotation)> for VirtualCell

source§

fn from((column, rotation): (Col, Rotation)) -> Self

Converts to this type from the input type.
source§

impl From<VirtualCell> for VirtualCell

source§

fn from(c: VirtualCell) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where diff --git a/halo2_frontend/plonk/circuit/constraint_system/struct.VirtualCells.html b/halo2_frontend/plonk/circuit/constraint_system/struct.VirtualCells.html index ee3ccbc93f..6beb26c999 100644 --- a/halo2_frontend/plonk/circuit/constraint_system/struct.VirtualCells.html +++ b/halo2_frontend/plonk/circuit/constraint_system/struct.VirtualCells.html @@ -20,22 +20,22 @@

source

pub fn query_fixed( &mut self, column: Column<Fixed>, - at: Rotation + at: Rotation ) -> Expression<F>

Query a fixed column at a relative position

source

pub fn query_advice( &mut self, column: Column<Advice>, - at: Rotation + at: Rotation ) -> Expression<F>

Query an advice column at a relative position

source

pub fn query_instance( &mut self, column: Column<Instance>, - at: Rotation + at: Rotation ) -> Expression<F>

Query an instance column at a relative position

-
source

pub fn query_any<C: Into<Column<Any>>>( +

source

pub fn query_any<C: Into<Column<Any>>>( &mut self, column: C, - at: Rotation + at: Rotation ) -> Expression<F>

Query an Any column at a relative position

source

pub fn query_challenge(&mut self, challenge: Challenge) -> Expression<F>

Query a challenge

Trait Implementations§

source§

impl<'a, F: Debug + Field> Debug for VirtualCells<'a, F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a, F> Freeze for VirtualCells<'a, F>

§

impl<'a, F> RefUnwindSafe for VirtualCells<'a, F>
where diff --git a/halo2_frontend/plonk/circuit/expression/enum.Expression.html b/halo2_frontend/plonk/circuit/expression/enum.Expression.html index 4f6a547229..515f5e99c1 100644 --- a/halo2_frontend/plonk/circuit/expression/enum.Expression.html +++ b/halo2_frontend/plonk/circuit/expression/enum.Expression.html @@ -72,10 +72,10 @@
source

pub fn degree(&self) -> usize

Compute the degree of this polynomial

source

pub fn complexity(&self) -> usize

Approximate the computational complexity of this expression.

source

pub fn square(self) -> Self

Square this expression.

-

Trait Implementations§

source§

impl<F: Field> Add for Expression<F>

§

type Output = Expression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Expression<F>) -> Expression<F>

Performs the + operation. Read more
source§

impl<F: Clone> Clone for Expression<F>

source§

fn clone(&self) -> Expression<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug> Debug for Expression<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> From<Expression<F>> for Constraint<F>

source§

fn from(poly: Expression<F>) -> Self

Converts to this type from the input type.
source§

impl<F> From<Expression<F>> for ExpressionMid<F>

source§

fn from(val: Expression<F>) -> Self

Converts to this type from the input type.
source§

impl<F: Field> From<Expression<F>> for Vec<Constraint<F>>

source§

fn from(poly: Expression<F>) -> Self

Converts to this type from the input type.
source§

impl<F: Field> Mul<F> for Expression<F>

§

type Output = Expression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Expression<F>

Performs the * operation. Read more
source§

impl<F: Field> Mul for Expression<F>

§

type Output = Expression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Expression<F>) -> Expression<F>

Performs the * operation. Read more
source§

impl<F: Field> Neg for Expression<F>

§

type Output = Expression<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<F: PartialEq> PartialEq for Expression<F>

source§

fn eq(&self, other: &Expression<F>) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl<F: Field> Add for Expression<F>

§

type Output = Expression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Expression<F>) -> Expression<F>

Performs the + operation. Read more
source§

impl<F: Clone> Clone for Expression<F>

source§

fn clone(&self) -> Expression<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug> Debug for Expression<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> From<Expression<F>> for Constraint<F>

source§

fn from(poly: Expression<F>) -> Self

Converts to this type from the input type.
source§

impl<F> From<Expression<F>> for ExpressionMid<F>

source§

fn from(val: Expression<F>) -> Self

Converts to this type from the input type.
source§

impl<F: Field> From<Expression<F>> for Vec<Constraint<F>>

source§

fn from(poly: Expression<F>) -> Self

Converts to this type from the input type.
source§

impl<F: Field> Mul<F> for Expression<F>

§

type Output = Expression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Expression<F>

Performs the * operation. Read more
source§

impl<F: Field> Mul for Expression<F>

§

type Output = Expression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Expression<F>) -> Expression<F>

Performs the * operation. Read more
source§

impl<F: Field> Neg for Expression<F>

§

type Output = Expression<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<F: PartialEq> PartialEq for Expression<F>

source§

fn eq(&self, other: &Expression<F>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<F: Field> Product for Expression<F>

source§

fn product<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by -multiplying the items.
source§

impl<F: Field> Sub for Expression<F>

§

type Output = Expression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Expression<F>) -> Expression<F>

Performs the - operation. Read more
source§

impl<F: Field> Sum for Expression<F>

source§

fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by +multiplying the items.
source§

impl<F: Field> Sub for Expression<F>

§

type Output = Expression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Expression<F>) -> Expression<F>

Performs the - operation. Read more
source§

impl<F: Field> Sum for Expression<F>

source§

fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by “summing up” the items.
source§

impl<F: Eq> Eq for Expression<F>

source§

impl<F> StructuralPartialEq for Expression<F>

Auto Trait Implementations§

§

impl<F> Freeze for Expression<F>
where F: Freeze,

§

impl<F> RefUnwindSafe for Expression<F>
where F: RefUnwindSafe,

§

impl<F> Send for Expression<F>
where diff --git a/halo2_frontend/plonk/circuit/expression/struct.AdviceQuery.html b/halo2_frontend/plonk/circuit/expression/struct.AdviceQuery.html index 9b52df0e5b..8aba72e921 100644 --- a/halo2_frontend/plonk/circuit/expression/struct.AdviceQuery.html +++ b/halo2_frontend/plonk/circuit/expression/struct.AdviceQuery.html @@ -17,13 +17,13 @@

Struct halo2_frontend::plonk::circuit::expression::AdviceQuery

source ·
pub struct AdviceQuery {
     pub index: Option<usize>,
     pub column_index: usize,
-    pub rotation: Rotation,
+    pub rotation: Rotation,
 }
Expand description

Query of advice column at a certain relative location

Fields§

§index: Option<usize>

Query index

§column_index: usize

Column index

-
§rotation: Rotation

Rotation of this query

+
§rotation: Rotation

Rotation of this query

Implementations§

source§

impl AdviceQuery

source

pub fn column_index(&self) -> usize

Column index

-
source

pub fn rotation(&self) -> Rotation

Rotation of this query

+
source

pub fn rotation(&self) -> Rotation

Rotation of this query

Trait Implementations§

source§

impl Clone for AdviceQuery

source§

fn clone(&self) -> AdviceQuery

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AdviceQuery

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for AdviceQuery

source§

fn eq(&self, other: &AdviceQuery) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for AdviceQuery

source§

impl Eq for AdviceQuery

source§

impl StructuralPartialEq for AdviceQuery

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/halo2_frontend/plonk/circuit/expression/struct.Challenge.html b/halo2_frontend/plonk/circuit/expression/struct.Challenge.html index 448c3912f5..fc8111fb2d 100644 --- a/halo2_frontend/plonk/circuit/expression/struct.Challenge.html +++ b/halo2_frontend/plonk/circuit/expression/struct.Challenge.html @@ -21,7 +21,7 @@

Fields§

§index: usize

Implementations§

source§

impl Challenge

source

pub fn index(&self) -> usize

Index of this challenge.

source

pub fn phase(&self) -> u8

Phase of this challenge.

source

pub fn expr<F: Field>(&self) -> Expression<F>

Return Expression

-

Trait Implementations§

source§

impl Clone for Challenge

source§

fn clone(&self) -> Challenge

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Challenge

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Challenge> for ChallengeMid

source§

fn from(val: Challenge) -> Self

Converts to this type from the input type.
source§

impl From<ChallengeMid> for Challenge

source§

fn from(c: ChallengeMid) -> Self

Converts to this type from the input type.
source§

impl Hash for Challenge

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

source§

impl Clone for Challenge

source§

fn clone(&self) -> Challenge

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Challenge

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Challenge> for ChallengeMid

source§

fn from(val: Challenge) -> Self

Converts to this type from the input type.
source§

impl From<ChallengeMid> for Challenge

source§

fn from(c: ChallengeMid) -> Self

Converts to this type from the input type.
source§

impl Hash for Challenge

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for Challenge

source§

fn eq(&self, other: &Challenge) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always diff --git a/halo2_frontend/plonk/circuit/expression/struct.Column.html b/halo2_frontend/plonk/circuit/expression/struct.Column.html index a522622d14..8b9f8f7b06 100644 --- a/halo2_frontend/plonk/circuit/expression/struct.Column.html +++ b/halo2_frontend/plonk/circuit/expression/struct.Column.html @@ -20,12 +20,12 @@ }
Expand description

A column with an index and type

Fields§

§index: usize§column_type: C

Implementations§

source§

impl<C: ColumnType> Column<C>

source

pub fn new(index: usize, column_type: C) -> Self

source

pub fn index(&self) -> usize

Index of this column.

source

pub fn column_type(&self) -> &C

Type of this column.

-
source

pub fn query_cell<F: Field>(&self, at: Rotation) -> Expression<F>

Return expression from column at a relative position

+
source

pub fn query_cell<F: Field>(&self, at: Rotation) -> Expression<F>

Return expression from column at a relative position

source

pub fn cur<F: Field>(&self) -> Expression<F>

Return expression from column at the current row

source

pub fn next<F: Field>(&self) -> Expression<F>

Return expression from column at the next row

source

pub fn prev<F: Field>(&self) -> Expression<F>

Return expression from column at the previous row

source

pub fn rot<F: Field>(&self, rotation: i32) -> Expression<F>

Return expression from column at the specified rotation

-

Trait Implementations§

source§

impl<C: Clone + ColumnType> Clone for Column<C>

source§

fn clone(&self) -> Column<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<C: Debug + ColumnType> Debug for Column<C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Column<Advice>> for Column<Any>

source§

fn from(advice: Column<Advice>) -> Column<Any>

Converts to this type from the input type.
source§

impl From<Column<Any>> for ColumnMid

source§

fn from(val: Column<Any>) -> Self

Converts to this type from the input type.
source§

impl From<Column<Any>> for RegionColumn

source§

fn from(column: Column<Any>) -> RegionColumn

Converts to this type from the input type.
source§

impl From<Column<Fixed>> for Column<Any>

source§

fn from(advice: Column<Fixed>) -> Column<Any>

Converts to this type from the input type.
source§

impl From<Column<Instance>> for Column<Any>

source§

fn from(advice: Column<Instance>) -> Column<Any>

Converts to this type from the input type.
source§

impl From<ColumnMid> for Column<Any>

source§

fn from(column: ColumnMid) -> Column<Any>

Converts to this type from the input type.
source§

impl<C: Hash + ColumnType> Hash for Column<C>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

source§

impl<C: Clone + ColumnType> Clone for Column<C>

source§

fn clone(&self) -> Column<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<C: Debug + ColumnType> Debug for Column<C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Column<Advice>> for Column<Any>

source§

fn from(advice: Column<Advice>) -> Column<Any>

Converts to this type from the input type.
source§

impl From<Column<Any>> for ColumnMid

source§

fn from(val: Column<Any>) -> Self

Converts to this type from the input type.
source§

impl From<Column<Any>> for RegionColumn

source§

fn from(column: Column<Any>) -> RegionColumn

Converts to this type from the input type.
source§

impl From<Column<Fixed>> for Column<Any>

source§

fn from(advice: Column<Fixed>) -> Column<Any>

Converts to this type from the input type.
source§

impl From<Column<Instance>> for Column<Any>

source§

fn from(advice: Column<Instance>) -> Column<Any>

Converts to this type from the input type.
source§

impl From<ColumnMid> for Column<Any>

source§

fn from(column: ColumnMid) -> Column<Any>

Converts to this type from the input type.
source§

impl<C: Hash + ColumnType> Hash for Column<C>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<C: ColumnType> Ord for Column<C>

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where @@ -34,7 +34,7 @@ by ==.

1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<C: ColumnType> PartialOrd for Column<C>

source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl TryFrom<Column<Any>> for Column<Advice>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(any: Column<Any>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<Column<Any>> for Column<Fixed>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(any: Column<Any>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<Column<Any>> for Column<Instance>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(any: Column<Any>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<C: Copy + ColumnType> Copy for Column<C>

source§

impl<C: Eq + ColumnType> Eq for Column<C>

source§

impl<C: ColumnType> StructuralPartialEq for Column<C>

Auto Trait Implementations§

§

impl<C> Freeze for Column<C>
where +operator. Read more

source§

impl TryFrom<Column<Any>> for Column<Advice>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(any: Column<Any>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<Column<Any>> for Column<Fixed>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(any: Column<Any>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<Column<Any>> for Column<Instance>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(any: Column<Any>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<C: Copy + ColumnType> Copy for Column<C>

source§

impl<C: Eq + ColumnType> Eq for Column<C>

source§

impl<C: ColumnType> StructuralPartialEq for Column<C>

Auto Trait Implementations§

§

impl<C> Freeze for Column<C>
where C: Freeze,

§

impl<C> RefUnwindSafe for Column<C>
where C: RefUnwindSafe,

§

impl<C> Send for Column<C>
where C: Send,

§

impl<C> Sync for Column<C>
where diff --git a/halo2_frontend/plonk/circuit/expression/struct.FixedQuery.html b/halo2_frontend/plonk/circuit/expression/struct.FixedQuery.html index ff6000abec..33f8b568ec 100644 --- a/halo2_frontend/plonk/circuit/expression/struct.FixedQuery.html +++ b/halo2_frontend/plonk/circuit/expression/struct.FixedQuery.html @@ -17,13 +17,13 @@

Struct halo2_frontend::plonk::circuit::expression::FixedQuery

source ·
pub struct FixedQuery {
     pub index: Option<usize>,
     pub column_index: usize,
-    pub rotation: Rotation,
+    pub rotation: Rotation,
 }
Expand description

Query of fixed column at a certain relative location

Fields§

§index: Option<usize>

Query index

§column_index: usize

Column index

-
§rotation: Rotation

Rotation of this query

+
§rotation: Rotation

Rotation of this query

Implementations§

source§

impl FixedQuery

source

pub fn column_index(&self) -> usize

Column index

-
source

pub fn rotation(&self) -> Rotation

Rotation of this query

+
source

pub fn rotation(&self) -> Rotation

Rotation of this query

Trait Implementations§

source§

impl Clone for FixedQuery

source§

fn clone(&self) -> FixedQuery

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for FixedQuery

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for FixedQuery

source§

fn eq(&self, other: &FixedQuery) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for FixedQuery

source§

impl Eq for FixedQuery

source§

impl StructuralPartialEq for FixedQuery

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/halo2_frontend/plonk/circuit/expression/struct.InstanceQuery.html b/halo2_frontend/plonk/circuit/expression/struct.InstanceQuery.html index 27c56ee0a8..51ec1ab573 100644 --- a/halo2_frontend/plonk/circuit/expression/struct.InstanceQuery.html +++ b/halo2_frontend/plonk/circuit/expression/struct.InstanceQuery.html @@ -17,13 +17,13 @@

Struct halo2_frontend::plonk::circuit::expression::InstanceQuery

source ·
pub struct InstanceQuery {
     pub index: Option<usize>,
     pub column_index: usize,
-    pub rotation: Rotation,
+    pub rotation: Rotation,
 }
Expand description

Query of instance column at a certain relative location

Fields§

§index: Option<usize>

Query index

§column_index: usize

Column index

-
§rotation: Rotation

Rotation of this query

+
§rotation: Rotation

Rotation of this query

Implementations§

source§

impl InstanceQuery

source

pub fn column_index(&self) -> usize

Column index

-
source

pub fn rotation(&self) -> Rotation

Rotation of this query

+
source

pub fn rotation(&self) -> Rotation

Rotation of this query

Trait Implementations§

source§

impl Clone for InstanceQuery

source§

fn clone(&self) -> InstanceQuery

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for InstanceQuery

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for InstanceQuery

source§

fn eq(&self, other: &InstanceQuery) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for InstanceQuery

source§

impl Eq for InstanceQuery

source§

impl StructuralPartialEq for InstanceQuery

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/halo2_frontend/plonk/circuit/struct.Advice.html b/halo2_frontend/plonk/circuit/struct.Advice.html index e0649c5bca..98b265e2ae 100644 --- a/halo2_frontend/plonk/circuit/struct.Advice.html +++ b/halo2_frontend/plonk/circuit/struct.Advice.html @@ -15,7 +15,7 @@

Struct halo2_frontend::plonk::circuit::Advice

source ·
pub struct Advice;
Expand description

An advice column

-

Trait Implementations§

source§

impl Clone for Advice

source§

fn clone(&self) -> Advice

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ColumnType for Advice

source§

fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

Return expression from cell
source§

impl Debug for Advice

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Advice> for Any

source§

fn from(_: Advice) -> Any

Converts to this type from the input type.
source§

impl Hash for Advice

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

source§

impl Clone for Advice

source§

fn clone(&self) -> Advice

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ColumnType for Advice

source§

fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

Return expression from cell
source§

impl Debug for Advice

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Advice> for Any

source§

fn from(_: Advice) -> Any

Converts to this type from the input type.
source§

impl Hash for Advice

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for Advice

source§

fn eq(&self, other: &Advice) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always diff --git a/halo2_frontend/plonk/circuit/struct.Fixed.html b/halo2_frontend/plonk/circuit/struct.Fixed.html index 57620b1478..0b5f9bc886 100644 --- a/halo2_frontend/plonk/circuit/struct.Fixed.html +++ b/halo2_frontend/plonk/circuit/struct.Fixed.html @@ -15,7 +15,7 @@

Struct halo2_frontend::plonk::circuit::Fixed

source ·
pub struct Fixed;
Expand description

A fixed column

-

Trait Implementations§

source§

impl Clone for Fixed

source§

fn clone(&self) -> Fixed

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ColumnType for Fixed

source§

fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

Return expression from cell
source§

impl Debug for Fixed

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Fixed> for Any

source§

fn from(_: Fixed) -> Any

Converts to this type from the input type.
source§

impl Hash for Fixed

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

source§

impl Clone for Fixed

source§

fn clone(&self) -> Fixed

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ColumnType for Fixed

source§

fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

Return expression from cell
source§

impl Debug for Fixed

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Fixed> for Any

source§

fn from(_: Fixed) -> Any

Converts to this type from the input type.
source§

impl Hash for Fixed

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for Fixed

source§

fn eq(&self, other: &Fixed) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always diff --git a/halo2_frontend/plonk/circuit/struct.Instance.html b/halo2_frontend/plonk/circuit/struct.Instance.html index 1e0ce44ede..a43e0396f4 100644 --- a/halo2_frontend/plonk/circuit/struct.Instance.html +++ b/halo2_frontend/plonk/circuit/struct.Instance.html @@ -15,7 +15,7 @@

Struct halo2_frontend::plonk::circuit::Instance

source ·
pub struct Instance;
Expand description

An instance column

-

Trait Implementations§

source§

impl Clone for Instance

source§

fn clone(&self) -> Instance

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ColumnType for Instance

source§

fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

Return expression from cell
source§

impl Debug for Instance

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Instance> for Any

source§

fn from(_: Instance) -> Any

Converts to this type from the input type.
source§

impl Hash for Instance

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

source§

impl Clone for Instance

source§

fn clone(&self) -> Instance

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ColumnType for Instance

source§

fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

Return expression from cell
source§

impl Debug for Instance

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Instance> for Any

source§

fn from(_: Instance) -> Any

Converts to this type from the input type.
source§

impl Hash for Instance

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for Instance

source§

fn eq(&self, other: &Instance) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always diff --git a/halo2_frontend/plonk/circuit/trait.Assignment.html b/halo2_frontend/plonk/circuit/trait.Assignment.html index 82cbdefbec..97e8d25e60 100644 --- a/halo2_frontend/plonk/circuit/trait.Assignment.html +++ b/halo2_frontend/plonk/circuit/trait.Assignment.html @@ -19,7 +19,7 @@ fn enter_region<NR, N>(&mut self, name_fn: N) where NR: Into<String>, N: FnOnce() -> NR; - fn annotate_column<A, AR>(&mut self, annotation: A, column: Column<Any>) + fn annotate_column<A, AR>(&mut self, annotation: A, column: Column<Any>) where A: FnOnce() -> AR, AR: Into<String>; fn exit_region(&mut self); @@ -60,9 +60,9 @@ AR: Into<String>; fn copy( &mut self, - left_column: Column<Any>, + left_column: Column<Any>, left_row: usize, - right_column: Column<Any>, + right_column: Column<Any>, right_row: usize ) -> Result<(), Error>; fn fill_from_row( @@ -83,7 +83,7 @@ N: FnOnce() -> NR,

Creates a new region and enters into it.

Panics if we are currently in a region (if exit_region was not called).

Not intended for downstream consumption; use Layouter::assign_region instead.

-
source

fn annotate_column<A, AR>(&mut self, annotation: A, column: Column<Any>)
where +

source

fn annotate_column<A, AR>(&mut self, annotation: A, column: Column<Any>)
where A: FnOnce() -> AR, AR: Into<String>,

Allows the developer to include an annotation for an specific column within a Region.

This is usually useful for debugging circuit failures.

@@ -128,9 +128,9 @@ AR: Into<String>,

Assign a fixed value

source

fn copy( &mut self, - left_column: Column<Any>, + left_column: Column<Any>, left_row: usize, - right_column: Column<Any>, + right_column: Column<Any>, right_row: usize ) -> Result<(), Error>

Assign two cells to have the same value

source

fn fill_from_row( diff --git a/halo2_frontend/plonk/circuit/trait.ColumnType.html b/halo2_frontend/plonk/circuit/trait.ColumnType.html index bca238bc1d..275da59f65 100644 --- a/halo2_frontend/plonk/circuit/trait.ColumnType.html +++ b/halo2_frontend/plonk/circuit/trait.ColumnType.html @@ -14,9 +14,9 @@ }); -

Trait halo2_frontend::plonk::circuit::ColumnType

source ·
pub trait ColumnType: 'static + Sized + Copy + Debug + PartialEq + Eq + Into<Any> {
+

Trait halo2_frontend::plonk::circuit::ColumnType

source ·
pub trait ColumnType: 'static + Sized + Copy + Debug + PartialEq + Eq + Into<Any> {
     // Required method
-    fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>;
+    fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>;
 }
Expand description

A column type

-

Required Methods§

source

fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

Return expression from cell

-

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl ColumnType for Any

source§

fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

Implementors§

\ No newline at end of file +

Required Methods§

source

fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

Return expression from cell

+

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl ColumnType for Any

source§

fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

Implementors§

\ No newline at end of file diff --git a/halo2_frontend/plonk/error/enum.AssignmentError.html b/halo2_frontend/plonk/error/enum.AssignmentError.html index 671114f597..f044d927b6 100644 --- a/halo2_frontend/plonk/error/enum.AssignmentError.html +++ b/halo2_frontend/plonk/error/enum.AssignmentError.html @@ -17,14 +17,14 @@

Enum halo2_frontend::plonk::error::AssignmentError

source ·
pub enum AssignmentError {
     AssignAdvice {
         desc: String,
-        col: Column<Any>,
+        col: Column<Any>,
         row: usize,
         usable_rows: (usize, usize),
         k: u32,
     },
     AssignFixed {
         desc: String,
-        col: Column<Any>,
+        col: Column<Any>,
         row: usize,
         usable_rows: (usize, usize),
         k: u32,
@@ -37,27 +37,27 @@
         k: u32,
     },
     QueryInstance {
-        col: Column<Any>,
+        col: Column<Any>,
         row: usize,
         usable_rows: (usize, usize),
         k: u32,
     },
     Copy {
-        left_col: Column<Any>,
+        left_col: Column<Any>,
         left_row: usize,
-        right_col: Column<Any>,
+        right_col: Column<Any>,
         right_row: usize,
         usable_rows: (usize, usize),
         k: u32,
     },
     FillFromRow {
-        col: Column<Any>,
+        col: Column<Any>,
         from_row: usize,
         usable_rows: (usize, usize),
         k: u32,
     },
 }
Expand description

This is an error that could occur during assign_advice, assign_fixed, copy, etc.

-

Variants§

§

AssignAdvice

Fields

§desc: String
§col: Column<Any>
§row: usize
§usable_rows: (usize, usize)
§

AssignFixed

Fields

§desc: String
§col: Column<Any>
§row: usize
§usable_rows: (usize, usize)
§

EnableSelector

Fields

§desc: String
§selector: Selector
§row: usize
§usable_rows: (usize, usize)
§

QueryInstance

Fields

§col: Column<Any>
§row: usize
§usable_rows: (usize, usize)
§

Copy

Fields

§left_col: Column<Any>
§left_row: usize
§right_col: Column<Any>
§right_row: usize
§usable_rows: (usize, usize)
§

FillFromRow

Fields

§col: Column<Any>
§from_row: usize
§usable_rows: (usize, usize)

Trait Implementations§

source§

impl Debug for AssignmentError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for AssignmentError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Variants§

§

AssignAdvice

Fields

§desc: String
§row: usize
§usable_rows: (usize, usize)
§

AssignFixed

Fields

§desc: String
§row: usize
§usable_rows: (usize, usize)
§

EnableSelector

Fields

§desc: String
§selector: Selector
§row: usize
§usable_rows: (usize, usize)
§

QueryInstance

Fields

§row: usize
§usable_rows: (usize, usize)
§

Copy

Fields

§left_col: Column<Any>
§left_row: usize
§right_col: Column<Any>
§right_row: usize
§usable_rows: (usize, usize)
§

FillFromRow

Fields

§from_row: usize
§usable_rows: (usize, usize)

Trait Implementations§

source§

impl Debug for AssignmentError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for AssignmentError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where diff --git a/halo2_frontend/plonk/error/enum.Error.html b/halo2_frontend/plonk/error/enum.Error.html index 9633009359..953ddf0e3f 100644 --- a/halo2_frontend/plonk/error/enum.Error.html +++ b/halo2_frontend/plonk/error/enum.Error.html @@ -21,7 +21,7 @@ current_k: u32, }, NotEnoughColumnsForConstants, - ColumnNotInPermutation(Column<Any>), + ColumnNotInPermutation(Column<Any>), TableError(TableError), AssignmentError(AssignmentError), Other(String), @@ -37,13 +37,13 @@

Fields

§current_k: u32

The current value of k being used.

§

NotEnoughColumnsForConstants

Circuit synthesis requires global constants, but circuit configuration did not call ConstraintSystem::enable_constant on fixed columns with sufficient space.

-
§

ColumnNotInPermutation(Column<Any>)

The instance sets up a copy constraint involving a column that has not been +

§

ColumnNotInPermutation(Column<Any>)

The instance sets up a copy constraint involving a column that has not been included in the permutation.

§

TableError(TableError)

An error relating to a lookup table.

§

AssignmentError(AssignmentError)

An error relating to an Assignment.

§

Other(String)

Generic error not covered by previous cases

Implementations§

source§

impl Error

source

pub fn not_enough_rows_available(current_k: u32) -> Self

Constructs an Error::NotEnoughRowsAvailable.

-

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Error

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Error

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where diff --git a/halo2_frontend/plonk/permutation/struct.Argument.html b/halo2_frontend/plonk/permutation/struct.Argument.html index 6dd9431e50..af7eee933d 100644 --- a/halo2_frontend/plonk/permutation/struct.Argument.html +++ b/halo2_frontend/plonk/permutation/struct.Argument.html @@ -15,7 +15,7 @@

Struct halo2_frontend::plonk::permutation::Argument

source ·
pub struct Argument { /* private fields */ }
Expand description

A permutation argument.

-

Implementations§

source§

impl Argument

source

pub fn get_columns(&self) -> Vec<Column<Any>>

Returns columns that participate on the permutation argument.

+

Implementations§

source§

impl Argument

source

pub fn get_columns(&self) -> Vec<Column<Any>>

Returns columns that participate on the permutation argument.

Trait Implementations§

source§

impl Clone for Argument

source§

fn clone(&self) -> Argument

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Argument

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Argument

source§

fn default() -> Argument

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/halo2_middleware/circuit/enum.VarMid.html b/halo2_middleware/circuit/enum.VarMid.html index 51f360b1e8..54a44b6f12 100644 --- a/halo2_middleware/circuit/enum.VarMid.html +++ b/halo2_middleware/circuit/enum.VarMid.html @@ -19,7 +19,7 @@ Challenge(ChallengeMid), }

Variants§

§

Query(QueryMid)

This is a generic column query

§

Challenge(ChallengeMid)

This is a challenge

-

Trait Implementations§

source§

impl Clone for VarMid

source§

fn clone(&self) -> VarMid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for VarMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for VarMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for VarMid

source§

fn eq(&self, other: &VarMid) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl Clone for VarMid

source§

fn clone(&self) -> VarMid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for VarMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for VarMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for VarMid

source§

fn eq(&self, other: &VarMid) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Variable for VarMid

source§

fn degree(&self) -> usize

Degree that an expression would have if it was only this variable.
source§

fn complexity(&self) -> usize

Approximate the computational complexity an expression would have if it was only this variable.
source§

fn write_identifier<W: Write>(&self, writer: &mut W) -> Result<()>

Write an identifier of the variable. If two variables have the same identifier, they must diff --git a/halo2_middleware/circuit/struct.ColumnMid.html b/halo2_middleware/circuit/struct.ColumnMid.html index e30f50cabe..eec00ba03e 100644 --- a/halo2_middleware/circuit/struct.ColumnMid.html +++ b/halo2_middleware/circuit/struct.ColumnMid.html @@ -20,7 +20,7 @@ }
Expand description

A column with an index and type

Fields§

§column_type: Any

The type of the column.

§index: usize

The index of the column.

-

Implementations§

source§

impl ColumnMid

source

pub fn new(column_type: Any, index: usize) -> Self

Trait Implementations§

source§

impl Clone for ColumnMid

source§

fn clone(&self) -> ColumnMid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ColumnMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for ColumnMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for ColumnMid

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Implementations§

source§

impl ColumnMid

source

pub fn new(column_type: Any, index: usize) -> Self

Trait Implementations§

source§

impl Clone for ColumnMid

source§

fn clone(&self) -> ColumnMid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ColumnMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for ColumnMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for ColumnMid

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for ColumnMid

source§

fn cmp(&self, other: &ColumnMid) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where diff --git a/halo2_middleware/expression/enum.Expression.html b/halo2_middleware/expression/enum.Expression.html index b5ccc6ae31..cac4b1fa6c 100644 --- a/halo2_middleware/expression/enum.Expression.html +++ b/halo2_middleware/expression/enum.Expression.html @@ -14,7 +14,7 @@ }); -

Evaluate the polynomial using the provided closures to perform the operations.

-
source

pub fn write_identifier<W: Write>(&self, writer: &mut W) -> Result<()>

source

pub fn identifier(&self) -> String

Identifier for this expression. Expressions with identical identifiers +

source

pub fn identifier(&self) -> String

Identifier for this expression. Expressions with identical identifiers do the same calculation (but the expressions don’t need to be exactly equal in how they are composed e.g. 1 + 2 and 2 + 1 can have the same identifier).

source

pub fn degree(&self) -> usize

Compute the degree of this polynomial

source

pub fn complexity(&self) -> usize

Approximate the computational complexity of this expression.

-

Trait Implementations§

source§

impl<F: Field, V: Variable> Add for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Expression<F, V>) -> Expression<F, V>

Performs the + operation. Read more
source§

impl<F: Clone, V: Clone + Variable> Clone for Expression<F, V>

source§

fn clone(&self) -> Expression<F, V>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug, V: Debug + Variable> Debug for Expression<F, V>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field, V: Variable> Mul<F> for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Expression<F, V>

Performs the * operation. Read more
source§

impl<F: Field, V: Variable> Mul for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Expression<F, V>) -> Expression<F, V>

Performs the * operation. Read more
source§

impl<F: Field, V: Variable> Neg for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<F: PartialEq, V: PartialEq + Variable> PartialEq for Expression<F, V>

source§

fn eq(&self, other: &Expression<F, V>) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl<F: Field, V: Variable> Add for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Expression<F, V>) -> Expression<F, V>

Performs the + operation. Read more
source§

impl<F: Clone, V: Clone + Variable> Clone for Expression<F, V>

source§

fn clone(&self) -> Expression<F, V>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug, V: Debug + Variable> Debug for Expression<F, V>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field, V: Variable> Mul<F> for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Expression<F, V>

Performs the * operation. Read more
source§

impl<F: Field, V: Variable> Mul for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Expression<F, V>) -> Expression<F, V>

Performs the * operation. Read more
source§

impl<F: Field, V: Variable> Neg for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<F: PartialEq, V: PartialEq + Variable> PartialEq for Expression<F, V>

source§

fn eq(&self, other: &Expression<F, V>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<F: Field, V: Variable> Product for Expression<F, V>

source§

fn product<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by -multiplying the items.
source§

impl<F: Field, V: Variable> Sub for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Expression<F, V>) -> Expression<F, V>

Performs the - operation. Read more
source§

impl<F: Field, V: Variable> Sum for Expression<F, V>

source§

fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by +multiplying the items.
source§

impl<F: Field, V: Variable> Sub for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Expression<F, V>) -> Expression<F, V>

Performs the - operation. Read more
source§

impl<F: Field, V: Variable> Sum for Expression<F, V>

source§

fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by “summing up” the items.
source§

impl<F: Eq, V: Eq + Variable> Eq for Expression<F, V>

source§

impl<F, V: Variable> StructuralPartialEq for Expression<F, V>

Auto Trait Implementations§

§

impl<F, V> Freeze for Expression<F, V>
where F: Freeze, V: Freeze,

§

impl<F, V> RefUnwindSafe for Expression<F, V>
where diff --git a/halo2_middleware/expression/index.html b/halo2_middleware/expression/index.html index 37f9ea1fb8..4067f66351 100644 --- a/halo2_middleware/expression/index.html +++ b/halo2_middleware/expression/index.html @@ -14,4 +14,4 @@ }); -

Module halo2_middleware::expression

source ·

Enums§

  • Low-degree expression representing an identity that must hold over the committed columns.

Traits§

\ No newline at end of file +

Module halo2_middleware::expression

source ·

Enums§

  • Low-degree expression representing an identity that must hold over the committed columns.

Traits§

\ No newline at end of file diff --git a/halo2_proofs/arithmetic/trait.CurveAffine.html b/halo2_proofs/arithmetic/trait.CurveAffine.html index 187ab5e7ad..a7c922deca 100644 --- a/halo2_proofs/arithmetic/trait.CurveAffine.html +++ b/halo2_proofs/arithmetic/trait.CurveAffine.html @@ -48,10 +48,10 @@ ) -> CtOption<G1Affine>

§

fn a() -> <G1Affine as CurveAffine>::Base

§

fn b() -> <G1Affine as CurveAffine>::Base

§

impl CurveAffine for G1Affine

§

type ScalarExt = Fr

§

type Base = Fq

§

type CurveExt = G1

§

fn is_on_curve(&self) -> Choice

§

fn coordinates(&self) -> CtOption<Coordinates<G1Affine>>

§

fn from_xy( x: <G1Affine as CurveAffine>::Base, y: <G1Affine as CurveAffine>::Base -) -> CtOption<G1Affine>

§

fn a() -> <G1Affine as CurveAffine>::Base

§

fn b() -> <G1Affine as CurveAffine>::Base

§

impl CurveAffine for G1Affine

§

type ScalarExt = Fq

§

type Base = Fp

§

type CurveExt = G1

§

fn is_on_curve(&self) -> Choice

§

fn coordinates(&self) -> CtOption<Coordinates<G1Affine>>

§

fn from_xy( +) -> CtOption<G1Affine>

§

fn a() -> <G1Affine as CurveAffine>::Base

§

fn b() -> <G1Affine as CurveAffine>::Base

§

impl CurveAffine for G1Affine

§

type ScalarExt = Fr

§

type Base = Fq

§

type CurveExt = G1

§

fn is_on_curve(&self) -> Choice

§

fn coordinates(&self) -> CtOption<Coordinates<G1Affine>>

§

fn from_xy( x: <G1Affine as CurveAffine>::Base, y: <G1Affine as CurveAffine>::Base -) -> CtOption<G1Affine>

§

fn a() -> <G1Affine as CurveAffine>::Base

§

fn b() -> <G1Affine as CurveAffine>::Base

§

impl CurveAffine for G1Affine

§

type ScalarExt = Fr

§

type Base = Fq

§

type CurveExt = G1

§

fn is_on_curve(&self) -> Choice

§

fn coordinates(&self) -> CtOption<Coordinates<G1Affine>>

§

fn from_xy( +) -> CtOption<G1Affine>

§

fn a() -> <G1Affine as CurveAffine>::Base

§

fn b() -> <G1Affine as CurveAffine>::Base

§

impl CurveAffine for G1Affine

§

type ScalarExt = Fq

§

type Base = Fp

§

type CurveExt = G1

§

fn is_on_curve(&self) -> Choice

§

fn coordinates(&self) -> CtOption<Coordinates<G1Affine>>

§

fn from_xy( x: <G1Affine as CurveAffine>::Base, y: <G1Affine as CurveAffine>::Base ) -> CtOption<G1Affine>

§

fn a() -> <G1Affine as CurveAffine>::Base

§

fn b() -> <G1Affine as CurveAffine>::Base

§

impl CurveAffine for G2Affine

§

type ScalarExt = Fr

§

type Base = QuadExtField<Fq>

§

type CurveExt = G2

§

fn is_on_curve(&self) -> Choice

§

fn coordinates(&self) -> CtOption<Coordinates<G2Affine>>

§

fn from_xy( diff --git a/halo2_proofs/arithmetic/trait.CurveExt.html b/halo2_proofs/arithmetic/trait.CurveExt.html index 0f471966db..3c62739fde 100644 --- a/halo2_proofs/arithmetic/trait.CurveExt.html +++ b/halo2_proofs/arithmetic/trait.CurveExt.html @@ -70,19 +70,19 @@

§Example
x: <Eris as CurveExt>::Base, y: <Eris as CurveExt>::Base, z: <Eris as CurveExt>::Base -) -> CtOption<Eris>

§

impl CurveExt for G1

§

type ScalarExt = Fq

§

type Base = Fp

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "pluto"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fp, Fp, Fp)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( +) -> CtOption<Eris>

§

impl CurveExt for G1

§

type ScalarExt = Fr

§

type Base = Fq

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "bls12381_g1"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fq, Fq, Fq)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( x: <G1 as CurveExt>::Base, y: <G1 as CurveExt>::Base, z: <G1 as CurveExt>::Base -) -> CtOption<G1>

§

impl CurveExt for G1

§

type ScalarExt = Fr

§

type Base = Fq

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "bls12381_g1"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fq, Fq, Fq)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( +) -> CtOption<G1>

§

impl CurveExt for G1

§

type ScalarExt = Fr

§

type Base = Fq

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "bn256_g1"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fq, Fq, Fq)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( x: <G1 as CurveExt>::Base, y: <G1 as CurveExt>::Base, z: <G1 as CurveExt>::Base -) -> CtOption<G1>

§

impl CurveExt for G1

§

type ScalarExt = Fr

§

type Base = Fq

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "bn256_g1"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fq, Fq, Fq)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( +) -> CtOption<G1>

§

impl CurveExt for G1

§

type ScalarExt = Fq

§

type Base = Fr

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "grumpkin_g1"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fr, Fr, Fr)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( x: <G1 as CurveExt>::Base, y: <G1 as CurveExt>::Base, z: <G1 as CurveExt>::Base -) -> CtOption<G1>

§

impl CurveExt for G1

§

type ScalarExt = Fq

§

type Base = Fr

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "grumpkin_g1"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fr, Fr, Fr)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( +) -> CtOption<G1>

§

impl CurveExt for G1

§

type ScalarExt = Fq

§

type Base = Fp

§

type AffineExt = G1Affine

§

const CURVE_ID: &'static str = "pluto"

§

fn endo(&self) -> G1

§

fn jacobian_coordinates(&self) -> (Fp, Fp, Fp)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G1 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G1 as CurveExt>::Base

§

fn a() -> <G1 as CurveExt>::Base

§

fn new_jacobian( x: <G1 as CurveExt>::Base, y: <G1 as CurveExt>::Base, z: <G1 as CurveExt>::Base @@ -92,15 +92,15 @@

§Example
x: <G2 as CurveExt>::Base, y: <G2 as CurveExt>::Base, z: <G2 as CurveExt>::Base -) -> CtOption<G2>

§

impl CurveExt for G2

§

type ScalarExt = Fr

§

type Base = QuadExtField<Fq>

§

type AffineExt = G2Affine

§

const CURVE_ID: &'static str = "bls12381_g2"

§

fn endo(&self) -> G2

§

fn jacobian_coordinates( +) -> CtOption<G2>

§

impl CurveExt for G2

§

type ScalarExt = Fq

§

type Base = QuadExtField<Fp>

§

type AffineExt = G2Affine

§

const CURVE_ID: &'static str = "triton"

§

fn endo(&self) -> G2

§

fn jacobian_coordinates( &self -) -> (QuadExtField<Fq>, QuadExtField<Fq>, QuadExtField<Fq>)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G2 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G2 as CurveExt>::Base

§

fn a() -> <G2 as CurveExt>::Base

§

fn new_jacobian( +) -> (QuadExtField<Fp>, QuadExtField<Fp>, QuadExtField<Fp>)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G2 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G2 as CurveExt>::Base

§

fn a() -> <G2 as CurveExt>::Base

§

fn new_jacobian( x: <G2 as CurveExt>::Base, y: <G2 as CurveExt>::Base, z: <G2 as CurveExt>::Base -) -> CtOption<G2>

§

impl CurveExt for G2

§

type ScalarExt = Fq

§

type Base = QuadExtField<Fp>

§

type AffineExt = G2Affine

§

const CURVE_ID: &'static str = "triton"

§

fn endo(&self) -> G2

§

fn jacobian_coordinates( +) -> CtOption<G2>

§

impl CurveExt for G2

§

type ScalarExt = Fr

§

type Base = QuadExtField<Fq>

§

type AffineExt = G2Affine

§

const CURVE_ID: &'static str = "bls12381_g2"

§

fn endo(&self) -> G2

§

fn jacobian_coordinates( &self -) -> (QuadExtField<Fp>, QuadExtField<Fp>, QuadExtField<Fp>)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G2 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G2 as CurveExt>::Base

§

fn a() -> <G2 as CurveExt>::Base

§

fn new_jacobian( +) -> (QuadExtField<Fq>, QuadExtField<Fq>, QuadExtField<Fq>)

§

fn hash_to_curve<'a>(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) -> G2 + 'a>

§

fn is_on_curve(&self) -> Choice

§

fn b() -> <G2 as CurveExt>::Base

§

fn a() -> <G2 as CurveExt>::Base

§

fn new_jacobian( x: <G2 as CurveExt>::Base, y: <G2 as CurveExt>::Base, z: <G2 as CurveExt>::Base diff --git a/halo2_proofs/circuit/struct.Value.html b/halo2_proofs/circuit/struct.Value.html index ab8b0e799c..13d7ba3eb7 100644 --- a/halo2_proofs/circuit/struct.Value.html +++ b/halo2_proofs/circuit/struct.Value.html @@ -100,16 +100,16 @@

§Examples
F: Field,

source

pub fn evaluate(self) -> Value<F>

Evaluates this value directly, performing an unbatched inversion if necessary.

If the denominator is zero, the returned value is zero.

Trait Implementations§

source§

impl<V, O> Add<&Value<V>> for Value<V>
where - V: for<'v> Add<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Value<V>) -> <Value<V> as Add<&Value<V>>>::Output

Performs the + operation. Read more
source§

impl<F> Add<F> for Value<&Assigned<F>>
where - F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> <Value<&Assigned<F>> as Add<F>>::Output

Performs the + operation. Read more
source§

impl<F> Add<F> for Value<Assigned<F>>
where + V: for<'v> Add<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Value<V>) -> <Value<V> as Add<&Value<V>>>::Output

Performs the + operation. Read more
source§

impl<F> Add<F> for Value<&Assigned<F>>
where + F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> <Value<&Assigned<F>> as Add<F>>::Output

Performs the + operation. Read more
source§

impl<F> Add<F> for Value<Assigned<F>>
where F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> <Value<Assigned<F>> as Add<F>>::Output

Performs the + operation. Read more
source§

impl<V, O> Add<Value<&V>> for Value<V>
where - V: for<'v> Add<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<&V>) -> <Value<V> as Add<Value<&V>>>::Output

Performs the + operation. Read more
source§

impl<F> Add<Value<F>> for Value<&Assigned<F>>
where - F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<F>) -> <Value<&Assigned<F>> as Add<Value<F>>>::Output

Performs the + operation. Read more
source§

impl<F> Add<Value<F>> for Value<Assigned<F>>
where - F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<F>) -> <Value<Assigned<F>> as Add<Value<F>>>::Output

Performs the + operation. Read more
source§

impl<V, O> Add<Value<V>> for &Value<V>
where - &'v V: for<'v> Add<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<V>) -> <&Value<V> as Add<Value<V>>>::Output

Performs the + operation. Read more
source§

impl<V, O> Add<Value<V>> for Value<&V>
where - &'v V: for<'v> Add<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<V>) -> <Value<&V> as Add<Value<V>>>::Output

Performs the + operation. Read more
source§

impl<V, O> Add for &Value<V>
where - &'v V: for<'v> Add<Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Value<V>) -> <&Value<V> as Add>::Output

Performs the + operation. Read more
source§

impl<V, O> Add for Value<V>
where - V: Add<Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<V>) -> <Value<V> as Add>::Output

Performs the + operation. Read more
source§

impl<V> Clone for Value<V>
where + V: for<'v> Add<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<&V>) -> <Value<V> as Add<Value<&V>>>::Output

Performs the + operation. Read more
source§

impl<F> Add<Value<F>> for Value<&Assigned<F>>
where + F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<F>) -> <Value<&Assigned<F>> as Add<Value<F>>>::Output

Performs the + operation. Read more
source§

impl<F> Add<Value<F>> for Value<Assigned<F>>
where + F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<F>) -> <Value<Assigned<F>> as Add<Value<F>>>::Output

Performs the + operation. Read more
source§

impl<V, O> Add<Value<V>> for &Value<V>
where + &'v V: for<'v> Add<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<V>) -> <&Value<V> as Add<Value<V>>>::Output

Performs the + operation. Read more
source§

impl<V, O> Add<Value<V>> for Value<&V>
where + &'v V: for<'v> Add<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<V>) -> <Value<&V> as Add<Value<V>>>::Output

Performs the + operation. Read more
source§

impl<V, O> Add for &Value<V>
where + &'v V: for<'v> Add<Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Value<V>) -> <&Value<V> as Add>::Output

Performs the + operation. Read more
source§

impl<V, O> Add for Value<V>
where + V: Add<Output = O>,

§

type Output = Value<O>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Value<V>) -> <Value<V> as Add>::Output

Performs the + operation. Read more
source§

impl<V> Clone for Value<V>
where V: Clone,

source§

fn clone(&self) -> Value<V>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<V> Debug for Value<V>
where V: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<V> Default for Value<V>

source§

fn default() -> Value<V>

Returns the “default value” for a type. Read more
source§

impl<F> From<Value<F>> for Value<Assigned<F>>
where F: Field,

source§

fn from(value: Value<F>) -> Value<Assigned<F>>

Converts to this type from the input type.
source§

impl<A, V> FromIterator<Value<A>> for Value<V>
where @@ -120,26 +120,26 @@
§Examples
Value is returned.

source§

impl<V, O> Mul<&Value<V>> for Value<V>
where V: for<'v> Mul<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Value<V>) -> <Value<V> as Mul<&Value<V>>>::Output

Performs the * operation. Read more
source§

impl<F> Mul<F> for Value<&Assigned<F>>
where - F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> <Value<&Assigned<F>> as Mul<F>>::Output

Performs the * operation. Read more
source§

impl<F> Mul<F> for Value<Assigned<F>>
where - F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> <Value<Assigned<F>> as Mul<F>>::Output

Performs the * operation. Read more
source§

impl<V, O> Mul<Value<&V>> for Value<V>
where - V: for<'v> Mul<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<&V>) -> <Value<V> as Mul<Value<&V>>>::Output

Performs the * operation. Read more
source§

impl<F> Mul<Value<F>> for Value<&Assigned<F>>
where - F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<F>) -> <Value<&Assigned<F>> as Mul<Value<F>>>::Output

Performs the * operation. Read more
source§

impl<F> Mul<Value<F>> for Value<Assigned<F>>
where - F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<F>) -> <Value<Assigned<F>> as Mul<Value<F>>>::Output

Performs the * operation. Read more
source§

impl<V, O> Mul<Value<V>> for &Value<V>
where - &'v V: for<'v> Mul<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<V>) -> <&Value<V> as Mul<Value<V>>>::Output

Performs the * operation. Read more
source§

impl<V, O> Mul<Value<V>> for Value<&V>
where - &'v V: for<'v> Mul<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<V>) -> <Value<&V> as Mul<Value<V>>>::Output

Performs the * operation. Read more
source§

impl<V, O> Mul for &Value<V>
where - &'v V: for<'v> Mul<Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Value<V>) -> <&Value<V> as Mul>::Output

Performs the * operation. Read more
source§

impl<V, O> Mul for Value<V>
where - V: Mul<Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<V>) -> <Value<V> as Mul>::Output

Performs the * operation. Read more
source§

impl<V> Neg for Value<V>
where + F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> <Value<&Assigned<F>> as Mul<F>>::Output

Performs the * operation. Read more
source§

impl<F> Mul<F> for Value<Assigned<F>>
where + F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> <Value<Assigned<F>> as Mul<F>>::Output

Performs the * operation. Read more
source§

impl<V, O> Mul<Value<&V>> for Value<V>
where + V: for<'v> Mul<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<&V>) -> <Value<V> as Mul<Value<&V>>>::Output

Performs the * operation. Read more
source§

impl<F> Mul<Value<F>> for Value<&Assigned<F>>
where + F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<F>) -> <Value<&Assigned<F>> as Mul<Value<F>>>::Output

Performs the * operation. Read more
source§

impl<F> Mul<Value<F>> for Value<Assigned<F>>
where + F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<F>) -> <Value<Assigned<F>> as Mul<Value<F>>>::Output

Performs the * operation. Read more
source§

impl<V, O> Mul<Value<V>> for &Value<V>
where + &'v V: for<'v> Mul<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<V>) -> <&Value<V> as Mul<Value<V>>>::Output

Performs the * operation. Read more
source§

impl<V, O> Mul<Value<V>> for Value<&V>
where + &'v V: for<'v> Mul<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<V>) -> <Value<&V> as Mul<Value<V>>>::Output

Performs the * operation. Read more
source§

impl<V, O> Mul for &Value<V>
where + &'v V: for<'v> Mul<Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Value<V>) -> <&Value<V> as Mul>::Output

Performs the * operation. Read more
source§

impl<V, O> Mul for Value<V>
where + V: Mul<Output = O>,

§

type Output = Value<O>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Value<V>) -> <Value<V> as Mul>::Output

Performs the * operation. Read more
source§

impl<V> Neg for Value<V>
where V: Neg,

§

type Output = Value<<V as Neg>::Output>

The resulting type after applying the - operator.
source§

fn neg(self) -> <Value<V> as Neg>::Output

Performs the unary - operation. Read more
source§

impl<V, O> Sub<&Value<V>> for Value<V>
where - V: for<'v> Sub<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Value<V>) -> <Value<V> as Sub<&Value<V>>>::Output

Performs the - operation. Read more
source§

impl<F> Sub<F> for Value<&Assigned<F>>
where - F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> <Value<&Assigned<F>> as Sub<F>>::Output

Performs the - operation. Read more
source§

impl<F> Sub<F> for Value<Assigned<F>>
where - F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> <Value<Assigned<F>> as Sub<F>>::Output

Performs the - operation. Read more
source§

impl<V, O> Sub<Value<&V>> for Value<V>
where - V: for<'v> Sub<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<&V>) -> <Value<V> as Sub<Value<&V>>>::Output

Performs the - operation. Read more
source§

impl<F> Sub<Value<F>> for Value<&Assigned<F>>
where - F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<F>) -> <Value<&Assigned<F>> as Sub<Value<F>>>::Output

Performs the - operation. Read more
source§

impl<F> Sub<Value<F>> for Value<Assigned<F>>
where - F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<F>) -> <Value<Assigned<F>> as Sub<Value<F>>>::Output

Performs the - operation. Read more
source§

impl<V, O> Sub<Value<V>> for &Value<V>
where - &'v V: for<'v> Sub<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<V>) -> <&Value<V> as Sub<Value<V>>>::Output

Performs the - operation. Read more
source§

impl<V, O> Sub<Value<V>> for Value<&V>
where - &'v V: for<'v> Sub<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<V>) -> <Value<&V> as Sub<Value<V>>>::Output

Performs the - operation. Read more
source§

impl<V, O> Sub for &Value<V>
where - &'v V: for<'v> Sub<Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Value<V>) -> <&Value<V> as Sub>::Output

Performs the - operation. Read more
source§

impl<V, O> Sub for Value<V>
where - V: Sub<Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<V>) -> <Value<V> as Sub>::Output

Performs the - operation. Read more
source§

impl<V> Copy for Value<V>
where + V: for<'v> Sub<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Value<V>) -> <Value<V> as Sub<&Value<V>>>::Output

Performs the - operation. Read more
source§

impl<F> Sub<F> for Value<&Assigned<F>>
where + F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> <Value<&Assigned<F>> as Sub<F>>::Output

Performs the - operation. Read more
source§

impl<F> Sub<F> for Value<Assigned<F>>
where + F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> <Value<Assigned<F>> as Sub<F>>::Output

Performs the - operation. Read more
source§

impl<V, O> Sub<Value<&V>> for Value<V>
where + V: for<'v> Sub<&'v V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<&V>) -> <Value<V> as Sub<Value<&V>>>::Output

Performs the - operation. Read more
source§

impl<F> Sub<Value<F>> for Value<&Assigned<F>>
where + F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<F>) -> <Value<&Assigned<F>> as Sub<Value<F>>>::Output

Performs the - operation. Read more
source§

impl<F> Sub<Value<F>> for Value<Assigned<F>>
where + F: Field,

§

type Output = Value<Assigned<F>>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<F>) -> <Value<Assigned<F>> as Sub<Value<F>>>::Output

Performs the - operation. Read more
source§

impl<V, O> Sub<Value<V>> for &Value<V>
where + &'v V: for<'v> Sub<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<V>) -> <&Value<V> as Sub<Value<V>>>::Output

Performs the - operation. Read more
source§

impl<V, O> Sub<Value<V>> for Value<&V>
where + &'v V: for<'v> Sub<V, Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<V>) -> <Value<&V> as Sub<Value<V>>>::Output

Performs the - operation. Read more
source§

impl<V, O> Sub for &Value<V>
where + &'v V: for<'v> Sub<Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Value<V>) -> <&Value<V> as Sub>::Output

Performs the - operation. Read more
source§

impl<V, O> Sub for Value<V>
where + V: Sub<Output = O>,

§

type Output = Value<O>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Value<V>) -> <Value<V> as Sub>::Output

Performs the - operation. Read more
source§

impl<V> Copy for Value<V>
where V: Copy,

Auto Trait Implementations§

§

impl<V> Freeze for Value<V>
where V: Freeze,

§

impl<V> RefUnwindSafe for Value<V>
where V: RefUnwindSafe,

§

impl<V> Send for Value<V>
where diff --git a/halo2_proofs/dev/metadata/struct.Column.html b/halo2_proofs/dev/metadata/struct.Column.html index 0967d6401d..c070327ec7 100644 --- a/halo2_proofs/dev/metadata/struct.Column.html +++ b/halo2_proofs/dev/metadata/struct.Column.html @@ -20,7 +20,7 @@ }
Expand description

A column with an index and type

Fields§

§column_type: Any

The type of the column.

§index: usize

The index of the column.

-

Implementations§

source§

impl ColumnMid

source

pub fn new(column_type: Any, index: usize) -> ColumnMid

Trait Implementations§

source§

impl Clone for ColumnMid

source§

fn clone(&self) -> ColumnMid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ColumnMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Display for ColumnMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<Column<Any>> for ColumnMid

source§

fn from(val: Column<Any>) -> ColumnMid

Converts to this type from the input type.
source§

impl From<ColumnMid> for Column<Any>

source§

fn from(column: ColumnMid) -> Column<Any>

Converts to this type from the input type.
source§

impl Hash for ColumnMid

source§

fn hash<__H>(&self, state: &mut __H)
where +

Implementations§

source§

impl ColumnMid

source

pub fn new(column_type: Any, index: usize) -> ColumnMid

Trait Implementations§

source§

impl Clone for ColumnMid

source§

fn clone(&self) -> ColumnMid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ColumnMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Display for ColumnMid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<Column<Any>> for ColumnMid

source§

fn from(val: Column<Any>) -> ColumnMid

Converts to this type from the input type.
source§

impl From<ColumnMid> for Column<Any>

source§

fn from(column: ColumnMid) -> Column<Any>

Converts to this type from the input type.
source§

impl Hash for ColumnMid

source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for ColumnMid

source§

fn cmp(&self, other: &ColumnMid) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where diff --git a/halo2_proofs/dev/metadata/struct.Region.html b/halo2_proofs/dev/metadata/struct.Region.html index fd8ef97826..6ebfc2646a 100644 --- a/halo2_proofs/dev/metadata/struct.Region.html +++ b/halo2_proofs/dev/metadata/struct.Region.html @@ -15,7 +15,7 @@

Struct halo2_proofs::dev::metadata::Region

source ·
pub struct Region { /* private fields */ }
Expand description

Metadata about an assigned region within a circuit.

-

Trait Implementations§

source§

impl Clone for Region

source§

fn clone(&self) -> Region

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Region

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Display for Region

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<(usize, &str)> for Region

source§

fn from(_: (usize, &str)) -> Region

Converts to this type from the input type.
source§

impl From<(usize, &str, HashMap<ColumnMid, String>)> for Region

source§

fn from(_: (usize, &str, HashMap<ColumnMid, String>)) -> Region

Converts to this type from the input type.
source§

impl From<(usize, String)> for Region

source§

fn from(_: (usize, String)) -> Region

Converts to this type from the input type.
source§

impl From<(usize, String, HashMap<ColumnMid, String>)> for Region

source§

fn from(_: (usize, String, HashMap<ColumnMid, String>)) -> Region

Converts to this type from the input type.
source§

impl PartialEq for Region

source§

fn eq(&self, other: &Region) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl Clone for Region

source§

fn clone(&self) -> Region

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Region

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Display for Region

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<(usize, &str)> for Region

source§

fn from(_: (usize, &str)) -> Region

Converts to this type from the input type.
source§

impl From<(usize, &str, HashMap<ColumnMid, String>)> for Region

source§

fn from(_: (usize, &str, HashMap<ColumnMid, String>)) -> Region

Converts to this type from the input type.
source§

impl From<(usize, String)> for Region

source§

fn from(_: (usize, String)) -> Region

Converts to this type from the input type.
source§

impl From<(usize, String, HashMap<ColumnMid, String>)> for Region

source§

fn from(_: (usize, String, HashMap<ColumnMid, String>)) -> Region

Converts to this type from the input type.
source§

impl PartialEq for Region

source§

fn eq(&self, other: &Region) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Region

Auto Trait Implementations§

§

impl Freeze for Region

§

impl RefUnwindSafe for Region

§

impl Send for Region

§

impl Sync for Region

§

impl Unpin for Region

§

impl UnwindSafe for Region

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/halo2_proofs/plonk/enum.Any.html b/halo2_proofs/plonk/enum.Any.html index 0651ed30b5..8c7c90ed76 100644 --- a/halo2_proofs/plonk/enum.Any.html +++ b/halo2_proofs/plonk/enum.Any.html @@ -23,7 +23,7 @@
§

Fixed

A Fixed variant

§

Instance

An Instance variant

Trait Implementations§

source§

impl Clone for Any

source§

fn clone(&self) -> Any

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ColumnType for Any

source§

fn query_cell<F>(&self, index: usize, at: Rotation) -> Expression<F>
where - F: Field,

Return expression from cell
source§

impl Debug for Any

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<Advice> for Any

source§

fn from(_: Advice) -> Any

Converts to this type from the input type.
source§

impl From<Fixed> for Any

source§

fn from(_: Fixed) -> Any

Converts to this type from the input type.
source§

impl From<Instance> for Any

source§

fn from(_: Instance) -> Any

Converts to this type from the input type.
source§

impl Hash for Any

source§

fn hash<__H>(&self, state: &mut __H)
where + F: Field,

Return expression from cell
source§

impl Debug for Any

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<Advice> for Any

source§

fn from(_: Advice) -> Any

Converts to this type from the input type.
source§

impl From<Fixed> for Any

source§

fn from(_: Fixed) -> Any

Converts to this type from the input type.
source§

impl From<Instance> for Any

source§

fn from(_: Instance) -> Any

Converts to this type from the input type.
source§

impl Hash for Any

source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for Any

source§

fn cmp(&self, other: &Any) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where diff --git a/halo2_proofs/plonk/enum.Assigned.html b/halo2_proofs/plonk/enum.Assigned.html index bdd657855c..18d7993473 100644 --- a/halo2_proofs/plonk/enum.Assigned.html +++ b/halo2_proofs/plonk/enum.Assigned.html @@ -37,38 +37,38 @@

If the denominator is zero, this returns zero.

Trait Implementations§

source§

impl<F> Add<&Assigned<F>> for &Assigned<F>
where F: Field,

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F> Add<&Assigned<F>> for Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F> Add<Assigned<F>> for &Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F> Add<F> for &Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F> Add<F> for Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F> Add for Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F> AddAssign<&Assigned<F>> for Assigned<F>
where - F: Field,

source§

fn add_assign(&mut self, rhs: &Assigned<F>)

Performs the += operation. Read more
source§

impl<F> AddAssign for Assigned<F>
where - F: Field,

source§

fn add_assign(&mut self, rhs: Assigned<F>)

Performs the += operation. Read more
source§

impl<F> Clone for Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F> Add<Assigned<F>> for &Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F> Add<F> for &Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F> Add<F> for Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F> Add for Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Assigned<F>) -> Assigned<F>

Performs the + operation. Read more
source§

impl<F> AddAssign<&Assigned<F>> for Assigned<F>
where + F: Field,

source§

fn add_assign(&mut self, rhs: &Assigned<F>)

Performs the += operation. Read more
source§

impl<F> AddAssign for Assigned<F>
where + F: Field,

source§

fn add_assign(&mut self, rhs: Assigned<F>)

Performs the += operation. Read more
source§

impl<F> Clone for Assigned<F>
where F: Clone,

source§

fn clone(&self) -> Assigned<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F> Debug for Assigned<F>
where F: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<F> From<&Assigned<F>> for Assigned<F>
where - F: Field,

source§

fn from(val: &Assigned<F>) -> Assigned<F>

Converts to this type from the input type.
source§

impl<F> From<&F> for Assigned<F>
where - F: Field,

source§

fn from(numerator: &F) -> Assigned<F>

Converts to this type from the input type.
source§

impl<F> From<(F, F)> for Assigned<F>
where + F: Field,

source§

fn from(val: &Assigned<F>) -> Assigned<F>

Converts to this type from the input type.
source§

impl<F> From<&F> for Assigned<F>
where + F: Field,

source§

fn from(numerator: &F) -> Assigned<F>

Converts to this type from the input type.
source§

impl<F> From<(F, F)> for Assigned<F>
where F: Field,

source§

fn from(_: (F, F)) -> Assigned<F>

Converts to this type from the input type.
source§

impl<F> From<F> for Assigned<F>
where F: Field,

source§

fn from(numerator: F) -> Assigned<F>

Converts to this type from the input type.
source§

impl<F> Mul<&Assigned<F>> for Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F> Mul<F> for &Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F> Mul<F> for Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F> Mul for Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Assigned<F>) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F> MulAssign<&Assigned<F>> for Assigned<F>
where - F: Field,

source§

fn mul_assign(&mut self, rhs: &Assigned<F>)

Performs the *= operation. Read more
source§

impl<F> MulAssign for Assigned<F>
where - F: Field,

source§

fn mul_assign(&mut self, rhs: Assigned<F>)

Performs the *= operation. Read more
source§

impl<F> Neg for &Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F> Mul<F> for &Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F> Mul<F> for Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F> Mul for Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Assigned<F>) -> Assigned<F>

Performs the * operation. Read more
source§

impl<F> MulAssign<&Assigned<F>> for Assigned<F>
where + F: Field,

source§

fn mul_assign(&mut self, rhs: &Assigned<F>)

Performs the *= operation. Read more
source§

impl<F> MulAssign for Assigned<F>
where + F: Field,

source§

fn mul_assign(&mut self, rhs: Assigned<F>)

Performs the *= operation. Read more
source§

impl<F> Neg for &Assigned<F>
where F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> <&Assigned<F> as Neg>::Output

Performs the unary - operation. Read more
source§

impl<F> Neg for Assigned<F>
where F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> <Assigned<F> as Neg>::Output

Performs the unary - operation. Read more
source§

impl<F> PartialEq for Assigned<F>
where F: Field,

source§

fn eq(&self, other: &Assigned<F>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<F> Sub<&Assigned<F>> for &Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F> Sub<&Assigned<F>> for Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F> Sub<Assigned<F>> for &Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F> Sub<F> for &Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F> Sub<F> for Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F> Sub for Assigned<F>
where - F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F> SubAssign<&Assigned<F>> for Assigned<F>
where - F: Field,

source§

fn sub_assign(&mut self, rhs: &Assigned<F>)

Performs the -= operation. Read more
source§

impl<F> SubAssign for Assigned<F>
where - F: Field,

source§

fn sub_assign(&mut self, rhs: Assigned<F>)

Performs the -= operation. Read more
source§

impl<F> Copy for Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F> Sub<&Assigned<F>> for Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F> Sub<Assigned<F>> for &Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F> Sub<F> for &Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F> Sub<F> for Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F> Sub for Assigned<F>
where + F: Field,

§

type Output = Assigned<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Assigned<F>) -> Assigned<F>

Performs the - operation. Read more
source§

impl<F> SubAssign<&Assigned<F>> for Assigned<F>
where + F: Field,

source§

fn sub_assign(&mut self, rhs: &Assigned<F>)

Performs the -= operation. Read more
source§

impl<F> SubAssign for Assigned<F>
where + F: Field,

source§

fn sub_assign(&mut self, rhs: Assigned<F>)

Performs the -= operation. Read more
source§

impl<F> Copy for Assigned<F>
where F: Copy,

source§

impl<F> Eq for Assigned<F>
where F: Field,

Auto Trait Implementations§

§

impl<F> Freeze for Assigned<F>
where F: Freeze,

§

impl<F> RefUnwindSafe for Assigned<F>
where diff --git a/halo2_proofs/plonk/enum.Error.html b/halo2_proofs/plonk/enum.Error.html index c59e38e927..32b4be3aad 100644 --- a/halo2_proofs/plonk/enum.Error.html +++ b/halo2_proofs/plonk/enum.Error.html @@ -20,7 +20,7 @@ }
Expand description

This is an error that could occur during proving or circuit synthesis.

Variants§

§

Frontend(ErrorFront)

Frontend error case

§

Backend(ErrorBack)

Backend error case

-

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Error> for Error

source§

fn from(err: ErrorBack) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(err: ErrorFront) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Error

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Error> for Error

source§

fn from(err: ErrorBack) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(err: ErrorFront) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Error

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where diff --git a/halo2_proofs/plonk/enum.Expression.html b/halo2_proofs/plonk/enum.Expression.html index 460f803522..1f27ea1d01 100644 --- a/halo2_proofs/plonk/enum.Expression.html +++ b/halo2_proofs/plonk/enum.Expression.html @@ -78,8 +78,8 @@ F: Field,

§

type Output = Expression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Expression<F>) -> Expression<F>

Performs the + operation. Read more
source§

impl<F> Clone for Expression<F>
where F: Clone,

source§

fn clone(&self) -> Expression<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F> Debug for Expression<F>
where F: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<F> Mul<F> for Expression<F>
where - F: Field,

§

type Output = Expression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Expression<F>

Performs the * operation. Read more
source§

impl<F> Mul for Expression<F>
where - F: Field,

§

type Output = Expression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Expression<F>) -> Expression<F>

Performs the * operation. Read more
source§

impl<F> Neg for Expression<F>
where + F: Field,

§

type Output = Expression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Expression<F>

Performs the * operation. Read more
source§

impl<F> Mul for Expression<F>
where + F: Field,

§

type Output = Expression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Expression<F>) -> Expression<F>

Performs the * operation. Read more
source§

impl<F> Neg for Expression<F>
where F: Field,

§

type Output = Expression<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> <Expression<F> as Neg>::Output

Performs the unary - operation. Read more
source§

impl<F> PartialEq for Expression<F>
where F: PartialEq,

source§

fn eq(&self, other: &Expression<F>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always diff --git a/halo2_proofs/plonk/struct.Column.html b/halo2_proofs/plonk/struct.Column.html index ff42be7a51..ba9cac77c7 100644 --- a/halo2_proofs/plonk/struct.Column.html +++ b/halo2_proofs/plonk/struct.Column.html @@ -34,7 +34,7 @@ F: Field,

Return expression from column at the specified rotation

Trait Implementations§

source§

impl<C> Clone for Column<C>
where C: Clone + ColumnType,

source§

fn clone(&self) -> Column<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<C> Debug for Column<C>
where - C: Debug + ColumnType,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<Column<Advice>> for Column<Any>

source§

fn from(advice: Column<Advice>) -> Column<Any>

Converts to this type from the input type.
source§

impl From<Column<Any>> for ColumnMid

source§

fn from(val: Column<Any>) -> ColumnMid

Converts to this type from the input type.
source§

impl From<Column<Fixed>> for Column<Any>

source§

fn from(advice: Column<Fixed>) -> Column<Any>

Converts to this type from the input type.
source§

impl From<Column<Instance>> for Column<Any>

source§

fn from(advice: Column<Instance>) -> Column<Any>

Converts to this type from the input type.
source§

impl From<ColumnMid> for Column<Any>

source§

fn from(column: ColumnMid) -> Column<Any>

Converts to this type from the input type.
source§

impl<C> Hash for Column<C>
where + C: Debug + ColumnType,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl From<Column<Advice>> for Column<Any>

source§

fn from(advice: Column<Advice>) -> Column<Any>

Converts to this type from the input type.
source§

impl From<Column<Any>> for ColumnMid

source§

fn from(val: Column<Any>) -> ColumnMid

Converts to this type from the input type.
source§

impl From<Column<Fixed>> for Column<Any>

source§

fn from(advice: Column<Fixed>) -> Column<Any>

Converts to this type from the input type.
source§

impl From<Column<Instance>> for Column<Any>

source§

fn from(advice: Column<Instance>) -> Column<Any>

Converts to this type from the input type.
source§

impl From<ColumnMid> for Column<Any>

source§

fn from(column: ColumnMid) -> Column<Any>

Converts to this type from the input type.
source§

impl<C> Hash for Column<C>
where C: Hash + ColumnType,

source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, diff --git a/halo2_proofs/poly/commitment/struct.Blind.html b/halo2_proofs/poly/commitment/struct.Blind.html index 7925c1c3b4..d8c47c6abe 100644 --- a/halo2_proofs/poly/commitment/struct.Blind.html +++ b/halo2_proofs/poly/commitment/struct.Blind.html @@ -20,8 +20,8 @@ R: RngCore,

Given rng creates new blinding scalar

Trait Implementations§

source§

impl<F> Add for Blind<F>
where F: Field,

§

type Output = Blind<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Blind<F>) -> Blind<F>

Performs the + operation. Read more
source§

impl<F> AddAssign<F> for Blind<F>
where - F: Field,

source§

fn add_assign(&mut self, rhs: F)

Performs the += operation. Read more
source§

impl<F> AddAssign for Blind<F>
where - F: Field,

source§

fn add_assign(&mut self, rhs: Blind<F>)

Performs the += operation. Read more
source§

impl<F> Clone for Blind<F>
where + F: Field,

source§

fn add_assign(&mut self, rhs: F)

Performs the += operation. Read more
source§

impl<F> AddAssign for Blind<F>
where + F: Field,

source§

fn add_assign(&mut self, rhs: Blind<F>)

Performs the += operation. Read more
source§

impl<F> Clone for Blind<F>
where F: Clone,

source§

fn clone(&self) -> Blind<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F> Debug for Blind<F>
where F: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<F> Default for Blind<F>
where F: Field,

source§

fn default() -> Blind<F>

Returns the “default value” for a type. Read more
source§

impl<F> Mul for Blind<F>
where diff --git a/halo2_proofs/poly/kzg/commitment/struct.KZGCommitmentScheme.html b/halo2_proofs/poly/kzg/commitment/struct.KZGCommitmentScheme.html index b1ec5dd463..00824fab77 100644 --- a/halo2_proofs/poly/kzg/commitment/struct.KZGCommitmentScheme.html +++ b/halo2_proofs/poly/kzg/commitment/struct.KZGCommitmentScheme.html @@ -36,7 +36,7 @@ E: Engine + Debug, <E as Engine>::G1: CurveExt<AffineExt = <E as Engine>::G1Affine>, <E as Engine>::G2Affine: SerdeCurveAffine,

Create a multi-opening proof

-
source§

fn create_proof_with_engine<'com, Ch, T, R, I>( +

source§

fn create_proof_with_engine<'com, Ch, T, R, I>( &self, engine: &impl MsmAccel<<E as Engine>::G1Affine>, _: R, @@ -47,7 +47,7 @@ T: TranscriptWrite<<E as Engine>::G1Affine, Ch>, I: IntoIterator<Item = ProverQuery<'com, <E as Engine>::G1Affine>> + Clone, R: RngCore,

Create a multi-opening proof

-
source§

const QUERY_INSTANCE: bool = false

Query instance or not
source§

fn new(params: &'params ParamsKZG<E>) -> ProverGWC<'params, E>

Creates new prover instance
source§

fn create_proof<'com, E, T, R, I>( +

source§

const QUERY_INSTANCE: bool = false

Query instance or not
source§

fn new(params: &'params ParamsKZG<E>) -> ProverGWC<'params, E>

Creates new prover instance
source§

fn create_proof<'com, E, T, R, I>( &self, rng: R, transcript: &mut T, @@ -62,7 +62,7 @@ E: Engine + Debug, <E as Engine>::G1: CurveExt<AffineExt = <E as Engine>::G1Affine>, <E as Engine>::G2Affine: SerdeCurveAffine,

Create a multi-opening proof

-
source§

fn create_proof_with_engine<'com, Ch, T, R, I>( +

source§

fn create_proof_with_engine<'com, Ch, T, R, I>( &self, engine: &impl MsmAccel<<E as Engine>::G1Affine>, _: R, @@ -73,7 +73,7 @@ T: TranscriptWrite<<E as Engine>::G1Affine, Ch>, I: IntoIterator<Item = ProverQuery<'com, <E as Engine>::G1Affine>> + Clone, R: RngCore,

Create a multi-opening proof

-
source§

const QUERY_INSTANCE: bool = false

Query instance or not
source§

fn new(params: &'params ParamsKZG<E>) -> ProverSHPLONK<'params, E>

Creates new prover instance
source§

fn create_proof<'com, E, T, R, I>( +

source§

const QUERY_INSTANCE: bool = false

Query instance or not
source§

fn new(params: &'params ParamsKZG<E>) -> ProverSHPLONK<'params, E>

Creates new prover instance
source§

fn create_proof<'com, E, T, R, I>( &self, rng: R, transcript: &mut T, @@ -87,20 +87,20 @@ E: MultiMillerLoop + Debug, <E as Engine>::G1: CurveExt<AffineExt = <E as Engine>::G1Affine>, V: Verifier<'params, KZGCommitmentScheme<E>, MSMAccumulator = DualMSM<E>, Guard = GuardKZG<E>>, - <E as Engine>::G2Affine: SerdeCurveAffine,

§

type Output = AccumulatorStrategy<E>

The output type of this verification strategy after processing a proof.
source§

fn new(params: &'params ParamsVerifierKZG<E>) -> AccumulatorStrategy<E>

Creates new verification strategy instance
source§

fn process( + <E as Engine>::G2Affine: SerdeCurveAffine,

§

type Output = AccumulatorStrategy<E>

The output type of this verification strategy after processing a proof.
source§

fn new(params: &'params ParamsVerifierKZG<E>) -> AccumulatorStrategy<E>

Creates new verification strategy instance
source§

fn process( self, f: impl FnOnce(<V as Verifier<'params, KZGCommitmentScheme<E>>>::MSMAccumulator) -> Result<<V as Verifier<'params, KZGCommitmentScheme<E>>>::Guard, Error> ) -> Result<<AccumulatorStrategy<E> as VerificationStrategy<'params, KZGCommitmentScheme<E>, V>>::Output, Error>

Obtains an MSM from the verifier strategy and yields back the strategy’s -output.
source§

fn finalize(self) -> bool

Finalizes the batch and checks its validity. Read more
source§

impl<'params, E, V> VerificationStrategy<'params, KZGCommitmentScheme<E>, V> for SingleStrategy<E>
where +output.

source§

fn finalize(self) -> bool

Finalizes the batch and checks its validity. Read more
source§

impl<'params, E, V> VerificationStrategy<'params, KZGCommitmentScheme<E>, V> for SingleStrategy<E>
where <E as Engine>::G1Affine: SerdeCurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>, E: MultiMillerLoop + Debug, <E as Engine>::G1: CurveExt<AffineExt = <E as Engine>::G1Affine>, V: Verifier<'params, KZGCommitmentScheme<E>, MSMAccumulator = DualMSM<E>, Guard = GuardKZG<E>>, - <E as Engine>::G2Affine: SerdeCurveAffine,

§

type Output = ()

The output type of this verification strategy after processing a proof.
source§

fn new(params: &'params ParamsVerifierKZG<E>) -> SingleStrategy<E>

Creates new verification strategy instance
source§

fn process( + <E as Engine>::G2Affine: SerdeCurveAffine,

§

type Output = ()

The output type of this verification strategy after processing a proof.
source§

fn new(params: &'params ParamsVerifierKZG<E>) -> SingleStrategy<E>

Creates new verification strategy instance
source§

fn process( self, f: impl FnOnce(<V as Verifier<'params, KZGCommitmentScheme<E>>>::MSMAccumulator) -> Result<<V as Verifier<'params, KZGCommitmentScheme<E>>>::Guard, Error> ) -> Result<<SingleStrategy<E> as VerificationStrategy<'params, KZGCommitmentScheme<E>, V>>::Output, Error>

Obtains an MSM from the verifier strategy and yields back the strategy’s -output.
source§

fn finalize(self) -> bool

Finalizes the batch and checks its validity. Read more
source§

impl<'params, E> Verifier<'params, KZGCommitmentScheme<E>> for VerifierGWC<E>
where +output.

source§

fn finalize(self) -> bool

Finalizes the batch and checks its validity. Read more
source§

impl<'params, E> Verifier<'params, KZGCommitmentScheme<E>> for VerifierGWC<E>
where <E as Engine>::G1Affine: SerdeCurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>, E: MultiMillerLoop + Debug, <E as Engine>::G1: CurveExt<AffineExt = <E as Engine>::G1Affine>, diff --git a/halo2_proofs/transcript/struct.Challenge255.html b/halo2_proofs/transcript/struct.Challenge255.html index 9e37692f64..db0939fcf9 100644 --- a/halo2_proofs/transcript/struct.Challenge255.html +++ b/halo2_proofs/transcript/struct.Challenge255.html @@ -131,20 +131,20 @@
§Examples
treating it as a common input.

source§

fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

Squeeze a typed challenge (in the scalar field) from the transcript.
source§

impl<R, C> Transcript<C, Challenge255<C>> for Keccak256Read<R, C, Challenge255<C>>
where R: Read, C: CurveAffine, - <C as PrimeCurveAffine>::Scalar: FromUniformBytes<64>,

source§

fn squeeze_challenge(&mut self) -> Challenge255<C>

Squeeze an encoded verifier challenge from the transcript.
source§

fn common_point(&mut self, point: C) -> Result<(), Error>

Writing the point to the transcript without writing it to the proof, -treating it as a common input.
source§

fn common_scalar( + <C as PrimeCurveAffine>::Scalar: FromUniformBytes<64>,

source§

fn squeeze_challenge(&mut self) -> Challenge255<C>

Squeeze an encoded verifier challenge from the transcript.
source§

fn common_point(&mut self, point: C) -> Result<(), Error>

Writing the point to the transcript without writing it to the proof, +treating it as a common input.
source§

fn common_scalar( &mut self, scalar: <C as PrimeCurveAffine>::Scalar ) -> Result<(), Error>

Writing the scalar to the transcript without writing it to the proof, -treating it as a common input.
source§

fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

Squeeze a typed challenge (in the scalar field) from the transcript.
source§

impl<W, C> Transcript<C, Challenge255<C>> for Keccak256Write<W, C, Challenge255<C>>
where +treating it as a common input.

source§

fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

Squeeze a typed challenge (in the scalar field) from the transcript.
source§

impl<W, C> Transcript<C, Challenge255<C>> for Keccak256Write<W, C, Challenge255<C>>
where W: Write, C: CurveAffine, - <C as PrimeCurveAffine>::Scalar: FromUniformBytes<64>,

source§

fn squeeze_challenge(&mut self) -> Challenge255<C>

Squeeze an encoded verifier challenge from the transcript.
source§

fn common_point(&mut self, point: C) -> Result<(), Error>

Writing the point to the transcript without writing it to the proof, -treating it as a common input.
source§

fn common_scalar( + <C as PrimeCurveAffine>::Scalar: FromUniformBytes<64>,

source§

fn squeeze_challenge(&mut self) -> Challenge255<C>

Squeeze an encoded verifier challenge from the transcript.
source§

fn common_point(&mut self, point: C) -> Result<(), Error>

Writing the point to the transcript without writing it to the proof, +treating it as a common input.
source§

fn common_scalar( &mut self, scalar: <C as PrimeCurveAffine>::Scalar ) -> Result<(), Error>

Writing the scalar to the transcript without writing it to the proof, -treating it as a common input.
source§

fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

Squeeze a typed challenge (in the scalar field) from the transcript.
source§

impl<R, C> TranscriptRead<C, Challenge255<C>> for Blake2bRead<R, C, Challenge255<C>>
where +treating it as a common input.

source§

fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

Squeeze a typed challenge (in the scalar field) from the transcript.
source§

impl<R, C> TranscriptRead<C, Challenge255<C>> for Blake2bRead<R, C, Challenge255<C>>
where R: Read, C: CurveAffine, <C as PrimeCurveAffine>::Scalar: FromUniformBytes<64>,

source§

fn read_point(&mut self) -> Result<C, Error>

Read a curve point from the prover.
source§

fn read_scalar(&mut self) -> Result<<C as PrimeCurveAffine>::Scalar, Error>

Read a curve scalar from the prover.
source§

impl<R, C> TranscriptRead<C, Challenge255<C>> for Keccak256Read<R, C, Challenge255<C>>
where @@ -153,11 +153,11 @@
§Examples
<C as PrimeCurveAffine>::Scalar: FromUniformBytes<64>,

source§

fn read_point(&mut self) -> Result<C, Error>

Read a curve point from the prover.
source§

fn read_scalar(&mut self) -> Result<<C as PrimeCurveAffine>::Scalar, Error>

Read a curve scalar from the prover.
source§

impl<R, C> TranscriptReadBuffer<R, C, Challenge255<C>> for Blake2bRead<R, C, Challenge255<C>>
where R: Read, C: CurveAffine, - <C as PrimeCurveAffine>::Scalar: FromUniformBytes<64>,

source§

fn init(reader: R) -> Blake2bRead<R, C, Challenge255<C>>

Initialize a transcript given an input buffer.

+ <C as PrimeCurveAffine>::Scalar: FromUniformBytes<64>,
source§

fn init(reader: R) -> Blake2bRead<R, C, Challenge255<C>>

Initialize a transcript given an input buffer.

source§

impl<R, C> TranscriptReadBuffer<R, C, Challenge255<C>> for Keccak256Read<R, C, Challenge255<C>>
where R: Read, C: CurveAffine, - <C as PrimeCurveAffine>::Scalar: FromUniformBytes<64>,

source§

fn init(reader: R) -> Keccak256Read<R, C, Challenge255<C>>

Initialize a transcript given an input buffer.

+ <C as PrimeCurveAffine>::Scalar: FromUniformBytes<64>,
source§

fn init(reader: R) -> Keccak256Read<R, C, Challenge255<C>>

Initialize a transcript given an input buffer.

source§

impl<W, C> TranscriptWrite<C, Challenge255<C>> for Blake2bWrite<W, C, Challenge255<C>>
where W: Write, C: CurveAffine, diff --git a/p3_frontend/enum.SymbolicExpression.html b/p3_frontend/enum.SymbolicExpression.html index 79531ddaa3..cd8dca3b9a 100644 --- a/p3_frontend/enum.SymbolicExpression.html +++ b/p3_frontend/enum.SymbolicExpression.html @@ -27,9 +27,9 @@ P: PackedField<Scalar = Self>,

§

fn shifted_powers_packed<P>(&self, start: Self) -> PackedPowers<Self, P>
where P: PackedField<Scalar = Self>,

§

fn dot_product<const N: usize>(u: &[Self; N], v: &[Self; N]) -> Self

§

fn try_div<Rhs>(self, rhs: Rhs) -> Option<Self::Output>
where Rhs: Field, - Self: Mul<Rhs>,

source§

impl<F: Field> Add<F> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Self

Performs the + operation. Read more
source§

impl<F: Field> Add<SymbolicExpression<F>> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: SymbolicExpression<F>) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<SymbolicVariable<F>> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: SymbolicVariable<F>) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self

Performs the + operation. Read more
source§

impl<F: Field> AddAssign<F> for SymbolicExpression<F>

source§

fn add_assign(&mut self, rhs: F)

Performs the += operation. Read more
source§

impl<F: Field> AddAssign for SymbolicExpression<F>

source§

fn add_assign(&mut self, rhs: Self)

Performs the += operation. Read more
source§

impl<F: Clone + Field> Clone for SymbolicExpression<F>

source§

fn clone(&self) -> SymbolicExpression<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug + Field> Debug for SymbolicExpression<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> Default for SymbolicExpression<F>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<F: Field> Display for SymbolicExpression<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> From<F> for SymbolicExpression<F>

source§

fn from(value: F) -> Self

Converts to this type from the input type.
source§

impl<F: Field> From<SymbolicVariable<F>> for SymbolicExpression<F>

source§

fn from(value: SymbolicVariable<F>) -> Self

Converts to this type from the input type.
source§

impl<F: Field> Mul<F> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Self

Performs the * operation. Read more
source§

impl<F: Field> Mul<SymbolicExpression<F>> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: SymbolicExpression<F>) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<SymbolicVariable<F>> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: SymbolicVariable<F>) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Self) -> Self

Performs the * operation. Read more
source§

impl<F: Field> MulAssign<F> for SymbolicExpression<F>

source§

fn mul_assign(&mut self, rhs: F)

Performs the *= operation. Read more
source§

impl<F: Field> MulAssign for SymbolicExpression<F>

source§

fn mul_assign(&mut self, rhs: Self)

Performs the *= operation. Read more
source§

impl<F: Field> Neg for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self

Performs the unary - operation. Read more
source§

impl<F: Field> Product<F> for SymbolicExpression<F>

source§

fn product<I: Iterator<Item = F>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by -multiplying the items.
source§

impl<F: Field> Product for SymbolicExpression<F>

source§

fn product<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by -multiplying the items.
source§

impl<F: Field> Sub<F> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Self

Performs the - operation. Read more
source§

impl<F: Field> Sub<SymbolicExpression<F>> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: SymbolicExpression<F>) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<SymbolicVariable<F>> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: SymbolicVariable<F>) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self

Performs the - operation. Read more
source§

impl<F: Field> SubAssign<F> for SymbolicExpression<F>

source§

fn sub_assign(&mut self, rhs: F)

Performs the -= operation. Read more
source§

impl<F: Field> SubAssign for SymbolicExpression<F>

source§

fn sub_assign(&mut self, rhs: Self)

Performs the -= operation. Read more
source§

impl<F: Field> Sum<F> for SymbolicExpression<F>

source§

fn sum<I: Iterator<Item = F>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by + Self: Mul<Rhs>,
source§

impl<F: Field> Add<F> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Self

Performs the + operation. Read more
source§

impl<F: Field> Add<SymbolicExpression<F>> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: SymbolicExpression<F>) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<SymbolicVariable<F>> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: SymbolicVariable<F>) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self

Performs the + operation. Read more
source§

impl<F: Field> AddAssign<F> for SymbolicExpression<F>

source§

fn add_assign(&mut self, rhs: F)

Performs the += operation. Read more
source§

impl<F: Field> AddAssign for SymbolicExpression<F>

source§

fn add_assign(&mut self, rhs: Self)

Performs the += operation. Read more
source§

impl<F: Clone + Field> Clone for SymbolicExpression<F>

source§

fn clone(&self) -> SymbolicExpression<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug + Field> Debug for SymbolicExpression<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> Default for SymbolicExpression<F>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<F: Field> Display for SymbolicExpression<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> From<F> for SymbolicExpression<F>

source§

fn from(value: F) -> Self

Converts to this type from the input type.
source§

impl<F: Field> From<SymbolicVariable<F>> for SymbolicExpression<F>

source§

fn from(value: SymbolicVariable<F>) -> Self

Converts to this type from the input type.
source§

impl<F: Field> Mul<F> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Self

Performs the * operation. Read more
source§

impl<F: Field> Mul<SymbolicExpression<F>> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: SymbolicExpression<F>) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<SymbolicVariable<F>> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: SymbolicVariable<F>) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Self) -> Self

Performs the * operation. Read more
source§

impl<F: Field> MulAssign<F> for SymbolicExpression<F>

source§

fn mul_assign(&mut self, rhs: F)

Performs the *= operation. Read more
source§

impl<F: Field> MulAssign for SymbolicExpression<F>

source§

fn mul_assign(&mut self, rhs: Self)

Performs the *= operation. Read more
source§

impl<F: Field> Neg for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self

Performs the unary - operation. Read more
source§

impl<F: Field> Product<F> for SymbolicExpression<F>

source§

fn product<I: Iterator<Item = F>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by +multiplying the items.
source§

impl<F: Field> Product for SymbolicExpression<F>

source§

fn product<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by +multiplying the items.
source§

impl<F: Field> Sub<F> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Self

Performs the - operation. Read more
source§

impl<F: Field> Sub<SymbolicExpression<F>> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: SymbolicExpression<F>) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<SymbolicVariable<F>> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: SymbolicVariable<F>) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self

Performs the - operation. Read more
source§

impl<F: Field> SubAssign<F> for SymbolicExpression<F>

source§

fn sub_assign(&mut self, rhs: F)

Performs the -= operation. Read more
source§

impl<F: Field> SubAssign for SymbolicExpression<F>

source§

fn sub_assign(&mut self, rhs: Self)

Performs the -= operation. Read more
source§

impl<F: Field> Sum<F> for SymbolicExpression<F>

source§

fn sum<I: Iterator<Item = F>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by “summing up” the items.
source§

impl<F: Field> Sum for SymbolicExpression<F>

source§

fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by “summing up” the items.

Auto Trait Implementations§

§

impl<F> Freeze for SymbolicExpression<F>
where F: Freeze,

§

impl<F> RefUnwindSafe for SymbolicExpression<F>
where diff --git a/p3_frontend/struct.FWrap.html b/p3_frontend/struct.FWrap.html index 1a8e9c47b4..105a0d54ca 100644 --- a/p3_frontend/struct.FWrap.html +++ b/p3_frontend/struct.FWrap.html @@ -18,14 +18,14 @@ P: PackedField<Scalar = Self>,

§

fn shifted_powers_packed<P>(&self, start: Self) -> PackedPowers<Self, P>
where P: PackedField<Scalar = Self>,

§

fn dot_product<const N: usize>(u: &[Self; N], v: &[Self; N]) -> Self

§

fn try_div<Rhs>(self, rhs: Rhs) -> Option<Self::Output>
where Rhs: Field, - Self: Mul<Rhs>,

source§

impl<F: Field> Add for FWrap<F>

§

type Output = FWrap<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self

Performs the + operation. Read more
source§

impl<F: Field> AddAssign for FWrap<F>

source§

fn add_assign(&mut self, rhs: Self)

Performs the += operation. Read more
source§

impl<F: Clone + Field> Clone for FWrap<F>

source§

fn clone(&self) -> FWrap<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug + Field> Debug for FWrap<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Default + Field> Default for FWrap<F>

source§

fn default() -> FWrap<F>

Returns the “default value” for a type. Read more
source§

impl<'de, F: PrimeField> Deserialize<'de> for FWrap<F>

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where - D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<F: Field> Display for FWrap<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> Div for FWrap<F>

§

type Output = FWrap<F>

The resulting type after applying the / operator.
source§

fn div(self, rhs: Self) -> Self

Performs the / operation. Read more
source§

impl<F: PrimeField + Hash> Field for FWrap<F>

§

type Packing = FWrap<F>

source§

fn is_zero(&self) -> bool

source§

fn try_inverse(&self) -> Option<Self>

The multiplicative inverse of this field element, if it exists. Read more
source§

fn order() -> BigUint

§

fn is_one(&self) -> bool

§

fn mul_2exp_u64(&self, exp: u64) -> Self

self * 2^exp
§

fn div_2exp_u64(&self, exp: u64) -> Self

self / 2^exp
§

fn exp_u64_generic<AF>(val: AF, power: u64) -> AF
where + Self: Mul<Rhs>,

source§

impl<F: Field> Add for FWrap<F>

§

type Output = FWrap<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self

Performs the + operation. Read more
source§

impl<F: Field> AddAssign for FWrap<F>

source§

fn add_assign(&mut self, rhs: Self)

Performs the += operation. Read more
source§

impl<F: Clone + Field> Clone for FWrap<F>

source§

fn clone(&self) -> FWrap<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug + Field> Debug for FWrap<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Default + Field> Default for FWrap<F>

source§

fn default() -> FWrap<F>

Returns the “default value” for a type. Read more
source§

impl<'de, F: PrimeField> Deserialize<'de> for FWrap<F>

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where + D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<F: Field> Display for FWrap<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> Div for FWrap<F>

§

type Output = FWrap<F>

The resulting type after applying the / operator.
source§

fn div(self, rhs: Self) -> Self

Performs the / operation. Read more
source§

impl<F: PrimeField + Hash> Field for FWrap<F>

§

type Packing = FWrap<F>

source§

fn is_zero(&self) -> bool

source§

fn try_inverse(&self) -> Option<Self>

The multiplicative inverse of this field element, if it exists. Read more
source§

fn order() -> BigUint

§

fn is_one(&self) -> bool

§

fn mul_2exp_u64(&self, exp: u64) -> Self

self * 2^exp
§

fn div_2exp_u64(&self, exp: u64) -> Self

self / 2^exp
§

fn exp_u64_generic<AF>(val: AF, power: u64) -> AF
where AF: AbstractField<F = Self>,

Exponentiation by a u64 power. This is similar to exp_u64, but more general in that it can be used with AbstractFields, not just this concrete field. Read more
§

fn inverse(&self) -> Self

§

fn halve(&self) -> Self

Computes input/2. Should be overwritten by most field implementations to use bitshifts. Will error if the field characteristic is 2.
§

fn bits() -> usize

source§

impl<F: Hash + Field> Hash for FWrap<F>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<F: Field> Mul for FWrap<F>

§

type Output = FWrap<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Self) -> Self

Performs the * operation. Read more
source§

impl<F: Field> MulAssign for FWrap<F>

source§

fn mul_assign(&mut self, rhs: Self)

Performs the *= operation. Read more
source§

impl<F: Field> Neg for FWrap<F>

§

type Output = FWrap<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<F: Ord + Field> Ord for FWrap<F>

source§

fn cmp(&self, other: &FWrap<F>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<F: Field> Mul for FWrap<F>

§

type Output = FWrap<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Self) -> Self

Performs the * operation. Read more
source§

impl<F: Field> MulAssign for FWrap<F>

source§

fn mul_assign(&mut self, rhs: Self)

Performs the *= operation. Read more
source§

impl<F: Field> Neg for FWrap<F>

§

type Output = FWrap<F>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<F: Ord + Field> Ord for FWrap<F>

source§

fn cmp(&self, other: &FWrap<F>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl<F: PartialEq + Field> PartialEq for FWrap<F>

source§

fn eq(&self, other: &FWrap<F>) -> bool

This method tests for self and other values to be equal, and is used @@ -34,7 +34,7 @@ operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<F: PrimeField + Hash + Ord> PrimeField for FWrap<F>

source§

impl<F: PrimeField + Hash + Ord> PrimeField64 for FWrap<F>

source§

const ORDER_U64: u64 = 0u64

source§

fn as_canonical_u64(&self) -> u64

Return the representative of value that is less than ORDER_U64.
source§

impl<F: Field> Product for FWrap<F>

source§

fn product<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by multiplying the items.
source§

impl<F: PrimeField> Serialize for FWrap<F>

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where - S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<F: Field> Sub for FWrap<F>

§

type Output = FWrap<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self

Performs the - operation. Read more
source§

impl<F: Field> SubAssign for FWrap<F>

source§

fn sub_assign(&mut self, rhs: Self)

Performs the -= operation. Read more
source§

impl<F: Field> Sum for FWrap<F>

source§

fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by + S: Serializer,
Serialize this value into the given Serde serializer. Read more
source§

impl<F: Field> Sub for FWrap<F>

§

type Output = FWrap<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self

Performs the - operation. Read more
source§

impl<F: Field> SubAssign for FWrap<F>

source§

fn sub_assign(&mut self, rhs: Self)

Performs the -= operation. Read more
source§

impl<F: Field> Sum for FWrap<F>

source§

fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by “summing up” the items.
source§

impl<F: Copy + Field> Copy for FWrap<F>

source§

impl<F: Eq + Field> Eq for FWrap<F>

source§

impl<F: Field> Packable for FWrap<F>

source§

impl<F: Field> Send for FWrap<F>

source§

impl<F: Field> StructuralPartialEq for FWrap<F>

source§

impl<F: Field> Sync for FWrap<F>

Auto Trait Implementations§

§

impl<F> Freeze for FWrap<F>
where F: Freeze,

§

impl<F> RefUnwindSafe for FWrap<F>
where F: RefUnwindSafe,

§

impl<F> Unpin for FWrap<F>
where diff --git a/p3_frontend/struct.SymbolicVariable.html b/p3_frontend/struct.SymbolicVariable.html index 46a0c44ea8..f52304e832 100644 --- a/p3_frontend/struct.SymbolicVariable.html +++ b/p3_frontend/struct.SymbolicVariable.html @@ -15,7 +15,7 @@

Struct p3_frontend::SymbolicVariable

source ·
pub struct SymbolicVariable<F: Field>(pub Var, pub PhantomData<F>);
Expand description

A variable within the evaluation window, i.e. a column in either the local or next row.

-

Tuple Fields§

§0: Var§1: PhantomData<F>

Implementations§

source§

impl<F: Field> SymbolicVariable<F>

source

pub fn new_query(is_next: bool, column: usize) -> Self

source

pub fn new_public(index: usize) -> Self

Trait Implementations§

source§

impl<F: Field> Add<F> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<SymbolicExpression<F>> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: SymbolicExpression<F>) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<SymbolicVariable<F>> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: SymbolicVariable<F>) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Clone + Field> Clone for SymbolicVariable<F>

source§

fn clone(&self) -> SymbolicVariable<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug + Field> Debug for SymbolicVariable<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> Display for SymbolicVariable<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> From<SymbolicVariable<F>> for SymbolicExpression<F>

source§

fn from(value: SymbolicVariable<F>) -> Self

Converts to this type from the input type.
source§

impl<F: Field> Mul<F> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<SymbolicExpression<F>> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: SymbolicExpression<F>) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<SymbolicVariable<F>> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: SymbolicVariable<F>) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Self) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Sub<F> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<SymbolicExpression<F>> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: SymbolicExpression<F>) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<SymbolicVariable<F>> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: SymbolicVariable<F>) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Copy + Field> Copy for SymbolicVariable<F>

Auto Trait Implementations§

§

impl<F> Freeze for SymbolicVariable<F>

§

impl<F> RefUnwindSafe for SymbolicVariable<F>
where +

Tuple Fields§

§0: Var§1: PhantomData<F>

Implementations§

source§

impl<F: Field> SymbolicVariable<F>

source

pub fn new_query(is_next: bool, column: usize) -> Self

source

pub fn new_public(index: usize) -> Self

Trait Implementations§

source§

impl<F: Field> Add<F> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: F) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<SymbolicExpression<F>> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: SymbolicExpression<F>) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add<SymbolicVariable<F>> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: SymbolicVariable<F>) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Field> Add for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
source§

impl<F: Clone + Field> Clone for SymbolicVariable<F>

source§

fn clone(&self) -> SymbolicVariable<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug + Field> Debug for SymbolicVariable<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> Display for SymbolicVariable<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> From<SymbolicVariable<F>> for SymbolicExpression<F>

source§

fn from(value: SymbolicVariable<F>) -> Self

Converts to this type from the input type.
source§

impl<F: Field> Mul<F> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<SymbolicExpression<F>> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: SymbolicExpression<F>) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul<SymbolicVariable<F>> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: SymbolicVariable<F>) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Mul for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Self) -> Self::Output

Performs the * operation. Read more
source§

impl<F: Field> Sub<F> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: F) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<SymbolicExpression<F>> for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: SymbolicExpression<F>) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub<SymbolicVariable<F>> for SymbolicExpression<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: SymbolicVariable<F>) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Field> Sub for SymbolicVariable<F>

§

type Output = SymbolicExpression<F>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl<F: Copy + Field> Copy for SymbolicVariable<F>

Auto Trait Implementations§

§

impl<F> Freeze for SymbolicVariable<F>

§

impl<F> RefUnwindSafe for SymbolicVariable<F>
where F: RefUnwindSafe,

§

impl<F> Send for SymbolicVariable<F>

§

impl<F> Sync for SymbolicVariable<F>

§

impl<F> Unpin for SymbolicVariable<F>
where F: Unpin,

§

impl<F> UnwindSafe for SymbolicVariable<F>
where F: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/search-index.js b/search-index.js index 7d66b3e999..e4c3c28d6c 100644 --- a/search-index.js +++ b/search-index.js @@ -1,11 +1,11 @@ var searchIndex = new Map(JSON.parse('[\ ["halo2",{"t":"","n":[],"q":[],"i":[],"f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],\ -["halo2_backend",{"t":"CCCCCCRRRTKKRKTRRTMMMMMNMMMMMMMNNMMHNNMNNMMKPPPKGKNNNNNNNNNNNNNNNNNNNNNNKKKKRRRRRRRKKFKNNMNNNNNNNNNNNNNHNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMHNMNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNMNNNNNNNNNNNNNNNNMNNPPPGPPPPPFFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNCNNNNNNNNNNNNNNNNNNNNNCNNNNNNOHHFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNHHNKFGFFKKFRPRFFPKONNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNCNNNNNMNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNFTKRRKRRKKRKRKTTRKNNNMMMNNMNNMMNMNNNMNMNMNNNNMNNNMMMMNMMMMMNNNNMNMCCCCFFINNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNCCCCFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFKRFFKKKKKNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNMNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNMNMMNNNNNNNNNNNNNNNNMNHHMNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNN","n":["arithmetic","helpers","multicore","plonk","poly","transcript","AffineExt","Base","Base","CURVE_ID","CurveAffine","CurveExt","CurveExt","Field","ONE","ScalarExt","ScalarExt","ZERO","a","a","b","b","coordinates","cube","double","endo","from_xy","hash_to_curve","invert","is_on_curve","is_on_curve","is_zero","is_zero_vartime","jacobian_coordinates","new_jacobian","parallelize","pow","pow_vartime","random","sqrt","sqrt_alt","sqrt_ratio","square","CurveRead","Processed","RawBytes","RawBytesUnchecked","SerdeCurveAffine","SerdeFormat","SerdePrimeField","borrow","borrow_mut","byte_length","clone","clone_into","deref","deref_mut","drop","fmt","from","init","into","read","read","read","to_owned","try_from","try_into","type_id","vzip","write","write","IndexedParallelIterator","IntoParallelIterator","IntoParallelRefIterator","IntoParallelRefMutIterator","Item","Item","Item","Item","Iter","Iter","Iter","ParallelIterator","ParallelSliceMut","Scope","TryFoldAndReduce","all","any","as_parallel_slice_mut","borrow","borrow_mut","by_exponential_blocks","by_uniform_blocks","chain","chunks","cloned","cmp","collect","collect_into_vec","collect_vec_list","copied","count","current_num_threads","deref","deref_mut","drive","drive_unindexed","drop","enumerate","eq","filter","filter_map","find_any","find_first","find_last","find_map_any","find_map_first","find_map_last","flat_map","flat_map_iter","flatten","flatten_iter","fmt","fold","fold_chunks","fold_chunks_with","fold_with","for_each","for_each_init","for_each_with","from","ge","gt","init","inspect","interleave","interleave_shortest","intersperse","into","into_par_iter","join","le","len","lt","map","map_init","map_with","max","max_by","max_by_key","min","min_by","min_by_key","ne","opt_len","panic_fuse","par_chunk_by_mut","par_chunks_exact_mut","par_chunks_mut","par_iter","par_iter_mut","par_rchunks_exact_mut","par_rchunks_mut","par_sort","par_sort_by","par_sort_by_cached_key","par_sort_by_key","par_sort_unstable","par_sort_unstable_by","par_sort_unstable_by_key","par_split_inclusive_mut","par_split_mut","partial_cmp","partition","partition_map","position_any","position_first","position_last","positions","product","reduce","reduce_with","rev","scope","skip","skip_any","skip_any_while","spawn","spawn_broadcast","step_by","sum","take","take_any","take_any_while","try_fold","try_fold_and_reduce","try_fold_with","try_for_each","try_for_each_init","try_for_each_with","try_from","try_into","try_reduce","try_reduce_with","type_id","unzip","unzip_into_vecs","update","vzip","while_some","with_max_len","with_min_len","with_producer","zip","zip_eq","BoundsFailure","ColumnNotInPermutation","ConstraintSystemFailure","Error","InstanceTooLarge","InvalidInstances","NotEnoughRowsAvailable","Opening","Other","PinnedVerificationKey","ProvingKey","Transcript","VerifyingKey","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","fixed_commitments","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_bytes","from_bytes","get_domain","get_vk","hash_into","init","init","init","init","into","into","into","into","keygen","not_enough_rows_available","pinned","prover","read","read","source","to_bytes","to_bytes","to_owned","to_owned","to_string","transcript_repr","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verifier","vzip","vzip","vzip","vzip","write","write","current_k","keygen_pk","keygen_vk","Prover","ProverSingle","borrow","borrow","borrow_mut","borrow_mut","commit_phase","commit_phase","create_proof","create_proof","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","new","new","new_with_engine","new_with_engine","phases","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","BatchVerifier","add_proof","borrow","borrow_mut","default","deref","deref_mut","drop","finalize","fmt","from","init","into","new","try_from","try_into","type_id","verify_proof","verify_proof_single","vzip","Basis","Coeff","Error","EvaluationDomain","ExtendedLagrangeCoeff","Guard","LagrangeBasis","LagrangeCoeff","MSMAccumulator","OpeningError","Output","PinnedEvaluationDomain","Polynomial","SamplingError","VerificationStrategy","_marker","add","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","coeff_from_vec","coeff_to_extended","commitment","constant_extended","constant_lagrange","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","divide_by_vanishing_poly","drop","drop","drop","drop","drop","drop","drop","empty_coeff","empty_extended","empty_lagrange","extended_k","extended_len","extended_to_coeff","finalize","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get_extended_omega","get_omega","get_omega_inv","get_quotient_poly_degree","index","index","index","index_mut","index_mut","index_mut","init","init","init","init","init","init","init","into","into","into","into","into","into","into","ipa","iter","iter_mut","k","kzg","l_i_range","lagrange_extended","lagrange_from_vec","lagrange_to_coeff","mul","new","new","new_empty","new_lagrange_from_vec","num_coeffs","pinned","process","rotate","rotate_extended","rotate_omega","sub","sub","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","values","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Blind","COMMIT_INSTANCE","CommitmentScheme","Curve","Guard","MSM","MSM","MSMAccumulator","Params","ParamsProver","ParamsProver","ParamsVerifier","ParamsVerifier","Prover","QUERY_INSTANCE","QUERY_INSTANCE","Scalar","Verifier","add","add_assign","add_assign","add_msm","append_term","bases","borrow","borrow_mut","check","clone","clone_into","commit","commit_lagrange","create_proof","create_proof_with_engine","default","deref","deref_mut","downsize","drop","empty_msm","eq","eval","fmt","from","init","into","k","mul","mul_assign","mul_assign","n","new","new","new","new","new_params","read","read_params","scalars","scale","to_owned","try_from","try_into","type_id","verify_proof","vzip","write","commitment","msm","multiopen","strategy","IPACommitmentScheme","ParamsIPA","ParamsVerifierIPA","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","commit","commit_lagrange","create_proof_with_engine","deref","deref","deref_mut","deref_mut","downsize","drop","drop","empty_msm","fmt","fmt","from","from","init","init","into","into","k","n","new","new_params","read","read_params","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","write","MSMIPA","add_constant_term","add_msm","add_msm","add_to_g_scalars","add_to_u_scalar","add_to_w_scalar","append_term","bases","borrow","borrow_mut","check","clone","clone_into","deref","deref_mut","drop","eval","fmt","from","init","into","new","scalars","scale","to_owned","try_from","try_into","type_id","vzip","ProverIPA","VerifierIPA","borrow","borrow","borrow_mut","borrow_mut","create_proof_with_engine","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","new","new","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","Accumulator","AccumulatorStrategy","GuardIPA","SingleStrategy","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","compute_g","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","finalize","finalize","fmt","fmt","fmt","fmt","from","from","from","from","g","init","init","init","init","into","into","into","into","new","new","process","process","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","u_packed","use_challenges","use_g","vzip","vzip","vzip","vzip","commitment","msm","multiopen","strategy","KZGCommitmentScheme","ParamsKZG","ParamsVerifierKZG","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","commit","commit_lagrange","commit_lagrange","deref","deref","deref","deref_mut","deref_mut","deref_mut","downsize","downsize","drop","drop","drop","empty_msm","empty_msm","fmt","fmt","fmt","from","from","from","from_parts","init","init","init","into","into","into","k","k","n","n","new","new_params","read","read","read_custom","read_custom","read_params","setup","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","verifier_params","vzip","vzip","vzip","write","write","write_custom","write_custom","DualMSM","MSMKZG","add_msm","add_msm","append_term","bases","borrow","borrow","borrow_mut","borrow_mut","check","check","clone","clone","clone_into","clone_into","combine_with_base","default","default","deref","deref","deref_mut","deref_mut","drop","drop","eval","fmt","fmt","from","from","init","init","into","into","new","new","scalars","scale","scale","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","ProverGWC","ProverSHPLONK","VerifierGWC","VerifierSHPLONK","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","create_proof_with_engine","create_proof_with_engine","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","fmt","fmt","fmt","fmt","from","from","from","from","init","init","init","init","into","into","into","into","new","new","new","new","new","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verify_proof","verify_proof","vzip","vzip","vzip","vzip","AccumulatorStrategy","GuardKZG","SingleStrategy","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","finalize","finalize","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","new","new","new","new","process","process","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","with","Blake2bRead","Blake2bWrite","Challenge255","ChallengeScalar","EncodedChallenge","Input","Keccak256Read","Keccak256Write","Transcript","TranscriptRead","TranscriptReadBuffer","TranscriptWrite","TranscriptWriterBuffer","as_challenge_scalar","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","common_point","common_point","common_point","common_point","common_point","common_scalar","common_scalar","common_scalar","common_scalar","common_scalar","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","finalize","finalize","finalize","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","get_scalar","get_scalar","init","init","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","new","new","read_n_points","read_n_scalars","read_point","read_point","read_point","read_scalar","read_scalar","read_scalar","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge_scalar","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","write_point","write_point","write_point","write_scalar","write_scalar","write_scalar"],"q":[[0,"halo2_backend"],[6,"halo2_backend::arithmetic"],[43,"halo2_backend::helpers"],[72,"halo2_backend::multicore"],[216,"halo2_backend::plonk"],[309,"halo2_backend::plonk::Error"],[310,"halo2_backend::plonk::keygen"],[312,"halo2_backend::plonk::prover"],[349,"halo2_backend::plonk::verifier"],[369,"halo2_backend::poly"],[540,"halo2_backend::poly::commitment"],[606,"halo2_backend::poly::ipa"],[610,"halo2_backend::poly::ipa::commitment"],[655,"halo2_backend::poly::ipa::msm"],[685,"halo2_backend::poly::ipa::multiopen"],[717,"halo2_backend::poly::ipa::strategy"],[790,"halo2_backend::poly::kzg"],[794,"halo2_backend::poly::kzg::commitment"],[867,"halo2_backend::poly::kzg::msm"],[916,"halo2_backend::poly::kzg::multiopen"],[981,"halo2_backend::poly::kzg::strategy"],[1041,"halo2_backend::transcript"],[1196,"pasta_curves::arithmetic::curves"],[1197,"subtle"],[1198,"ff"],[1199,"core::cmp"],[1200,"core::ops::arith"],[1201,"core::ops::function"],[1202,"alloc::boxed"],[1203,"core::marker"],[1204,"core::clone"],[1205,"core::convert"],[1206,"rand_core"],[1207,"core::fmt"],[1208,"std::io::error"],[1209,"std::io"],[1210,"core::result"],[1211,"core::any"],[1212,"rayon::iter"],[1213,"rayon::slice"],[1214,"rayon::iter::blocks"],[1215,"rayon::iter::chain"],[1216,"rayon::iter::chunks"],[1217,"rayon::iter::cloned"],[1218,"alloc::vec"],[1219,"alloc::collections::linked_list"],[1220,"rayon::iter::copied"],[1221,"rayon::iter::plumbing"],[1222,"rayon::iter::enumerate"],[1223,"rayon::iter::filter"],[1224,"rayon::iter::filter_map"],[1225,"core::option"],[1226,"rayon::iter::flat_map"],[1227,"rayon::iter::flat_map_iter"],[1228,"core::iter::traits::collect"],[1229,"rayon::iter::flatten"],[1230,"rayon::iter::flatten_iter"],[1231,"rayon_core::scope"],[1232,"rayon::iter::fold"],[1233,"rayon::iter::fold_chunks"],[1234,"rayon::iter::fold_chunks_with"],[1235,"rayon::iter::inspect"],[1236,"rayon::iter::interleave"],[1237,"rayon::iter::interleave_shortest"],[1238,"rayon::iter::intersperse"],[1239,"rayon::iter::map"],[1240,"rayon::iter::map_with"],[1241,"rayon::iter::panic_fuse"],[1242,"rayon::slice::chunk_by"],[1243,"rayon::slice::chunks"],[1244,"rayon::slice::rchunks"],[1245,"core::default"],[1246,"either"],[1247,"rayon::iter::positions"],[1248,"core::iter::traits::accum"],[1249,"rayon::iter::rev"],[1250,"rayon::iter::skip"],[1251,"rayon::iter::skip_any"],[1252,"rayon::iter::skip_any_while"],[1253,"rayon_core::broadcast"],[1254,"rayon::iter::step_by"],[1255,"rayon::iter::take"],[1256,"rayon::iter::take_any"],[1257,"rayon::iter::take_any_while"],[1258,"rayon::iter::try_fold"],[1259,"rayon::iter::private"],[1260,"halo2_middleware::multicore"],[1261,"rayon::iter::update"],[1262,"rayon::iter::while_some"],[1263,"rayon::iter::len"],[1264,"rayon::iter::zip"],[1265,"rayon::iter::zip_eq"],[1266,"halo2_backend::plonk::error"],[1267,"halo2_backend::poly::domain"],[1268,"core::error"],[1269,"alloc::string"],[1270,"halo2_middleware::circuit"],[1271,"std::collections::hash::map"],[1272,"halo2_middleware::zal::traits"],[1273,"halo2_middleware::zal::impls"],[1274,"halo2_backend::plonk::verifier::batch"],[1275,"halo2_backend::poly::strategy"],[1276,"core::ops::range"],[1277,"core::iter::traits::iterator"],[1278,"halo2_middleware::poly"],[1279,"halo2_backend::poly::ipa::multiopen::prover"],[1280,"halo2_backend::poly::ipa::multiopen::verifier"],[1281,"pairing"],[1282,"halo2_backend::poly::kzg::multiopen::gwc::prover"],[1283,"halo2_backend::poly::kzg::multiopen::shplonk::prover"],[1284,"halo2_backend::poly::kzg::multiopen::gwc::verifier"],[1285,"halo2_backend::poly::kzg::multiopen::shplonk::verifier"],[1286,"halo2_middleware"],[1287,"rayon_core"],[1288,"rayon_core::join"],[1289,"halo2_backend::poly::ipa::commitment::prover"],[1290,"halo2_backend::poly::ipa::commitment::verifier"]],"i":[0,0,0,0,0,0,11,11,4,11,0,0,4,0,12,11,4,12,11,4,11,4,4,12,12,11,4,11,12,11,4,12,12,11,11,0,12,12,12,12,12,12,12,0,31,31,31,0,0,0,31,31,37,31,31,31,31,31,31,31,31,31,34,37,38,31,31,31,31,31,37,38,0,0,0,0,49,87,88,43,49,87,88,0,0,0,0,43,43,44,68,68,45,45,43,45,43,45,43,45,43,43,43,0,68,68,45,43,68,45,45,43,43,43,43,43,43,43,43,43,43,43,43,68,43,45,45,43,43,43,43,68,45,45,68,43,45,45,43,68,49,0,45,45,45,43,43,43,43,43,43,43,43,43,45,43,43,44,44,44,87,88,44,44,44,44,44,44,44,44,44,44,44,45,43,43,45,45,45,45,43,43,43,45,0,45,43,43,68,68,45,43,45,43,43,43,110,43,43,43,43,68,68,43,43,68,43,45,43,68,43,45,45,45,45,45,121,121,121,0,121,121,121,121,121,0,0,121,0,121,119,123,120,121,119,123,120,119,120,119,120,121,119,123,120,121,119,123,120,121,119,123,120,119,121,121,119,123,120,121,121,119,123,120,119,120,119,120,119,121,119,123,120,121,119,123,120,0,121,119,0,119,120,121,119,120,119,120,121,119,121,119,123,120,121,119,123,120,121,119,123,120,0,121,119,123,120,119,120,202,0,0,0,0,134,140,134,140,134,140,134,140,134,140,134,140,134,140,134,140,134,140,134,140,134,140,134,140,134,140,140,134,140,134,140,134,140,134,140,0,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,0,0,143,0,0,0,0,0,0,0,0,168,154,146,0,0,154,0,148,148,126,153,154,150,151,152,148,126,153,154,150,151,152,148,126,150,151,152,148,126,150,151,152,148,126,126,0,126,126,126,153,154,150,151,152,148,148,126,153,154,150,151,152,148,148,126,126,153,154,150,151,152,148,126,126,126,126,126,126,146,126,153,154,150,151,152,148,126,153,154,150,151,152,148,126,126,126,126,148,148,148,148,148,148,126,153,154,150,151,152,148,126,153,154,150,151,152,148,0,148,148,126,0,126,126,126,126,148,146,126,148,148,148,126,146,148,126,126,148,148,126,150,151,152,148,126,153,154,150,151,152,148,126,153,154,150,151,152,148,126,153,154,150,151,152,148,148,126,153,154,150,151,152,148,0,164,0,136,145,0,164,145,0,0,136,0,136,0,137,145,136,0,160,160,160,161,161,161,160,160,161,160,160,162,133,137,137,160,160,160,133,160,164,160,161,160,160,160,160,133,160,160,160,133,162,137,145,160,136,133,136,161,161,160,160,160,160,145,160,133,0,0,0,0,0,0,0,169,171,169,171,169,169,169,169,0,169,171,169,171,169,169,171,169,169,171,169,171,169,171,169,171,169,169,169,171,169,171,169,169,171,169,171,169,171,0,169,171,169,0,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,0,0,173,174,173,174,173,173,174,173,174,173,174,173,174,173,174,173,174,173,174,173,174,173,174,173,174,173,174,174,173,174,0,0,0,0,172,175,176,177,172,175,176,177,172,175,172,175,172,172,175,176,177,172,175,176,177,172,175,176,177,176,177,172,175,176,177,172,175,176,177,175,172,175,176,177,172,175,176,177,176,177,176,177,172,175,172,175,176,177,172,175,176,177,172,175,176,177,175,172,172,172,175,176,177,0,0,0,0,0,0,0,178,180,182,178,180,182,178,180,178,180,178,178,180,178,180,182,178,180,182,178,180,178,180,182,178,180,178,180,182,178,180,182,178,178,180,182,178,180,182,178,180,178,180,178,182,178,180,178,180,182,178,178,180,178,180,182,178,180,182,178,180,182,178,178,180,182,178,180,178,180,0,0,181,183,181,181,181,183,181,183,181,183,181,183,181,183,181,181,183,181,183,181,183,181,183,181,181,183,181,183,181,183,181,183,181,183,181,181,183,181,183,181,183,181,183,181,183,181,183,0,0,0,0,185,187,186,188,185,187,186,188,185,186,185,187,186,188,185,187,186,188,185,187,186,188,185,187,186,188,185,187,186,188,185,187,186,188,185,187,186,188,185,187,186,186,188,185,187,186,188,185,187,186,188,185,187,186,188,187,188,185,187,186,188,0,0,0,189,190,191,189,190,191,189,190,191,189,190,191,189,190,191,189,190,191,189,190,191,190,191,189,190,191,189,190,191,189,190,191,189,190,191,190,190,191,191,190,191,189,190,191,189,190,191,189,190,191,189,190,191,189,190,191,190,0,0,0,0,0,127,0,0,0,0,0,0,0,127,194,195,196,197,193,198,194,195,196,197,193,198,194,195,196,197,193,198,194,195,196,197,193,198,128,194,195,196,197,128,194,195,196,197,194,195,196,197,193,193,198,198,194,195,196,197,193,198,194,195,196,197,193,198,199,196,197,194,195,196,197,193,198,194,195,196,197,193,198,127,198,200,199,194,194,195,195,196,196,197,197,193,198,194,195,196,197,193,198,127,198,0,0,147,194,195,147,194,195,128,194,195,196,197,128,194,195,196,197,193,198,194,195,196,197,193,198,194,195,196,197,193,198,194,195,196,197,193,198,194,195,196,197,193,198,138,196,197,138,196,197],"f":"``````````````````{{}c{}}000{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{n{{l{{h{}{{b{c}}{d{e}}{f{g}}}}}}}}}{A`Ab}{A`Ab}{{Af{}{{Ad{}}{b{}}}}}}{{{j{Ah}}}Ah}0{{{j{{Af{}{{b{c}}{d{e}}{Ad{g}}}}}}}{{Af{}{{b{c}}{d{e}}{Ad{g}}}}}A`A`{{h{}{{f{}}{b{}}{Aj{}}{Aj{}}}}{Al{c}}{Al{c}}}}{{cc}{{n{{h{}{{b{e}}{d{c}}{f{g}}}}}}}{A`Ab}{A`Ab}{{Af{}{{Ad{}}{b{}}}}}}{{{j{An}}}{{Bb{B`}}}}{{{j{Ah}}}{{n{Ah}}}}{{{j{{Af{}{{b{c}}{d{e}}{Ad{g}}}}}}}BdA`A`{{h{}{{f{}}{b{}}{Aj{}}{Aj{}}}}{Al{c}}{Al{c}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Bd{A`Ab}{A`Ab}{{Af{}{{Ad{}}{b{}}}}}}{{{j{Ah}}}Bd}{{{j{Ah}}}Bf}{{{j{{Af{}{{b{c}}{d{e}}{Ad{g}}}}}}}{{Bh{eee}}}A`A`{{h{}{{f{}}{b{}}{Aj{}}{Aj{}}}}{Al{c}}{Al{c}}}}{{ccc}{{n{{Af{}{{b{e}}{d{c}}{Ad{g}}}}}}}A`A`{{h{}{{f{}}{b{}}{Aj{}}{Aj{}}}}{Al{e}}{Al{e}}}}{{{j{Bj{Bl{c}}}}e}BnC`{{B`{{j{Bj{Bl{c}}}}Cb}}C`CdCf}}{{{j{Ah}}c}Ah{{Cj{{Bl{Ch}}}}}}0{cAhCl}9{{{j{Ah}}}{{Bh{BdAh}}}}{{{j{Ah}}{j{Ah}}}{{Bh{BdAh}}}}?```````{{{j{c}}}{{j{e}}}{}{}}{{{j{Bjc}}}{{j{Bje}}}{}{}}{CnCb}{{{j{Cn}}}Cn}{{{j{c}}{j{Bje}}}Bn{}{}}{Cb{{j{c}}}{}}{Cb{{j{Bjc}}}{}}{CbBn}{{{j{Cn}}{j{BjD`}}}Db}{cc{}}{{}Cb}{ce{}{}}{{{j{Bjc}}}{{Df{Dd}}}Dh}{{{j{Bjc}}Cn}{{Df{Dj}}}Dh}{{{j{Bjc}}Cn}{{Df{Dl}}}Dh}{{{j{c}}}e{}{}}{c{{Dn{e}}}{}{}}0{{{j{c}}}E`{}}6{{{j{Dj}}{j{Bjc}}Cn}{{Df{Bn}}}Eb}{{{j{Dl}}{j{Bjc}}Cn}{{Df{Bn}}}Eb}```````````````{{{Ef{}{{Ed{c}}}}e}BfC`{{B`{c}{{Aj{Bf}}}}CdC`}}0{{{j{BjEh}}}{{j{Bj{Bl{c}}}}}C`}{{{j{c}}}{{j{e}}}{}{}}{{{j{Bjc}}}{{j{Bje}}}{}{}}{Ej{{El{Ej}}}}{{EjCb}{{En{Ej}}}}{{{Ef{}{{Ed{c}}}}e}{{F`{{Ef{}{{Ed{c}}}}}}}C`{{Fb{}{{Ed{c}}}}}}{{EjCb}{{Fd{Ej}}}}{{{Ef{}{{Ed{c}}}}}{{Ff{{Ef{}{{Ed{c}}}}}}}C`}{{Eje}Fh{}{{Fb{}{{Ed{c}}}}}}{{{Ef{}{{Ed{c}}}}}eC`{{Fj{c}}}}{{Ej{j{Bj{Fl{c}}}}}Bn{}}{{{Ef{}{{Ed{c}}}}}{{Fn{{Fl{c}}}}}C`}{{{Ef{}{{Ed{c}}}}}{{G`{{Ef{}{{Ed{c}}}}}}}C`}{{{Ef{}{{Ed{c}}}}}CbC`}{{}Cb}{Cb{{j{c}}}{}}{Cb{{j{Bjc}}}{}}{{Eje}{}{}{{Gb{c}}}}{{{Ef{}{{Ed{c}}}}e}{}C`{{Gd{c}}}}{CbBn}{Ej{{Gf{Ej}}}}{{Ejc}BfFb}{{{Ef{}{{Ed{c}}}}e}{{Gh{{Ef{}{{Ed{c}}}}e}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}}{{{Ef{}{{Ed{c}}}}g}{{Gj{{Ef{}{{Ed{c}}}}g}}}C`C`{{B`{c}{{Aj{{Gl{e}}}}}}CdC`}}{{{Ef{}{{Ed{c}}}}e}{{Gl{c}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}}00{{{Ef{}{{Ed{c}}}}g}{{Gl{e}}}C`C`{{B`{c}{{Aj{{Gl{e}}}}}}CdC`}}00{{{Ef{}{{Ed{c}}}}g}{{Gn{{Ef{}{{Ed{c}}}}g}}}C`Fb{{B`{c}{{Aj{e}}}}CdC`}}{{{Ef{}{{Ed{c}}}}g}{{H`{{Ef{}{{Ed{c}}}}g}}}C`Hb{{B`{c}{{Aj{e}}}}CdC`}}{{{Ef{}{{Ed{c}}}}}{{Hd{{Ef{}{{Ed{c}}}}}}}C`}{{{Ef{}{{Ed{c}}}}}{{Hf{{Ef{}{{Ed{c}}}}}}}C`}{{{j{Hh}}{j{BjD`}}}{{Dn{BnHj}}}}{{{Ef{}{{Ed{c}}}}gi}{{Hl{{Ef{}{{Ed{c}}}}gi}}}C`C`{{B`{}{{Aj{e}}}}CdC`}{{B`{ec}{{Aj{e}}}}CdC`}}{{EjCbei}{{Hn{Ejei}}}C`{{B`{}{{Aj{c}}}}C`Cd}{}{{B`{cg}{{Aj{c}}}}C`Cd}}{{EjCbcg}{{I`{Ejcg}}}{C`Cf}{}{{B`{ce}{{Aj{c}}}}C`Cd}}{{{Ef{}{{Ed{c}}}}eg}{{Ib{{Ef{}{{Ed{c}}}}eg}}}C`{C`Cf}{{B`{ec}{{Aj{e}}}}CdC`}}{{{Ef{}{{Ed{c}}}}e}BnC`{{B`{c}}CdC`}}{{{Ef{}{{Ed{c}}}}gi}BnC`{}{{B`{}{{Aj{e}}}}CdC`}{{B`{{j{Bje}}c}}CdC`}}{{{Ef{}{{Ed{c}}}}eg}BnC`{C`Cf}{{B`{{j{Bje}}c}}CdC`}}{cc{}}{{Ejc}BfFb}0{{}Cb}{{{Ef{}{{Ed{c}}}}e}{{Id{{Ef{}{{Ed{c}}}}e}}}C`{{B`{{j{c}}}}CdC`}}{{Eje}{{If{Ej}}}{}{{Fb{}{{Ed{c}}}}}}{{Eje}{{Ih{Ej}}}{}{{Fb{}{{Ed{c}}}}}}{{{Ef{}{{Ed{c}}}}c}{{Ij{{Ef{}{{Ed{c}}}}}}}C`}{ce{}{}}{{{Fb{}{{Il{c}}{Ed{e}}}}}c{{Ef{}{{Ed{e}}}}}C`}{{ei}{{Bh{cg}}}C`{{In{}{{Aj{c}}}}C`}C`{{In{}{{Aj{g}}}}C`}}8{{{j{Ej}}}Cb}9{{{Ef{}{{Ed{c}}}}g}{{J`{{Ef{}{{Ed{c}}}}g}}}C`C`{{B`{c}{{Aj{e}}}}CdC`}}{{{Ef{}{{Ed{c}}}}gk}{{Jb{{Ef{}{{Ed{c}}}}gk}}}C`{}{{B`{}{{Aj{e}}}}CdC`}C`{{B`{{j{Bje}}c}{{Aj{i}}}}CdC`}}{{{Ef{}{{Ed{c}}}}ei}{{Jd{{Ef{}{{Ed{c}}}}ei}}}C`{C`Cf}C`{{B`{{j{Bje}}c}{{Aj{g}}}}CdC`}}{{{Ef{}{{Ed{c}}}}}{{Gl{c}}}C`}{{{Ef{}{{Ed{c}}}}e}{{Gl{c}}}C`{CdC`{B`{{j{c}}{j{c}}}{{Aj{Fh}}}}}}{{{Ef{}{{Ed{c}}}}g}{{Gl{c}}}C`{AbC`}{CdC`{B`{{j{c}}}{{Aj{e}}}}}}210?{{{j{{Ef{}{{Ed{c}}}}}}}{{Gl{Cb}}}C`}{{{Ef{}{{Ed{c}}}}}{{Jf{{Ef{}{{Ed{c}}}}}}}C`}{{{j{BjEh}}e}{{Jh{ce}}}C`{{B`{{j{c}}{j{c}}}{{Aj{Bf}}}}C`Cd}}{{{j{BjEh}}Cb}{{Jj{c}}}C`}{{{j{BjEh}}Cb}{{Jl{c}}}C`}{{{j{{Jn{}{{Il{c}}{Ed{e}}}}}}}c{{Ef{}{{Ed{e}}}}}C`}{{{j{Bj{K`{}{{Il{c}}{Ed{e}}}}}}}c{{Ef{}{{Ed{e}}}}}C`}{{{j{BjEh}}Cb}{{Kb{c}}}C`}{{{j{BjEh}}Cb}{{Kd{c}}}C`}{{{j{BjEh}}}Bn}{{{j{BjEh}}e}BnC`{{B`{{j{c}}{j{c}}}{{Aj{Fh}}}}Cd}}{{{j{BjEh}}g}BnC`{AbC`}{{B`{{j{c}}}{{Aj{e}}}}Cd}}{{{j{BjEh}}g}BnC`Ab{{B`{{j{c}}}{{Aj{e}}}}Cd}}320{{{j{BjEh}}e}{{Kf{ce}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}}{{{j{BjEh}}e}{{Kh{ce}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}}{{Ejc}{{Gl{Fh}}}Fb}{{{Ef{}{{Ed{c}}}}e}{{Bh{gi}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}{KjC`{Kl{c}}}{KjC`{Kl{c}}}}{{{Ef{}{{Ed{c}}}}i}{{Bh{km}}}C`C`C`{{B`{c}{{Aj{{Kn{eg}}}}}}CdC`}{KjC`{Kl{e}}}{KjC`{Kl{g}}}}{{Eje}{{Gl{Cb}}}{}{{B`{c}{{Aj{Bf}}}}CdC`}}00{{Eje}{{L`{Eje}}}{}{{B`{c}{{Aj{Bf}}}}CdC`}}{{{Ef{}{{Ed{c}}}}}eC`{C`{Lb{c}}Lb}}{{{Ef{}{{Ed{c}}}}eg}cC`{{B`{}{{Aj{c}}}}CdC`}{{B`{cc}{{Aj{c}}}}CdC`}}{{{Ef{}{{Ed{c}}}}e}{{Gl{c}}}C`{{B`{cc}{{Aj{c}}}}CdC`}}{Ej{{Ld{Ej}}}}{ecC`{{In{{j{Hh}}}{{Aj{c}}}}C`}}{{EjCb}{{Lf{Ej}}}}{{{Ef{}{{Ed{c}}}}Cb}{{Lh{{Ef{}{{Ed{c}}}}}}}C`}{{{Ef{}{{Ed{c}}}}e}{{Lj{{Ef{}{{Ed{c}}}}e}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}}{{{j{Hh}}c}Bn{{In{{j{Hh}}}}C`}}{{{j{Hh}}c}Bn{{B`{{j{Hh}}Ll}}C`Cd}}{{EjCb}{{Ln{Ej}}}}{{{Ef{}{{Ed{c}}}}}eC`{C`{M`{c}}M`}}{{EjCb}{{Mb{Ej}}}}{{{Ef{}{{Ed{c}}}}Cb}{{Md{{Ef{}{{Ed{c}}}}}}}C`}{{{Ef{}{{Ed{c}}}}e}{{Mf{{Ef{}{{Ed{c}}}}e}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}}{{{Ef{}{{Ed{c}}}}gk}{{Mh{{Ef{}{{Ed{c}}}}igk}}}C`{}{{B`{}{{Aj{e}}}}CdC`}{{Mj{}{{Aj{e}}}}C`}{{B`{ec}{{Aj{i}}}}CdC`}}{{Mlei}{{Dn{cg}}}{}{{B`{}{{Aj{c}}}}C`Cd}{}{{B`{c{Dn{cg}}}{{Aj{{Dn{cg}}}}}}C`Cd}}{{{Ef{}{{Ed{c}}}}ei}{{Mn{{Ef{}{{Ed{c}}}}gi}}}C`{CfC`}{{Mj{}{{Aj{e}}}}C`}{{B`{ec}{{Aj{g}}}}CdC`}}{{{Ef{}{{Ed{c}}}}g}eC`{{Mj{}{{Aj{Bn}}}}C`}{{B`{c}{{Aj{e}}}}CdC`}}{{{Ef{}{{Ed{c}}}}gk}iC`{}{{B`{}{{Aj{e}}}}CdC`}{{Mj{}{{Aj{Bn}}}}C`}{{B`{{j{Bje}}c}{{Aj{i}}}}CdC`}}{{{Ef{}{{Ed{c}}}}ei}gC`{C`Cf}{{Mj{}{{Aj{Bn}}}}C`}{{B`{{j{Bje}}c}{{Aj{g}}}}CdC`}}{c{{Dn{e}}}{}{}}0{{{Ef{}{{Ed{c}}}}gi}cC`{}{{B`{}{{Aj{e}}}}CdC`}{{B`{ee}{{Aj{c}}}}CdC`}}{{{Ef{}{{Ed{c}}}}g}{{Gl{c}}}C`{}{{B`{ee}{{Aj{c}}}}CdC`}}{{{j{c}}}E`{}}{{{Ef{}{{Ed{c}}}}}{{Bh{gk}}}C`C`{KjC`{Kl{e}}}C`{KjC`{Kl{i}}}}{{Ej{j{Bj{Fl{c}}}}{j{Bj{Fl{e}}}}}BnC`C`}{{{Ef{}{{Ed{c}}}}e}{{N`{{Ef{}{{Ed{c}}}}e}}}C`{{B`{{j{Bjc}}}}CdC`}}{ce{}{}}{{{Ef{}{{Ed{c}}}}}{{Nb{{Ef{}{{Ed{c}}}}}}}C`}{{EjCb}{{Nd{Ej}}}}{{EjCb}{{Nf{Ej}}}}{{Eje}{}{}{{Nh{c}}}}{{Ejc}{{Nj{Ej}}}Fb}{{Ejc}{{Nl{Ej}}}Fb}`````````````{{{j{c}}}{{j{e}}}{}{}}000{{{j{Bjc}}}{{j{Bje}}}{}{}}000{{{j{{Nn{c}}}}}{{Nn{c}}}{Cfh}}{{{j{{O`{c}}}}}{{O`{c}}}{Cfh}}{{{j{c}}{j{Bje}}}Bn{}{}}0{Cb{{j{c}}}{}}000{Cb{{j{Bjc}}}{}}000{CbBn}000{{{j{{Nn{c}}}}}{{j{{Fl{c}}}}}h}{{{j{Ob}}{j{BjD`}}}Db}0{{{j{{Nn{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{Of{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{O`{c}}}}{j{BjD`}}}Db{Odh}}{cc{}}{OhOb}111``{{{j{{Nn{c}}}}}{{j{Ol}}}h}{{{j{{O`{c}}}}}{{j{{Nn{c}}}}}h}{{{j{{Nn{c}}}}{j{Bjg}}}{{Df{Bn}}}h{{On{c}}}{{A@`{ce}}}}{{}Cb}000{ce{}{}}000`{A@bOb}{{{j{{Nn{c}}}}}{{Of{c}}}h}```{{{j{Ob}}}{{Gl{{j{A@d}}}}}}{{{j{{Nn{c}}}}Cn}{{Fl{Oj}}}Dj}{{{j{{O`{c}}}}Cn}{{Fl{Oj}}}Dj}{{{j{c}}}e{}{}}0{{{j{c}}}A@f{}}{{{j{{Nn{c}}}}}{}h}{c{{Dn{e}}}{}{}}0000000{{{j{c}}}E`{}}000`::::{{{j{{Nn{c}}}}{j{Bje}}Cn}{{Df{Bn}}}DjEb}{{{j{{O`{c}}}}{j{Bje}}Cn}{{Df{Bn}}}DjEb}`{{{j{e}}{Nn{c}}{j{A@h}}}{{Dn{{O`{c}}Ob}}}h{{A@j{c}}}}{{{j{e}}{j{A@h}}}{{Dn{{Nn{c}}Ob}}}h{{A@j{c}}}}``{{{j{c}}}{{j{e}}}{}{}}0{{{j{Bjc}}}{{j{Bje}}}{}{}}0{{{j{Bj{A@l{cegikm}}}}Oj{Fl{{Gl{Fl}}}}}{{Dn{{A@n{Cb}}Ob}}}AA`{{AAb{c}}}OnCl{{AAd{g}}}AAf}{{{j{Bj{AAh{cegikm}}}}Oj{Fl{{Fl{{Gl{Fl}}}}}}}{{Dn{{A@n{Cb}}Ob}}}AA`{{AAb{c}}}OnCl{{AAd{g}}}AAf}{{{A@l{cegikm}}}{{Dn{BnOb}}}AA`{{AAb{c}}}OnCl{{AAd{g}}}AAf}{{{AAh{cegikm}}}{{Dn{BnOb}}}AA`{{AAb{c}}}OnCl{{AAd{g}}}AAf}{Cb{{j{c}}}{}}0{Cb{{j{Bjc}}}{}}0{CbBn}0{{{j{{A@l{cegikm}}}}{j{BjD`}}}Db{OdAA`}{Od{AAb{c}}}{OdOn}{OdCl}{Od{AAd{g}}}{OdAAf}}{{{j{{AAh{cegikm}}}}{j{BjD`}}}Db{OdAA`}{Od{AAb{c}}}{OdOn}{OdCl}{Od{AAd{g}}}{OdAAf}}{cc{}}0{{}Cb}0{ce{}{}}0{{j{j{O`}}{Fl{Fl}}c{j{Bjg}}}{{Dn{{A@l{ikecgAAj}}Ob}}}ClOn{{AAd{e}}}AA`{{AAb{i}}}}{{j{j{O`}}{j{{Bl{{Fl{Fl}}}}}}c{j{Bjg}}}{{Dn{{AAh{ikecgAAj}}Ob}}}ClOn{{AAd{e}}}AA`{{AAb{i}}}}{{{AAl{c}}j{j{O`}}{Fl{Fl}}e{j{Bji}}}{{Dn{{A@l{kmgeic}}Ob}}}AAfClOn{{AAd{g}}}AA`{{AAb{k}}}}{{{AAl{c}}j{j{O`}}{j{{Bl{{Fl{Fl}}}}}}e{j{Bji}}}{{Dn{{AAh{kmgeic}}Ob}}}AAfClOn{{AAd{g}}}AA`{{AAb{k}}}}{{{j{{AAh{cegikm}}}}}{{j{{Bl{Oj}}}}}AA`{{AAb{c}}}OnCl{{AAd{g}}}AAf}{c{{Dn{e}}}{}{}}000{{{j{c}}}E`{}}077`{{{j{Bj{AAn{c}}}}{Fl{{Fl{Fl}}}}{Fl{Oj}}}Bnh}{{{j{c}}}{{j{e}}}{}{}}{{{j{Bjc}}}{{j{Bje}}}{}{}}{{}{{AAn{c}}}{Kjh}}{Cb{{j{c}}}{}}{Cb{{j{Bjc}}}{}}{CbBn}{{{AAn{c}}{j{{AB`{c}}}}{j{{Nn{c}}}}}Bfh}{{{j{{AAn{c}}}}{j{BjD`}}}Db{Odh}}{cc{}}{{}Cb}{ce{}{}}{{}{{AAn{c}}}h}>>={{j{j{Nn}}g{j{{Bl{{Fl{Fl}}}}}}{j{Bjk}}}{{Dn{Ob}}}AA`{{ABb{c}}}{{ABd{ce}}}On{{ABf{i}}}}{{j{j{Nn}}g{Fl{Fl}}{j{Bjk}}}{{Dn{Ob}}}AA`{{ABb{c}}}{{ABd{ce}}}On{{ABf{i}}}}3````````````````{{{ABh{ce}}{j{{ABh{ce}}}}}{{ABh{ce}}}AhABj}>>>>>>>======={{{j{{Ol{c}}}}}{{Ol{c}}}{CfAh}}{{{j{ABl}}}ABl}{{{j{ABn}}}ABn}{{{j{AC`}}}AC`}{{{j{{ABh{ce}}}}}{{ABh{ce}}}CfCf}{{{j{c}}{j{Bje}}}Bn{}{}}0000{{{j{{Ol{c}}}}{Fl{c}}}{{ABh{cABl}}}A`}{{{j{{Ol{c}}}}{ABh{cABl}}}{{ABh{cAC`}}}A`}`{{{j{{Ol{c}}}}c}{{ABh{cAC`}}}A`}{{{j{{Ol{c}}}}c}{{ABh{cABn}}}A`}{Cb{{j{c}}}{}}00000{{{j{{ABh{ce}}}}}{{j{{Bl{c}}}}}{}{}}1{Cb{{j{Bjc}}}{}}000000{{{j{Bj{ABh{ce}}}}}{{j{Bj{Bl{c}}}}}{}{}}{{{j{{Ol{c}}}}{ABh{cAC`}}}{{ABh{cAC`}}}A`}{CbBn}000000{{{j{{Ol{c}}}}}{{ABh{cABl}}}A`}{{{j{{Ol{c}}}}}{{ABh{cAC`}}}A`}{{{j{{Ol{c}}}}}{{ABh{cABn}}}A`}{{{j{{Ol{c}}}}}A@bA`}{{{j{{Ol{c}}}}}CbA`}{{{j{{Ol{c}}}}{ABh{cAC`}}}{{Fl{c}}}A`}{{{ABd{}{{Aj{c}}}}}Bf{}}{{{j{{Ol{c}}}}{j{BjD`}}}Db{OdAh}}{{{j{{ACb{c}}}}{j{BjD`}}}Db{OdAh}}{{{j{ACd}}{j{BjD`}}}Db}{{{j{ABl}}{j{BjD`}}}Db}{{{j{ABn}}{j{BjD`}}}Db}{{{j{AC`}}{j{BjD`}}}Db}{{{j{{ABh{ce}}}}{j{BjD`}}}DbOdOd}{cc{}}000000{{{j{{Ol{c}}}}}cA`}00;{{{j{{ABh{ce}}}}{ACf{Cb}}}{{j{{Bl{c}}}}}{}{}}{{{j{{ABh{ce}}}}ACh}{{j{{Bl{c}}}}}{}{}}{{{j{{ABh{ce}}}}Cb}{{j{c}}}{}{}}{{{j{Bj{ABh{ce}}}}ACh}{{j{Bj{Bl{c}}}}}{}{}}{{{j{Bj{ABh{ce}}}}{ACf{Cb}}}{{j{Bj{Bl{c}}}}}{}{}}{{{j{Bj{ABh{ce}}}}Cb}{{j{Bjc}}}{}{}}{{}Cb}000000{ce{}{}}000000`{{{j{{ABh{ce}}}}}{{`{{ACj{}{{Ed{{j{c}}}}}}}}}{}{}}{{{j{Bj{ABh{ce}}}}}{{`{{ACj{}{{Ed{{j{Bjc}}}}}}}}}{}{}}{{{j{{Ol{c}}}}}A@bA`}`{{{j{{Ol{c}}}}cce}{{Fl{c}}}A`{{Hb{}{{Ed{ACl}}}}Cf}}{{{j{{Ol{c}}}}Cb}{{ABh{cAC`}}}A`}{{{j{{Ol{c}}}}{Fl{c}}}{{ABh{cABn}}}A`}{{{j{{Ol{c}}}}{ABh{cABn}}}{{ABh{cABl}}}A`}{{{ABh{ce}}c}{{ABh{ce}}}AhABj}{j{{ABd{}{{Aj{c}}}}}{}}{{A@bA@b}{{Ol{c}}}A`}{{Cbc}{{ABh{ce}}}Cf{}}{{{Fl{c}}}{{ABh{cABn}}}Cf}{{{j{{ABh{ce}}}}}Cb{}{}}{{{j{{Ol{c}}}}}{{ACb{c}}}A`}{{{ABd{}{{Aj{c}}}}e}{{Dn{cOb}}}{}{{In{}{{Aj{{Dn{Ob}}}}}}}}{{{j{{ABh{cABn}}}}ACn}{{ABh{cABn}}}Ah}{{{j{{Ol{c}}}}{j{{ABh{cAC`}}}}ACn}{{ABh{cAC`}}}A`}{{{j{{Ol{c}}}}cACn}cA`}{{{j{{ABh{ce}}}}c}{{ABh{ce}}}AhABj}{{{ABh{ce}}{j{{ABh{ce}}}}}{{ABh{ce}}}AhABj}{{{j{c}}}e{}{}}0000{c{{Dn{e}}}{}{}}0000000000000{{{j{c}}}E`{}}000000`{ce{}{}}000000``````````````````{{{AD`{c}}{AD`{c}}}{{AD`{c}}}Ah}{{{j{Bj{AD`{c}}}}{AD`{c}}}BnAh}{{{j{Bj{AD`{c}}}}c}BnAh}{{{j{BjADb}}{j{ADb}}}Bn}{{{j{BjADb}}}Bn}{{{j{ADb}}}Fl}{{{j{c}}}{{j{e}}}{}{}}{{{j{Bjc}}}{{j{Bje}}}{}{}}{{{j{ADb}}{j{e}}}Bfh{{AAf{c}}}}{{{j{{AD`{c}}}}}{{AD`{c}}}Cf}{{{j{c}}{j{Bje}}}Bn{}{}}{{{j{ADd}}{j{e}}{j{{ABh{ABl}}}}AD`}{}h{{AAf{c}}}}{{{j{A@j}}{j{e}}{j{{ABh{ABn}}}}AD`}{}h{{AAf{c}}}}{{{j{AAb}}c{j{Bjg}}i}{{Df{Bn}}}ClOn{{AAd{e}}}{{Hb{}{{Ed{`}}}}Cf}}{{{j{AAb}}{j{c}}e{j{Bji}}k}{{Df{Bn}}}AAfClOn{{AAd{g}}}{{Hb{}{{Ed{`}}}}Cf}}{{}{{AD`{c}}}Ah}{Cb{{j{c}}}{}}{Cb{{j{Bjc}}}{}}{{{j{BjA@j}}A@b}Bn}{CbBn}{{{j{{ADh{}{{ADf{c}}}}}}}c{{ADb{e}}}h}{{{j{{AD`{c}}}}{j{{AD`{c}}}}}BfADj}{{{j{ADb}}{j{e}}}{}h{{AAf{c}}}}{{{j{{AD`{c}}}}{j{BjD`}}}DbOd}{cc{}}{{}Cb}{ce{}{}}{{{j{A@j}}}A@b}{{{AD`{c}}{AD`{c}}}{{AD`{c}}}Ah}{{{j{Bj{AD`{c}}}}{AD`{c}}}BnAh}{{{j{Bj{AD`{c}}}}c}BnAh}{{{j{A@j}}}Ch}{A@bADd}{jAAb}{{}{{ABb{}{{ADl{c}}{ADn{g}}}}}{{AE`{e}{{ADn{g}}}}}AA`{}}{{{j{Bjc}}}{{AD`{e}}}ClAh}{A@bc{}}{{{j{Bjc}}}{{Df{A@j}}}Dh}{{{j{Bjc}}}{{Df{e}}}Dh{}}{{{j{ADb}}}Fl}{{{j{BjADb}}}Bn}{{{j{c}}}e{}{}}{c{{Dn{e}}}{}{}}0{{{j{c}}}E`{}}{{{j{{ABb{}{{ADl{c}}{ADn{g}}}}}}{j{Bjk}}mg}{{Dn{cACd}}}{{AE`{e}{{ADn{g}}}}}AA`{}On{{ABf{i}}}{{Hb{}{{Ed{`}}}}Cf}}{ce{}{}}{{{j{A@j}}{j{Bjc}}}{{Df{Bn}}}Eb}```````{{{j{c}}}{{j{e}}}{}{}}0{{{j{Bjc}}}{{j{Bje}}}{}{}}0{{{j{{AEb{c}}}}}{{AEb{c}}}{Cfh}}{{{j{c}}{j{Bje}}}Bn{}{}}{{{j{{AEb{c}}}}{j{e}}{j{{ABh{ABl}}}}AD`}{}h{{AAf{c}}}}{{{j{{AEb{c}}}}{j{e}}{j{{ABh{ABn}}}}AD`}{}h{{AAf{c}}}}{{{j{e}}{j{{AEb{c}}}}g{j{Bjk}}{j{{ABh{ABl}}}}AD`}{{Df{Bn}}}h{{AAf{c}}}Cl{{On{c}}}{{AAd{ci}}}}{Cb{{j{c}}}{}}0{Cb{{j{Bjc}}}{}}0{{{j{Bj{AEb{c}}}}A@b}Bnh}{CbBn}0{{{j{{AEb{c}}}}}{{AEd{c}}}h}{{{j{{AEb{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{AEf{c}}}}{j{BjD`}}}Db{Odh}}{cc{}}0{{}Cb}0{ce{}{}}0{{{j{{AEb{c}}}}}A@bh}{{{j{{AEb{c}}}}}Chh}{A@b{{AEb{c}}}h}{A@bc{}}{{{j{Bjc}}}{{Df{{AEb{e}}}}}Dhh}{{{j{Bjc}}}{{Df{e}}}Dh{}}{{{j{c}}}e{}{}}{c{{Dn{e}}}{}{}}000{{{j{c}}}E`{}}0{{{AEd{c}}{j{Bjg}}}{{Dn{{AEh{c}}ACd}}}h{{On{c}}}{{ABf{ce}}}}::{{{j{{AEb{c}}}}{j{Bje}}}{{Df{Bn}}}hEb}`{{{j{Bj{AEd{c}}}}}Bnh}{{{j{Bj{AEd{c}}}}{j{{AEd{c}}}}}Bnh}0{{{j{Bj{AEd{c}}}}{j{Bl}}}Bnh}222{{{j{{AEd{c}}}}}Flh}{{{j{c}}}{{j{e}}}{}{}}{{{j{Bjc}}}{{j{Bje}}}{}{}}{{{j{{AEd{c}}}}{j{e}}}Bfh{{AAf{c}}}}{{{j{{AEd{c}}}}}{{AEd{c}}}{Cfh}}{{{j{c}}{j{Bje}}}Bn{}{}}{Cb{{j{c}}}{}}{Cb{{j{Bjc}}}{}}{CbBn}{{{j{{AEd{c}}}}{j{e}}}{}h{{AAf{c}}}}{{{j{{AEd{c}}}}{j{BjD`}}}Db{Odh}}{cc{}}{{}Cb}{ce{}{}}{{{j{{AB`{c}}}}}{{AEd{c}}}h}>{{{j{Bj{AEd{c}}}}}Bnh}{{{j{c}}}e{}{}}{c{{Dn{e}}}{}{}}0{{{j{c}}}E`{}}5``{{{j{c}}}{{j{e}}}{}{}}0{{{j{Bjc}}}{{j{Bje}}}{}{}}0{{{j{{AEj{c}}}}{j{e}}g{j{Bjk}}m}{{Df{Bn}}}h{{AAf{c}}}Cl{{On{c}}}{{AAd{ci}}}{{Hb{}{{Ed{{`{c}}}}}}Cf}}??>>=={{{j{{AEj{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{AEl{c}}}}{j{BjD`}}}Db{Odh}}<<;;::{{{j{{AEb{c}}}}}{{AEj{c}}}h}{{}{{AEl{c}}}h}888877{{{j{{AEl{c}}}}{j{Bjg}}i{AEd{c}}}{{Dn{kACd}}}h{{On{c}}}{{ABf{ce}}}{{Hb{}{{Ed{{`{c{AEd{c}}}}}}}}Cf}{}}==````77776666{{{j{{AEh{c}}}}}{{AEh{c}}}{Cfh}}{{{j{{AEn{c}}}}}{{AEn{c}}}{Cfh}}{{{j{c}}{j{Bje}}}Bn{}{}}0{{{j{{AEh{c}}}}{j{e}}}ch{{AAf{c}}}}{Cb{{j{c}}}{}}000{Cb{{j{Bjc}}}{}}000{CbBn}000{{{AF`{c}}}Bfh}{{{AFb{c}}}Bfh}{{{j{{AEh{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{AEn{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{AF`{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{AFb{c}}}}{j{BjD`}}}Db{Odh}}{cc{}}000`{{}Cb}000{ce{}{}}000{{{j{{AEb{c}}}}}{{AF`{c}}}h}{{{j{{AEb{c}}}}}{{AFb{c}}}h}{{{AF`{c}}e}{{Dn{gOb}}}h{{In{{AEd{c}}}{{Aj{{Dn{{AEh{c}}Ob}}}}}}}{}}{{{AFb{c}}e}{{Dn{gOb}}}h{{In{{AEd{c}}}{{Aj{{Dn{{AEh{c}}Ob}}}}}}}{}}{{{j{c}}}e{}{}}0{c{{Dn{e}}}{}{}}0000000{{{j{c}}}E`{}}000`{{{AEh{c}}}{{AEd{c}}}h}{{{AEh{c}}c}{{Bh{{AEd{c}}{AEn{c}}}}}h}9999```````{{{j{c}}}{{j{e}}}{}{}}00{{{j{Bjc}}}{{j{Bje}}}{}{}}00{{{j{{AFd{c}}}}}{{AFd{c}}}{CfAFf}}{{{j{{AFh{c}}}}}{{AFh{c}}}{CfAFf}}{{{j{c}}{j{Bje}}}Bn{}{}}0{{{j{{AFd{c}}}}{j{e}}{j{{ABh{ABl}}}}AD`}{}AFfAAf}{{{j{{AFd{c}}}}{j{e}}{j{{ABh{ABn}}}}AD`}{}AFfAAf}{{{j{{AFh{c}}}}{j{e}}{j{{ABh{ABn}}}}AD`}{}AFfAAf}{Cb{{j{c}}}{}}00{Cb{{j{Bjc}}}{}}00{{{j{Bj{AFd{c}}}}A@b}BnAFf}{{{j{Bj{AFh{c}}}}A@b}BnAFf}{CbBn}00{{{j{{AFd{c}}}}}{{AFj{c}}}AFf}{{{j{{AFh{c}}}}}{{AFj{c}}}AFf}{{{j{{AFd{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AFh{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AFl{c}}}}{j{BjD`}}}Db{OdAFf}}{cc{}}00{{{j{{AFd{c}}}}A@bFl{Gl{Fl}}}{{AFd{c}}}AFf}{{}Cb}00{ce{}{}}00{{{j{{AFd{c}}}}}A@bAFf}{{{j{{AFh{c}}}}}A@bAFf}{{{j{{AFd{c}}}}}ChAFf}{{{j{{AFh{c}}}}}ChAFf}{A@b{{AFd{c}}}AFf}{A@bc{}}{{{j{Bjc}}}{{Df{{AFd{e}}}}}DhAFf}{{{j{Bjc}}}{{Df{{AFh{e}}}}}DhAFf}{{{j{Bjc}}Cn}{{Df{{AFd{e}}}}}DhAFf}{{{j{Bjc}}Cn}{{Df{{AFh{e}}}}}DhAFf}{{{j{Bjc}}}{{Df{e}}}Dh{}}{{A@bc}{{AFd{e}}}ClAFf}{{{j{c}}}e{}{}}0{c{{Dn{e}}}{}{}}00000{{{j{c}}}E`{}}00{{{j{{AFd{c}}}}}{{AFh{c}}}AFf}{ce{}{}}00{{{j{{AFd{c}}}}{j{Bje}}}{{Df{Bn}}}AFfEb}{{{j{{AFh{c}}}}{j{Bje}}}{{Df{Bn}}}AFfEb}{{{j{{AFd{c}}}}{j{Bje}}Cn}{{Df{Bn}}}AFfEb}{{{j{{AFh{c}}}}{j{Bje}}Cn}{{Df{Bn}}}AFfEb}``{{{j{Bj{AFj{c}}}}{j{{AFj{c}}}}}BnAFf}{{{j{Bj{AFn{c}}}}{AFn{c}}}BnAG`}{{{j{Bj{AFj{c}}}}}BnAFf}{{{j{{AFj{c}}}}}FlAFf}{{{j{c}}}{{j{e}}}{}{}}0{{{j{Bjc}}}{{j{Bje}}}{}{}}0{{{j{{AFj{c}}}}{j{e}}}BfAFfAAf}{{{AFn{c}}{j{e}}{j{{AFh{c}}}}}BfAG`AAf}{{{j{{AFj{c}}}}}{{AFj{c}}}{CfAFf}}{{{j{{AFn{c}}}}}{{AFn{c}}}{CfAFf}}{{{j{c}}{j{Bje}}}Bn{}{}}08{{}{{AFj{c}}}{KjAFf}}{{}{{AFn{c}}}{KjAFf}}{Cb{{j{c}}}{}}0{Cb{{j{Bjc}}}{}}0{CbBn}0{{{j{{AFj{c}}}}{j{e}}}{}AFfAAf}{{{j{{AFj{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AFn{c}}}}{j{BjD`}}}Db{OdAFf}}{cc{}}0{{}Cb}0{ce{}{}}0{{}{{AFj{c}}}AFf}{{}{{AFn{c}}}AG`}{{{j{{AFj{c}}}}}FlAFf}{{{j{Bj{AFj{c}}}}}BnAFf}{{{j{Bj{AFn{c}}}}}BnAG`}{{{j{c}}}e{}{}}0{c{{Dn{e}}}{}{}}000{{{j{c}}}E`{}}088````{{{j{c}}}{{j{e}}}{}{}}000{{{j{Bjc}}}{{j{Bje}}}{}{}}000{{{j{{AGb{c}}}}{j{e}}g{j{Bjk}}m}{{Df{Bn}}}{AFfOd}AAfClOn{{AAd{i}}}{{Hb{}{{Ed{`}}}}Cf}}{{{j{{AGd{c}}}}{j{e}}g{j{Bjk}}m}{{Df{Bn}}}{AFfOd}AAfClOn{{AAd{i}}}{{Hb{}{{Ed{`}}}}Cf}}{Cb{{j{c}}}{}}000{Cb{{j{Bjc}}}{}}000{CbBn}000{{{j{{AGb{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AGf{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AGd{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AGh{c}}}}{j{BjD`}}}Db{OdAFf}}{cc{}}000{{}Cb}000{ce{}{}}000{{{j{{AFd{c}}}}}{{AGb{c}}}{AFfOd}}{{}{{AGf{c}}}{AG`Od}}{{{j{{AFd{c}}}}}{{AGd{c}}}AFf}{{{j{{AFd{c}}}}}{{AGd{c}}}{AFfOd}}{{}{{AGh{c}}}{AG`Od}}{c{{Dn{e}}}{}{}}0000000{{{j{c}}}E`{}}000{{{j{{AGf{c}}}}{j{Bjg}}i{AFn{c}}}{{Dn{kACd}}}{AG`Od}On{{ABf{e}}}{{Hb{}{{Ed{{`{{AFj{c}}}}}}}}Cf}{}}{{{j{{AGh{c}}}}{j{Bjg}}i{AFn{c}}}{{Dn{kACd}}}{AG`Od}On{{ABf{e}}}{{Hb{}{{Ed{{`{{AFj{c}}}}}}}}Cf}{}}9999```{{{j{c}}}{{j{e}}}{}{}}00{{{j{Bjc}}}{{j{Bje}}}{}{}}00{{{j{{AGj{c}}}}}{{AGj{c}}}{CfAG`}}{{{j{{AGl{c}}}}}{{AGl{c}}}{CfAFf}}{{{j{{AGn{c}}}}}{{AGn{c}}}{CfAFf}}{{{j{c}}{j{Bje}}}Bn{}{}}00{Cb{{j{c}}}{}}00{Cb{{j{Bjc}}}{}}00{CbBn}00{{{AGl{c}}}Bf{AG`Od}}{{{AGn{c}}}Bf{AG`Od}}{{{j{{AGj{c}}}}{j{BjD`}}}Db{OdAG`}}{{{j{{AGl{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AGn{c}}}}{j{BjD`}}}Db{OdAFf}}{cc{}}00{{}Cb}00{ce{}{}}00{{{j{{AFh{c}}}}}{{AGl{c}}}AG`}{{{j{{AFh{c}}}}}{{AGl{c}}}{AG`Od}}{{{j{{AFh{c}}}}}{{AGn{c}}}{AG`Od}}0{{{AGl{c}}e}{{Dn{gOb}}}{AG`Od}{{In{}{{Aj{{Dn{Ob}}}}}}}{}}{{{AGn{c}}e}{{Dn{gOb}}}{AG`Od}{{In{}{{Aj{{Dn{Ob}}}}}}}{}}{{{j{c}}}e{}{}}00{c{{Dn{e}}}{}{}}00000{{{j{c}}}E`{}}00888{{{AFn{c}}{j{{AFh{c}}}}}{{AGl{c}}}AG`}`````````````{{{j{{On{}{{AH`{c}}}}}}}{{AHb{eg}}}{}h{}}{{{j{c}}}{{j{e}}}{}{}}00000{{{j{Bjc}}}{{j{Bje}}}{}{}}00000{{{j{{AHd{ceg}}}}}{{AHd{ceg}}}{CfDh}{Cfh}{Cf{On{e}}}}{{{j{{AHf{ceg}}}}}{{AHf{ceg}}}{CfDh}{Cfh}{Cf{On{e}}}}{{{j{{AHh{ceg}}}}}{{AHh{ceg}}}{CfEb}{Cfh}{Cf{On{e}}}}{{{j{{AHj{ceg}}}}}{{AHj{ceg}}}{CfEb}{Cfh}{Cf{On{e}}}}{{{j{{AHb{ce}}}}}{{AHb{ce}}}{Cfh}Cf}{{{j{{AHl{c}}}}}{{AHl{c}}}{Cfh}}{{{j{c}}{j{Bje}}}Bn{}{}}00000{{{j{BjA@`}}c}{{Df{Bn}}}h}{{{j{Bj{AHd{ce{AHl{e}}}}}}e}{{Df{Bn}}}Dhh}{{{j{Bj{AHf{ce{AHl{e}}}}}}e}{{Df{Bn}}}Dhh}{{{j{Bj{AHh{ce{AHl{e}}}}}}e}{{Df{Bn}}}Ebh}{{{j{Bj{AHj{ce{AHl{e}}}}}}e}{{Df{Bn}}}Ebh}{{{j{BjA@`}}}{{Df{Bn}}}}{{{j{Bj{AHd{ce{AHl{e}}}}}}}{{Df{Bn}}}Dhh}{{{j{Bj{AHf{ce{AHl{e}}}}}}}{{Df{Bn}}}Dhh}{{{j{Bj{AHh{ce{AHl{e}}}}}}}{{Df{Bn}}}Ebh}{{{j{Bj{AHj{ce{AHl{e}}}}}}}{{Df{Bn}}}Ebh}{Cb{{j{c}}}{}}000{{{j{{AHb{ce}}}}}{{j{g}}}h{}{}}11{{{j{{AHl{c}}}}}{{j{e}}}h{}}{Cb{{j{Bjc}}}{}}00000{CbBn}00000{AHncEb}{{{AHh{ce{AHl{e}}}}}cEbh}{{{AHj{ce{AHl{e}}}}}cEbh}{{{j{{AHd{ceg}}}}{j{BjD`}}}Db{OdDh}{Odh}{Od{On{e}}}}{{{j{{AHf{ceg}}}}{j{BjD`}}}Db{OdDh}{Odh}{Od{On{e}}}}{{{j{{AHh{ceg}}}}{j{BjD`}}}Db{OdEb}{Odh}{Od{On{e}}}}{{{j{{AHj{ceg}}}}{j{BjD`}}}Db{OdEb}{Odh}{Od{On{e}}}}{{{j{{AHb{ce}}}}{j{BjD`}}}Db{Odh}Od}{{{j{{AHl{c}}}}{j{BjD`}}}Db{Odh}}{cc{}}00000{{{j{{On{}{{AH`{c}}}}}}}{}{}}{{{j{{AHl{c}}}}}{}h}{cAI`Dh}{cAHnEb}{{}Cb}{c{{AHd{ce{AHl{e}}}}}Dhh}1{c{{AHf{ce{AHl{e}}}}}Dhh}2{c{{AHh{ce{AHl{e}}}}}Ebh}3{c{{AHj{ce{AHl{e}}}}}Ebh}44{ce{}{}}00000{{{j{c}}}{{On{}{{AH`{c}}}}}{}}{{{j{{AIb{Oj}}}}}{{AHl{c}}}h}{{{j{Bjg}}Cb}{{Df{{Fl{c}}}}}h{{On{c}}}{{ABf{ce}}}}{{{j{Bjg}}Cb}{{Df{Fl}}}h{{On{c}}}{{ABf{ce}}}}{{{j{BjABf}}}{{Df{c}}}h}{{{j{Bj{AHd{ce{AHl{e}}}}}}}{{Df{e}}}Dhh}{{{j{Bj{AHf{ce{AHl{e}}}}}}}{{Df{e}}}Dhh}{{{j{BjABf}}}Df}{{{j{Bj{AHd{ce{AHl{e}}}}}}}DfDhh}{{{j{Bj{AHf{ce{AHl{e}}}}}}}DfDhh}{{{j{BjA@`}}}eh{{On{c}}}}{{{j{Bj{AHd{ce{AHl{e}}}}}}}{{AHl{e}}}Dhh}{{{j{Bj{AHf{ce{AHl{e}}}}}}}{{AHl{e}}}Dhh}{{{j{Bj{AHh{ce{AHl{e}}}}}}}{{AHl{e}}}Ebh}{{{j{Bj{AHj{ce{AHl{e}}}}}}}{{AHl{e}}}Ebh}{{{j{BjA@`}}}{{AHb{ce}}}h{}}{{{j{c}}}e{}{}}00000{c{{Dn{e}}}{}{}}00000000000{{{j{c}}}E`{}}00000{ce{}{}}00000{{{j{BjAAd}}c}{{Df{Bn}}}h}{{{j{Bj{AHh{ce{AHl{e}}}}}}e}{{Df{Bn}}}Ebh}{{{j{Bj{AHj{ce{AHl{e}}}}}}e}{{Df{Bn}}}Ebh}{{{j{BjAAd}}}{{Df{Bn}}}}{{{j{Bj{AHh{ce{AHl{e}}}}}}}{{Df{Bn}}}Ebh}{{{j{Bj{AHj{ce{AHl{e}}}}}}}{{Df{Bn}}}Ebh}","D":"D@d","p":[[17,"ScalarExt"],[17,"Base"],[17,"CurveExt"],[10,"CurveAffine",6,1196],[1,"reference"],[5,"Coordinates",1196],[5,"CtOption",1197],[10,"WithSmallOrderMulGroup",1198],[10,"Ord",1199],[17,"AffineExt"],[10,"CurveExt",6,1196],[10,"Field",6,1198],[17,"Output"],[10,"Mul",1200],[1,"str"],[10,"Fn",1201],[5,"Box",1202],[5,"Choice",1197],[1,"bool"],[1,"tuple"],[0,"mut"],[1,"slice"],[1,"unit"],[10,"Send",1203],[1,"usize"],[10,"Sync",1203],[10,"Clone",1204],[1,"u64"],[10,"AsRef",1205],[10,"RngCore",1206],[6,"SerdeFormat",43],[5,"Formatter",1207],[8,"Result",1207],[10,"CurveRead",43],[8,"Result",1208],[10,"Read",1209],[10,"SerdeCurveAffine",43],[10,"SerdePrimeField",43],[6,"Result",1210],[5,"TypeId",1211],[10,"Write",1209],[17,"Item"],[10,"ParallelIterator",72,1212],[10,"ParallelSliceMut",72,1213],[10,"IndexedParallelIterator",72,1212],[5,"ExponentialBlocks",1214],[5,"UniformBlocks",1214],[5,"Chain",1215],[10,"IntoParallelIterator",72,1212],[5,"Chunks",1216],[5,"Cloned",1217],[6,"Ordering",1199],[10,"FromParallelIterator",1212],[5,"Vec",1218],[5,"LinkedList",1219],[5,"Copied",1220],[10,"Consumer",1221],[10,"UnindexedConsumer",1221],[5,"Enumerate",1222],[5,"Filter",1223],[5,"FilterMap",1224],[6,"Option",1225],[5,"FlatMap",1226],[5,"FlatMapIter",1227],[10,"IntoIterator",1228],[5,"Flatten",1229],[5,"FlattenIter",1230],[5,"Scope",72,1231],[5,"Error",1207],[5,"Fold",1232],[5,"FoldChunks",1233],[5,"FoldChunksWith",1234],[5,"FoldWith",1232],[5,"Inspect",1235],[5,"Interleave",1236],[5,"InterleaveShortest",1237],[5,"Intersperse",1238],[17,"Iter"],[10,"FnOnce",1201],[5,"Map",1239],[5,"MapInit",1240],[5,"MapWith",1240],[5,"PanicFuse",1241],[5,"ChunkByMut",1242],[5,"ChunksExactMut",1243],[5,"ChunksMut",1243],[10,"IntoParallelRefIterator",72,1212],[10,"IntoParallelRefMutIterator",72,1212],[5,"RChunksExactMut",1244],[5,"RChunksMut",1244],[5,"SplitInclusiveMut",1213],[5,"SplitMut",1213],[10,"Default",1245],[10,"ParallelExtend",1212],[6,"Either",1246],[5,"Positions",1247],[10,"Product",1248],[5,"Rev",1249],[5,"Skip",1250],[5,"SkipAny",1251],[5,"SkipAnyWhile",1252],[5,"BroadcastContext",1253],[5,"StepBy",1254],[10,"Sum",1248],[5,"Take",1255],[5,"TakeAny",1256],[5,"TakeAnyWhile",1257],[5,"TryFold",1258],[10,"Try",1259],[10,"TryFoldAndReduce",72,1260],[5,"TryFoldWith",1258],[5,"Update",1261],[5,"WhileSome",1262],[5,"MaxLen",1263],[5,"MinLen",1263],[10,"ProducerCallback",1221],[5,"Zip",1264],[5,"ZipEq",1265],[5,"VerifyingKey",216],[5,"ProvingKey",216],[6,"Error",216,1266],[10,"Debug",1207],[5,"PinnedVerificationKey",216],[5,"Error",1208],[1,"u8"],[5,"EvaluationDomain",369,1267],[10,"EncodedChallenge",1041],[10,"Transcript",1041],[1,"u32"],[10,"Error",1268],[5,"String",1269],[5,"CompiledCircuit",1270],[10,"Params",540],[5,"ProverSingle",312],[5,"HashMap",1271],[10,"CommitmentScheme",540],[10,"Prover",540],[10,"TranscriptWrite",1041],[10,"MsmAccel",1272],[5,"Prover",312],[5,"H2cEngine",1273],[5,"PlonkEngine",1273],[5,"BatchVerifier",349,1274],[8,"ParamsVerifierIPA",610],[10,"Verifier",540],[10,"VerificationStrategy",369,1275],[10,"TranscriptRead",1041],[5,"Polynomial",369],[10,"Basis",369],[5,"Coeff",369],[5,"LagrangeCoeff",369],[5,"ExtendedLagrangeCoeff",369],[5,"PinnedEvaluationDomain",369,1267],[6,"Error",369],[5,"RangeFrom",1276],[5,"RangeFull",1276],[10,"Iterator",1277],[1,"i32"],[5,"Rotation",1278],[5,"Blind",540],[10,"MSM",540],[10,"ParamsProver",540],[17,"MSM"],[10,"ParamsVerifier",540],[10,"PartialEq",1199],[17,"Guard"],[17,"MSMAccumulator"],[10,"Guard",369,1275],[5,"ParamsIPA",610],[5,"MSMIPA",655],[5,"IPACommitmentScheme",610],[5,"GuardIPA",717],[5,"ProverIPA",685,1279],[5,"VerifierIPA",685,1280],[5,"Accumulator",717],[5,"AccumulatorStrategy",717],[5,"SingleStrategy",717],[5,"ParamsKZG",794],[10,"Engine",1281],[5,"ParamsVerifierKZG",794],[5,"MSMKZG",867],[5,"KZGCommitmentScheme",794],[5,"DualMSM",867],[10,"MultiMillerLoop",1281],[5,"ProverGWC",916,1282],[5,"ProverSHPLONK",916,1283],[5,"VerifierGWC",916,1284],[5,"VerifierSHPLONK",916,1285],[5,"GuardKZG",981],[5,"AccumulatorStrategy",981],[5,"SingleStrategy",981],[17,"Input"],[5,"ChallengeScalar",1041],[5,"Blake2bRead",1041],[5,"Keccak256Read",1041],[5,"Blake2bWrite",1041],[5,"Keccak256Write",1041],[5,"Challenge255",1041],[10,"TranscriptWriterBuffer",1041],[10,"TranscriptReadBuffer",1041],[1,"array"],[15,"NotEnoughRowsAvailable",309]],"r":[[2,1286],[10,1196],[11,1196],[13,1198],[72,1212],[73,1212],[74,1212],[75,1212],[83,1212],[84,1213],[85,1231],[86,1260],[103,1287],[141,1288],[184,1231],[219,1266],[349,1274],[372,1267],[374,1275],[380,1267],[383,1275],[621,1289],[651,1290],[685,1279],[686,1280],[916,1282],[917,1283],[918,1284],[919,1285]],"b":[[254,"impl-Debug-for-Error"],[255,"impl-Display-for-Error"],[464,"impl-Index%3CRangeFrom%3Cusize%3E%3E-for-Polynomial%3CF,+B%3E"],[465,"impl-Index%3CRangeFull%3E-for-Polynomial%3CF,+B%3E"],[466,"impl-Index%3Cusize%3E-for-Polynomial%3CF,+B%3E"],[467,"impl-IndexMut%3CRangeFull%3E-for-Polynomial%3CF,+B%3E"],[468,"impl-IndexMut%3CRangeFrom%3Cusize%3E%3E-for-Polynomial%3CF,+B%3E"],[469,"impl-IndexMut%3Cusize%3E-for-Polynomial%3CF,+B%3E"],[504,"impl-Sub%3CF%3E-for-%26Polynomial%3CF,+B%3E"],[505,"impl-Sub%3C%26Polynomial%3CF,+B%3E%3E-for-Polynomial%3CF,+B%3E"],[559,"impl-AddAssign-for-Blind%3CF%3E"],[560,"impl-AddAssign%3CF%3E-for-Blind%3CF%3E"],[587,"impl-MulAssign-for-Blind%3CF%3E"],[588,"impl-MulAssign%3CF%3E-for-Blind%3CF%3E"],[657,"impl-MSMIPA%3C\'a,+C%3E"],[658,"impl-MSM%3CC%3E-for-MSMIPA%3C\'a,+C%3E"],[960,"impl-ProverSHPLONK%3C\'a,+E%3E"],[961,"impl-Prover%3C\'params,+KZGCommitmentScheme%3CE%3E%3E-for-ProverSHPLONK%3C\'params,+E%3E"],[1019,"impl-AccumulatorStrategy%3CE%3E"],[1020,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-AccumulatorStrategy%3CE%3E"],[1021,"impl-SingleStrategy%3CE%3E"],[1022,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-SingleStrategy%3CE%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKoCdQAAAAAAAgABACwAAAAwAAAAMgACADYABQA9AAAAQgAEAFcAAABbAAEAaQABAG0AAAB8AAAAhwAAAMoAAQDOAAAA0gAAAOYAFwD/AAQABQEAAA4BAwAcAQAAHwECACMBCwAwAQMAOwEDAEMBBwBNAQEAUQEAAFYBBwBgAQUAZwEAAGkBAABsAQIAcQEAAHgBAACBARkAoAEPALEBBgC/AQYA0QEMAOsBAADuAQAA8QEAAPkBIwAvAgIANQIBADgCAQA+AgIAQgIAAEQCAABGAgAASAIAAEsCAgBYAgMAXQIAAGYCBQBvAgkAewIBAH8CAQCCAgAAhAIHAI0CAQCXAgsApAIAAKcCBgCwAgMAtQIHAL8CAQDDAgoA0gILAN8CCwDtAgMA9gIDAP4CEQATAwMAHgMcAD8DAgBFAwUATgMBAFEDDgBjAwAAZgMAAGgDBgBwAwMAdQMKAIIDAQCIAwEAiwMJAJkDBwCjAw8AtwMDAL8DAQDCAw4A0gMDANkDGQD2AwIA/QMAAP8DEQAgBBcAOQQDAD4EFwBXBAAAWQQFAGYEAABpBAAAawQAAG0EAABvBAAAcQQBAHoEAgB+BAEAgQQBAIQEAwCJBB0AqAQBAKsEAQA="}],\ +["halo2_backend",{"t":"CCCCCCRRRTKKRKTRRTMMMMMNMMMMMMMNNMMHNNMNNMMKPPPKGKNNNNNNNNNNNNNNNNNNNNNNKKKKRRRRRRRKKFKNNMNNNNNNNNNNNNNHNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMHNMNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNMNNNNNNNNNNNNNNNNMNNPPPGPPPPPFFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNCNNNNNNNNNNNNNNNNNNNNNCNNNNNNOHHFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNHHNKFGFFKKFRPRFFPKONNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNCNNNNNMNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNFTKRRKRRKKRKRKTTRKNNNMMMNNMNNMMNMNNNMNMNMNNNNMNNNMMMMNMMMMMNNNNMNMCCCCFFINNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNCCCCFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFKRFFKKKKKNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNMNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNMNMMNNNNNNNNNNNNNNNNMNHHMNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNN","n":["arithmetic","helpers","multicore","plonk","poly","transcript","AffineExt","Base","Base","CURVE_ID","CurveAffine","CurveExt","CurveExt","Field","ONE","ScalarExt","ScalarExt","ZERO","a","a","b","b","coordinates","cube","double","endo","from_xy","hash_to_curve","invert","is_on_curve","is_on_curve","is_zero","is_zero_vartime","jacobian_coordinates","new_jacobian","parallelize","pow","pow_vartime","random","sqrt","sqrt_alt","sqrt_ratio","square","CurveRead","Processed","RawBytes","RawBytesUnchecked","SerdeCurveAffine","SerdeFormat","SerdePrimeField","borrow","borrow_mut","byte_length","clone","clone_into","deref","deref_mut","drop","fmt","from","init","into","read","read","read","to_owned","try_from","try_into","type_id","vzip","write","write","IndexedParallelIterator","IntoParallelIterator","IntoParallelRefIterator","IntoParallelRefMutIterator","Item","Item","Item","Item","Iter","Iter","Iter","ParallelIterator","ParallelSliceMut","Scope","TryFoldAndReduce","all","any","as_parallel_slice_mut","borrow","borrow_mut","by_exponential_blocks","by_uniform_blocks","chain","chunks","cloned","cmp","collect","collect_into_vec","collect_vec_list","copied","count","current_num_threads","deref","deref_mut","drive","drive_unindexed","drop","enumerate","eq","filter","filter_map","find_any","find_first","find_last","find_map_any","find_map_first","find_map_last","flat_map","flat_map_iter","flatten","flatten_iter","fmt","fold","fold_chunks","fold_chunks_with","fold_with","for_each","for_each_init","for_each_with","from","ge","gt","init","inspect","interleave","interleave_shortest","intersperse","into","into_par_iter","join","le","len","lt","map","map_init","map_with","max","max_by","max_by_key","min","min_by","min_by_key","ne","opt_len","panic_fuse","par_chunk_by_mut","par_chunks_exact_mut","par_chunks_mut","par_iter","par_iter_mut","par_rchunks_exact_mut","par_rchunks_mut","par_sort","par_sort_by","par_sort_by_cached_key","par_sort_by_key","par_sort_unstable","par_sort_unstable_by","par_sort_unstable_by_key","par_split_inclusive_mut","par_split_mut","partial_cmp","partition","partition_map","position_any","position_first","position_last","positions","product","reduce","reduce_with","rev","scope","skip","skip_any","skip_any_while","spawn","spawn_broadcast","step_by","sum","take","take_any","take_any_while","try_fold","try_fold_and_reduce","try_fold_with","try_for_each","try_for_each_init","try_for_each_with","try_from","try_into","try_reduce","try_reduce_with","type_id","unzip","unzip_into_vecs","update","vzip","while_some","with_max_len","with_min_len","with_producer","zip","zip_eq","BoundsFailure","ColumnNotInPermutation","ConstraintSystemFailure","Error","InstanceTooLarge","InvalidInstances","NotEnoughRowsAvailable","Opening","Other","PinnedVerificationKey","ProvingKey","Transcript","VerifyingKey","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","fixed_commitments","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_bytes","from_bytes","get_domain","get_vk","hash_into","init","init","init","init","into","into","into","into","keygen","not_enough_rows_available","pinned","prover","read","read","source","to_bytes","to_bytes","to_owned","to_owned","to_string","transcript_repr","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verifier","vzip","vzip","vzip","vzip","write","write","current_k","keygen_pk","keygen_vk","Prover","ProverSingle","borrow","borrow","borrow_mut","borrow_mut","commit_phase","commit_phase","create_proof","create_proof","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","new","new","new_with_engine","new_with_engine","phases","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","BatchVerifier","add_proof","borrow","borrow_mut","default","deref","deref_mut","drop","finalize","fmt","from","init","into","new","try_from","try_into","type_id","verify_proof","verify_proof_single","vzip","Basis","Coeff","Error","EvaluationDomain","ExtendedLagrangeCoeff","Guard","LagrangeBasis","LagrangeCoeff","MSMAccumulator","OpeningError","Output","PinnedEvaluationDomain","Polynomial","SamplingError","VerificationStrategy","_marker","add","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","coeff_from_vec","coeff_to_extended","commitment","constant_extended","constant_lagrange","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","divide_by_vanishing_poly","drop","drop","drop","drop","drop","drop","drop","empty_coeff","empty_extended","empty_lagrange","extended_k","extended_len","extended_to_coeff","finalize","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get_extended_omega","get_omega","get_omega_inv","get_quotient_poly_degree","index","index","index","index_mut","index_mut","index_mut","init","init","init","init","init","init","init","into","into","into","into","into","into","into","ipa","iter","iter_mut","k","kzg","l_i_range","lagrange_extended","lagrange_from_vec","lagrange_to_coeff","mul","new","new","new_empty","new_lagrange_from_vec","num_coeffs","pinned","process","rotate","rotate_extended","rotate_omega","sub","sub","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","values","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Blind","COMMIT_INSTANCE","CommitmentScheme","Curve","Guard","MSM","MSM","MSMAccumulator","Params","ParamsProver","ParamsProver","ParamsVerifier","ParamsVerifier","Prover","QUERY_INSTANCE","QUERY_INSTANCE","Scalar","Verifier","add","add_assign","add_assign","add_msm","append_term","bases","borrow","borrow_mut","check","clone","clone_into","commit","commit_lagrange","create_proof","create_proof_with_engine","default","deref","deref_mut","downsize","drop","empty_msm","eq","eval","fmt","from","init","into","k","mul","mul_assign","mul_assign","n","new","new","new","new","new_params","read","read_params","scalars","scale","to_owned","try_from","try_into","type_id","verify_proof","vzip","write","commitment","msm","multiopen","strategy","IPACommitmentScheme","ParamsIPA","ParamsVerifierIPA","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","commit","commit_lagrange","create_proof_with_engine","deref","deref","deref_mut","deref_mut","downsize","drop","drop","empty_msm","fmt","fmt","from","from","init","init","into","into","k","n","new","new_params","read","read_params","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","write","MSMIPA","add_constant_term","add_msm","add_msm","add_to_g_scalars","add_to_u_scalar","add_to_w_scalar","append_term","bases","borrow","borrow_mut","check","clone","clone_into","deref","deref_mut","drop","eval","fmt","from","init","into","new","scalars","scale","to_owned","try_from","try_into","type_id","vzip","ProverIPA","VerifierIPA","borrow","borrow","borrow_mut","borrow_mut","create_proof_with_engine","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","new","new","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","Accumulator","AccumulatorStrategy","GuardIPA","SingleStrategy","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","compute_g","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","finalize","finalize","fmt","fmt","fmt","fmt","from","from","from","from","g","init","init","init","init","into","into","into","into","new","new","process","process","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","u_packed","use_challenges","use_g","vzip","vzip","vzip","vzip","commitment","msm","multiopen","strategy","KZGCommitmentScheme","ParamsKZG","ParamsVerifierKZG","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","commit","commit_lagrange","commit_lagrange","deref","deref","deref","deref_mut","deref_mut","deref_mut","downsize","downsize","drop","drop","drop","empty_msm","empty_msm","fmt","fmt","fmt","from","from","from","from_parts","init","init","init","into","into","into","k","k","n","n","new","new_params","read","read","read_custom","read_custom","read_params","setup","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","verifier_params","vzip","vzip","vzip","write","write","write_custom","write_custom","DualMSM","MSMKZG","add_msm","add_msm","append_term","bases","borrow","borrow","borrow_mut","borrow_mut","check","check","clone","clone","clone_into","clone_into","combine_with_base","default","default","deref","deref","deref_mut","deref_mut","drop","drop","eval","fmt","fmt","from","from","init","init","into","into","new","new","scalars","scale","scale","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","ProverGWC","ProverSHPLONK","VerifierGWC","VerifierSHPLONK","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","create_proof_with_engine","create_proof_with_engine","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","fmt","fmt","fmt","fmt","from","from","from","from","init","init","init","init","into","into","into","into","new","new","new","new","new","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verify_proof","verify_proof","vzip","vzip","vzip","vzip","AccumulatorStrategy","GuardKZG","SingleStrategy","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","finalize","finalize","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","new","new","new","new","process","process","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","with","Blake2bRead","Blake2bWrite","Challenge255","ChallengeScalar","EncodedChallenge","Input","Keccak256Read","Keccak256Write","Transcript","TranscriptRead","TranscriptReadBuffer","TranscriptWrite","TranscriptWriterBuffer","as_challenge_scalar","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","common_point","common_point","common_point","common_point","common_point","common_scalar","common_scalar","common_scalar","common_scalar","common_scalar","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","finalize","finalize","finalize","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","get_scalar","get_scalar","init","init","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","new","new","read_n_points","read_n_scalars","read_point","read_point","read_point","read_scalar","read_scalar","read_scalar","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge_scalar","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","write_point","write_point","write_point","write_scalar","write_scalar","write_scalar"],"q":[[0,"halo2_backend"],[6,"halo2_backend::arithmetic"],[43,"halo2_backend::helpers"],[72,"halo2_backend::multicore"],[216,"halo2_backend::plonk"],[309,"halo2_backend::plonk::Error"],[310,"halo2_backend::plonk::keygen"],[312,"halo2_backend::plonk::prover"],[349,"halo2_backend::plonk::verifier"],[369,"halo2_backend::poly"],[540,"halo2_backend::poly::commitment"],[606,"halo2_backend::poly::ipa"],[610,"halo2_backend::poly::ipa::commitment"],[655,"halo2_backend::poly::ipa::msm"],[685,"halo2_backend::poly::ipa::multiopen"],[717,"halo2_backend::poly::ipa::strategy"],[790,"halo2_backend::poly::kzg"],[794,"halo2_backend::poly::kzg::commitment"],[867,"halo2_backend::poly::kzg::msm"],[916,"halo2_backend::poly::kzg::multiopen"],[981,"halo2_backend::poly::kzg::strategy"],[1041,"halo2_backend::transcript"],[1196,"pasta_curves::arithmetic::curves"],[1197,"subtle"],[1198,"ff"],[1199,"core::cmp"],[1200,"core::ops::arith"],[1201,"core::ops::function"],[1202,"alloc::boxed"],[1203,"core::marker"],[1204,"core::clone"],[1205,"core::convert"],[1206,"rand_core"],[1207,"core::fmt"],[1208,"std::io::error"],[1209,"std::io"],[1210,"core::result"],[1211,"core::any"],[1212,"rayon::iter"],[1213,"rayon::slice"],[1214,"rayon::iter::blocks"],[1215,"rayon::iter::chain"],[1216,"rayon::iter::chunks"],[1217,"rayon::iter::cloned"],[1218,"alloc::vec"],[1219,"alloc::collections::linked_list"],[1220,"rayon::iter::copied"],[1221,"rayon::iter::plumbing"],[1222,"rayon::iter::enumerate"],[1223,"rayon::iter::filter"],[1224,"rayon::iter::filter_map"],[1225,"core::option"],[1226,"rayon::iter::flat_map"],[1227,"rayon::iter::flat_map_iter"],[1228,"core::iter::traits::collect"],[1229,"rayon::iter::flatten"],[1230,"rayon::iter::flatten_iter"],[1231,"rayon_core::scope"],[1232,"rayon::iter::fold"],[1233,"rayon::iter::fold_chunks"],[1234,"rayon::iter::fold_chunks_with"],[1235,"rayon::iter::inspect"],[1236,"rayon::iter::interleave"],[1237,"rayon::iter::interleave_shortest"],[1238,"rayon::iter::intersperse"],[1239,"rayon::iter::map"],[1240,"rayon::iter::map_with"],[1241,"rayon::iter::panic_fuse"],[1242,"rayon::slice::chunk_by"],[1243,"rayon::slice::chunks"],[1244,"rayon::slice::rchunks"],[1245,"core::default"],[1246,"either"],[1247,"rayon::iter::positions"],[1248,"core::iter::traits::accum"],[1249,"rayon::iter::rev"],[1250,"rayon::iter::skip"],[1251,"rayon::iter::skip_any"],[1252,"rayon::iter::skip_any_while"],[1253,"rayon_core::broadcast"],[1254,"rayon::iter::step_by"],[1255,"rayon::iter::take"],[1256,"rayon::iter::take_any"],[1257,"rayon::iter::take_any_while"],[1258,"rayon::iter::try_fold"],[1259,"rayon::iter::private"],[1260,"halo2_middleware::multicore"],[1261,"rayon::iter::update"],[1262,"rayon::iter::while_some"],[1263,"rayon::iter::len"],[1264,"rayon::iter::zip"],[1265,"rayon::iter::zip_eq"],[1266,"halo2_backend::plonk::error"],[1267,"halo2_backend::poly::domain"],[1268,"core::error"],[1269,"alloc::string"],[1270,"halo2_middleware::circuit"],[1271,"std::collections::hash::map"],[1272,"halo2_middleware::zal::traits"],[1273,"halo2_middleware::zal::impls"],[1274,"halo2_backend::plonk::verifier::batch"],[1275,"halo2_backend::poly::strategy"],[1276,"core::ops::range"],[1277,"core::iter::traits::iterator"],[1278,"halo2_middleware::poly"],[1279,"halo2_backend::poly::ipa::multiopen::prover"],[1280,"halo2_backend::poly::ipa::multiopen::verifier"],[1281,"pairing"],[1282,"halo2_backend::poly::kzg::multiopen::gwc::prover"],[1283,"halo2_backend::poly::kzg::multiopen::shplonk::prover"],[1284,"halo2_backend::poly::kzg::multiopen::gwc::verifier"],[1285,"halo2_backend::poly::kzg::multiopen::shplonk::verifier"],[1286,"halo2_middleware"],[1287,"rayon_core"],[1288,"rayon_core::join"],[1289,"halo2_backend::poly::ipa::commitment::prover"],[1290,"halo2_backend::poly::ipa::commitment::verifier"]],"i":[0,0,0,0,0,0,11,11,4,11,0,0,4,0,12,11,4,12,11,4,11,4,4,12,12,11,4,11,12,11,4,12,12,11,11,0,12,12,12,12,12,12,12,0,31,31,31,0,0,0,31,31,37,31,31,31,31,31,31,31,31,31,34,37,38,31,31,31,31,31,37,38,0,0,0,0,49,87,88,43,49,87,88,0,0,0,0,43,43,44,68,68,45,45,43,45,43,45,43,45,43,43,43,0,68,68,45,43,68,45,45,43,43,43,43,43,43,43,43,43,43,43,43,68,43,45,45,43,43,43,43,68,45,45,68,43,45,45,43,68,49,0,45,45,45,43,43,43,43,43,43,43,43,43,45,43,43,44,44,44,87,88,44,44,44,44,44,44,44,44,44,44,44,45,43,43,45,45,45,45,43,43,43,45,0,45,43,43,68,68,45,43,45,43,43,43,110,43,43,43,43,68,68,43,43,68,43,45,43,68,43,45,45,45,45,45,121,121,121,0,121,121,121,121,121,0,0,121,0,121,119,123,120,121,119,123,120,119,120,119,120,121,119,123,120,121,119,123,120,121,119,123,120,119,121,121,119,123,120,121,121,119,123,120,119,120,119,120,119,121,119,123,120,121,119,123,120,0,121,119,0,119,120,121,119,120,119,120,121,119,121,119,123,120,121,119,123,120,121,119,123,120,0,121,119,123,120,119,120,202,0,0,0,0,134,140,134,140,134,140,134,140,134,140,134,140,134,140,134,140,134,140,134,140,134,140,134,140,134,140,140,134,140,134,140,134,140,134,140,0,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,0,0,143,0,0,0,0,0,0,0,0,168,154,146,0,0,154,0,148,148,126,153,154,150,151,152,148,126,153,154,150,151,152,148,126,150,151,152,148,126,150,151,152,148,126,126,0,126,126,126,153,154,150,151,152,148,148,126,153,154,150,151,152,148,148,126,126,153,154,150,151,152,148,126,126,126,126,126,126,146,126,153,154,150,151,152,148,126,153,154,150,151,152,148,126,126,126,126,148,148,148,148,148,148,126,153,154,150,151,152,148,126,153,154,150,151,152,148,0,148,148,126,0,126,126,126,126,148,146,126,148,148,148,126,146,148,126,126,148,148,126,150,151,152,148,126,153,154,150,151,152,148,126,153,154,150,151,152,148,126,153,154,150,151,152,148,148,126,153,154,150,151,152,148,0,164,0,136,145,0,164,145,0,0,136,0,136,0,137,145,136,0,160,160,160,161,161,161,160,160,161,160,160,162,133,137,137,160,160,160,133,160,164,160,161,160,160,160,160,133,160,160,160,133,162,137,145,160,136,133,136,161,161,160,160,160,160,145,160,133,0,0,0,0,0,0,0,169,171,169,171,169,169,169,169,0,169,171,169,171,169,169,171,169,169,171,169,171,169,171,169,171,169,169,169,171,169,171,169,169,171,169,171,169,171,0,169,171,169,0,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,0,0,173,174,173,174,173,173,174,173,174,173,174,173,174,173,174,173,174,173,174,173,174,173,174,173,174,173,174,174,173,174,0,0,0,0,172,175,176,177,172,175,176,177,172,175,172,175,172,172,175,176,177,172,175,176,177,172,175,176,177,176,177,172,175,176,177,172,175,176,177,175,172,175,176,177,172,175,176,177,176,177,176,177,172,175,172,175,176,177,172,175,176,177,172,175,176,177,175,172,172,172,175,176,177,0,0,0,0,0,0,0,178,180,182,178,180,182,178,180,178,180,178,178,180,178,180,182,178,180,182,178,180,178,180,182,178,180,178,180,182,178,180,182,178,178,180,182,178,180,182,178,180,178,180,178,182,178,180,178,180,182,178,178,180,178,180,182,178,180,182,178,180,182,178,178,180,182,178,180,178,180,0,0,181,183,181,181,181,183,181,183,181,183,181,183,181,183,181,181,183,181,183,181,183,181,183,181,181,183,181,183,181,183,181,183,181,183,181,181,183,181,183,181,183,181,183,181,183,181,183,0,0,0,0,185,187,186,188,185,187,186,188,185,186,185,187,186,188,185,187,186,188,185,187,186,188,185,187,186,188,185,187,186,188,185,187,186,188,185,187,186,188,185,187,186,186,188,185,187,186,188,185,187,186,188,185,187,186,188,187,188,185,187,186,188,0,0,0,189,190,191,189,190,191,189,190,191,189,190,191,189,190,191,189,190,191,189,190,191,190,191,189,190,191,189,190,191,189,190,191,189,190,191,190,190,191,191,190,191,189,190,191,189,190,191,189,190,191,189,190,191,189,190,191,190,0,0,0,0,0,127,0,0,0,0,0,0,0,127,194,195,196,197,193,198,194,195,196,197,193,198,194,195,196,197,193,198,194,195,196,197,193,198,128,194,195,196,197,128,194,195,196,197,194,195,196,197,193,193,198,198,194,195,196,197,193,198,194,195,196,197,193,198,199,196,197,194,195,196,197,193,198,194,195,196,197,193,198,127,198,200,199,194,194,195,195,196,196,197,197,193,198,194,195,196,197,193,198,127,198,0,0,147,194,195,147,194,195,128,194,195,196,197,128,194,195,196,197,193,198,194,195,196,197,193,198,194,195,196,197,193,198,194,195,196,197,193,198,194,195,196,197,193,198,138,196,197,138,196,197],"f":"``````````````````{{}c{}}000{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{n{{l{{h{}{{b{c}}{d{e}}{f{g}}}}}}}}}{A`Ab}{A`Ab}{{Af{}{{Ad{}}{b{}}}}}}{{{j{Ah}}}Ah}0{{{j{{Af{}{{b{c}}{d{e}}{Ad{g}}}}}}}{{Af{}{{b{c}}{d{e}}{Ad{g}}}}}A`A`{{h{}{{f{}}{b{}}{Aj{}}{Aj{}}}}{Al{c}}{Al{c}}}}{{cc}{{n{{h{}{{b{e}}{d{c}}{f{g}}}}}}}{A`Ab}{A`Ab}{{Af{}{{Ad{}}{b{}}}}}}{{{j{An}}}{{Bb{B`}}}}{{{j{Ah}}}{{n{Ah}}}}{{{j{{Af{}{{b{c}}{d{e}}{Ad{g}}}}}}}BdA`A`{{h{}{{f{}}{b{}}{Aj{}}{Aj{}}}}{Al{c}}{Al{c}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Bd{A`Ab}{A`Ab}{{Af{}{{Ad{}}{b{}}}}}}{{{j{Ah}}}Bd}{{{j{Ah}}}Bf}{{{j{{Af{}{{b{c}}{d{e}}{Ad{g}}}}}}}{{Bh{eee}}}A`A`{{h{}{{f{}}{b{}}{Aj{}}{Aj{}}}}{Al{c}}{Al{c}}}}{{ccc}{{n{{Af{}{{b{e}}{d{c}}{Ad{g}}}}}}}A`A`{{h{}{{f{}}{b{}}{Aj{}}{Aj{}}}}{Al{e}}{Al{e}}}}{{{j{Bj{Bl{c}}}}e}BnC`{{B`{{j{Bj{Bl{c}}}}Cb}}C`CdCf}}{{{j{Ah}}c}Ah{{Cj{{Bl{Ch}}}}}}0{cAhCl}9{{{j{Ah}}}{{Bh{BdAh}}}}{{{j{Ah}}{j{Ah}}}{{Bh{BdAh}}}}?```````{{{j{c}}}{{j{e}}}{}{}}{{{j{Bjc}}}{{j{Bje}}}{}{}}{CnCb}{{{j{Cn}}}Cn}{{{j{c}}{j{Bje}}}Bn{}{}}{Cb{{j{c}}}{}}{Cb{{j{Bjc}}}{}}{CbBn}{{{j{Cn}}{j{BjD`}}}Db}{cc{}}{{}Cb}{ce{}{}}{{{j{Bjc}}}{{Df{Dd}}}Dh}{{{j{Bjc}}Cn}{{Df{Dj}}}Dh}{{{j{Bjc}}Cn}{{Df{Dl}}}Dh}{{{j{c}}}e{}{}}{c{{Dn{e}}}{}{}}0{{{j{c}}}E`{}}6{{{j{Dj}}{j{Bjc}}Cn}{{Df{Bn}}}Eb}{{{j{Dl}}{j{Bjc}}Cn}{{Df{Bn}}}Eb}```````````````{{{Ef{}{{Ed{c}}}}e}BfC`{{B`{c}{{Aj{Bf}}}}CdC`}}0{{{j{BjEh}}}{{j{Bj{Bl{c}}}}}C`}{{{j{c}}}{{j{e}}}{}{}}{{{j{Bjc}}}{{j{Bje}}}{}{}}{Ej{{El{Ej}}}}{{EjCb}{{En{Ej}}}}{{{Ef{}{{Ed{c}}}}e}{{F`{{Ef{}{{Ed{c}}}}}}}C`{{Fb{}{{Ed{c}}}}}}{{EjCb}{{Fd{Ej}}}}{{{Ef{}{{Ed{c}}}}}{{Ff{{Ef{}{{Ed{c}}}}}}}C`}{{Eje}Fh{}{{Fb{}{{Ed{c}}}}}}{{{Ef{}{{Ed{c}}}}}eC`{{Fj{c}}}}{{Ej{j{Bj{Fl{c}}}}}Bn{}}{{{Ef{}{{Ed{c}}}}}{{Fn{{Fl{c}}}}}C`}{{{Ef{}{{Ed{c}}}}}{{G`{{Ef{}{{Ed{c}}}}}}}C`}{{{Ef{}{{Ed{c}}}}}CbC`}{{}Cb}{Cb{{j{c}}}{}}{Cb{{j{Bjc}}}{}}{{Eje}{}{}{{Gb{c}}}}{{{Ef{}{{Ed{c}}}}e}{}C`{{Gd{c}}}}{CbBn}{Ej{{Gf{Ej}}}}{{Ejc}BfFb}{{{Ef{}{{Ed{c}}}}e}{{Gh{{Ef{}{{Ed{c}}}}e}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}}{{{Ef{}{{Ed{c}}}}g}{{Gj{{Ef{}{{Ed{c}}}}g}}}C`C`{{B`{c}{{Aj{{Gl{e}}}}}}CdC`}}{{{Ef{}{{Ed{c}}}}e}{{Gl{c}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}}00{{{Ef{}{{Ed{c}}}}g}{{Gl{e}}}C`C`{{B`{c}{{Aj{{Gl{e}}}}}}CdC`}}00{{{Ef{}{{Ed{c}}}}g}{{Gn{{Ef{}{{Ed{c}}}}g}}}C`Fb{{B`{c}{{Aj{e}}}}CdC`}}{{{Ef{}{{Ed{c}}}}g}{{H`{{Ef{}{{Ed{c}}}}g}}}C`Hb{{B`{c}{{Aj{e}}}}CdC`}}{{{Ef{}{{Ed{c}}}}}{{Hd{{Ef{}{{Ed{c}}}}}}}C`}{{{Ef{}{{Ed{c}}}}}{{Hf{{Ef{}{{Ed{c}}}}}}}C`}{{{j{Hh}}{j{BjD`}}}{{Dn{BnHj}}}}{{{Ef{}{{Ed{c}}}}gi}{{Hl{{Ef{}{{Ed{c}}}}gi}}}C`C`{{B`{}{{Aj{e}}}}CdC`}{{B`{ec}{{Aj{e}}}}CdC`}}{{EjCbei}{{Hn{Ejei}}}C`{{B`{}{{Aj{c}}}}C`Cd}{}{{B`{cg}{{Aj{c}}}}C`Cd}}{{EjCbcg}{{I`{Ejcg}}}{C`Cf}{}{{B`{ce}{{Aj{c}}}}C`Cd}}{{{Ef{}{{Ed{c}}}}eg}{{Ib{{Ef{}{{Ed{c}}}}eg}}}C`{C`Cf}{{B`{ec}{{Aj{e}}}}CdC`}}{{{Ef{}{{Ed{c}}}}e}BnC`{{B`{c}}CdC`}}{{{Ef{}{{Ed{c}}}}gi}BnC`{}{{B`{}{{Aj{e}}}}CdC`}{{B`{{j{Bje}}c}}CdC`}}{{{Ef{}{{Ed{c}}}}eg}BnC`{C`Cf}{{B`{{j{Bje}}c}}CdC`}}{cc{}}{{Ejc}BfFb}0{{}Cb}{{{Ef{}{{Ed{c}}}}e}{{Id{{Ef{}{{Ed{c}}}}e}}}C`{{B`{{j{c}}}}CdC`}}{{Eje}{{If{Ej}}}{}{{Fb{}{{Ed{c}}}}}}{{Eje}{{Ih{Ej}}}{}{{Fb{}{{Ed{c}}}}}}{{{Ef{}{{Ed{c}}}}c}{{Ij{{Ef{}{{Ed{c}}}}}}}C`}{ce{}{}}{{{Fb{}{{Il{c}}{Ed{e}}}}}c{{Ef{}{{Ed{e}}}}}C`}{{ei}{{Bh{cg}}}C`{{In{}{{Aj{c}}}}C`}C`{{In{}{{Aj{g}}}}C`}}8{{{j{Ej}}}Cb}9{{{Ef{}{{Ed{c}}}}g}{{J`{{Ef{}{{Ed{c}}}}g}}}C`C`{{B`{c}{{Aj{e}}}}CdC`}}{{{Ef{}{{Ed{c}}}}gk}{{Jb{{Ef{}{{Ed{c}}}}gk}}}C`{}{{B`{}{{Aj{e}}}}CdC`}C`{{B`{{j{Bje}}c}{{Aj{i}}}}CdC`}}{{{Ef{}{{Ed{c}}}}ei}{{Jd{{Ef{}{{Ed{c}}}}ei}}}C`{C`Cf}C`{{B`{{j{Bje}}c}{{Aj{g}}}}CdC`}}{{{Ef{}{{Ed{c}}}}}{{Gl{c}}}C`}{{{Ef{}{{Ed{c}}}}e}{{Gl{c}}}C`{CdC`{B`{{j{c}}{j{c}}}{{Aj{Fh}}}}}}{{{Ef{}{{Ed{c}}}}g}{{Gl{c}}}C`{AbC`}{CdC`{B`{{j{c}}}{{Aj{e}}}}}}210?{{{j{{Ef{}{{Ed{c}}}}}}}{{Gl{Cb}}}C`}{{{Ef{}{{Ed{c}}}}}{{Jf{{Ef{}{{Ed{c}}}}}}}C`}{{{j{BjEh}}e}{{Jh{ce}}}C`{{B`{{j{c}}{j{c}}}{{Aj{Bf}}}}C`Cd}}{{{j{BjEh}}Cb}{{Jj{c}}}C`}{{{j{BjEh}}Cb}{{Jl{c}}}C`}{{{j{{Jn{}{{Il{c}}{Ed{e}}}}}}}c{{Ef{}{{Ed{e}}}}}C`}{{{j{Bj{K`{}{{Il{c}}{Ed{e}}}}}}}c{{Ef{}{{Ed{e}}}}}C`}{{{j{BjEh}}Cb}{{Kb{c}}}C`}{{{j{BjEh}}Cb}{{Kd{c}}}C`}{{{j{BjEh}}}Bn}{{{j{BjEh}}e}BnC`{{B`{{j{c}}{j{c}}}{{Aj{Fh}}}}Cd}}{{{j{BjEh}}g}BnC`{AbC`}{{B`{{j{c}}}{{Aj{e}}}}Cd}}{{{j{BjEh}}g}BnC`Ab{{B`{{j{c}}}{{Aj{e}}}}Cd}}320{{{j{BjEh}}e}{{Kf{ce}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}}{{{j{BjEh}}e}{{Kh{ce}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}}{{Ejc}{{Gl{Fh}}}Fb}{{{Ef{}{{Ed{c}}}}e}{{Bh{gi}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}{KjC`{Kl{c}}}{KjC`{Kl{c}}}}{{{Ef{}{{Ed{c}}}}i}{{Bh{km}}}C`C`C`{{B`{c}{{Aj{{Kn{eg}}}}}}CdC`}{KjC`{Kl{e}}}{KjC`{Kl{g}}}}{{Eje}{{Gl{Cb}}}{}{{B`{c}{{Aj{Bf}}}}CdC`}}00{{Eje}{{L`{Eje}}}{}{{B`{c}{{Aj{Bf}}}}CdC`}}{{{Ef{}{{Ed{c}}}}}eC`{C`{Lb{c}}Lb}}{{{Ef{}{{Ed{c}}}}eg}cC`{{B`{}{{Aj{c}}}}CdC`}{{B`{cc}{{Aj{c}}}}CdC`}}{{{Ef{}{{Ed{c}}}}e}{{Gl{c}}}C`{{B`{cc}{{Aj{c}}}}CdC`}}{Ej{{Ld{Ej}}}}{ecC`{{In{{j{Hh}}}{{Aj{c}}}}C`}}{{EjCb}{{Lf{Ej}}}}{{{Ef{}{{Ed{c}}}}Cb}{{Lh{{Ef{}{{Ed{c}}}}}}}C`}{{{Ef{}{{Ed{c}}}}e}{{Lj{{Ef{}{{Ed{c}}}}e}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}}{{{j{Hh}}c}Bn{{In{{j{Hh}}}}C`}}{{{j{Hh}}c}Bn{{B`{{j{Hh}}Ll}}C`Cd}}{{EjCb}{{Ln{Ej}}}}{{{Ef{}{{Ed{c}}}}}eC`{C`{M`{c}}M`}}{{EjCb}{{Mb{Ej}}}}{{{Ef{}{{Ed{c}}}}Cb}{{Md{{Ef{}{{Ed{c}}}}}}}C`}{{{Ef{}{{Ed{c}}}}e}{{Mf{{Ef{}{{Ed{c}}}}e}}}C`{{B`{{j{c}}}{{Aj{Bf}}}}CdC`}}{{{Ef{}{{Ed{c}}}}gk}{{Mh{{Ef{}{{Ed{c}}}}igk}}}C`{}{{B`{}{{Aj{e}}}}CdC`}{{Mj{}{{Aj{e}}}}C`}{{B`{ec}{{Aj{i}}}}CdC`}}{{Mlei}{{Dn{cg}}}{}{{B`{}{{Aj{c}}}}C`Cd}{}{{B`{c{Dn{cg}}}{{Aj{{Dn{cg}}}}}}C`Cd}}{{{Ef{}{{Ed{c}}}}ei}{{Mn{{Ef{}{{Ed{c}}}}gi}}}C`{CfC`}{{Mj{}{{Aj{e}}}}C`}{{B`{ec}{{Aj{g}}}}CdC`}}{{{Ef{}{{Ed{c}}}}g}eC`{{Mj{}{{Aj{Bn}}}}C`}{{B`{c}{{Aj{e}}}}CdC`}}{{{Ef{}{{Ed{c}}}}gk}iC`{}{{B`{}{{Aj{e}}}}CdC`}{{Mj{}{{Aj{Bn}}}}C`}{{B`{{j{Bje}}c}{{Aj{i}}}}CdC`}}{{{Ef{}{{Ed{c}}}}ei}gC`{C`Cf}{{Mj{}{{Aj{Bn}}}}C`}{{B`{{j{Bje}}c}{{Aj{g}}}}CdC`}}{c{{Dn{e}}}{}{}}0{{{Ef{}{{Ed{c}}}}gi}cC`{}{{B`{}{{Aj{e}}}}CdC`}{{B`{ee}{{Aj{c}}}}CdC`}}{{{Ef{}{{Ed{c}}}}g}{{Gl{c}}}C`{}{{B`{ee}{{Aj{c}}}}CdC`}}{{{j{c}}}E`{}}{{{Ef{}{{Ed{c}}}}}{{Bh{gk}}}C`C`{KjC`{Kl{e}}}C`{KjC`{Kl{i}}}}{{Ej{j{Bj{Fl{c}}}}{j{Bj{Fl{e}}}}}BnC`C`}{{{Ef{}{{Ed{c}}}}e}{{N`{{Ef{}{{Ed{c}}}}e}}}C`{{B`{{j{Bjc}}}}CdC`}}{ce{}{}}{{{Ef{}{{Ed{c}}}}}{{Nb{{Ef{}{{Ed{c}}}}}}}C`}{{EjCb}{{Nd{Ej}}}}{{EjCb}{{Nf{Ej}}}}{{Eje}{}{}{{Nh{c}}}}{{Ejc}{{Nj{Ej}}}Fb}{{Ejc}{{Nl{Ej}}}Fb}`````````````{{{j{c}}}{{j{e}}}{}{}}000{{{j{Bjc}}}{{j{Bje}}}{}{}}000{{{j{{Nn{c}}}}}{{Nn{c}}}{Cfh}}{{{j{{O`{c}}}}}{{O`{c}}}{Cfh}}{{{j{c}}{j{Bje}}}Bn{}{}}0{Cb{{j{c}}}{}}000{Cb{{j{Bjc}}}{}}000{CbBn}000{{{j{{Nn{c}}}}}{{j{{Fl{c}}}}}h}{{{j{Ob}}{j{BjD`}}}Db}0{{{j{{Nn{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{Of{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{O`{c}}}}{j{BjD`}}}Db{Odh}}{OhOb}{cc{}}000``{{{j{{Nn{c}}}}}{{j{Ol}}}h}{{{j{{O`{c}}}}}{{j{{Nn{c}}}}}h}{{{j{{Nn{c}}}}{j{Bjg}}}{{Df{Bn}}}h{{On{c}}}{{A@`{ce}}}}{{}Cb}000{ce{}{}}000`{A@bOb}{{{j{{Nn{c}}}}}{{Of{c}}}h}```{{{j{Ob}}}{{Gl{{j{A@d}}}}}}{{{j{{Nn{c}}}}Cn}{{Fl{Oj}}}Dj}{{{j{{O`{c}}}}Cn}{{Fl{Oj}}}Dj}{{{j{c}}}e{}{}}0{{{j{c}}}A@f{}}{{{j{{Nn{c}}}}}{}h}{c{{Dn{e}}}{}{}}0000000{{{j{c}}}E`{}}000`::::{{{j{{Nn{c}}}}{j{Bje}}Cn}{{Df{Bn}}}DjEb}{{{j{{O`{c}}}}{j{Bje}}Cn}{{Df{Bn}}}DjEb}`{{{j{e}}{Nn{c}}{j{A@h}}}{{Dn{{O`{c}}Ob}}}h{{A@j{c}}}}{{{j{e}}{j{A@h}}}{{Dn{{Nn{c}}Ob}}}h{{A@j{c}}}}``{{{j{c}}}{{j{e}}}{}{}}0{{{j{Bjc}}}{{j{Bje}}}{}{}}0{{{j{Bj{A@l{cegikm}}}}Oj{Fl{{Gl{Fl}}}}}{{Dn{{A@n{Cb}}Ob}}}AA`{{AAb{c}}}OnCl{{AAd{g}}}AAf}{{{j{Bj{AAh{cegikm}}}}Oj{Fl{{Fl{{Gl{Fl}}}}}}}{{Dn{{A@n{Cb}}Ob}}}AA`{{AAb{c}}}OnCl{{AAd{g}}}AAf}{{{A@l{cegikm}}}{{Dn{BnOb}}}AA`{{AAb{c}}}OnCl{{AAd{g}}}AAf}{{{AAh{cegikm}}}{{Dn{BnOb}}}AA`{{AAb{c}}}OnCl{{AAd{g}}}AAf}{Cb{{j{c}}}{}}0{Cb{{j{Bjc}}}{}}0{CbBn}0{{{j{{A@l{cegikm}}}}{j{BjD`}}}Db{OdAA`}{Od{AAb{c}}}{OdOn}{OdCl}{Od{AAd{g}}}{OdAAf}}{{{j{{AAh{cegikm}}}}{j{BjD`}}}Db{OdAA`}{Od{AAb{c}}}{OdOn}{OdCl}{Od{AAd{g}}}{OdAAf}}{cc{}}0{{}Cb}0{ce{}{}}0{{j{j{O`}}{Fl{Fl}}c{j{Bjg}}}{{Dn{{A@l{ikecgAAj}}Ob}}}ClOn{{AAd{e}}}AA`{{AAb{i}}}}{{j{j{O`}}{j{{Bl{{Fl{Fl}}}}}}c{j{Bjg}}}{{Dn{{AAh{ikecgAAj}}Ob}}}ClOn{{AAd{e}}}AA`{{AAb{i}}}}{{{AAl{c}}j{j{O`}}{Fl{Fl}}e{j{Bji}}}{{Dn{{A@l{kmgeic}}Ob}}}AAfClOn{{AAd{g}}}AA`{{AAb{k}}}}{{{AAl{c}}j{j{O`}}{j{{Bl{{Fl{Fl}}}}}}e{j{Bji}}}{{Dn{{AAh{kmgeic}}Ob}}}AAfClOn{{AAd{g}}}AA`{{AAb{k}}}}{{{j{{AAh{cegikm}}}}}{{j{{Bl{Oj}}}}}AA`{{AAb{c}}}OnCl{{AAd{g}}}AAf}{c{{Dn{e}}}{}{}}000{{{j{c}}}E`{}}077`{{{j{Bj{AAn{c}}}}{Fl{{Fl{Fl}}}}{Fl{Oj}}}Bnh}{{{j{c}}}{{j{e}}}{}{}}{{{j{Bjc}}}{{j{Bje}}}{}{}}{{}{{AAn{c}}}{Kjh}}{Cb{{j{c}}}{}}{Cb{{j{Bjc}}}{}}{CbBn}{{{AAn{c}}{j{{AB`{c}}}}{j{{Nn{c}}}}}Bfh}{{{j{{AAn{c}}}}{j{BjD`}}}Db{Odh}}{cc{}}{{}Cb}{ce{}{}}{{}{{AAn{c}}}h}>>={{j{j{Nn}}g{j{{Bl{{Fl{Fl}}}}}}{j{Bjk}}}{{Dn{Ob}}}AA`{{ABb{c}}}{{ABd{ce}}}On{{ABf{i}}}}{{j{j{Nn}}g{Fl{Fl}}{j{Bjk}}}{{Dn{Ob}}}AA`{{ABb{c}}}{{ABd{ce}}}On{{ABf{i}}}}3````````````````{{{ABh{ce}}{j{{ABh{ce}}}}}{{ABh{ce}}}AhABj}>>>>>>>======={{{j{{Ol{c}}}}}{{Ol{c}}}{CfAh}}{{{j{ABl}}}ABl}{{{j{ABn}}}ABn}{{{j{AC`}}}AC`}{{{j{{ABh{ce}}}}}{{ABh{ce}}}CfCf}{{{j{c}}{j{Bje}}}Bn{}{}}0000{{{j{{Ol{c}}}}{Fl{c}}}{{ABh{cABl}}}A`}{{{j{{Ol{c}}}}{ABh{cABl}}}{{ABh{cAC`}}}A`}`{{{j{{Ol{c}}}}c}{{ABh{cAC`}}}A`}{{{j{{Ol{c}}}}c}{{ABh{cABn}}}A`}{Cb{{j{c}}}{}}00000{{{j{{ABh{ce}}}}}{{j{{Bl{c}}}}}{}{}}1{Cb{{j{Bjc}}}{}}000000{{{j{Bj{ABh{ce}}}}}{{j{Bj{Bl{c}}}}}{}{}}{{{j{{Ol{c}}}}{ABh{cAC`}}}{{ABh{cAC`}}}A`}{CbBn}000000{{{j{{Ol{c}}}}}{{ABh{cABl}}}A`}{{{j{{Ol{c}}}}}{{ABh{cAC`}}}A`}{{{j{{Ol{c}}}}}{{ABh{cABn}}}A`}{{{j{{Ol{c}}}}}A@bA`}{{{j{{Ol{c}}}}}CbA`}{{{j{{Ol{c}}}}{ABh{cAC`}}}{{Fl{c}}}A`}{{{ABd{}{{Aj{c}}}}}Bf{}}{{{j{{Ol{c}}}}{j{BjD`}}}Db{OdAh}}{{{j{{ACb{c}}}}{j{BjD`}}}Db{OdAh}}{{{j{ACd}}{j{BjD`}}}Db}{{{j{ABl}}{j{BjD`}}}Db}{{{j{ABn}}{j{BjD`}}}Db}{{{j{AC`}}{j{BjD`}}}Db}{{{j{{ABh{ce}}}}{j{BjD`}}}DbOdOd}{cc{}}000000{{{j{{Ol{c}}}}}cA`}00;{{{j{{ABh{ce}}}}{ACf{Cb}}}{{j{{Bl{c}}}}}{}{}}{{{j{{ABh{ce}}}}ACh}{{j{{Bl{c}}}}}{}{}}{{{j{{ABh{ce}}}}Cb}{{j{c}}}{}{}}{{{j{Bj{ABh{ce}}}}ACh}{{j{Bj{Bl{c}}}}}{}{}}{{{j{Bj{ABh{ce}}}}{ACf{Cb}}}{{j{Bj{Bl{c}}}}}{}{}}{{{j{Bj{ABh{ce}}}}Cb}{{j{Bjc}}}{}{}}{{}Cb}000000{ce{}{}}000000`{{{j{{ABh{ce}}}}}{{`{{ACj{}{{Ed{{j{c}}}}}}}}}{}{}}{{{j{Bj{ABh{ce}}}}}{{`{{ACj{}{{Ed{{j{Bjc}}}}}}}}}{}{}}{{{j{{Ol{c}}}}}A@bA`}`{{{j{{Ol{c}}}}cce}{{Fl{c}}}A`{{Hb{}{{Ed{ACl}}}}Cf}}{{{j{{Ol{c}}}}Cb}{{ABh{cAC`}}}A`}{{{j{{Ol{c}}}}{Fl{c}}}{{ABh{cABn}}}A`}{{{j{{Ol{c}}}}{ABh{cABn}}}{{ABh{cABl}}}A`}{{{ABh{ce}}c}{{ABh{ce}}}AhABj}{j{{ABd{}{{Aj{c}}}}}{}}{{A@bA@b}{{Ol{c}}}A`}{{Cbc}{{ABh{ce}}}Cf{}}{{{Fl{c}}}{{ABh{cABn}}}Cf}{{{j{{ABh{ce}}}}}Cb{}{}}{{{j{{Ol{c}}}}}{{ACb{c}}}A`}{{{ABd{}{{Aj{c}}}}e}{{Dn{cOb}}}{}{{In{}{{Aj{{Dn{Ob}}}}}}}}{{{j{{ABh{cABn}}}}ACn}{{ABh{cABn}}}Ah}{{{j{{Ol{c}}}}{j{{ABh{cAC`}}}}ACn}{{ABh{cAC`}}}A`}{{{j{{Ol{c}}}}cACn}cA`}{{{j{{ABh{ce}}}}c}{{ABh{ce}}}AhABj}{{{ABh{ce}}{j{{ABh{ce}}}}}{{ABh{ce}}}AhABj}{{{j{c}}}e{}{}}0000{c{{Dn{e}}}{}{}}0000000000000{{{j{c}}}E`{}}000000`{ce{}{}}000000``````````````````{{{AD`{c}}{AD`{c}}}{{AD`{c}}}Ah}{{{j{Bj{AD`{c}}}}c}BnAh}{{{j{Bj{AD`{c}}}}{AD`{c}}}BnAh}{{{j{BjADb}}{j{ADb}}}Bn}{{{j{BjADb}}}Bn}{{{j{ADb}}}Fl}{{{j{c}}}{{j{e}}}{}{}}{{{j{Bjc}}}{{j{Bje}}}{}{}}{{{j{ADb}}{j{e}}}Bfh{{AAf{c}}}}{{{j{{AD`{c}}}}}{{AD`{c}}}Cf}{{{j{c}}{j{Bje}}}Bn{}{}}{{{j{ADd}}{j{e}}{j{{ABh{ABl}}}}AD`}{}h{{AAf{c}}}}{{{j{A@j}}{j{e}}{j{{ABh{ABn}}}}AD`}{}h{{AAf{c}}}}{{{j{AAb}}c{j{Bjg}}i}{{Df{Bn}}}ClOn{{AAd{e}}}{{Hb{}{{Ed{`}}}}Cf}}{{{j{AAb}}{j{c}}e{j{Bji}}k}{{Df{Bn}}}AAfClOn{{AAd{g}}}{{Hb{}{{Ed{`}}}}Cf}}{{}{{AD`{c}}}Ah}{Cb{{j{c}}}{}}{Cb{{j{Bjc}}}{}}{{{j{BjA@j}}A@b}Bn}{CbBn}{{{j{{ADh{}{{ADf{c}}}}}}}c{{ADb{e}}}h}{{{j{{AD`{c}}}}{j{{AD`{c}}}}}BfADj}{{{j{ADb}}{j{e}}}{}h{{AAf{c}}}}{{{j{{AD`{c}}}}{j{BjD`}}}DbOd}{cc{}}{{}Cb}{ce{}{}}{{{j{A@j}}}A@b}{{{AD`{c}}{AD`{c}}}{{AD`{c}}}Ah}{{{j{Bj{AD`{c}}}}c}BnAh}{{{j{Bj{AD`{c}}}}{AD`{c}}}BnAh}{{{j{A@j}}}Ch}{A@bADd}{jAAb}{{}{{ABb{}{{ADl{c}}{ADn{g}}}}}{{AE`{e}{{ADn{g}}}}}AA`{}}{{{j{Bjc}}}{{AD`{e}}}ClAh}{A@bc{}}{{{j{Bjc}}}{{Df{A@j}}}Dh}{{{j{Bjc}}}{{Df{e}}}Dh{}}{{{j{ADb}}}Fl}{{{j{BjADb}}}Bn}{{{j{c}}}e{}{}}{c{{Dn{e}}}{}{}}0{{{j{c}}}E`{}}{{{j{{ABb{}{{ADl{c}}{ADn{g}}}}}}{j{Bjk}}mg}{{Dn{cACd}}}{{AE`{e}{{ADn{g}}}}}AA`{}On{{ABf{i}}}{{Hb{}{{Ed{`}}}}Cf}}{ce{}{}}{{{j{A@j}}{j{Bjc}}}{{Df{Bn}}}Eb}```````{{{j{c}}}{{j{e}}}{}{}}0{{{j{Bjc}}}{{j{Bje}}}{}{}}0{{{j{{AEb{c}}}}}{{AEb{c}}}{Cfh}}{{{j{c}}{j{Bje}}}Bn{}{}}{{{j{{AEb{c}}}}{j{e}}{j{{ABh{ABl}}}}AD`}{}h{{AAf{c}}}}{{{j{{AEb{c}}}}{j{e}}{j{{ABh{ABn}}}}AD`}{}h{{AAf{c}}}}{{{j{e}}{j{{AEb{c}}}}g{j{Bjk}}{j{{ABh{ABl}}}}AD`}{{Df{Bn}}}h{{AAf{c}}}Cl{{On{c}}}{{AAd{ci}}}}{Cb{{j{c}}}{}}0{Cb{{j{Bjc}}}{}}0{{{j{Bj{AEb{c}}}}A@b}Bnh}{CbBn}0{{{j{{AEb{c}}}}}{{AEd{c}}}h}{{{j{{AEb{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{AEf{c}}}}{j{BjD`}}}Db{Odh}}{cc{}}0{{}Cb}0{ce{}{}}0{{{j{{AEb{c}}}}}A@bh}{{{j{{AEb{c}}}}}Chh}{A@b{{AEb{c}}}h}{A@bc{}}{{{j{Bjc}}}{{Df{{AEb{e}}}}}Dhh}{{{j{Bjc}}}{{Df{e}}}Dh{}}{{{j{c}}}e{}{}}{c{{Dn{e}}}{}{}}000{{{j{c}}}E`{}}0{{{AEd{c}}{j{Bjg}}}{{Dn{{AEh{c}}ACd}}}h{{On{c}}}{{ABf{ce}}}}::{{{j{{AEb{c}}}}{j{Bje}}}{{Df{Bn}}}hEb}`{{{j{Bj{AEd{c}}}}}Bnh}{{{j{Bj{AEd{c}}}}{j{{AEd{c}}}}}Bnh}0{{{j{Bj{AEd{c}}}}{j{Bl}}}Bnh}222{{{j{{AEd{c}}}}}Flh}{{{j{c}}}{{j{e}}}{}{}}{{{j{Bjc}}}{{j{Bje}}}{}{}}{{{j{{AEd{c}}}}{j{e}}}Bfh{{AAf{c}}}}{{{j{{AEd{c}}}}}{{AEd{c}}}{Cfh}}{{{j{c}}{j{Bje}}}Bn{}{}}{Cb{{j{c}}}{}}{Cb{{j{Bjc}}}{}}{CbBn}{{{j{{AEd{c}}}}{j{e}}}{}h{{AAf{c}}}}{{{j{{AEd{c}}}}{j{BjD`}}}Db{Odh}}{cc{}}{{}Cb}{ce{}{}}{{{j{{AB`{c}}}}}{{AEd{c}}}h}>{{{j{Bj{AEd{c}}}}}Bnh}{{{j{c}}}e{}{}}{c{{Dn{e}}}{}{}}0{{{j{c}}}E`{}}5``{{{j{c}}}{{j{e}}}{}{}}0{{{j{Bjc}}}{{j{Bje}}}{}{}}0{{{j{{AEj{c}}}}{j{e}}g{j{Bjk}}m}{{Df{Bn}}}h{{AAf{c}}}Cl{{On{c}}}{{AAd{ci}}}{{Hb{}{{Ed{{`{c}}}}}}Cf}}??>>=={{{j{{AEj{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{AEl{c}}}}{j{BjD`}}}Db{Odh}}<<;;::{{{j{{AEb{c}}}}}{{AEj{c}}}h}{{}{{AEl{c}}}h}888877{{{j{{AEl{c}}}}{j{Bjg}}i{AEd{c}}}{{Dn{kACd}}}h{{On{c}}}{{ABf{ce}}}{{Hb{}{{Ed{{`{c{AEd{c}}}}}}}}Cf}{}}==````77776666{{{j{{AEh{c}}}}}{{AEh{c}}}{Cfh}}{{{j{{AEn{c}}}}}{{AEn{c}}}{Cfh}}{{{j{c}}{j{Bje}}}Bn{}{}}0{{{j{{AEh{c}}}}{j{e}}}ch{{AAf{c}}}}{Cb{{j{c}}}{}}000{Cb{{j{Bjc}}}{}}000{CbBn}000{{{AF`{c}}}Bfh}{{{AFb{c}}}Bfh}{{{j{{AEh{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{AEn{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{AF`{c}}}}{j{BjD`}}}Db{Odh}}{{{j{{AFb{c}}}}{j{BjD`}}}Db{Odh}}{cc{}}000`{{}Cb}000{ce{}{}}000{{{j{{AEb{c}}}}}{{AF`{c}}}h}{{{j{{AEb{c}}}}}{{AFb{c}}}h}{{{AF`{c}}e}{{Dn{gOb}}}h{{In{{AEd{c}}}{{Aj{{Dn{{AEh{c}}Ob}}}}}}}{}}{{{AFb{c}}e}{{Dn{gOb}}}h{{In{{AEd{c}}}{{Aj{{Dn{{AEh{c}}Ob}}}}}}}{}}{{{j{c}}}e{}{}}0{c{{Dn{e}}}{}{}}0000000{{{j{c}}}E`{}}000`{{{AEh{c}}}{{AEd{c}}}h}{{{AEh{c}}c}{{Bh{{AEd{c}}{AEn{c}}}}}h}9999```````{{{j{c}}}{{j{e}}}{}{}}00{{{j{Bjc}}}{{j{Bje}}}{}{}}00{{{j{{AFd{c}}}}}{{AFd{c}}}{CfAFf}}{{{j{{AFh{c}}}}}{{AFh{c}}}{CfAFf}}{{{j{c}}{j{Bje}}}Bn{}{}}0{{{j{{AFd{c}}}}{j{e}}{j{{ABh{ABl}}}}AD`}{}AFfAAf}{{{j{{AFd{c}}}}{j{e}}{j{{ABh{ABn}}}}AD`}{}AFfAAf}{{{j{{AFh{c}}}}{j{e}}{j{{ABh{ABn}}}}AD`}{}AFfAAf}{Cb{{j{c}}}{}}00{Cb{{j{Bjc}}}{}}00{{{j{Bj{AFd{c}}}}A@b}BnAFf}{{{j{Bj{AFh{c}}}}A@b}BnAFf}{CbBn}00{{{j{{AFd{c}}}}}{{AFj{c}}}AFf}{{{j{{AFh{c}}}}}{{AFj{c}}}AFf}{{{j{{AFd{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AFh{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AFl{c}}}}{j{BjD`}}}Db{OdAFf}}{cc{}}00{{{j{{AFd{c}}}}A@bFl{Gl{Fl}}}{{AFd{c}}}AFf}{{}Cb}00{ce{}{}}00{{{j{{AFd{c}}}}}A@bAFf}{{{j{{AFh{c}}}}}A@bAFf}{{{j{{AFd{c}}}}}ChAFf}{{{j{{AFh{c}}}}}ChAFf}{A@b{{AFd{c}}}AFf}{A@bc{}}{{{j{Bjc}}}{{Df{{AFd{e}}}}}DhAFf}{{{j{Bjc}}}{{Df{{AFh{e}}}}}DhAFf}{{{j{Bjc}}Cn}{{Df{{AFd{e}}}}}DhAFf}{{{j{Bjc}}Cn}{{Df{{AFh{e}}}}}DhAFf}{{{j{Bjc}}}{{Df{e}}}Dh{}}{{A@bc}{{AFd{e}}}ClAFf}{{{j{c}}}e{}{}}0{c{{Dn{e}}}{}{}}00000{{{j{c}}}E`{}}00{{{j{{AFd{c}}}}}{{AFh{c}}}AFf}{ce{}{}}00{{{j{{AFd{c}}}}{j{Bje}}}{{Df{Bn}}}AFfEb}{{{j{{AFh{c}}}}{j{Bje}}}{{Df{Bn}}}AFfEb}{{{j{{AFd{c}}}}{j{Bje}}Cn}{{Df{Bn}}}AFfEb}{{{j{{AFh{c}}}}{j{Bje}}Cn}{{Df{Bn}}}AFfEb}``{{{j{Bj{AFj{c}}}}{j{{AFj{c}}}}}BnAFf}{{{j{Bj{AFn{c}}}}{AFn{c}}}BnAG`}{{{j{Bj{AFj{c}}}}}BnAFf}{{{j{{AFj{c}}}}}FlAFf}{{{j{c}}}{{j{e}}}{}{}}0{{{j{Bjc}}}{{j{Bje}}}{}{}}0{{{j{{AFj{c}}}}{j{e}}}BfAFfAAf}{{{AFn{c}}{j{e}}{j{{AFh{c}}}}}BfAG`AAf}{{{j{{AFj{c}}}}}{{AFj{c}}}{CfAFf}}{{{j{{AFn{c}}}}}{{AFn{c}}}{CfAFf}}{{{j{c}}{j{Bje}}}Bn{}{}}08{{}{{AFj{c}}}{KjAFf}}{{}{{AFn{c}}}{KjAFf}}{Cb{{j{c}}}{}}0{Cb{{j{Bjc}}}{}}0{CbBn}0{{{j{{AFj{c}}}}{j{e}}}{}AFfAAf}{{{j{{AFj{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AFn{c}}}}{j{BjD`}}}Db{OdAFf}}{cc{}}0{{}Cb}0{ce{}{}}0{{}{{AFj{c}}}AFf}{{}{{AFn{c}}}AG`}{{{j{{AFj{c}}}}}FlAFf}{{{j{Bj{AFj{c}}}}}BnAFf}{{{j{Bj{AFn{c}}}}}BnAG`}{{{j{c}}}e{}{}}0{c{{Dn{e}}}{}{}}000{{{j{c}}}E`{}}088````{{{j{c}}}{{j{e}}}{}{}}000{{{j{Bjc}}}{{j{Bje}}}{}{}}000{{{j{{AGb{c}}}}{j{e}}g{j{Bjk}}m}{{Df{Bn}}}{AFfOd}AAfClOn{{AAd{i}}}{{Hb{}{{Ed{`}}}}Cf}}{{{j{{AGd{c}}}}{j{e}}g{j{Bjk}}m}{{Df{Bn}}}{AFfOd}AAfClOn{{AAd{i}}}{{Hb{}{{Ed{`}}}}Cf}}{Cb{{j{c}}}{}}000{Cb{{j{Bjc}}}{}}000{CbBn}000{{{j{{AGb{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AGf{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AGd{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AGh{c}}}}{j{BjD`}}}Db{OdAFf}}{cc{}}000{{}Cb}000{ce{}{}}000{{{j{{AFd{c}}}}}{{AGb{c}}}{AFfOd}}{{}{{AGf{c}}}{AG`Od}}{{{j{{AFd{c}}}}}{{AGd{c}}}{AFfOd}}{{{j{{AFd{c}}}}}{{AGd{c}}}AFf}{{}{{AGh{c}}}{AG`Od}}{c{{Dn{e}}}{}{}}0000000{{{j{c}}}E`{}}000{{{j{{AGf{c}}}}{j{Bjg}}i{AFn{c}}}{{Dn{kACd}}}{AG`Od}On{{ABf{e}}}{{Hb{}{{Ed{{`{{AFj{c}}}}}}}}Cf}{}}{{{j{{AGh{c}}}}{j{Bjg}}i{AFn{c}}}{{Dn{kACd}}}{AG`Od}On{{ABf{e}}}{{Hb{}{{Ed{{`{{AFj{c}}}}}}}}Cf}{}}9999```{{{j{c}}}{{j{e}}}{}{}}00{{{j{Bjc}}}{{j{Bje}}}{}{}}00{{{j{{AGj{c}}}}}{{AGj{c}}}{CfAG`}}{{{j{{AGl{c}}}}}{{AGl{c}}}{CfAFf}}{{{j{{AGn{c}}}}}{{AGn{c}}}{CfAFf}}{{{j{c}}{j{Bje}}}Bn{}{}}00{Cb{{j{c}}}{}}00{Cb{{j{Bjc}}}{}}00{CbBn}00{{{AGl{c}}}Bf{AG`Od}}{{{AGn{c}}}Bf{AG`Od}}{{{j{{AGj{c}}}}{j{BjD`}}}Db{OdAG`}}{{{j{{AGl{c}}}}{j{BjD`}}}Db{OdAFf}}{{{j{{AGn{c}}}}{j{BjD`}}}Db{OdAFf}}{cc{}}00{{}Cb}00{ce{}{}}00{{{j{{AFh{c}}}}}{{AGl{c}}}{AG`Od}}{{{j{{AFh{c}}}}}{{AGl{c}}}AG`}{{{j{{AFh{c}}}}}{{AGn{c}}}{AG`Od}}0{{{AGl{c}}e}{{Dn{gOb}}}{AG`Od}{{In{}{{Aj{{Dn{Ob}}}}}}}{}}{{{AGn{c}}e}{{Dn{gOb}}}{AG`Od}{{In{}{{Aj{{Dn{Ob}}}}}}}{}}{{{j{c}}}e{}{}}00{c{{Dn{e}}}{}{}}00000{{{j{c}}}E`{}}00888{{{AFn{c}}{j{{AFh{c}}}}}{{AGl{c}}}AG`}`````````````{{{j{{On{}{{AH`{c}}}}}}}{{AHb{eg}}}{}h{}}{{{j{c}}}{{j{e}}}{}{}}00000{{{j{Bjc}}}{{j{Bje}}}{}{}}00000{{{j{{AHd{ceg}}}}}{{AHd{ceg}}}{CfDh}{Cfh}{Cf{On{e}}}}{{{j{{AHf{ceg}}}}}{{AHf{ceg}}}{CfDh}{Cfh}{Cf{On{e}}}}{{{j{{AHh{ceg}}}}}{{AHh{ceg}}}{CfEb}{Cfh}{Cf{On{e}}}}{{{j{{AHj{ceg}}}}}{{AHj{ceg}}}{CfEb}{Cfh}{Cf{On{e}}}}{{{j{{AHb{ce}}}}}{{AHb{ce}}}{Cfh}Cf}{{{j{{AHl{c}}}}}{{AHl{c}}}{Cfh}}{{{j{c}}{j{Bje}}}Bn{}{}}00000{{{j{BjA@`}}c}{{Df{Bn}}}h}{{{j{Bj{AHd{ce{AHl{e}}}}}}e}{{Df{Bn}}}Dhh}{{{j{Bj{AHf{ce{AHl{e}}}}}}e}{{Df{Bn}}}Dhh}{{{j{Bj{AHh{ce{AHl{e}}}}}}e}{{Df{Bn}}}Ebh}{{{j{Bj{AHj{ce{AHl{e}}}}}}e}{{Df{Bn}}}Ebh}{{{j{BjA@`}}}{{Df{Bn}}}}{{{j{Bj{AHd{ce{AHl{e}}}}}}}{{Df{Bn}}}Dhh}{{{j{Bj{AHf{ce{AHl{e}}}}}}}{{Df{Bn}}}Dhh}{{{j{Bj{AHh{ce{AHl{e}}}}}}}{{Df{Bn}}}Ebh}{{{j{Bj{AHj{ce{AHl{e}}}}}}}{{Df{Bn}}}Ebh}{Cb{{j{c}}}{}}000{{{j{{AHb{ce}}}}}{{j{g}}}h{}{}}1{{{j{{AHl{c}}}}}{{j{e}}}h{}}2{Cb{{j{Bjc}}}{}}00000{CbBn}00000{AHncEb}{{{AHh{ce{AHl{e}}}}}cEbh}{{{AHj{ce{AHl{e}}}}}cEbh}{{{j{{AHd{ceg}}}}{j{BjD`}}}Db{OdDh}{Odh}{Od{On{e}}}}{{{j{{AHf{ceg}}}}{j{BjD`}}}Db{OdDh}{Odh}{Od{On{e}}}}{{{j{{AHh{ceg}}}}{j{BjD`}}}Db{OdEb}{Odh}{Od{On{e}}}}{{{j{{AHj{ceg}}}}{j{BjD`}}}Db{OdEb}{Odh}{Od{On{e}}}}{{{j{{AHb{ce}}}}{j{BjD`}}}Db{Odh}Od}{{{j{{AHl{c}}}}{j{BjD`}}}Db{Odh}}{cc{}}00000{{{j{{On{}{{AH`{c}}}}}}}{}{}}{{{j{{AHl{c}}}}}{}h}{cAI`Dh}{cAHnEb}{c{{AHd{ce{AHl{e}}}}}Dhh}{{}Cb}{c{{AHf{ce{AHl{e}}}}}Dhh}11{c{{AHh{ce{AHl{e}}}}}Ebh}{c{{AHj{ce{AHl{e}}}}}Ebh}333{ce{}{}}00000{{{j{c}}}{{On{}{{AH`{c}}}}}{}}{{{j{{AIb{Oj}}}}}{{AHl{c}}}h}{{{j{Bjg}}Cb}{{Df{{Fl{c}}}}}h{{On{c}}}{{ABf{ce}}}}{{{j{Bjg}}Cb}{{Df{Fl}}}h{{On{c}}}{{ABf{ce}}}}{{{j{BjABf}}}{{Df{c}}}h}{{{j{Bj{AHd{ce{AHl{e}}}}}}}{{Df{e}}}Dhh}{{{j{Bj{AHf{ce{AHl{e}}}}}}}{{Df{e}}}Dhh}{{{j{BjABf}}}Df}{{{j{Bj{AHd{ce{AHl{e}}}}}}}DfDhh}{{{j{Bj{AHf{ce{AHl{e}}}}}}}DfDhh}{{{j{BjA@`}}}eh{{On{c}}}}{{{j{Bj{AHd{ce{AHl{e}}}}}}}{{AHl{e}}}Dhh}{{{j{Bj{AHf{ce{AHl{e}}}}}}}{{AHl{e}}}Dhh}{{{j{Bj{AHh{ce{AHl{e}}}}}}}{{AHl{e}}}Ebh}{{{j{Bj{AHj{ce{AHl{e}}}}}}}{{AHl{e}}}Ebh}{{{j{BjA@`}}}{{AHb{ce}}}h{}}{{{j{c}}}e{}{}}00000{c{{Dn{e}}}{}{}}00000000000{{{j{c}}}E`{}}00000{ce{}{}}00000{{{j{BjAAd}}c}{{Df{Bn}}}h}{{{j{Bj{AHh{ce{AHl{e}}}}}}e}{{Df{Bn}}}Ebh}{{{j{Bj{AHj{ce{AHl{e}}}}}}e}{{Df{Bn}}}Ebh}{{{j{BjAAd}}}{{Df{Bn}}}}{{{j{Bj{AHh{ce{AHl{e}}}}}}}{{Df{Bn}}}Ebh}{{{j{Bj{AHj{ce{AHl{e}}}}}}}{{Df{Bn}}}Ebh}","D":"D@d","p":[[17,"ScalarExt"],[17,"Base"],[17,"CurveExt"],[10,"CurveAffine",6,1196],[1,"reference"],[5,"Coordinates",1196],[5,"CtOption",1197],[10,"WithSmallOrderMulGroup",1198],[10,"Ord",1199],[17,"AffineExt"],[10,"CurveExt",6,1196],[10,"Field",6,1198],[17,"Output"],[10,"Mul",1200],[1,"str"],[10,"Fn",1201],[5,"Box",1202],[5,"Choice",1197],[1,"bool"],[1,"tuple"],[0,"mut"],[1,"slice"],[1,"unit"],[10,"Send",1203],[1,"usize"],[10,"Sync",1203],[10,"Clone",1204],[1,"u64"],[10,"AsRef",1205],[10,"RngCore",1206],[6,"SerdeFormat",43],[5,"Formatter",1207],[8,"Result",1207],[10,"CurveRead",43],[8,"Result",1208],[10,"Read",1209],[10,"SerdeCurveAffine",43],[10,"SerdePrimeField",43],[6,"Result",1210],[5,"TypeId",1211],[10,"Write",1209],[17,"Item"],[10,"ParallelIterator",72,1212],[10,"ParallelSliceMut",72,1213],[10,"IndexedParallelIterator",72,1212],[5,"ExponentialBlocks",1214],[5,"UniformBlocks",1214],[5,"Chain",1215],[10,"IntoParallelIterator",72,1212],[5,"Chunks",1216],[5,"Cloned",1217],[6,"Ordering",1199],[10,"FromParallelIterator",1212],[5,"Vec",1218],[5,"LinkedList",1219],[5,"Copied",1220],[10,"Consumer",1221],[10,"UnindexedConsumer",1221],[5,"Enumerate",1222],[5,"Filter",1223],[5,"FilterMap",1224],[6,"Option",1225],[5,"FlatMap",1226],[5,"FlatMapIter",1227],[10,"IntoIterator",1228],[5,"Flatten",1229],[5,"FlattenIter",1230],[5,"Scope",72,1231],[5,"Error",1207],[5,"Fold",1232],[5,"FoldChunks",1233],[5,"FoldChunksWith",1234],[5,"FoldWith",1232],[5,"Inspect",1235],[5,"Interleave",1236],[5,"InterleaveShortest",1237],[5,"Intersperse",1238],[17,"Iter"],[10,"FnOnce",1201],[5,"Map",1239],[5,"MapInit",1240],[5,"MapWith",1240],[5,"PanicFuse",1241],[5,"ChunkByMut",1242],[5,"ChunksExactMut",1243],[5,"ChunksMut",1243],[10,"IntoParallelRefIterator",72,1212],[10,"IntoParallelRefMutIterator",72,1212],[5,"RChunksExactMut",1244],[5,"RChunksMut",1244],[5,"SplitInclusiveMut",1213],[5,"SplitMut",1213],[10,"Default",1245],[10,"ParallelExtend",1212],[6,"Either",1246],[5,"Positions",1247],[10,"Product",1248],[5,"Rev",1249],[5,"Skip",1250],[5,"SkipAny",1251],[5,"SkipAnyWhile",1252],[5,"BroadcastContext",1253],[5,"StepBy",1254],[10,"Sum",1248],[5,"Take",1255],[5,"TakeAny",1256],[5,"TakeAnyWhile",1257],[5,"TryFold",1258],[10,"Try",1259],[10,"TryFoldAndReduce",72,1260],[5,"TryFoldWith",1258],[5,"Update",1261],[5,"WhileSome",1262],[5,"MaxLen",1263],[5,"MinLen",1263],[10,"ProducerCallback",1221],[5,"Zip",1264],[5,"ZipEq",1265],[5,"VerifyingKey",216],[5,"ProvingKey",216],[6,"Error",216,1266],[10,"Debug",1207],[5,"PinnedVerificationKey",216],[5,"Error",1208],[1,"u8"],[5,"EvaluationDomain",369,1267],[10,"EncodedChallenge",1041],[10,"Transcript",1041],[1,"u32"],[10,"Error",1268],[5,"String",1269],[5,"CompiledCircuit",1270],[10,"Params",540],[5,"ProverSingle",312],[5,"HashMap",1271],[10,"CommitmentScheme",540],[10,"Prover",540],[10,"TranscriptWrite",1041],[10,"MsmAccel",1272],[5,"Prover",312],[5,"H2cEngine",1273],[5,"PlonkEngine",1273],[5,"BatchVerifier",349,1274],[8,"ParamsVerifierIPA",610],[10,"Verifier",540],[10,"VerificationStrategy",369,1275],[10,"TranscriptRead",1041],[5,"Polynomial",369],[10,"Basis",369],[5,"Coeff",369],[5,"LagrangeCoeff",369],[5,"ExtendedLagrangeCoeff",369],[5,"PinnedEvaluationDomain",369,1267],[6,"Error",369],[5,"RangeFrom",1276],[5,"RangeFull",1276],[10,"Iterator",1277],[1,"i32"],[5,"Rotation",1278],[5,"Blind",540],[10,"MSM",540],[10,"ParamsProver",540],[17,"MSM"],[10,"ParamsVerifier",540],[10,"PartialEq",1199],[17,"Guard"],[17,"MSMAccumulator"],[10,"Guard",369,1275],[5,"ParamsIPA",610],[5,"MSMIPA",655],[5,"IPACommitmentScheme",610],[5,"GuardIPA",717],[5,"ProverIPA",685,1279],[5,"VerifierIPA",685,1280],[5,"Accumulator",717],[5,"AccumulatorStrategy",717],[5,"SingleStrategy",717],[5,"ParamsKZG",794],[10,"Engine",1281],[5,"ParamsVerifierKZG",794],[5,"MSMKZG",867],[5,"KZGCommitmentScheme",794],[5,"DualMSM",867],[10,"MultiMillerLoop",1281],[5,"ProverGWC",916,1282],[5,"ProverSHPLONK",916,1283],[5,"VerifierGWC",916,1284],[5,"VerifierSHPLONK",916,1285],[5,"GuardKZG",981],[5,"AccumulatorStrategy",981],[5,"SingleStrategy",981],[17,"Input"],[5,"ChallengeScalar",1041],[5,"Blake2bRead",1041],[5,"Keccak256Read",1041],[5,"Blake2bWrite",1041],[5,"Keccak256Write",1041],[5,"Challenge255",1041],[10,"TranscriptWriterBuffer",1041],[10,"TranscriptReadBuffer",1041],[1,"array"],[15,"NotEnoughRowsAvailable",309]],"r":[[2,1286],[10,1196],[11,1196],[13,1198],[72,1212],[73,1212],[74,1212],[75,1212],[83,1212],[84,1213],[85,1231],[86,1260],[103,1287],[141,1288],[184,1231],[219,1266],[349,1274],[372,1267],[374,1275],[380,1267],[383,1275],[621,1289],[651,1290],[685,1279],[686,1280],[916,1282],[917,1283],[918,1284],[919,1285]],"b":[[254,"impl-Debug-for-Error"],[255,"impl-Display-for-Error"],[464,"impl-Index%3CRangeFrom%3Cusize%3E%3E-for-Polynomial%3CF,+B%3E"],[465,"impl-Index%3CRangeFull%3E-for-Polynomial%3CF,+B%3E"],[466,"impl-Index%3Cusize%3E-for-Polynomial%3CF,+B%3E"],[467,"impl-IndexMut%3CRangeFull%3E-for-Polynomial%3CF,+B%3E"],[468,"impl-IndexMut%3CRangeFrom%3Cusize%3E%3E-for-Polynomial%3CF,+B%3E"],[469,"impl-IndexMut%3Cusize%3E-for-Polynomial%3CF,+B%3E"],[504,"impl-Sub%3CF%3E-for-%26Polynomial%3CF,+B%3E"],[505,"impl-Sub%3C%26Polynomial%3CF,+B%3E%3E-for-Polynomial%3CF,+B%3E"],[559,"impl-AddAssign%3CF%3E-for-Blind%3CF%3E"],[560,"impl-AddAssign-for-Blind%3CF%3E"],[587,"impl-MulAssign%3CF%3E-for-Blind%3CF%3E"],[588,"impl-MulAssign-for-Blind%3CF%3E"],[657,"impl-MSMIPA%3C\'a,+C%3E"],[658,"impl-MSM%3CC%3E-for-MSMIPA%3C\'a,+C%3E"],[960,"impl-Prover%3C\'params,+KZGCommitmentScheme%3CE%3E%3E-for-ProverSHPLONK%3C\'params,+E%3E"],[961,"impl-ProverSHPLONK%3C\'a,+E%3E"],[1019,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-AccumulatorStrategy%3CE%3E"],[1020,"impl-AccumulatorStrategy%3CE%3E"],[1021,"impl-SingleStrategy%3CE%3E"],[1022,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-SingleStrategy%3CE%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKoCcgAAAAAAAgABACwAAAAwAAAAMgACADYABQA9AAAAQgAEAFcAAABbAAEAaQABAG0AAAB8AAAAhwAAAMoAAQDOAAAA0gAAAOYAFwD/AAUADgEDABwBAAAfAQIAIwELADABAwA7AQMAQwEHAE0BAQBRAQAAVgEHAGABBQBnAQAAaQEAAGwBAgBxAQAAeAEAAIEBGQCgAQ8AsQEGAL8BBgDRAQwA6wEAAO4BAADxAQAA+QEjAC8CAgA1AgEAOAIBAD4CAgBCAgAARAIAAEYCAABIAgAASwICAFgCAwBdAgAAZgIFAG8CCQB7AgEAfwIBAIICAACEAgcAjQIBAJcCCwCkAgAApwIGALACAwC1AgcAvwIBAMMCCgDSAgsA3wILAO0CAwD2AgMA/gIRABMDAwAeAxwAPwMCAEUDBQBOAwEAUQMOAGMDAABmAwAAaAMGAHADAwB1AwoAggMBAIgDAQCLAwkAmQMHAKMDDwC3AwMAvwMCAMMDDQDSAwMA2QMZAPYDAgD8AwAA/wMRACAEFwA5BAMAPgQXAFcEAABZBAUAZgQAAGoEAABsBAEAcAQCAHoEAgB+BAEAgQQBAIQEAwCJBB0AqAQBAKsEAQA="}],\ ["halo2_debug",{"t":"HCHHHFFFFNNNNNNNNNNNNNNNNNNNNHHNNNNNNNNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNNN","n":["check_witness","display","keccak_hex","test_result","test_rng","ExprDisp","FDisp","LookupArgDisp","ShuffleArgDisp","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","expr_disp","expr_disp_names","fmt","fmt","fmt","fmt","from","from","from","from","init","init","init","init","into","into","into","into","lookup_arg_disp","lookup_arg_disp_names","shuffle_arg_disp","shuffle_arg_disp_names","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip"],"q":[[0,"halo2_debug"],[5,"halo2_debug::display"],[71,"halo2_middleware::circuit"],[72,"alloc::vec"],[73,"ff"],[74,"alloc::string"],[75,"core::convert"],[76,"core::ops::function"],[77,"core::marker"],[78,"rand_chacha::chacha"],[79,"halo2_middleware::expression"],[80,"std::collections::hash::map"],[81,"core::fmt"],[82,"halo2_middleware::lookup"],[83,"halo2_middleware::shuffle"],[84,"core::result"],[85,"core::any"],[86,"halo2_debug::check_witness"]],"i":[0,0,0,0,0,0,0,0,0,24,19,27,28,24,19,27,28,24,19,27,28,24,19,27,28,24,19,27,28,0,0,24,19,27,28,24,19,27,28,24,19,27,28,24,19,27,28,0,0,0,0,24,19,27,28,24,19,27,28,24,19,27,28,24,19,27,28,24,19,27,28],"f":"{{{d{{b{c}}}}fh{d{{l{{j{c}}}}}}{d{{l{{j{c}}}}}}}nA`}`{cAb{{Af{{l{Ad}}}}}}{{c{d{Ah}}}{{j{Ad}}}{{Al{}{{Aj{{j{Ad}}}}}}An}}{{}B`}````{{{d{c}}}{{d{e}}}{}{}}000{{{d{Bbc}}}{{d{Bbe}}}{}{}}000{h{{d{c}}}{}}000{h{{d{Bbc}}}{}}000{hn}000{{{d{{Bd{ce}}}}}{{Bf{cen}}}A`Bh}{{{d{{Bd{cBj}}}}{d{{Bn{BlAb}}}}}{{Bf{cBj{Bn{BlAb}}}}}A`}{{{d{{C`{c}}}}{d{BbCb}}}CdA`}{{{d{{Bf{ceg}}}}{d{BbCb}}}CdA`Bh{}}{{{d{{Cf{ceg}}}}{d{BbCb}}}CdA`Bh{}}{{{d{{Ch{ceg}}}}{d{BbCb}}}CdA`Bh{}}{cc{}}000{{}h}000{ce{}{}}000{{{d{{Cj{ce}}}}}{{Cf{cen}}}A`Bh}{{{d{{Cj{cBj}}}}{d{{Bn{BlAb}}}}}{{Cf{cBj{Bn{BlAb}}}}}A`}{{{d{{Cl{ce}}}}}{{Ch{cen}}}A`Bh}{{{d{{Cl{cBj}}}}{d{{Bn{BlAb}}}}}{{Ch{cBj{Bn{BlAb}}}}}A`}{{{d{c}}}Ab{}}000{c{{Cn{e}}}{}{}}0000000{{{d{c}}}D`{}}0007777","D":"Bj","p":[[5,"CompiledCircuit",71],[1,"reference"],[1,"u32"],[1,"usize"],[5,"Vec",72],[1,"slice"],[1,"unit"],[10,"PrimeField",73],[5,"String",74],[1,"u8"],[10,"AsRef",75],[1,"str"],[17,"Output"],[10,"FnOnce",76],[10,"Send",77],[5,"ChaCha20Rng",78],[0,"mut"],[6,"Expression",79],[5,"ExprDisp",5],[10,"Variable",79],[6,"VarMid",71],[5,"ColumnMid",71],[5,"HashMap",80],[5,"FDisp",5],[5,"Formatter",81],[8,"Result",81],[5,"LookupArgDisp",5],[5,"ShuffleArgDisp",5],[5,"Argument",82],[5,"Argument",83],[6,"Result",84],[5,"TypeId",85]],"r":[[0,86]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADIABwAAAAAAAgAAAAUAAAAKABMAIAADACgAAwA0ABMA"}],\ -["halo2_frontend",{"t":"CCCFFKRKRFFFFREFFKFFNNNNNNNNNNNNNNNNNNMNNNMNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHMNNMNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNNNNNNNNNNNNNNNNNNNCMNNNNNNNNNNNNNNNNMNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNEECCFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNPGKFPKKMNMNMNMMNNNNNNNNNNNMNMNNNNNNNMNNNNNNNNNNNMNNNMNNNNNNNNNNNNNNNPPPGEFFPPGPPGPFPPPPPFPGNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGFPPPFFFFFOONNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNHHNONNNNNNNONNNNNNNNOOOOOONOOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFFNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCCCCCCGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFKKKRFKRFRMMMNNNNNNNNNNNNCMNCMNNNNNNNNNMMNNNMCMNNNNNNMNNNNNNNNNNMMMNNNMMMNNNNNNNNNNNNNNNMFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPFFPFPGFPFPFPKPPFFPPFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFKNNNNNNNNNNNNNNNNNMNNNNNPPGPPPPPPGPPPPPPPGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNN","n":["circuit","dev","plonk","AssignedCell","Cell","Chip","Config","Layouter","Loaded","NamespacedLayouter","Region","RegionIndex","RegionStart","Root","SimpleFloorPlanner","SimpleTableLayouter","Table","TableLayouter","Value","WitnessCalculator","add","add","add","add","add","add","add","add","add","add","and_then","as_mut","as_ref","assert_if_known","assign","assign_advice","assign_advice_from_constant","assign_advice_from_instance","assign_cell","assign_cell","assign_cell","assign_fixed","assign_region","assign_region","assign_table","assign_table","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","calc","cell","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cloned","cloned","column","compile_circuit","config","constrain_constant","constrain_equal","constrain_instance","constrain_instance","copied","copied","copy_advice","cube","default","default_and_assigned","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable_selector","eq","error_if_known_and","evaluate","evaluate","floor_planner","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","get_challenge","get_challenge","get_root","get_root","init","init","init","init","init","init","init","init","init","init","instance_value","into","into","into","into","into","into","into","into","into","into","into_field","invert","known","layouter","loaded","map","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","name_column","namespace","neg","new","new","pop_namespace","pop_namespace","push_namespace","push_namespace","region_index","row_offset","square","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","to_field","to_owned","to_owned","to_owned","to_owned","to_owned","transpose_array","transpose_vec","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unknown","unzip","value","value_field","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","zip","V1","V1Pass","single_pass","v1","SimpleFloorPlanner","SingleChipLayouter","assign_region","assign_table","borrow","borrow","borrow_mut","borrow_mut","constrain_instance","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","get_challenge","get_root","init","init","into","into","new","pop_namespace","push_namespace","synthesize","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","AssignmentPass","MeasurementPass","V1","V1Pass","assign_region","assign_table","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","constrain_instance","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","fmt","fmt","fmt","fmt","from","from","from","from","get_challenge","get_root","init","init","init","init","into","into","into","into","pop_namespace","push_namespace","strategy","synthesize","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","Column","RegionColumn","RegionLayouter","RegionShape","Selector","SyncDeps","TableLayouter","assign_advice","assign_advice","assign_advice_from_constant","assign_advice_from_constant","assign_advice_from_instance","assign_advice_from_instance","assign_cell","assign_fixed","assign_fixed","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","columns","constrain_constant","constrain_constant","constrain_equal","constrain_equal","deref","deref","deref_mut","deref_mut","drop","drop","enable_selector","enable_selector","eq","fmt","fmt","from","from","from","from","hash","init","init","instance_value","instance_value","into","into","name_column","name_column","new","partial_cmp","region_index","row_count","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Assigned","Assigned","CellNotAssigned","CellValue","CircuitCost","CircuitGates","CircuitLayout","ConstraintNotSatisfied","ConstraintPoisoned","FailureLocation","InRegion","InstanceCellNotAssigned","InstanceValue","Lookup","MockProver","OutsideRegion","Padding","Permutation","Poison","Shuffle","TracingFloorPlanner","Unassigned","VerifyFailure","advice","advice_mut","advice_values","annotate_column","assert_satisfied","assert_satisfied_at_rows","assign_advice","assign_fixed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","circuit_dot_graph","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","collect","copy","cost","cost_model","cs","default","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","emit","enable_selector","enter_region","eq","eq","eq","eq","exit_region","fill_from_row","fixed","fixed_values","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","get_challenge","init","init","init","init","init","init","init","init","instance","instance_mut","into","into","into","into","into","into","into","into","mark_equality_cells","metadata","pop_namespace","push_namespace","queries_to_csv","query_instance","render","run","selectors","show_equality_constraints","show_labels","synthesize","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","usable_rows","value","verify","verify_at_rows","view_height","view_width","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","offset","region","row","cell_values","column","column","column","constraint","constraint","gate","gate","gate_offset","gate_offset","location","location","location","location","lookup_index","name","name","offset","region","region","row","shuffle_index","CircuitCost","MarginalProofSize","ProofSize","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","marginal_proof_size","measure","proof_size","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","CommitmentScheme","CostOptions","IPA","KZGGWC","KZGSHPLONK","Lookup","ModelCircuit","Permutation","Poly","Shuffle","advice","advice_columns","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","column_queries","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","eq","eq","fixed","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_circuit_to_cost_model_options","from_circuit_to_model_circuit","from_str","gate_degree","init","init","init","init","init","init","init","instance","into","into","into","into","into","into","into","into_model_circuit","k","k","lookup","lookups","max_deg","max_degree","partial_cmp","permutation","permutations","point_sets","rotations","serialize","serialize","shuffle","shuffles","size","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Column","Constraint","Gate","Region","VirtualCell","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","column_type","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","index","init","init","init","init","init","into","into","into","into","into","new","partial_cmp","partial_cmp","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","assigned","circuit","error","keygen","lookup","permutation","shuffle","Assigned","Rational","Trivial","Zero","add","add","add","add","add","add","add_assign","add_assign","borrow","borrow_mut","clone","clone_into","cube","denominator","deref","deref_mut","double","drop","eq","evaluate","fmt","from","from","from","from","from","init","into","invert","is_zero_vartime","mul","mul","mul","mul","mul_assign","mul_assign","neg","neg","numerator","square","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","to_owned","try_from","try_into","type_id","vzip","Advice","Assignment","Circuit","ColumnType","Config","Fixed","FloorPlanner","FloorPlanner","Instance","Params","annotate_column","assign_advice","assign_fixed","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","compress_selectors","configure","configure_with_params","constraint_system","copy","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","enable_selector","enter_region","eq","eq","eq","exit_region","expression","fill_from_row","fmt","fmt","fmt","from","from","from","get_challenge","hash","hash","hash","init","init","init","into","into","into","params","pop_namespace","push_namespace","query_cell","query_cell","query_cell","query_cell","query_instance","synthesize","synthesize","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","without_witnesses","Constraint","ConstraintSystem","Constraints","Gate","VirtualCell","VirtualCells","advice_column","advice_column_in","advice_column_phase","advice_queries","annotate_column","annotate_lookup_any_column","annotate_lookup_column","blinding_factors","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge_phase","challenge_usable_after","clone","clone","clone","clone_into","clone_into","clone_into","column","complex_selector","compress_selectors","constants","constraint_name","create_gate","default","degree","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","directly_convert_selectors_to_fixed","drop","drop","drop","drop","drop","drop","enable_constant","enable_equality","fixed_column","fixed_queries","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","gates","general_column_annotations","get_any_query_index","init","init","init","init","init","init","instance_column","instance_queries","into","into","into","into","into","into","into_iter","lookup","lookup_any","lookup_table_column","lookups","minimum_rows","name","num_advice_columns","num_challenges","num_fixed_columns","num_instance_columns","num_selectors","permutation","phases","polynomials","queried_cells","queried_selectors","query_advice","query_any","query_challenge","query_fixed","query_instance","query_selector","rotation","selector","set_minimum_degree","shuffle","shuffles","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","unblinded_advice_column","unblinded_advice_column_in","vzip","vzip","vzip","vzip","vzip","vzip","with_selector","Advice","AdviceQuery","Challenge","Challenge","Column","Constant","Expression","FirstPhase","Fixed","FixedQuery","Instance","InstanceQuery","Negated","Phase","Product","Scaled","SecondPhase","Selector","Selector","Sum","TableColumn","ThirdPhase","add","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","column_index","column_index","column_index","column_index","column_index","column_index","column_type","column_type","complexity","cur","degree","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable","eq","eq","eq","eq","eq","eq","eq","eq","evaluate","evaluate_lazy","expr","expr","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","hash","hash","hash","identifier","index","index","index","index","index","index","index","index","init","init","init","init","init","init","init","init","init","init","init","inner","into","into","into","into","into","into","into","into","into","into","into","is_simple","mul","mul","neg","new","next","partial_cmp","partial_cmp","phase","prev","product","query_cell","query_cells","rot","rotation","rotation","rotation","rotation","rotation","rotation","sealed","square","sub","sum","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_sealed","to_sealed","to_sealed","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Phase","SealedPhase","borrow","borrow_mut","clone","clone_into","cmp","deref","deref_mut","drop","eq","fmt","from","hash","init","into","partial_cmp","prev","to_owned","to_sealed","to_sealed","try_from","try_into","type_id","vzip","AssignAdvice","AssignFixed","AssignmentError","AssignmentError","BoundsFailure","ColumnNotAssigned","ColumnNotInPermutation","Copy","EnableSelector","Error","FillFromRow","NotEnoughColumnsForConstants","NotEnoughRowsAvailable","Other","OverwriteDefault","QueryInstance","Synthesis","TableError","TableError","UnevenColumnLengths","UsedColumn","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","not_enough_rows_available","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","col","col","col","col","desc","desc","desc","from_row","k","k","k","k","k","k","left_col","left_row","right_col","right_row","row","row","row","row","selector","usable_rows","usable_rows","usable_rows","usable_rows","usable_rows","usable_rows","current_k","Argument","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","from","init","input_expressions","into","name","new","table_expressions","to_owned","try_from","try_into","type_id","vzip","Argument","borrow","borrow_mut","clone","clone_into","default","deref","deref_mut","drop","fmt","from","get_columns","init","into","to_owned","try_from","try_into","type_id","vzip","Argument","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","from","init","input_expressions","into","name","new","shuffle_expressions","to_owned","try_from","try_into","type_id","vzip"],"q":[[0,"halo2_frontend"],[3,"halo2_frontend::circuit"],[275,"halo2_frontend::circuit::floor_planner"],[279,"halo2_frontend::circuit::floor_planner::single_pass"],[316,"halo2_frontend::circuit::floor_planner::v1"],[381,"halo2_frontend::circuit::layouter"],[449,"halo2_frontend::dev"],[641,"halo2_frontend::dev::FailureLocation"],[644,"halo2_frontend::dev::VerifyFailure"],[666,"halo2_frontend::dev::cost"],[711,"halo2_frontend::dev::cost_model"],[855,"halo2_frontend::dev::metadata"],[973,"halo2_frontend::plonk"],[980,"halo2_frontend::plonk::assigned"],[1037,"halo2_frontend::plonk::circuit"],[1126,"halo2_frontend::plonk::circuit::constraint_system"],[1281,"halo2_frontend::plonk::circuit::expression"],[1546,"halo2_frontend::plonk::circuit::expression::sealed"],[1571,"halo2_frontend::plonk::error"],[1638,"halo2_frontend::plonk::error::AssignmentError"],[1667,"halo2_frontend::plonk::error::Error"],[1668,"halo2_frontend::plonk::lookup"],[1689,"halo2_frontend::plonk::permutation"],[1708,"halo2_frontend::plonk::shuffle"],[1729,"halo2_frontend::circuit::value"],[1730,"core::ops::arith"],[1731,"ff"],[1732,"core::ops::function"],[1733,"core::result"],[1734,"alloc::string"],[1735,"core::convert"],[1736,"halo2_frontend::circuit::table_layouter"],[1737,"std::collections::hash::map"],[1738,"alloc::vec"],[1739,"core::option"],[1740,"core::clone"],[1741,"halo2_middleware::circuit"],[1742,"core::fmt"],[1743,"core::marker"],[1744,"core::borrow"],[1745,"core::iter::traits::collect"],[1746,"core::any"],[1747,"core::cmp"],[1748,"std::collections::hash::set"],[1749,"core::hash"],[1750,"core::iter::traits::iterator"],[1751,"halo2_frontend::dev::failure"],[1752,"halo2_frontend::dev::gates"],[1753,"halo2_frontend::dev::graph::layout"],[1754,"halo2_frontend::dev::tfp"],[1755,"plotters::coord"],[1756,"plotters::drawing::area"],[1757,"plotters_backend"],[1758,"core::ops::range"],[1759,"group::prime"],[1760,"serde::de"],[1761,"serde::ser"],[1762,"core::default"],[1763,"halo2_middleware::poly"],[1764,"halo2_frontend::dev::graph"]],"i":[0,0,0,0,0,0,48,0,48,0,0,0,0,30,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,13,13,13,23,25,27,13,30,31,30,31,25,1,32,40,41,38,17,13,27,31,25,1,32,40,41,38,17,13,27,31,32,17,1,40,41,38,17,1,40,41,38,17,1,1,38,0,48,13,13,30,31,1,1,17,1,1,25,25,1,32,40,40,41,41,38,17,13,27,31,25,1,32,40,41,38,17,13,27,31,1,25,1,32,40,41,38,17,13,27,31,31,13,41,1,1,17,0,25,1,32,40,41,38,17,13,27,31,25,1,1,32,40,40,41,41,38,17,13,13,27,27,31,1,30,31,30,31,25,1,32,40,41,38,17,13,27,31,13,25,1,32,40,41,38,17,13,27,31,1,1,1,0,48,1,1,1,1,1,1,1,1,1,1,1,13,30,1,25,32,30,31,30,31,38,38,1,1,1,1,1,1,1,1,1,1,1,1,1,40,41,38,17,1,1,25,1,32,40,41,38,17,13,27,31,25,1,32,40,41,38,17,13,27,31,25,1,32,40,41,38,17,13,27,31,1,1,17,17,25,1,32,40,41,38,17,13,27,31,1,0,0,0,0,0,0,67,67,67,69,67,69,67,67,69,67,69,67,69,67,69,67,69,67,67,67,69,67,69,67,67,67,69,67,69,67,69,67,69,67,69,0,0,0,0,70,70,71,70,72,73,71,70,72,73,70,71,70,72,73,71,70,72,73,71,70,72,73,71,70,72,73,71,70,72,73,70,70,71,70,72,73,71,70,72,73,70,70,0,71,71,70,72,73,71,70,72,73,71,70,72,73,71,70,72,73,75,0,0,0,75,0,0,55,74,55,74,55,74,23,55,74,74,75,74,75,74,75,74,75,75,74,55,74,55,74,74,75,74,75,74,75,55,74,75,74,75,74,75,75,75,75,74,75,55,74,74,75,55,74,74,75,74,74,74,75,74,75,74,75,74,75,74,75,80,86,85,0,0,0,0,85,85,0,84,85,0,85,0,84,86,85,80,85,0,80,0,79,79,79,79,79,79,79,79,84,85,87,91,88,80,79,86,84,85,87,91,88,80,79,86,0,84,85,80,86,84,85,80,86,87,79,0,0,79,88,84,85,87,91,88,80,79,86,84,85,87,91,88,80,79,86,84,85,87,91,88,80,79,86,85,79,79,84,85,80,86,79,79,79,79,84,84,85,85,87,87,91,88,80,79,86,84,85,87,91,88,80,79,86,79,84,85,87,91,88,80,79,86,79,79,84,85,87,91,88,80,79,86,88,0,79,79,87,79,88,79,79,88,88,91,84,85,80,86,84,85,87,84,85,87,91,88,80,79,86,84,85,87,91,88,80,79,86,84,85,87,91,88,80,79,86,79,86,79,79,88,88,84,85,87,91,88,80,79,86,146,146,147,148,149,150,151,148,152,149,150,149,150,148,153,154,151,153,153,154,149,149,150,150,154,0,0,0,98,100,101,98,100,101,98,100,101,98,100,101,98,100,101,98,100,101,98,100,101,98,100,101,98,100,101,98,98,98,98,100,101,98,100,101,98,100,101,98,100,101,0,0,108,108,108,0,0,0,0,0,109,107,108,109,102,103,104,105,107,108,109,102,103,104,105,107,102,103,104,105,102,103,104,105,102,107,108,109,102,103,104,105,107,108,109,102,103,104,105,107,104,107,108,109,102,103,104,105,107,108,102,109,108,109,102,103,104,105,107,108,109,102,103,104,105,107,0,0,102,109,108,109,102,103,104,105,107,109,108,109,102,103,104,105,107,109,109,107,109,107,107,109,102,109,107,107,102,104,107,109,107,107,102,103,104,105,108,109,102,103,104,105,107,108,109,102,103,104,105,107,108,109,102,103,104,105,107,108,109,102,103,104,105,107,0,0,0,0,0,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,113,112,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,112,113,113,114,114,115,115,116,116,112,112,113,113,113,113,114,114,115,115,116,116,116,116,116,112,112,112,113,114,115,116,112,113,114,115,116,112,112,113,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,37,0,0,37,0,37,26,26,26,14,28,22,14,28,22,14,28,22,14,28,22,0,37,37,0,26,14,28,22,14,28,22,14,28,22,26,26,14,28,22,26,0,26,14,28,22,14,28,22,26,14,28,22,14,28,22,14,28,22,37,26,26,123,14,28,22,26,92,37,14,28,22,14,28,22,14,28,22,14,28,22,14,28,22,37,0,0,0,0,0,0,44,44,44,44,44,44,44,44,118,128,130,127,44,129,118,128,130,127,44,129,44,44,118,127,44,118,127,44,118,44,44,44,127,44,44,44,118,128,130,127,44,129,118,128,130,127,44,129,44,118,128,130,127,44,129,44,44,44,44,118,128,130,127,44,129,118,118,128,128,128,130,127,44,129,44,44,44,118,128,130,127,44,129,44,44,118,128,130,127,44,129,130,44,44,44,44,44,127,44,44,44,44,44,44,44,127,127,127,129,129,129,129,129,129,118,44,44,44,44,118,127,44,118,128,130,127,44,129,118,128,130,127,44,129,118,128,130,127,44,129,44,44,118,128,130,127,44,129,130,125,0,0,125,0,125,0,0,125,0,125,0,125,0,125,125,0,0,125,125,0,0,125,15,138,139,140,52,135,136,137,24,59,125,15,138,139,140,52,135,136,137,24,59,125,15,52,135,136,137,24,59,125,15,52,135,136,137,24,59,125,15,24,135,136,137,135,136,137,15,15,125,15,125,15,138,139,140,52,135,136,137,24,59,125,15,138,139,140,52,135,136,137,24,59,125,15,138,139,140,52,135,136,137,24,59,125,52,15,52,135,136,137,24,59,125,125,125,52,59,15,138,139,140,52,135,136,137,24,59,125,15,15,15,15,15,138,139,140,52,135,136,137,24,59,59,125,15,52,24,59,125,15,52,59,15,135,136,137,59,15,138,139,140,52,135,136,137,24,59,125,24,15,138,139,140,52,135,136,137,24,59,125,52,125,125,125,15,15,15,24,59,15,125,15,125,15,135,136,137,135,136,137,0,125,125,125,15,52,135,136,137,24,59,125,138,139,140,15,15,15,15,138,139,140,52,135,136,137,24,59,125,15,138,139,140,52,135,136,137,24,59,125,15,138,139,140,52,135,136,137,24,59,125,15,138,139,140,52,135,136,137,24,59,125,0,0,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,143,133,133,133,133,133,145,145,0,11,11,144,11,145,145,0,145,11,11,11,144,145,11,0,11,144,144,11,144,145,11,144,145,11,144,145,11,144,145,11,144,145,11,11,144,144,145,145,11,144,145,11,144,145,11,144,145,11,11,144,145,11,144,145,11,144,145,11,144,145,11,144,145,155,156,157,158,155,156,159,158,155,156,159,157,160,158,160,160,160,160,155,156,159,157,159,155,156,159,157,160,158,161,0,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,0,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,0,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134],"f":"````````````````````{{{b{c}}{b{{d{c}}}}}g{{h{d}{{f{}}}}}{}{}}{{{b{{j{c}}}}{b{c}}}el{}}{{{b{c}}{d{{b{c}}}}}g{{h{d}{{f{}}}}}{}{}}{{{b{{d{{j{c}}}}}}c}el{}}{{{b{{d{c}}}}{b{c}}}e{}{}}{{{b{e}}{b{e}}}g{}{{h{}{{f{c}}}}}{}}{{{b{{j{c}}}}c}el{}}{{{d{{b{c}}}}{d{{b{c}}}}}e{}{}}{{{b{{d{{j{c}}}}}}{b{c}}}el{}}{{{d{{b{c}}}}{b{c}}}e{}{}}{{{b{c}}g}{{b{e}}}{}{}{{n{c}{{f{{b{e}}}}}}}}{{{d{A`{b{c}}}}}{{b{{d{A`c}}}}}{}}{{{d{{b{c}}}}}{{b{{d{c}}}}}{}}{{{d{{b{c}}}}e}Ab{}{{n{{d{c}}}{{f{Ad}}}}}}{{{b{c}}}{{Ah{cAf}}}{}}{{{d{A`{Aj{c}}}}g{An{Al}}B`k}{{Ah{{Bb{ic}}Af}}}l{{Bf{Bd}}}{{Bh{}{{f{e}}}}}{}{{Bj{}{{f{{b{i}}}}}}}}{{{d{A`{Aj{c}}}}g{An{Al}}B`i}{{Ah{{Bb{ic}}Af}}}l{{Bf{Bd}}}{{Bh{}{{f{e}}}}}{}}{{{d{A`{Aj{c}}}}g{An{Bl}}B`{An{Al}}B`}{{Ah{{Bb{cc}}Af}}}l{{Bf{Bd}}}{{Bh{}{{f{e}}}}}}{{{d{A`Bn}}{d{Bh}}C`B`{d{A`Bj}}}{{Ah{AbAf}}}}{{{d{A`{Cb{ce}}}}{d{Bh}}C`B`{d{A`Bj}}}{{Ah{AbAf}}}l{{Cd{c}}}}{{{d{A`{Cf{c}}}}gC`B`k}{{Ah{AbAf}}}l{{Bf{Bd}}}{{Bh{}{{f{e}}}}}{{Bf{{j{c}}}}}{{Bj{}{{f{{b{i}}}}}}}}{{{d{A`{Aj{c}}}}g{An{Ch}}B`k}{{Ah{{Bb{ic}}Af}}}l{{Bf{Bd}}}{{Bh{}{{f{e}}}}}{}{{Bj{}{{f{{b{i}}}}}}}}{{{d{A`{Cl{}{{Cj{c}}}}}}im}{{Ah{kAf}}}{{Cl{e}}}l{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{}{{Bj{{Aj{e}}}{{f{{Ah{kAf}}}}}}}}{{{d{A`{Cn{ce}}}}im}{{Ah{kAf}}}l{{Cl{c}}}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{}{{Bj{{Aj{c}}}{{f{{Ah{kAf}}}}}}}}{{{d{A`{Cl{}{{Cj{c}}}}}}ik}{{Ah{AbAf}}}{{Cl{e}}}l{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{{Bj{{Cf{e}}}{{f{{Ah{AbAf}}}}}}}}{{{d{A`{Cn{ce}}}}ik}{{Ah{AbAf}}}l{{Cl{c}}}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{{Bj{{Cf{c}}}{{f{{Ah{AbAf}}}}}}}}{{{d{c}}}{{d{e}}}{}{}}000000000{{{d{A`c}}}{{d{A`e}}}{}{}}000000000{{{d{A`{D`{ce}}}}Db{d{{Dd{B`c}}}}}{{Ah{{Df{{Dh{{Df{c}}}}}}Af}}}l{{Dj{c}}}}{{{d{{Bb{ce}}}}}Dl{}l}{{{d{{b{c}}}}}{{b{c}}}Dn}{{{d{E`}}}E`}{{{d{Eb}}}Eb}{{{d{Dl}}}Dl}{{{d{{Bb{ce}}}}}{{Bb{ce}}}Dn{Dnl}}{{{d{c}}{d{A`e}}}Ab{}{}}0000{{{b{{d{A`c}}}}}{{b{c}}}Dn}{{{b{{d{c}}}}}{{b{c}}}Dn}`{{Ed{d{e}}Ad}{{Ah{{Ej{{Ef{c}}{Eh{c}}}}Af}}}l{{Dj{c}}}}{{{d{{F`{}{{El{c}}{En{e}}}}}}}{{d{c}}}{FbDn}{FbDn}}{{{d{A`{Aj{c}}}}Dle}{{Ah{AbAf}}}l{{Bf{{j{c}}}}}}{{{d{A`{Aj{c}}}}DlDl}{{Ah{AbAf}}}l}{{{d{A`{Cl{}{{Cj{c}}}}}}Dl{An{Bl}}B`}{{Ah{AbAf}}}{{Cl{e}}}l}{{{d{A`{Cn{ce}}}}Dl{An{Bl}}B`}{{Ah{AbAf}}}l{{Cl{c}}}}{{{b{{d{A`c}}}}}{{b{c}}}Fd}{{{b{{d{c}}}}}{{b{c}}}Fd}{{{d{{Bb{ce}}}}i{d{A`{Aj{e}}}}{An{Al}}B`}{{Ah{{Bb{ce}}Af}}}Dnl{{Bf{Bd}}}{{Bh{}{{f{g}}}}}}{{{d{{b{e}}}}}{{b{{j{c}}}}}l{{Ff{{j{c}}}}}}{{}{{b{c}}}{}}`{B`{{d{c}}}{}}000{{{d{E`}}}{{d{c}}}{}}1{{{d{Eb}}}{{d{c}}}{}}22222{B`{{d{A`c}}}{}}0000000005{B`Ab}00000000{{{d{A`{Cn{ce}}}}}Abl{{Cl{c}}}}1{{{d{A`{Aj{c}}}}g{d{Fh}}B`}{{Ah{AbAf}}}l{{Bf{Bd}}}{{Bh{}{{f{e}}}}}}{{{d{Eb}}{d{Eb}}}Ad}{{{d{{b{c}}}}e}{{Ah{AbAf}}}{}{{n{{d{c}}}{{f{Ad}}}}}}{{{b{{j{c}}}}}{{b{c}}}l}{{{Bb{{j{c}}c}}}{{Bb{cc}}}l}`{{{d{{Cb{ce}}}}{d{A`Fj}}}Fll{{Cd{c}}}}{{{d{{b{c}}}}{d{A`Fj}}}FlFb}{{{d{{D`{ce}}}}{d{A`Fj}}}Fl{Fbl}{Fb{Dj{c}}}}{{{d{E`}}{d{A`Fj}}}Fl}{{{d{Eb}}{d{A`Fj}}}Fl}{{{d{Dl}}{d{A`Fj}}}Fl}{{{d{{Bb{ce}}}}{d{A`Fj}}}FlFb{Fbl}}{{{d{{Aj{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{Cf{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{Cn{ce}}}}{d{A`Fj}}}Fl{Fbl}{Fb{Cl{c}}}}{cc{}}{{{b{c}}}{{b{{j{c}}}}}l}11{B`E`}2{B`Eb}333{{{d{A`Fn}}}{{Aj{c}}}l}44{{{d{A`Bn}}}{{Cf{c}}}l}5{e{{b{g}}}{}{{Gb{}{{G`{{b{c}}}}}}}{{Gd{c}}}}{{{d{{Cl{}{{Cj{c}}}}}}Gf}{{b{e}}}{{Cl{e}}}l}{{{d{{Cn{ce}}}}Gf}{{b{c}}}l{{Cl{c}}}}{{{d{A`{Cl{}{{Cj{c}}}}}}}{{d{A`c}}}{{Cl{e}}}l}{{{d{A`{Cn{ce}}}}}{{d{A`g}}}l{{Cl{c}}}{}}{{}B`}000000000{{{d{A`{Aj{c}}}}{An{Bl}}B`}{{Ah{{b{c}}Af}}}l}{ce{}{}}000000000{{{b{e}}}{{b{{j{c}}}}}l{{Bf{{j{c}}}}}}{{{d{{b{e}}}}}{{b{{j{c}}}}}l{{Ff{{j{c}}}}}}{c{{b{c}}}{}}`{{{d{{F`{}{{El{c}}{En{e}}}}}}}{{d{e}}}{FbDn}{FbDn}}{{{b{c}}g}{{b{e}}}{}{}{{n{c}{{f{e}}}}}}{{{b{{j{c}}}}c}el{}}{{{b{c}}{d{{b{c}}}}}g{{Gh{d}{{f{}}}}}{}{}}{{{b{{d{{j{c}}}}}}c}el{}}{{{b{c}}{b{{d{c}}}}}g{{Gh{d}{{f{}}}}}{}{}}{{{d{{b{c}}}}{b{c}}}e{}{}}{{{b{{j{c}}}}{b{c}}}el{}}{{{d{{b{c}}}}{d{{b{c}}}}}e{}{}}{{{b{{d{c}}}}{b{c}}}e{}{}}{{{b{e}}{b{e}}}g{}{{Gh{}{{f{c}}}}}{}}{{{b{{d{{j{c}}}}}}{b{c}}}el{}}{{{d{A`{Aj{c}}}}gi}Abl{{Bf{Bd}}}{{Bh{}{{f{e}}}}}{{Bf{{An{Gj}}}}}}{{{d{A`{Cl{}{{Cj{c}}}}}}i}{{Cn{ec}}}{{Cl{e}}}l{{Bf{Bd}}}{{n{}{{f{g}}}}}}{{{b{c}}}eGl{}}{{{d{A`e}}{d{{Gn{C`}}}}}{{Cb{ce}}}l{{Cd{c}}}}{{Ed{d{e}}d{d{{Eh{c}}}}{d{{Gn{{Df{c}}}}}}}{{D`{ce}}}l{{Dj{c}}}}{{{d{A`{Cl{}{{Cj{c}}}}}}{Dh{Bd}}}Ab{{Cl{e}}}l}{{{d{A`{Cn{ce}}}}{Dh{Bd}}}Abl{{Cl{c}}}}{{{d{A`{Cl{}{{Cj{c}}}}}}i}Ab{{Cl{e}}}l{{Bf{Bd}}}{{n{}{{f{g}}}}}}{{{d{A`{Cn{ce}}}}i}Abl{{Cl{c}}}{{Bf{Bd}}}{{n{}{{f{g}}}}}}``{{{d{{b{e}}}}}{{b{{j{c}}}}}l{{Ff{{j{c}}}}}}:{{{b{{d{{j{c}}}}}}c}el{}}{{{b{c}}{d{{b{c}}}}}g{{H`{d}{{f{}}}}}{}{}}?{{{b{{j{c}}}}{b{c}}}el{}}{{{b{e}}{b{e}}}g{}{{H`{}{{f{c}}}}}{}}{{{d{{b{c}}}}{b{c}}}e{}{}}{{{b{c}}{b{{d{c}}}}}g{{H`{d}{{f{}}}}}{}{}}{{{b{{j{c}}}}c}el{}}{{{b{{d{c}}}}{b{c}}}e{}{}}{{{d{{b{c}}}}}{{b{{j{e}}}}}{}l}{{{d{c}}}e{}{}}0000{{{b{{Hb{c}}}}}{{Hb{{b{c}}}}}Fd}{{{b{e}}B`}{{Df{{b{c}}}}}{}{{Gb{}{{G`{c}}}}}}{c{{Ah{e}}}{}{}}0000000000000000000{{{d{c}}}Hd{}}000000000{{}{{b{c}}}{}}{{{b{{Ej{ce}}}}}{{Ej{{b{c}}{b{e}}}}}{}{}}{{{d{{Bb{ce}}}}}{{b{{d{c}}}}}{}l}{{{d{{Bb{ce}}}}}{{b{{j{e}}}}}{}l}{ce{}{}}000000000{{{b{c}}{b{e}}}{{b{{Ej{ce}}}}}{}{}}``````{{{d{A`{Hf{ce}}}}im}{{Ah{kAf}}}l{{Cd{c}}Hh}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{}{{Bj{{Aj{c}}}{{f{{Ah{kAf}}}}}}}}{{{d{A`{Hf{ce}}}}ik}{{Ah{AbAf}}}l{{Cd{c}}Hh}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{{Bj{{Cf{c}}}{{f{{Ah{AbAf}}}}}}}}{{{d{c}}}{{d{e}}}{}{}}0{{{d{A`c}}}{{d{A`e}}}{}{}}0{{{d{A`{Hf{ce}}}}Dl{An{Bl}}B`}{{Ah{AbAf}}}l{{Cd{c}}Hh}}{B`{{d{c}}}{}}0{B`{{d{A`c}}}{}}0{B`Ab}0{{{d{{Hf{ce}}}}{d{A`Fj}}}Fll{{Cd{c}}}}{{{d{Hj}}{d{A`Fj}}}Fl}{cc{}}0{{{d{{Hf{ce}}}}Gf}{{b{c}}}l{{Cd{c}}Hh}}{{{d{A`{Hf{ce}}}}}{{d{A`g}}}l{{Cd{c}}Hh}{}}{{}B`}0??{{{d{A`e}}{Df{{An{Ch}}}}}{{Ah{{Hf{ce}}Af}}}l{{Cd{c}}}}{{{d{A`{Hf{ce}}}}{Dh{Bd}}}Abl{{Cd{c}}Hh}}{{{d{A`{Hf{ce}}}}i}Abl{{Cd{c}}Hh}{{Bf{Bd}}}{{n{}{{f{g}}}}}}{{{d{A`e}}{d{g}}{Df{{An{Ch}}}}}{{Ah{AbAf}}}l{{Cd{c}}Hh}{{Dj{c}}}}{c{{Ah{e}}}{}{}}000{{{d{c}}}Hd{}}0{ce{}{}}0````{{{d{A`{Hl{ce}}}}im}{{Ah{kAf}}}l{{Cd{c}}Hh}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{}{{Bj{{Aj{c}}}{{f{{Ah{kAf}}}}}}}}{{{d{A`{Hl{ce}}}}ik}{{Ah{AbAf}}}l{{Cd{c}}Hh}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{{Bj{{Cf{c}}}{{f{{Ah{AbAf}}}}}}}}{{{d{c}}}{{d{e}}}{}{}}000{{{d{A`c}}}{{d{A`e}}}{}{}}000{{{d{A`{Hl{ce}}}}Dl{An{Bl}}B`}{{Ah{AbAf}}}l{{Cd{c}}Hh}}{B`{{d{c}}}{}}000{B`{{d{A`c}}}{}}000{B`Ab}000{{{d{Hn}}{d{A`Fj}}}Fl}{{{d{{Hl{ce}}}}{d{A`Fj}}}Fl{Fbl}{Fb{Cd{c}}}}{{{d{I`}}{d{A`Fj}}}Fl}{{{d{{Ib{ce}}}}{d{A`Fj}}}Fl{Fbl}{Fb{Cd{c}}}}{cc{}}000{{{d{{Hl{ce}}}}Gf}{{b{c}}}l{{Cd{c}}Hh}}{{{d{A`{Hl{ce}}}}}{{d{A`g}}}l{{Cd{c}}Hh}{}}{{}B`}000{ce{}{}}000{{{d{A`{Hl{ce}}}}{Dh{Bd}}}Abl{{Cd{c}}Hh}}{{{d{A`{Hl{ce}}}}i}Abl{{Cd{c}}Hh}{{Bf{Bd}}}{{n{}{{f{g}}}}}}`{{{d{A`e}}{d{g}}{Df{{An{Ch}}}}}{{Ah{AbAf}}}l{{Cd{c}}Hh}{{Dj{c}}}}{c{{Ah{e}}}{}{}}0000000{{{d{c}}}Hd{}}0005555```````{{{d{A`Fn}}{d{Bh}}{An{Al}}B`{d{A`Bj}}}{{Ah{DlAf}}}}{{{d{A`Id}}{d{Bh}}{An{Al}}B`{d{A`Bj}}}{{Ah{DlAf}}}}{{{d{A`Fn}}{d{Bh}}{An{Al}}B`{j{c}}}{{Ah{DlAf}}}l}{{{d{A`Id}}{d{Bh}}{An{Al}}B`{j{c}}}{{Ah{DlAf}}}l}{{{d{A`Fn}}{d{Bh}}{An{Bl}}B`{An{Al}}B`}{{Ah{{Ej{Dl{b{c}}}}Af}}}l}{{{d{A`Id}}{d{Bh}}{An{Bl}}B`{An{Al}}B`}{{Ah{{Ej{Dl{b{c}}}}Af}}}l}{{{d{A`Bn}}{d{Bh}}C`B`{d{A`Bj}}}{{Ah{AbAf}}}}{{{d{A`Fn}}{d{Bh}}{An{Ch}}B`{d{A`Bj}}}{{Ah{DlAf}}}}{{{d{A`Id}}{d{Bh}}{An{Ch}}B`{d{A`Bj}}}{{Ah{DlAf}}}}{{{d{c}}}{{d{e}}}{}{}}0{{{d{A`c}}}{{d{A`e}}}{}{}}0{{{d{Id}}}Id}{{{d{If}}}If}{{{d{c}}{d{A`e}}}Ab{}{}}0{{{d{If}}{d{If}}}Ih}{{{d{Id}}}{{d{{Ij{If}}}}}}{{{d{A`Fn}}Dl{j{c}}}{{Ah{AbAf}}}l}{{{d{A`Id}}Dl{j{c}}}{{Ah{AbAf}}}l}{{{d{A`Fn}}DlDl}{{Ah{AbAf}}}}{{{d{A`Id}}DlDl}{{Ah{AbAf}}}}{B`{{d{c}}}{}}0{B`{{d{A`c}}}{}}0{B`Ab}0{{{d{A`Fn}}{d{Bh}}{d{Fh}}B`}{{Ah{AbAf}}}}{{{d{A`Id}}{d{Bh}}{d{Fh}}B`}{{Ah{AbAf}}}}{{{d{If}}{d{If}}}Ad}{{{d{Id}}{d{A`Fj}}}Fl}{{{d{If}}{d{A`Fj}}}Fl}{cc{}}{{{An{Gj}}}If}1{FhIf}{{{d{If}}{d{A`c}}}AbIl}{{}B`}0{{{d{A`Fn}}{An{Bl}}B`}{{Ah{{b{c}}Af}}}l}{{{d{A`Id}}{An{Bl}}B`}{{Ah{{b{c}}Af}}}l}{ce{}{}}0{{{d{A`Fn}}{d{Bh}}{An{Gj}}}Ab}{{{d{A`Id}}{d{Bh}}{An{Gj}}}Ab}{E`Id}{{{d{If}}{d{If}}}{{Dh{Ih}}}}{{{d{Id}}}E`}{{{d{Id}}}B`}{{{d{c}}}e{}{}}0{c{{Ah{e}}}{}{}}000{{{d{c}}}Hd{}}099```````````````````````{{{d{{In{c}}}}}{{d{{Df{{Df{{J`{c}}}}}}}}}{JbJd}}{{{d{A`{In{c}}}}B`}{{d{A`{Gn{{J`{c}}}}}}}l}{{{d{{In{c}}}}{An{Al}}}{{d{{Gn{{J`{c}}}}}}}{JbJd}}{{{d{A`{In{c}}}}g{An{Gj}}}Abl{{Bf{Bd}}}{{n{}{{f{e}}}}}}{{{d{{In{c}}}}}Ab{JbJd}}{{{d{{In{c}}}}ee}Ab{JbJd}{Dn{Jf{}{{G`{B`}}}}}}{{{d{A`{In{c}}}}g{An{Al}}B`k}{{Ah{AbAf}}}l{{Bf{Bd}}}{{n{}{{f{e}}}}}{{Bf{{j{c}}}}}{{n{}{{f{{b{i}}}}}}}}{{{d{A`{In{c}}}}g{An{Ch}}B`k}{{Ah{AbAf}}}l{{Bf{Bd}}}{{n{}{{f{e}}}}}{{Bf{{j{c}}}}}{{n{}{{f{{b{i}}}}}}}}{{{d{c}}}{{d{e}}}{}{}}0000000{{{d{A`c}}}{{d{A`e}}}{}{}}0000000{{{d{e}}}Bdl{{Dj{c}}}}{{{d{Jh}}}Jh}{{{d{Jj}}}Jj}{{{d{{J`{c}}}}}{{J`{c}}}{Dnl}}{{{d{{Jl{c}}}}}{{Jl{c}}}{Dnl}}{{{d{c}}{d{A`e}}}Ab{}{}}000{{}Jn}{{{d{A`{In{c}}}}{An{Gj}}B`{An{Gj}}B`}{{Ah{AbAf}}}l}``{{{d{{In{c}}}}}{{d{{Eh{c}}}}}{JbJd}}{{}K`}{B`{{d{c}}}{}}0000000{B`{{d{A`c}}}{}}0000000{B`Ab}0000000{{{d{Jj}}{d{{In{c}}}}}Abl}{{{d{A`{In{c}}}}g{d{Fh}}B`}{{Ah{AbAf}}}l{{Bf{Bd}}}{{n{}{{f{e}}}}}}{{{d{A`{In{c}}}}g}Abl{{Bf{Bd}}}{{n{}{{f{e}}}}}}{{{d{Jh}}{d{Jh}}}Ad}{{{d{Jj}}{d{Jj}}}Ad}{{{d{{J`{c}}}}{d{{J`{c}}}}}Ad{Kbl}}{{{d{{Jl{c}}}}{d{{Jl{c}}}}}Ad{Kbl}}{{{d{A`{In{c}}}}}Abl}{{{d{A`{In{c}}}}{An{Ch}}B`{b{{j{c}}}}}{{Ah{AbAf}}}l}{{{d{{In{c}}}}}{{d{{Df{{Df{{J`{c}}}}}}}}}{JbJd}}{{{d{{In{c}}}}{An{Ch}}}{{d{{Gn{{J`{c}}}}}}}{JbJd}}{{{d{Jh}}{d{A`Fj}}}Fl}0{{{d{Jj}}{d{A`Fj}}}Fl}0{{{d{Jn}}{d{A`Fj}}}Fl}{{{d{Jn}}{d{A`Fj}}}{{Ah{AbKd}}}}{{{d{{Kf{c}}}}{d{A`Fj}}}Fl{FbKh}}{{{d{K`}}{d{A`Fj}}}Fl}{{{d{{J`{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{In{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{Jl{c}}}}{d{A`Fj}}}Fl{Fbl}}{cc{}}0000000{{{d{{In{c}}}}Gf}{{b{c}}}l}{{}B`}0000000{{{d{{In{c}}}}}{{d{{Df{{Df{{Jl{c}}}}}}}}}{JbJd}}{{{d{A`{In{c}}}}B`}{{d{A`{Gn{{Jl{c}}}}}}}l}{ce{}{}}0000000{{K`Ad}K`}`{{{d{A`{In{c}}}}{Dh{Bd}}}Abl}{{{d{A`{In{c}}}}g}Abl{{Bf{Bd}}}{{n{}{{f{e}}}}}}{{{d{Jn}}}Bd}{{{d{{In{c}}}}{An{Bl}}B`}{{Ah{{b{c}}Af}}}l}{{K`Ed{d{e}}{d{{Kl{gKj}}}}}{{Ah{AbKn}}}l{{Dj{c}}}L`}{{Ed{d{e}}{Df{{Df{c}}}}}{{Ah{{In{c}}Af}}}{JbJd}{{Dj{c}}}}{{{d{{In{c}}}}}{{d{{Df{{Df{Ad}}}}}}}{JbJd}}77{{{d{A`e}}{d{g}}{Df{{An{Ch}}}}}{{Ah{AbAf}}}l{{Cd{c}}Hh}{{Dj{c}}}}{{{d{c}}}e{}{}}000{{{d{c}}}Bd{}}00{c{{Ah{e}}}{}{}}000000000000000{{{d{c}}}Hd{}}0000000{{{d{{In{c}}}}}{{d{{Lb{B`}}}}}{JbJd}}{{{d{{Jl{c}}}}}cl}{{{d{{In{c}}}}}{{Ah{Ab{Df{Jj}}}}}{JbJd}}{{{d{{In{c}}}}ee}{{Ah{Ab{Df{Jj}}}}}{JbJd}{Dn{Jf{}{{G`{B`}}}}}}{{K`{Lb{B`}}}K`}0{ce{}{}}0000000````````````````````````````{{{d{c}}}{{d{e}}}{}{}}00{{{d{A`c}}}{{d{A`e}}}{}{}}00{B`{{d{c}}}{}}00{B`{{d{A`c}}}{}}00{B`Ab}00{{{d{{Ld{ce}}}}{d{A`Fj}}}Fl{FbLf}{FbDj}}{{{d{{Lh{c}}}}{d{A`Fj}}}Fl{FbLf}}{{{d{{Lj{c}}}}{d{A`Fj}}}Fl{FbLf}}{cc{}}00{{}B`}00:::{{{d{{Ld{ce}}}}}{{Lh{c}}}LfDj}{{Ed{d{c}}}{{Ld{ec}}}DjLf}{{{d{{Ld{ce}}}}B`}{{Lj{c}}}LfDj}{c{{Ah{e}}}{}{}}00000{{{d{c}}}Hd{}}00???````````````>>>>>>>======={{{d{Ll}}}Ll}{{{d{Ln}}}Ln}{{{d{M`}}}M`}{{{d{Mb}}}Mb}{{{d{c}}{d{A`e}}}Ab{}{}}000{{{d{Ll}}{d{Ll}}}Ih}`{B`{{d{c}}}{}}000000{B`{{d{A`c}}}{}}000000{c{{Ah{M`}}}Md}{c{{Ah{Mf}}}Md}{B`Ab}000000{{{d{Mh}}{d{Mh}}}Ad}{{{d{Ll}}{d{Ll}}}Ad}`{{{d{Mh}}{d{A`Fj}}}Fl}{{{d{Mj}}{d{A`Fj}}}Fl}{{{d{Ll}}{d{A`Fj}}}Fl}{{{d{Ln}}{d{A`Fj}}}Fl}{{{d{M`}}{d{A`Fj}}}Fl}{{{d{Mb}}{d{A`Fj}}}Fl}{{{d{Mf}}{d{A`Fj}}}Fl}{cc{}}000000{{Ed{d{e}}{Df{{Df{c}}}}}Mj{JdlJb}{{Dj{c}}}}{{Ed{d{e}}{Df{{Df{c}}}}Mh}Mf{JdlJb}{{Dj{c}}}}{{{d{Ml}}}{{Ah{Llc}}}{}}`{{}B`}000000`{ce{}{}}000000{{{d{Mj}}Mh}Mf}``````{{{d{Ll}}{d{Ll}}}{{Dh{Ih}}}}````{{{d{M`}}c}AhMn}{{{d{Mf}}c}AhMn}```{{{d{c}}}e{}{}}000{c{{Ah{e}}}{}{}}0000000000000{{{d{c}}}Hd{}}0000007777777`````{{{d{c}}}{{d{e}}}{}{}}0000{{{d{A`c}}}{{d{A`e}}}{}{}}0000{{{d{N`}}}N`}{{{d{Nb}}}Nb}{{{d{Nd}}}Nd}{{{d{Nf}}}Nf}{{{d{Nh}}}Nh}{{{d{c}}{d{A`e}}}Ab{}{}}0000{{{d{N`}}{d{N`}}}Ih}{{{d{Nb}}{d{Nb}}}Ih}`{B`{{d{c}}}{}}0000{B`{{d{A`c}}}{}}0000{B`Ab}0000{{{d{N`}}{d{N`}}}Ad}{{{d{Nb}}{d{Nb}}}Ad}{{{d{Nd}}{d{Nd}}}Ad}{{{d{Nf}}{d{Nf}}}Ad}{{{d{Nh}}{d{Nh}}}Ad}{{{d{N`}}{d{A`Fj}}}{{Ah{AbKd}}}}0{{{d{Nb}}{d{A`Fj}}}Fl}0{{{d{Nd}}{d{A`Fj}}}Fl}0{{{d{Nf}}{d{A`Fj}}}Fl}0{{{d{Nh}}{d{A`Fj}}}Fl}0{{{An{Gj}}}N`}{cc{}}0{{{Ej{N`Nj}}}Nb}{NlNb}{{{Ej{cN`Nj}}}Nb{{Nn{Ml}}}}{{{Ej{B`c}}}Nd{{Nn{Ml}}}}44{{{Ej{NdB`c}}}Nf{{Nn{Ml}}}}{{{Ej{B`{d{Ml}}}}}Nh}{{{Ej{B`Bd{Dd{N`Bd}}}}}Nh}7{{{Ej{B`Bd}}}Nh}{{{Ej{B`{d{Ml}}{Dd{N`Bd}}}}}Nh}{{{d{N`}}{d{A`c}}}AbIl}`{{}B`}0000{ce{}{}}0000{{GjB`}N`}{{{d{N`}}{d{N`}}}{{Dh{Ih}}}}{{{d{Nb}}{d{Nb}}}{{Dh{Ih}}}}{{{d{c}}}e{}{}}0000{{{d{c}}}Bd{}}0000{c{{Ah{e}}}{}{}}000000000{{{d{c}}}Hd{}}000077777```````````{{{j{c}}c}{{j{c}}}l}{{{j{c}}{j{c}}}{{j{c}}}l}{{{d{{j{c}}}}{d{{j{c}}}}}{{j{c}}}l}{{{d{{j{c}}}}c}{{j{c}}}l}{{{j{c}}{d{{j{c}}}}}{{j{c}}}l}{{{d{{j{c}}}}{j{c}}}{{j{c}}}l}{{{d{A`{j{c}}}}{d{{j{c}}}}}Abl}{{{d{A`{j{c}}}}{j{c}}}Abl}{{{d{c}}}{{d{e}}}{}{}}{{{d{A`c}}}{{d{A`e}}}{}{}}{{{d{{j{c}}}}}{{j{c}}}Dn}{{{d{c}}{d{A`e}}}Ab{}{}}{{{d{{j{c}}}}}{{j{c}}}l}{{{d{{j{c}}}}}{{Dh{c}}}l}{B`{{d{c}}}{}}{B`{{d{A`c}}}{}}3{B`Ab}{{{d{{j{c}}}}{d{{j{c}}}}}Adl}{{{j{c}}}cl}{{{d{{j{c}}}}{d{A`Fj}}}FlFb}{c{{j{c}}}l}{{{d{c}}}{{j{c}}}l}{{{Ej{cc}}}{{j{c}}}l}{cc{}};{{}B`}{ce{}{}}={{{d{{j{c}}}}}Adl}{{{j{c}}c}{{j{c}}}l}{{{j{c}}{j{c}}}{{j{c}}}l}{{{j{c}}{d{{j{c}}}}}{{j{c}}}l}{{{d{{j{c}}}}c}{{j{c}}}l}{{{d{A`{j{c}}}}{d{{j{c}}}}}Abl}{{{d{A`{j{c}}}}{j{c}}}Abl}{{{d{{j{c}}}}}el{}}{{{j{c}}}el{}}{{{d{{j{c}}}}}cl}{{{d{{j{c}}}}}{{j{c}}}l}7{{{d{{j{c}}}}{d{{j{c}}}}}{{j{c}}}l}{{{d{{j{c}}}}{j{c}}}{{j{c}}}l};:876{{{d{c}}}e{}{}}{c{{Ah{e}}}{}{}}0{{{d{c}}}Hd{}}{ce{}{}}``````````{{{d{A`Cd}}e{An{Gj}}}Ab{{Bf{Bd}}}{{n{}{{f{c}}}}}}{{{d{A`Cd}}e{An{Al}}B`k}{{Ah{AbAf}}}{{Bf{Bd}}}{{n{}{{f{c}}}}}l{{Bf{{j{g}}}}}{{n{}{{f{{b{i}}}}}}}}{{{d{A`Cd}}e{An{Ch}}B`k}{{Ah{AbAf}}}{{Bf{Bd}}}{{n{}{{f{c}}}}}l{{Bf{{j{g}}}}}{{n{}{{f{{b{i}}}}}}}}{{{d{c}}}{{d{e}}}{}{}}00{{{d{A`c}}}{{d{A`e}}}{}{}}00{{{d{Al}}}Al}{{{d{Ch}}}Ch}{{{d{Bl}}}Bl}{{{d{c}}{d{A`e}}}Ab{}{}}00`{{{d{A`{Eh{c}}}}}el{}}{{{d{A`{Eh{c}}}}e}gl{}{}}`{{{d{A`Cd}}{An{Gj}}B`{An{Gj}}B`}{{Ah{AbAf}}}}{B`{{d{c}}}{}}00{B`{{d{A`c}}}{}}00{B`Ab}00{{{d{A`Cd}}e{d{Fh}}B`}{{Ah{AbAf}}}{{Bf{Bd}}}{{n{}{{f{c}}}}}}{{{d{A`Cd}}e}Ab{{Bf{Bd}}}{{n{}{{f{c}}}}}}{{{d{Al}}{d{Al}}}Ad}{{{d{Ch}}{d{Ch}}}Ad}{{{d{Bl}}{d{Bl}}}Ad}{{{d{A`Cd}}}Ab}`{{{d{A`Cd}}{An{Ch}}B`{b{{j{c}}}}}{{Ah{AbAf}}}l}{{{d{Al}}{d{A`Fj}}}Fl}{{{d{Ch}}{d{A`Fj}}}Fl}{{{d{Bl}}{d{A`Fj}}}Fl}{cc{}}00{{{d{Cd}}Gf}{{b{c}}}l}{{{d{Al}}{d{A`c}}}AbIl}{{{d{Ch}}{d{A`c}}}AbIl}{{{d{Bl}}{d{A`c}}}AbIl}{{}B`}00{ce{}{}}00{{{d{{Dj{}{{El{c}}{O`{e}}{Ob{g}}}}}}}gDnKhOd}{{{d{A`Cd}}{Dh{Bd}}}Ab}{{{d{A`Cd}}e}Ab{{Bf{Bd}}}{{n{}{{f{c}}}}}}{{{d{Of}}B`Oh}{{Oj{c}}}l}{{{d{Al}}B`Oh}{{Oj{c}}}l}{{{d{Ch}}B`Oh}{{Oj{c}}}l}{{{d{Bl}}B`Oh}{{Oj{c}}}l}{{{d{Cd}}{An{Bl}}B`}{{Ah{{b{c}}Af}}}l}{{{d{A`e}}{d{g}}{Df{{An{Ch}}}}}{{Ah{AbAf}}}l{{Cd{c}}Hh}{{Dj{c}}}}{{{d{{Dj{}{{El{c}}{O`{e}}{Ob{g}}}}}}ck}{{Ah{AbAf}}}DnKhOdl{{Cl{i}}}}{{{d{c}}}e{}{}}00{c{{Ah{e}}}{}{}}00000{{{d{c}}}Hd{}}00==={{{d{{Dj{}{{El{c}}{O`{e}}{Ob{g}}}}}}}{{Dj{}{{El{c}}{O`{e}}{Ob{g}}}}}DnKhOd}``````{{{d{A`{Eh{c}}}}}{{An{Al}}}l}{{{d{A`{Eh{c}}}}e}{{An{Al}}}lOl}{{{d{{Eh{c}}}}}{{Df{Db}}}l}{{{d{{Eh{c}}}}}{{d{{Df{{Ej{{An{Al}}Oh}}}}}}}l}{{{d{A`{Eh{c}}}}ei}Abl{{Bf{{An{Gj}}}}}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}}0{{{d{A`{Eh{c}}}}C`g}Abl{{Bf{Bd}}}{{Bh{}{{f{e}}}}}}{{{d{{Eh{c}}}}}B`l}{{{d{c}}}{{d{e}}}{}{}}00000{{{d{A`c}}}{{d{A`e}}}{}{}}000006{{{d{A`{Eh{c}}}}e}GflOl}{{{d{Nl}}}Nl}{{{d{{On{c}}}}}{{On{c}}}{Dnl}}{{{d{{Eh{c}}}}}{{Eh{c}}}{Dnl}}{{{d{c}}{d{A`e}}}Ab{}{}}00`{{{d{A`{Eh{c}}}}}Fhl}{{{Eh{c}}{Df{{Df{Ad}}}}}{{Ej{{Eh{c}}{Df{{Df{c}}}}}}}l}{{{d{{Eh{c}}}}}{{d{{Df{{An{Ch}}}}}}}l}{{{d{{On{c}}}}B`}{{d{Ml}}}l}{{{d{A`{Eh{c}}}}ek}Abl{{Nn{Ml}}}{{Bf{{A@`{c}}}}}{{Gb{}{{G`{g}}}}}{{n{{d{A`{A@b{c}}}}}{{f{i}}}}}}{{}{{Eh{c}}}l}={B`{{d{c}}}{}}00000{B`{{d{A`c}}}{}}000006{B`Ab}00000{{{d{A`{Eh{c}}}}{An{Ch}}}Abl}{{{d{A`{Eh{c}}}}e}Abl{{Bf{{An{Gj}}}}}}{{{d{A`{Eh{c}}}}}{{An{Ch}}}l}{{{d{{Eh{c}}}}}{{d{{Df{{Ej{{An{Ch}}Oh}}}}}}}l}{{{d{Nl}}{d{A`Fj}}}Fl}{{{d{{A@`{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{A@d{ceg}}}}{d{A`Fj}}}Fl{Fbl}{Fb{Bf{{A@`{c}}}}}{Fb{Gb{}{{G`{e}}}}}}{{{d{{On{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{Eh{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{A@b{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{Ej{cOh}}}Nl{{Bf{{An{Gj}}}}}}{cc{}}{{{Ej{c{Oj{e}}}}}{{A@`{e}}}{{Nn{Ml}}}l}{{{Oj{c}}}{{A@`{c}}}l}22222{{{d{{Eh{c}}}}}{{d{{Df{{On{c}}}}}}}l}{{{d{{Eh{c}}}}}{{d{{Dd{N`Bd}}}}}l}{{{d{{Eh{c}}}}{An{Gj}}Oh}B`l}{{}B`}00000{{{d{A`{Eh{c}}}}}{{An{Bl}}}l}{{{d{{Eh{c}}}}}{{d{{Df{{Ej{{An{Bl}}Oh}}}}}}}l}{ce{}{}}00000{{{A@d{ceg}}}il{{Bf{{A@`{c}}}}}{{Gb{}{{G`{e}}}}}{}}{{{d{A`{Eh{c}}}}eg}B`l{{Nn{Ml}}}{{n{{d{A`{A@b{c}}}}}{{f{{Df{{Ej{{Oj{c}}C`}}}}}}}}}}{{{d{A`{Eh{c}}}}eg}B`l{{Nn{Ml}}}{{n{{d{A`{A@b{c}}}}}{{f{{Df{{Ej{{Oj{c}}{Oj{c}}}}}}}}}}}}{{{d{A`{Eh{c}}}}}C`l}{{{d{{Eh{c}}}}}{{d{{Df{{A@f{c}}}}}}}l}{{{d{{Eh{c}}}}}B`l}{{{d{{On{c}}}}}{{d{Ml}}}l}11111{{{d{{Eh{c}}}}}{{d{A@h}}}l}{{{d{{Eh{c}}}}}{{`{{Jf{}{{G`{A@j}}}}}}}l}{{{d{{On{c}}}}}{{d{{Gn{{Oj{c}}}}}}}l}{{{d{{On{c}}}}}{{d{{Gn{Nl}}}}}l}{{{d{{On{c}}}}}{{d{{Gn{Fh}}}}}l}{{{d{A`{A@b{c}}}}{An{Al}}Oh}{{Oj{c}}}l}{{{d{A`{A@b{c}}}}eOh}{{Oj{c}}}l{{Bf{{An{Gj}}}}}}{{{d{A`{A@b{c}}}}Gf}{{Oj{c}}}l}{{{d{A`{A@b{c}}}}{An{Ch}}Oh}{{Oj{c}}}l}{{{d{A`{A@b{c}}}}{An{Bl}}Oh}{{Oj{c}}}l}{{{d{A`{A@b{c}}}}Fh}{{Oj{c}}}l}`{{{d{A`{Eh{c}}}}}Fhl}{{{d{A`{Eh{c}}}}B`}Abl}{{{d{A`{Eh{c}}}}eg}B`l{{Nn{Ml}}}{{n{{d{A`{A@b{c}}}}}{{f{{Df{{Ej{{Oj{c}}{Oj{c}}}}}}}}}}}}{{{d{{Eh{c}}}}}{{d{{Df{{A@l{c}}}}}}}l}{{{d{c}}}e{}{}}00{c{{Ah{e}}}{}{}}00000000000{{{d{c}}}Hd{}}00000{{{d{A`{Eh{c}}}}}{{An{Al}}}l}{{{d{A`{Eh{c}}}}e}{{An{Al}}}lOl}{ce{}{}}00000{{{Oj{c}}g}{{A@d{ceg}}}l{{Bf{{A@`{c}}}}}{{Gb{}{{G`{e}}}}}}``````````````````````{{{Oj{c}}{Oj{c}}}{{Oj{c}}}l}{{{d{c}}}{{d{e}}}{}{}}0000000000{{{d{A`c}}}{{d{A`e}}}{}{}}0000000000{{{d{{An{c}}}}}{{An{c}}}{DnOf}}{{{d{Fh}}}Fh}{{{d{A@n}}}A@n}{{{d{AA`}}}AA`}{{{d{AAb}}}AAb}{{{d{C`}}}C`}{{{d{Gf}}}Gf}{{{d{{Oj{c}}}}}{{Oj{c}}}Dn}{{{d{c}}{d{A`e}}}Ab{}{}}0000000{{{d{{An{c}}}}{d{{An{c}}}}}IhOf}{{{d{C`}}{d{C`}}}Ih}{{{d{A@n}}}B`}{{{d{AA`}}}B`}{{{d{AAb}}}B`}```{{{d{{An{c}}}}}{{d{c}}}Of}`{{{d{{Oj{c}}}}}B`l}{{{d{{An{c}}}}}{{Oj{e}}}Ofl}1{B`{{d{c}}}{}}0000000000{B`{{d{A`c}}}{}}0000000000{B`Ab}0000000000{{{d{Fh}}{d{A`{Aj{c}}}}B`}{{Ah{AbAf}}}l}{{{d{{An{c}}}}{d{{An{c}}}}}Ad{KbOf}}{{{d{Fh}}{d{Fh}}}Ad}{{{d{A@n}}{d{A@n}}}Ad}{{{d{AA`}}{d{AA`}}}Ad}{{{d{AAb}}{d{AAb}}}Ad}{{{d{C`}}{d{C`}}}Ad}{{{d{Gf}}{d{Gf}}}Ad}{{{d{{Oj{c}}}}{d{{Oj{c}}}}}AdKb}{{{d{{Oj{c}}}}{d{g}}{d{i}}{d{k}}{d{m}}{d{o}}{d{Aa}}{d{Ac}}{d{Ae}}{d{Ag}}{d{Ai}}}el{}{{Bh{c}{{f{e}}}}}{{Bh{Fh}{{f{e}}}}}{{Bh{A@n}{{f{e}}}}}{{Bh{AA`}{{f{e}}}}}{{Bh{AAb}{{f{e}}}}}{{Bh{Gf}{{f{e}}}}}{{Bh{e}{{f{e}}}}}{{Bh{ee}{{f{e}}}}}{{Bh{ee}{{f{e}}}}}{{Bh{ec}{{f{e}}}}}}{{{d{{Oj{c}}}}{d{g}}{d{i}}{d{k}}{d{m}}{d{o}}{d{Aa}}{d{Ac}}{d{Ae}}{d{Ag}}{d{Ai}}{d{e}}}elKb{{Bh{c}{{f{e}}}}}{{Bh{Fh}{{f{e}}}}}{{Bh{A@n}{{f{e}}}}}{{Bh{AA`}{{f{e}}}}}{{Bh{AAb}{{f{e}}}}}{{Bh{Gf}{{f{e}}}}}{{Bh{e}{{f{e}}}}}{{Bh{ee}{{f{e}}}}}{{Bh{ee}{{f{e}}}}}{{Bh{ec}{{f{e}}}}}}{{{d{Fh}}}{{Oj{c}}}l}{{{d{Gf}}}{{Oj{c}}}l}{{{d{{An{c}}}}{d{A`Fj}}}Fl{FbOf}}{{{d{AAd}}{d{A`Fj}}}Fl}{{{d{AAf}}{d{A`Fj}}}Fl}{{{d{AAh}}{d{A`Fj}}}Fl}{{{d{Fh}}{d{A`Fj}}}Fl}{{{d{A@n}}{d{A`Fj}}}Fl}{{{d{AA`}}{d{A`Fj}}}Fl}{{{d{AAb}}{d{A`Fj}}}Fl}{{{d{C`}}{d{A`Fj}}}Fl}{{{d{Gf}}{d{A`Fj}}}Fl}{{{d{{Oj{c}}}}{d{A`Fj}}}FlFb}{N`{{An{Gj}}}}{{{An{Bl}}}{{An{Gj}}}}{{{An{Al}}}{{An{Gj}}}}{cc{}}{{{An{Ch}}}{{An{Gj}}}}111111111{AAjGf}2{{{d{{An{c}}}}{d{A`e}}}Ab{AAlOf}Il}{{{d{Fh}}{d{A`c}}}AbIl}{{{d{C`}}{d{A`c}}}AbIl}{{{d{Gf}}{d{A`c}}}AbIl}{{{d{{Oj{c}}}}}Bdl}{{{d{{An{c}}}}}B`Of}{{{d{Fh}}}B`}{{{d{Gf}}}B`}`````{{}B`}0000000000{{{d{C`}}}{{An{Ch}}}}{ce{}{}}0000000000{{{d{Fh}}}Ad}{{{Oj{c}}c}{{Oj{c}}}l}{{{Oj{c}}{Oj{c}}}{{Oj{c}}}l}{{{Oj{c}}}el{}}{{B`c}{{An{c}}}Of}{{{d{{An{c}}}}}{{Oj{e}}}Ofl}{{{d{{An{c}}}}{d{{An{c}}}}}{{Dh{Ih}}}Of}{{{d{C`}}{d{C`}}}{{Dh{Ih}}}}{{{d{Gf}}}Db}3{e{{Oj{c}}}l{{Jf{}{{G`{{Oj{c}}}}}}}}{{{d{{An{c}}}}Oh}{{Oj{e}}}Ofl}{{{d{A`{Oj{c}}}}{d{A`{A@b{c}}}}}Abl}{{{d{{An{c}}}}Nj}{{Oj{e}}}Ofl}{{{d{A@n}}}Oh}{{{d{AA`}}}Oh}{{{d{AAb}}}Oh}````{{{Oj{c}}}{{Oj{c}}}l}>7{{{d{c}}}e{}{}}0000000{AAdA@j}{AAfA@j}{AAhA@j}{c{{Ah{e}}}{}{}}{{{An{Gj}}}{{Ah{{An{Bl}}c}}}{}}{{{An{Gj}}}{{Ah{{An{Ch}}c}}}{}}{{{An{Gj}}}{{Ah{{An{Al}}c}}}{}}333333333333333333333{{{d{c}}}Hd{}}0000000000{ce{}{}}0000000000``{{{d{c}}}{{d{e}}}{}{}}{{{d{A`c}}}{{d{A`e}}}{}{}}{{{d{A@j}}}A@j}{{{d{c}}{d{A`e}}}Ab{}{}}{{{d{A@j}}{d{A@j}}}Ih}{B`{{d{c}}}{}}{B`{{d{A`c}}}{}}{B`Ab}{{{d{A@j}}{d{A@j}}}Ad}{{{d{A@j}}{d{A`Fj}}}Fl}{cc{}}{{{d{A@j}}{d{A`c}}}AbIl}{{}B`}={{{d{A@j}}{d{A@j}}}{{Dh{Ih}}}}{{{d{A@j}}}{{Dh{A@j}}}}{{{d{c}}}e{}{}}{AAnA@j}{A@jA@j}{c{{Ah{e}}}{}{}}0{{{d{c}}}Hd{}}{ce{}{}}`````````````````````{{{d{c}}}{{d{e}}}{}{}}00{{{d{A`c}}}{{d{A`e}}}{}{}}00{B`{{d{c}}}{}}00{B`{{d{A`c}}}{}}00{B`Ab}00{{{d{Af}}{d{A`Fj}}}Fl}0{{{d{AB`}}{d{A`Fj}}}Fl}0{{{d{ABb}}{d{A`Fj}}}Fl}0{cc{}}00{{}B`}00:::{EdAf}{{{d{c}}}Bd{}}00>>>>>>===<<<```````````````````````````````;:{{{d{{A@f{c}}}}}{{A@f{c}}}{Dnl}}{{{d{c}}{d{A`e}}}Ab{}{}};:9{{{d{{A@f{c}}}}{d{A`Fj}}}Fll}65{{{d{{A@f{c}}}}}{{d{{Df{{Oj{c}}}}}}}l}{ce{}{}}{{{d{{A@f{c}}}}}{{d{Ml}}}l}{{c{Df{{Ej{{Oj{e}}{Oj{e}}}}}}}{{A@f{e}}}{{Nn{Ml}}}l}3{{{d{c}}}e{}{}}{c{{Ah{e}}}{}{}}0{{{d{c}}}Hd{}}5`{{{d{c}}}{{d{e}}}{}{}}{{{d{A`c}}}{{d{A`e}}}{}{}}{{{d{A@h}}}A@h};{{}A@h}{B`{{d{c}}}{}}{B`{{d{A`c}}}{}}{B`Ab}{{{d{A@h}}{d{A`Fj}}}Fl}{cc{}}{{{d{A@h}}}{{Df{{An{Gj}}}}}}{{}B`}{ce{}{}}>==<0`;:{{{d{{A@l{c}}}}}{{A@l{c}}}{Dnl}}{{{d{c}}{d{A`e}}}Ab{}{}}987{{{d{{A@l{c}}}}{d{A`Fj}}}Fll}64{{{d{{A@l{c}}}}}{{d{{Df{{Oj{c}}}}}}}l}4{{{d{{A@l{c}}}}}{{d{Ml}}}l}{{c{Df{{Ej{{Oj{e}}{Oj{e}}}}}}}{{A@l{e}}}{{Nn{Ml}}}l}2{{{d{c}}}e{}{}}{c{{Ah{e}}}{}{}}0{{{d{c}}}Hd{}}9","D":"DEh","p":[[5,"Value",3,1729],[1,"reference"],[17,"Output"],[10,"Add",1730],[6,"Assigned",980],[10,"Field",1731],[10,"FnOnce",1732],[0,"mut"],[1,"unit"],[1,"bool"],[6,"Error",1571],[6,"Result",1733],[5,"Region",3],[5,"Advice",1037],[5,"Column",1281],[1,"usize"],[5,"AssignedCell",3],[5,"String",1734],[10,"Into",1735],[10,"Fn",1732],[10,"FnMut",1732],[5,"Instance",1037],[10,"TableLayouter",381,1736],[5,"TableColumn",1281],[5,"SimpleTableLayouter",3,1736],[10,"Assignment",1037],[5,"Table",3],[5,"Fixed",1037],[17,"Root"],[10,"Layouter",3],[5,"NamespacedLayouter",3],[5,"WitnessCalculator",3],[1,"u8"],[5,"HashMap",1737],[5,"Vec",1738],[6,"Option",1739],[10,"Circuit",1037],[5,"Cell",3],[10,"Clone",1740],[5,"RegionIndex",3],[5,"RegionStart",3],[1,"u32"],[5,"CompiledCircuit",1741],[5,"ConstraintSystem",1126],[1,"tuple"],[17,"Config"],[17,"Loaded"],[10,"Chip",3],[10,"Debug",1742],[10,"Copy",1743],[10,"Borrow",1744],[5,"Selector",1281],[5,"Formatter",1742],[8,"Result",1742],[10,"RegionLayouter",381],[17,"Item"],[10,"IntoIterator",1745],[10,"FromIterator",1745],[5,"Challenge",1281],[10,"Mul",1730],[6,"Any",1741],[10,"Neg",1730],[1,"slice"],[10,"Sub",1730],[1,"array"],[5,"TypeId",1746],[5,"SingleChipLayouter",279],[10,"SyncDeps",381],[5,"SimpleFloorPlanner",279],[5,"V1Pass",316],[5,"V1",316],[5,"MeasurementPass",316],[5,"AssignmentPass",316],[5,"RegionShape",381],[6,"RegionColumn",381],[6,"Ordering",1747],[5,"HashSet",1748],[10,"Hasher",1749],[5,"MockProver",449],[6,"CellValue",449],[10,"FromUniformBytes",1731],[10,"Ord",1747],[10,"Iterator",1750],[6,"FailureLocation",449,1751],[6,"VerifyFailure",449,1751],[6,"InstanceValue",449],[5,"CircuitGates",449,1752],[5,"CircuitLayout",449,1753],[10,"PartialEq",1747],[5,"Error",1742],[5,"TracingFloorPlanner",449,1754],[10,"FloorPlanner",1037],[5,"Shift",1755],[5,"DrawingArea",1756],[6,"DrawingAreaErrorKind",1756],[10,"DrawingBackend",1757],[5,"Range",1758],[5,"CircuitCost",666],[10,"PrimeGroup",1759],[5,"MarginalProofSize",666],[5,"ProofSize",666],[5,"Poly",711],[5,"Lookup",711],[5,"Permutation",711],[5,"Shuffle",711],[10,"Deserializer",1760],[5,"ModelCircuit",711],[6,"CommitmentScheme",711],[5,"CostOptions",711],[1,"str"],[10,"Serializer",1761],[5,"Column",855],[5,"VirtualCell",855],[5,"Gate",855],[5,"Constraint",855],[5,"Region",855],[1,"i32"],[5,"VirtualCell",1126],[10,"AsRef",1735],[17,"FloorPlanner"],[17,"Params"],[10,"Default",1762],[10,"ColumnType",1037],[5,"Rotation",1763],[6,"Expression",1281],[10,"Phase",1281],[5,"Gate",1126],[5,"Constraint",1126],[5,"VirtualCells",1126],[5,"Constraints",1126],[5,"Argument",1668],[5,"Argument",1689],[5,"Phase",1546],[5,"Argument",1708],[5,"FixedQuery",1281],[5,"AdviceQuery",1281],[5,"InstanceQuery",1281],[5,"FirstPhase",1281],[5,"SecondPhase",1281],[5,"ThirdPhase",1281],[5,"ChallengeMid",1741],[10,"Hash",1749],[10,"SealedPhase",1546],[6,"TableError",1571],[6,"AssignmentError",1571],[15,"InRegion",641],[15,"OutsideRegion",641],[15,"ConstraintNotSatisfied",644],[15,"CellNotAssigned",644],[15,"InstanceCellNotAssigned",644],[15,"Permutation",644],[15,"ConstraintPoisoned",644],[15,"Lookup",644],[15,"Shuffle",644],[15,"AssignAdvice",1638],[15,"AssignFixed",1638],[15,"QueryInstance",1638],[15,"FillFromRow",1638],[15,"EnableSelector",1638],[15,"Copy",1638],[15,"NotEnoughRowsAvailable",1667]],"r":[[14,279],[15,1736],[17,1736],[18,1729],[275,316],[276,316],[387,1736],[453,666],[454,1752],[455,1753],[458,1751],[469,1754],[471,1751],[496,1764]],"b":[[20,"impl-Add%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[21,"impl-Add%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[22,"impl-Add%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[23,"impl-Add%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[24,"impl-Add%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[25,"impl-Add-for-Value%3CV%3E"],[26,"impl-Add%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[27,"impl-Add-for-%26Value%3CV%3E"],[28,"impl-Add%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[29,"impl-Add%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[78,"impl-Value%3C%26mut+V%3E"],[79,"impl-Value%3C%26V%3E"],[87,"impl-Value%3C%26mut+V%3E"],[88,"impl-Value%3C%26V%3E"],[190,"impl-Mul%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[191,"impl-Mul%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[192,"impl-Mul%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[193,"impl-Mul%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[194,"impl-Mul%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[195,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[196,"impl-Mul-for-%26Value%3CV%3E"],[197,"impl-Mul%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[198,"impl-Mul-for-Value%3CV%3E"],[199,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[212,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[213,"impl-Sub%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[214,"impl-Sub%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[215,"impl-Sub-for-%26Value%3CV%3E"],[216,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[217,"impl-Sub-for-Value%3CV%3E"],[218,"impl-Sub%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[219,"impl-Sub%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[220,"impl-Sub%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[221,"impl-Sub%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[423,"impl-From%3CColumn%3CAny%3E%3E-for-RegionColumn"],[425,"impl-From%3CSelector%3E-for-RegionColumn"],[546,"impl-Display-for-FailureLocation"],[547,"impl-Debug-for-FailureLocation"],[548,"impl-Debug-for-VerifyFailure"],[549,"impl-Display-for-VerifyFailure"],[550,"impl-Debug-for-CircuitGates"],[551,"impl-Display-for-CircuitGates"],[903,"impl-Debug-for-ColumnMid"],[904,"impl-Display-for-ColumnMid"],[905,"impl-Display-for-VirtualCell"],[906,"impl-Debug-for-VirtualCell"],[907,"impl-Display-for-Gate"],[908,"impl-Debug-for-Gate"],[909,"impl-Display-for-Constraint"],[910,"impl-Debug-for-Constraint"],[911,"impl-Debug-for-Region"],[912,"impl-Display-for-Region"],[916,"impl-From%3C(ColumnMid,+i32)%3E-for-VirtualCell"],[917,"impl-From%3CVirtualCell%3E-for-VirtualCell"],[918,"impl-From%3C(S,+ColumnMid,+i32)%3E-for-VirtualCell"],[923,"impl-From%3C(usize,+%26str)%3E-for-Region"],[924,"impl-From%3C(usize,+String,+HashMap%3CColumnMid,+String%3E)%3E-for-Region"],[926,"impl-From%3C(usize,+String)%3E-for-Region"],[927,"impl-From%3C(usize,+%26str,+HashMap%3CColumnMid,+String%3E)%3E-for-Region"],[984,"impl-Add%3CF%3E-for-Assigned%3CF%3E"],[985,"impl-Add-for-Assigned%3CF%3E"],[986,"impl-Add%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[987,"impl-Add%3CF%3E-for-%26Assigned%3CF%3E"],[988,"impl-Add%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[989,"impl-Add%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[990,"impl-AddAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[991,"impl-AddAssign-for-Assigned%3CF%3E"],[1005,"impl-From%3CF%3E-for-Assigned%3CF%3E"],[1006,"impl-From%3C%26F%3E-for-Assigned%3CF%3E"],[1007,"impl-From%3C(F,+F)%3E-for-Assigned%3CF%3E"],[1009,"impl-From%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1014,"impl-Mul%3CF%3E-for-Assigned%3CF%3E"],[1015,"impl-Mul-for-Assigned%3CF%3E"],[1016,"impl-Mul%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1017,"impl-Mul%3CF%3E-for-%26Assigned%3CF%3E"],[1018,"impl-MulAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1019,"impl-MulAssign-for-Assigned%3CF%3E"],[1020,"impl-Neg-for-%26Assigned%3CF%3E"],[1021,"impl-Neg-for-Assigned%3CF%3E"],[1024,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1025,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1026,"impl-Sub%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1027,"impl-Sub%3CF%3E-for-Assigned%3CF%3E"],[1028,"impl-Sub-for-Assigned%3CF%3E"],[1029,"impl-Sub%3CF%3E-for-%26Assigned%3CF%3E"],[1030,"impl-SubAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1031,"impl-SubAssign-for-Assigned%3CF%3E"],[1199,"impl-From%3C(S,+Expression%3CF%3E)%3E-for-Constraint%3CF%3E"],[1200,"impl-From%3CExpression%3CF%3E%3E-for-Constraint%3CF%3E"],[1412,"impl-From%3CColumnMid%3E-for-Column%3CAny%3E"],[1413,"impl-From%3CColumn%3CInstance%3E%3E-for-Column%3CAny%3E"],[1414,"impl-From%3CColumn%3CAdvice%3E%3E-for-Column%3CAny%3E"],[1416,"impl-From%3CColumn%3CFixed%3E%3E-for-Column%3CAny%3E"],[1465,"impl-Mul%3CF%3E-for-Expression%3CF%3E"],[1466,"impl-Mul-for-Expression%3CF%3E"],[1500,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CInstance%3E"],[1501,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CFixed%3E"],[1502,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CAdvice%3E"],[1607,"impl-Display-for-Error"],[1608,"impl-Debug-for-Error"],[1609,"impl-Display-for-TableError"],[1610,"impl-Debug-for-TableError"],[1611,"impl-Debug-for-AssignmentError"],[1612,"impl-Display-for-AssignmentError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJUEjwAAAAAAAwAAAA8AAAAVAAkAKAAAACwAAAAuABQARQAJAFcAAABcAAAAXgAVAHUACgCBAAAAhgAJAJEAAACUAAAAlgAAAJoAAACdAAAAoQAAAKMACgC/AAkAywAAAM8AAADRAAAA1QAJAOAABADnAB0ACQEJABQBAwAaAQ4AKwEDADIBCgBBARoAYAEFAGoBEwCGAQAAiAEAAIoBAACNAQkAmQEAAJsBBgCjAQMAqAEAAKoBAwCvAQAAswEAALUBAAC4AQkAxgEAANwBAADfAREA8gEHAPsBAAD/ARgAGQIHACMCCgA2AggASwIBAE4CAABUAh8AegIHAJ4CEQCzAgIAvAILANQCFgDsAhgABgMGABYDAAAYAwYALgMAADMDAQA4Ax8AXQMVAHQDHgCVAwMAmwMCAJ8DAgCjAwQArQMlANQDAADZAwsA5wMBAOoDAQDtAwMA8gMBAPcDBwABBAwAGwQMACoEAAAsBAgANwQCADsEAAA9BAIARAQFAFEEAgBXBA4AdQQLAIMEBgCPBAAAkQQLAJ4EBQCoBAYAsAQBALkEBgDIBAAA1wQBAN8EAADkBBQA+wQFABgFKABIBQAATAUgAG4FBwB6BQ0AiQUAAJMFAACVBQMAnQUAAKEFCwC6BQMAvwUBAMMFAADNBQAAzwU7AA0GCQAYBgEAGwYKACsGAQAuBgAAMwYAADkGFABRBgIAWAYrAIYGBwCPBgAAlQYEAJsGCACmBgAAqAYEAK4GBwC3BgAAvQYEAA=="}],\ -["halo2_middleware",{"t":"CCEECCCCCCPGFPFFFPFIPFIPPFPPFPPGONNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNOOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNOONNNNOONNNNNNNNNNNNNNNNNNNNOONOONNOOOONNNOONONOONOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNPGPPPPKNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNMNFINNNNNNNNNNOONOOOONNNNNKKKKRRRRRRRKKFKNNMNNNNNNNNNNNNNHNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMHNMNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNMNNNNNNNNNNNNNNNNMNNFFNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNFINNNNNNNNNNOONOOOONNNNNCCFFFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRRKMMMMMM","n":["circuit","expression","ff","halo2curves","lookup","multicore","permutation","poly","shuffle","zal","Advice","Any","Cell","Challenge","ChallengeMid","ColumnMid","CompiledCircuit","Constant","ConstraintSystemMid","ExpressionMid","Fixed","Gate","GateMid","Instance","Negated","Preprocessing","Product","Query","QueryMid","Sum","Var","VarMid","advice_column_phase","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge_phase","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","column","column_index","column_type","column_type","complexity","cs","degree","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","fixed","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","gates","general_column_annotations","hash","hash","hash","index","index","index","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","lookups","minimum_degree","name","name","name","new","new","num_advice_columns","num_challenges","num_fixed_columns","num_instance_columns","partial_cmp","partial_cmp","partial_cmp","permutation","permutation","phase","phase","phases","poly","poly","polynomial","preprocessing","rotation","row","shuffles","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unblinded_advice_columns","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write_identifier","Constant","Expression","Negated","Product","Sum","Var","Variable","add","borrow","borrow_mut","clone","clone_into","complexity","complexity","degree","degree","deref","deref_mut","drop","eq","evaluate","fmt","from","identifier","init","into","mul","mul","neg","product","sub","sum","to_owned","try_from","try_into","type_id","vzip","write_identifier","write_identifier","Argument","ArgumentMid","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","from","init","input_expressions","input_expressions","into","name","name","table_expressions","table_expressions","to_owned","try_from","try_into","type_id","vzip","IndexedParallelIterator","IntoParallelIterator","IntoParallelRefIterator","IntoParallelRefMutIterator","Item","Item","Item","Item","Iter","Iter","Iter","ParallelIterator","ParallelSliceMut","Scope","TryFoldAndReduce","all","any","as_parallel_slice_mut","borrow","borrow_mut","by_exponential_blocks","by_uniform_blocks","chain","chunks","cloned","cmp","collect","collect_into_vec","collect_vec_list","copied","count","current_num_threads","deref","deref_mut","drive","drive_unindexed","drop","enumerate","eq","filter","filter_map","find_any","find_first","find_last","find_map_any","find_map_first","find_map_last","flat_map","flat_map_iter","flatten","flatten_iter","fmt","fold","fold_chunks","fold_chunks_with","fold_with","for_each","for_each_init","for_each_with","from","ge","gt","init","inspect","interleave","interleave_shortest","intersperse","into","into_par_iter","join","le","len","lt","map","map_init","map_with","max","max_by","max_by_key","min","min_by","min_by_key","ne","opt_len","panic_fuse","par_chunk_by_mut","par_chunks_exact_mut","par_chunks_mut","par_iter","par_iter_mut","par_rchunks_exact_mut","par_rchunks_mut","par_sort","par_sort_by","par_sort_by_cached_key","par_sort_by_key","par_sort_unstable","par_sort_unstable_by","par_sort_unstable_by_key","par_split_inclusive_mut","par_split_mut","partial_cmp","partition","partition_map","position_any","position_first","position_last","positions","product","reduce","reduce_with","rev","scope","skip","skip_any","skip_any_while","spawn","spawn_broadcast","step_by","sum","take","take_any","take_any_while","try_fold","try_fold_and_reduce","try_fold_with","try_for_each","try_for_each_init","try_for_each_with","try_from","try_into","try_reduce","try_reduce_with","type_id","unzip","unzip_into_vecs","update","vzip","while_some","with_max_len","with_min_len","with_producer","zip","zip_eq","ArgumentMid","AssemblyMid","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","columns","copies","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Rotation","borrow","borrow_mut","clone","clone_into","cmp","cur","deref","deref_mut","drop","eq","fmt","from","hash","init","into","next","partial_cmp","prev","to_owned","try_from","try_into","type_id","vzip","Argument","ArgumentMid","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","from","init","input_expressions","input_expressions","into","name","name","shuffle_expressions","shuffle_expressions","to_owned","try_from","try_into","type_id","vzip","impls","traits","H2cEngine","H2cMsmBaseDesc","H2cMsmCoeffsDesc","HasCurve","HasMsmEngine","NoCurve","NoMsmEngine","PlonkEngine","PlonkEngineConfig","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build_default","default","default","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","fmt","from","from","from","from","from","from","from","from","from","get_base_descriptor","get_coeffs_descriptor","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","msm","msm_backend","msm_with_cached_base","msm_with_cached_inputs","msm_with_cached_scalars","new","new","set_curve","set_msm","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","BaseDescriptor","CoeffsDescriptor","MsmAccel","get_base_descriptor","get_coeffs_descriptor","msm","msm_with_cached_base","msm_with_cached_inputs","msm_with_cached_scalars"],"q":[[0,"halo2_middleware"],[10,"halo2_middleware::circuit"],[251,"halo2_middleware::expression"],[290,"halo2_middleware::lookup"],[314,"halo2_middleware::multicore"],[458,"halo2_middleware::permutation"],[494,"halo2_middleware::poly"],[518,"halo2_middleware::shuffle"],[542,"halo2_middleware::zal"],[544,"halo2_middleware::zal::impls"],[680,"halo2_middleware::zal::traits"],[689,"core::clone"],[690,"ff"],[691,"core::cmp"],[692,"core::fmt"],[693,"core::hash"],[694,"core::option"],[695,"alloc::string"],[696,"core::result"],[697,"core::any"],[698,"std::io::error"],[699,"std::io"],[700,"core::ops::function"],[701,"core::iter::traits::iterator"],[702,"rayon::iter"],[703,"core::marker"],[704,"rayon::slice"],[705,"rayon::iter::blocks"],[706,"rayon::iter::chain"],[707,"rayon::iter::chunks"],[708,"rayon::iter::cloned"],[709,"alloc::vec"],[710,"alloc::collections::linked_list"],[711,"rayon::iter::copied"],[712,"rayon::iter::plumbing"],[713,"rayon::iter::enumerate"],[714,"rayon::iter::filter"],[715,"rayon::iter::filter_map"],[716,"rayon::iter::flat_map"],[717,"rayon::iter::flat_map_iter"],[718,"core::iter::traits::collect"],[719,"rayon::iter::flatten"],[720,"rayon::iter::flatten_iter"],[721,"rayon_core::scope"],[722,"rayon::iter::fold"],[723,"rayon::iter::fold_chunks"],[724,"rayon::iter::fold_chunks_with"],[725,"rayon::iter::inspect"],[726,"rayon::iter::interleave"],[727,"rayon::iter::interleave_shortest"],[728,"rayon::iter::intersperse"],[729,"rayon::iter::map"],[730,"rayon::iter::map_with"],[731,"rayon::iter::panic_fuse"],[732,"rayon::slice::chunk_by"],[733,"rayon::slice::chunks"],[734,"rayon::slice::rchunks"],[735,"core::default"],[736,"either"],[737,"rayon::iter::positions"],[738,"core::iter::traits::accum"],[739,"rayon::iter::rev"],[740,"rayon::iter::skip"],[741,"rayon::iter::skip_any"],[742,"rayon::iter::skip_any_while"],[743,"rayon_core::broadcast"],[744,"rayon::iter::step_by"],[745,"rayon::iter::take"],[746,"rayon::iter::take_any"],[747,"rayon::iter::take_any_while"],[748,"rayon::iter::try_fold"],[749,"rayon::iter::private"],[750,"rayon::iter::update"],[751,"rayon::iter::while_some"],[752,"rayon::iter::len"],[753,"rayon::iter::zip"],[754,"rayon::iter::zip_eq"],[755,"pasta_curves::arithmetic::curves"],[756,"rayon_core"],[757,"rayon_core::join"]],"i":[0,0,0,0,0,0,0,0,0,0,13,0,0,5,0,0,0,133,0,0,13,0,0,13,133,0,133,5,0,133,133,0,10,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,10,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,13,14,15,15,4,4,14,5,12,5,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,3,4,5,13,14,15,11,3,4,5,5,6,10,11,12,13,14,14,15,3,4,5,6,10,11,12,13,14,15,10,10,3,13,14,3,3,14,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,10,10,6,134,6,4,14,10,10,10,10,13,14,15,10,11,3,3,10,134,6,6,12,4,15,10,3,4,5,6,10,11,12,13,14,15,5,14,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,10,3,4,5,6,10,11,12,13,14,15,5,28,0,28,28,28,28,0,28,28,28,28,28,9,28,9,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,9,28,0,0,39,39,39,39,39,39,39,39,39,39,135,39,39,135,39,135,39,39,39,39,39,39,0,0,0,0,49,87,88,40,49,87,88,0,0,0,0,40,40,43,66,66,45,45,40,45,40,45,40,45,40,40,40,0,66,66,45,40,66,45,45,40,40,40,40,40,40,40,40,40,40,40,40,66,40,45,45,40,40,40,40,66,45,45,66,40,45,45,40,66,49,0,45,45,45,40,40,40,40,40,40,40,40,40,45,40,40,43,43,43,87,88,43,43,43,43,43,43,43,43,43,43,43,45,40,40,45,45,45,45,40,40,40,45,0,45,40,40,66,66,45,40,45,40,40,40,110,40,40,40,40,66,66,40,40,66,40,45,40,66,40,45,45,45,45,45,0,0,119,120,119,120,119,120,119,120,120,119,119,120,119,120,119,120,119,120,119,120,119,120,119,120,119,120,119,120,119,120,119,120,119,120,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,121,121,121,121,121,121,121,121,121,121,136,121,121,136,121,136,121,121,121,121,121,121,0,0,0,0,0,0,0,0,0,0,0,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,124,124,128,124,129,122,130,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,125,137,138,123,128,125,124,129,122,130,128,128,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,128,125,128,128,128,128,124,124,124,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,127,127,0,127,127,127,127,127,127],"f":"`````````````````````````````````{{{b{c}}}{{b{e}}}{}{}}000000000{{{b{dc}}}{{b{de}}}{}{}}000000000`{{{b{f}}}f}{{{b{h}}}h}{{{b{j}}}j}{{{b{{l{ce}}}}}{{l{ce}}}{nA`}{nAb}}{{{b{{Ad{c}}}}}{{Ad{c}}}{nA`}}{{{b{{Af{c}}}}}{{Af{c}}}{nA`}}{{{b{{Ah{c}}}}}{{Ah{c}}}{nA`}}{{{b{Aj}}}Aj}{{{b{Al}}}Al}{{{b{An}}}An}{{{b{c}}{b{de}}}B`{}{}}000000000{{{b{Aj}}{b{Aj}}}Bb}{{{b{Al}}{b{Al}}}Bb}{{{b{An}}{b{An}}}Bb}````{{{b{j}}}Bd}`0{Bd{{b{c}}}{}}000000000{Bd{{b{dc}}}{}}000000000{BdB`}000000000{{{b{f}}{b{f}}}Bf}{{{b{h}}{b{h}}}Bf}{{{b{j}}{b{j}}}Bf}{{{b{Aj}}{b{Aj}}}Bf}{{{b{Al}}{b{Al}}}Bf}{{{b{An}}{b{An}}}Bf}`{{{b{f}}{b{dBh}}}Bj}{{{b{h}}{b{dBh}}}Bj}{{{b{j}}{b{dBh}}}Bj}0{{{b{{l{ce}}}}{b{dBh}}}Bj{BlA`}{BlAb}}{{{b{{Ad{c}}}}{b{dBh}}}Bj{BlA`}}{{{b{{Af{c}}}}{b{dBh}}}Bj{BlA`}}{{{b{{Ah{c}}}}{b{dBh}}}Bj{BlA`}}{{{b{Aj}}{b{dBh}}}Bj}{{{b{Al}}{b{dBh}}}Bj}0{{{b{An}}{b{dBh}}}Bj}{cc{}}000000000``{{{b{f}}{b{dc}}}B`Bn}{{{b{Aj}}{b{dc}}}B`Bn}{{{b{Al}}{b{dc}}}B`Bn}{{{b{f}}}Bd}``{{}Bd}000000000{ce{}{}}000000000``{{{b{{l{ce}}}}}{{b{C`}}}A`Ab}``{{AjBdCb}h}{{AjBd}Al}````{{{b{Aj}}{b{Aj}}}{{Cd{Bb}}}}{{{b{Al}}{b{Al}}}{{Cd{Bb}}}}{{{b{An}}{b{An}}}{{Cd{Bb}}}}``{{{b{f}}}Cf}`{{{b{{Ad{c}}}}}BdA`}``{{{b{{l{ce}}}}}{{b{{Ch{ce}}}}}A`Ab}````{{{b{c}}}e{}{}}000000000{{{b{c}}}Cj{}}0{c{{Cl{e}}}{}{}}0000000000000000000{{{b{c}}}Cn{}}000000000`=========={{{b{j}}{b{dc}}}{{D`{B`}}}Db}```````{{{Ch{ce}}{Ch{ce}}}{{Ch{ce}}}A`Ab}{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{{Ch{ce}}}}}{{Ch{ce}}}n{nAb}}{{{b{c}}{b{de}}}B`{}{}}{{{b{Ab}}}Bd}{{{b{{Ch{ce}}}}}BdA`Ab}10{Bd{{b{c}}}{}}{Bd{{b{dc}}}{}}{BdB`}{{{b{{Ch{ce}}}}{b{{Ch{ce}}}}}BfDd{DdAb}}{{{b{{Ch{ce}}}}{b{i}}{b{k}}{b{m}}{b{o}}{b{Aa}}}gA`Ab{}{{Dh{c}{{Df{g}}}}}{{Dh{e}{{Df{g}}}}}{{Dh{g}{{Df{g}}}}}{{Dh{gg}{{Df{g}}}}}{{Dh{gg}{{Df{g}}}}}}{{{b{{Ch{ce}}}}{b{dBh}}}BjBl{BlAb}}{cc{}}{{{b{{Ch{ce}}}}}CjA`Ab}{{}Bd}{ce{}{}}{{{Ch{ce}}{Ch{ce}}}{{Ch{ce}}}A`Ab}{{{Ch{ce}}c}{{Ch{ce}}}A`Ab}{{{Ch{ce}}}gA`Ab{}}{g{{Ch{ce}}}A`Ab{{Dl{}{{Dj{{Ch{ce}}}}}}}}30{{{b{c}}}e{}{}}{c{{Cl{e}}}{}{}}0{{{b{c}}}Cn{}}7{{{b{Ab}}{b{dc}}}{{D`{B`}}}Db}{{{b{{Ch{ce}}}}{b{dg}}}{{D`{B`}}}A`AbDb}``{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{{Dn{ce}}}}}{{Dn{ce}}}{nA`}{nAb}}{{{b{c}}{b{de}}}B`{}{}}{Bd{{b{c}}}{}}{Bd{{b{dc}}}{}}{BdB`}{{{b{{Dn{ce}}}}{b{dBh}}}Bj{BlA`}{BlAb}}{cc{}}{{}Bd}``{ce{}{}}````?>>=0```````````````{{{E`{}{{Dj{c}}}}e}BfEb{{Dh{c}{{Df{Bf}}}}EdEb}}0{{{b{dEf}}}{{b{d{Eh{c}}}}}Eb}<;{Ej{{El{Ej}}}}{{EjBd}{{En{Ej}}}}{{{E`{}{{Dj{c}}}}e}{{F`{{E`{}{{Dj{c}}}}}}}Eb{{Fb{}{{Dj{c}}}}}}{{EjBd}{{Fd{Ej}}}}{{{E`{}{{Dj{c}}}}}{{Ff{{E`{}{{Dj{c}}}}}}}Eb}{{Eje}Bb{}{{Fb{}{{Dj{c}}}}}}{{{E`{}{{Dj{c}}}}}eEb{{Fh{c}}}}{{Ej{b{d{Fj{c}}}}}B`{}}{{{E`{}{{Dj{c}}}}}{{Fl{{Fj{c}}}}}Eb}{{{E`{}{{Dj{c}}}}}{{Fn{{E`{}{{Dj{c}}}}}}}Eb}{{{E`{}{{Dj{c}}}}}BdEb}>{Bd{{b{c}}}{}}{Bd{{b{dc}}}{}}{{Eje}{}{}{{G`{c}}}}{{{E`{}{{Dj{c}}}}e}{}Eb{{Gb{c}}}}{BdB`}{Ej{{Gd{Ej}}}}{{Ejc}BfFb}{{{E`{}{{Dj{c}}}}e}{{Gf{{E`{}{{Dj{c}}}}e}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}}{{{E`{}{{Dj{c}}}}g}{{Gh{{E`{}{{Dj{c}}}}g}}}EbEb{{Dh{c}{{Df{{Cd{e}}}}}}EdEb}}{{{E`{}{{Dj{c}}}}e}{{Cd{c}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}}00{{{E`{}{{Dj{c}}}}g}{{Cd{e}}}EbEb{{Dh{c}{{Df{{Cd{e}}}}}}EdEb}}00{{{E`{}{{Dj{c}}}}g}{{Gj{{E`{}{{Dj{c}}}}g}}}EbFb{{Dh{c}{{Df{e}}}}EdEb}}{{{E`{}{{Dj{c}}}}g}{{Gl{{E`{}{{Dj{c}}}}g}}}EbGn{{Dh{c}{{Df{e}}}}EdEb}}{{{E`{}{{Dj{c}}}}}{{H`{{E`{}{{Dj{c}}}}}}}Eb}{{{E`{}{{Dj{c}}}}}{{Hb{{E`{}{{Dj{c}}}}}}}Eb}{{{b{Hd}}{b{dBh}}}{{Cl{B`Hf}}}}{{{E`{}{{Dj{c}}}}gi}{{Hh{{E`{}{{Dj{c}}}}gi}}}EbEb{{Dh{}{{Df{e}}}}EdEb}{{Dh{ec}{{Df{e}}}}EdEb}}{{EjBdei}{{Hj{Ejei}}}Eb{{Dh{}{{Df{c}}}}EbEd}{}{{Dh{cg}{{Df{c}}}}EbEd}}{{EjBdcg}{{Hl{Ejcg}}}{Ebn}{}{{Dh{ce}{{Df{c}}}}EbEd}}{{{E`{}{{Dj{c}}}}eg}{{Hn{{E`{}{{Dj{c}}}}eg}}}Eb{Ebn}{{Dh{ec}{{Df{e}}}}EdEb}}{{{E`{}{{Dj{c}}}}e}B`Eb{{Dh{c}}EdEb}}{{{E`{}{{Dj{c}}}}gi}B`Eb{}{{Dh{}{{Df{e}}}}EdEb}{{Dh{{b{de}}c}}EdEb}}{{{E`{}{{Dj{c}}}}eg}B`Eb{Ebn}{{Dh{{b{de}}c}}EdEb}}{cc{}}{{Ejc}BfFb}0{{}Bd}{{{E`{}{{Dj{c}}}}e}{{I`{{E`{}{{Dj{c}}}}e}}}Eb{{Dh{{b{c}}}}EdEb}}{{Eje}{{Ib{Ej}}}{}{{Fb{}{{Dj{c}}}}}}{{Eje}{{Id{Ej}}}{}{{Fb{}{{Dj{c}}}}}}{{{E`{}{{Dj{c}}}}c}{{If{{E`{}{{Dj{c}}}}}}}Eb}{ce{}{}}{{{Fb{}{{Ih{c}}{Dj{e}}}}}c{{E`{}{{Dj{e}}}}}Eb}{{ei}{{Ij{cg}}}Eb{{Il{}{{Df{c}}}}Eb}Eb{{Il{}{{Df{g}}}}Eb}}8{{{b{Ej}}}Bd}9{{{E`{}{{Dj{c}}}}g}{{In{{E`{}{{Dj{c}}}}g}}}EbEb{{Dh{c}{{Df{e}}}}EdEb}}{{{E`{}{{Dj{c}}}}gk}{{J`{{E`{}{{Dj{c}}}}gk}}}Eb{}{{Dh{}{{Df{e}}}}EdEb}Eb{{Dh{{b{de}}c}{{Df{i}}}}EdEb}}{{{E`{}{{Dj{c}}}}ei}{{Jb{{E`{}{{Dj{c}}}}ei}}}Eb{Ebn}Eb{{Dh{{b{de}}c}{{Df{g}}}}EdEb}}{{{E`{}{{Dj{c}}}}}{{Cd{c}}}Eb}{{{E`{}{{Dj{c}}}}e}{{Cd{c}}}Eb{EdEb{Dh{{b{c}}{b{c}}}{{Df{Bb}}}}}}{{{E`{}{{Dj{c}}}}g}{{Cd{c}}}Eb{JdEb}{EdEb{Dh{{b{c}}}{{Df{e}}}}}}210?{{{b{{E`{}{{Dj{c}}}}}}}{{Cd{Bd}}}Eb}{{{E`{}{{Dj{c}}}}}{{Jf{{E`{}{{Dj{c}}}}}}}Eb}{{{b{dEf}}e}{{Jh{ce}}}Eb{{Dh{{b{c}}{b{c}}}{{Df{Bf}}}}EbEd}}{{{b{dEf}}Bd}{{Jj{c}}}Eb}{{{b{dEf}}Bd}{{Jl{c}}}Eb}{{{b{{Jn{}{{Ih{c}}{Dj{e}}}}}}}c{{E`{}{{Dj{e}}}}}Eb}{{{b{d{K`{}{{Ih{c}}{Dj{e}}}}}}}c{{E`{}{{Dj{e}}}}}Eb}{{{b{dEf}}Bd}{{Kb{c}}}Eb}{{{b{dEf}}Bd}{{Kd{c}}}Eb}{{{b{dEf}}}B`}{{{b{dEf}}e}B`Eb{{Dh{{b{c}}{b{c}}}{{Df{Bb}}}}Ed}}{{{b{dEf}}g}B`Eb{JdEb}{{Dh{{b{c}}}{{Df{e}}}}Ed}}{{{b{dEf}}g}B`EbJd{{Dh{{b{c}}}{{Df{e}}}}Ed}}320{{{b{dEf}}e}{{Kf{ce}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}}{{{b{dEf}}e}{{Kh{ce}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}}{{Ejc}{{Cd{Bb}}}Fb}{{{E`{}{{Dj{c}}}}e}{{Ij{gi}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}{KjEb{Kl{c}}}{KjEb{Kl{c}}}}{{{E`{}{{Dj{c}}}}i}{{Ij{km}}}EbEbEb{{Dh{c}{{Df{{Kn{eg}}}}}}EdEb}{KjEb{Kl{e}}}{KjEb{Kl{g}}}}{{Eje}{{Cd{Bd}}}{}{{Dh{c}{{Df{Bf}}}}EdEb}}00{{Eje}{{L`{Eje}}}{}{{Dh{c}{{Df{Bf}}}}EdEb}}{{{E`{}{{Dj{c}}}}}eEb{Eb{Lb{c}}Lb}}{{{E`{}{{Dj{c}}}}eg}cEb{{Dh{}{{Df{c}}}}EdEb}{{Dh{cc}{{Df{c}}}}EdEb}}{{{E`{}{{Dj{c}}}}e}{{Cd{c}}}Eb{{Dh{cc}{{Df{c}}}}EdEb}}{Ej{{Ld{Ej}}}}{ecEb{{Il{{b{Hd}}}{{Df{c}}}}Eb}}{{EjBd}{{Lf{Ej}}}}{{{E`{}{{Dj{c}}}}Bd}{{Lh{{E`{}{{Dj{c}}}}}}}Eb}{{{E`{}{{Dj{c}}}}e}{{Lj{{E`{}{{Dj{c}}}}e}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}}{{{b{Hd}}c}B`{{Il{{b{Hd}}}}Eb}}{{{b{Hd}}c}B`{{Dh{{b{Hd}}Ll}}EbEd}}{{EjBd}{{Ln{Ej}}}}{{{E`{}{{Dj{c}}}}}eEb{Eb{M`{c}}M`}}{{EjBd}{{Mb{Ej}}}}{{{E`{}{{Dj{c}}}}Bd}{{Md{{E`{}{{Dj{c}}}}}}}Eb}{{{E`{}{{Dj{c}}}}e}{{Mf{{E`{}{{Dj{c}}}}e}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}}{{{E`{}{{Dj{c}}}}gk}{{Mh{{E`{}{{Dj{c}}}}igk}}}Eb{}{{Dh{}{{Df{e}}}}EdEb}{{Mj{}{{Df{e}}}}Eb}{{Dh{ec}{{Df{i}}}}EdEb}}{{Mlei}{{Cl{cg}}}{}{{Dh{}{{Df{c}}}}EbEd}{}{{Dh{c{Cl{cg}}}{{Df{{Cl{cg}}}}}}EbEd}}{{{E`{}{{Dj{c}}}}ei}{{Mn{{E`{}{{Dj{c}}}}gi}}}Eb{nEb}{{Mj{}{{Df{e}}}}Eb}{{Dh{ec}{{Df{g}}}}EdEb}}{{{E`{}{{Dj{c}}}}g}eEb{{Mj{}{{Df{B`}}}}Eb}{{Dh{c}{{Df{e}}}}EdEb}}{{{E`{}{{Dj{c}}}}gk}iEb{}{{Dh{}{{Df{e}}}}EdEb}{{Mj{}{{Df{B`}}}}Eb}{{Dh{{b{de}}c}{{Df{i}}}}EdEb}}{{{E`{}{{Dj{c}}}}ei}gEb{Ebn}{{Mj{}{{Df{B`}}}}Eb}{{Dh{{b{de}}c}{{Df{g}}}}EdEb}}{c{{Cl{e}}}{}{}}0{{{E`{}{{Dj{c}}}}gi}cEb{}{{Dh{}{{Df{e}}}}EdEb}{{Dh{ee}{{Df{c}}}}EdEb}}{{{E`{}{{Dj{c}}}}g}{{Cd{c}}}Eb{}{{Dh{ee}{{Df{c}}}}EdEb}}{{{b{c}}}Cn{}}{{{E`{}{{Dj{c}}}}}{{Ij{gk}}}EbEb{KjEb{Kl{e}}}Eb{KjEb{Kl{i}}}}{{Ej{b{d{Fj{c}}}}{b{d{Fj{e}}}}}B`EbEb}{{{E`{}{{Dj{c}}}}e}{{N`{{E`{}{{Dj{c}}}}e}}}Eb{{Dh{{b{dc}}}}EdEb}}{ce{}{}}{{{E`{}{{Dj{c}}}}}{{Nb{{E`{}{{Dj{c}}}}}}}Eb}{{EjBd}{{Nd{Ej}}}}{{EjBd}{{Nf{Ej}}}}{{Eje}{}{}{{Nh{c}}}}{{Ejc}{{Nj{Ej}}}Fb}{{Ejc}{{Nl{Ej}}}Fb}``{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{Nn}}}Nn}{{{b{O`}}}O`}{{{b{c}}{b{de}}}B`{}{}}0``{Bd{{b{c}}}{}}0{Bd{{b{dc}}}{}}0{BdB`}0{{{b{Nn}}{b{dBh}}}Bj}{{{b{O`}}{b{dBh}}}Bj}{cc{}}0{{}Bd}0{ce{}{}}0{{{b{c}}}e{}{}}0{c{{Cl{e}}}{}{}}000{{{b{c}}}Cn{}}033`?>{{{b{Cb}}}Cb}<{{{b{Cb}}{b{Cb}}}Bb}{{}Cb}=<;{{{b{Cb}}{b{Cb}}}Bf}{{{b{Cb}}{b{dBh}}}Bj}:{{{b{Cb}}{b{dc}}}B`Bn}:93{{{b{Cb}}{b{Cb}}}{{Cd{Bb}}}}49887:``{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{{Ob{ce}}}}}{{Ob{ce}}}{nA`}{nAb}}{{{b{c}}{b{de}}}B`{}{}}{Bd{{b{c}}}{}}{Bd{{b{dc}}}{}}{BdB`}{{{b{{Ob{ce}}}}{b{dBh}}}Bj{BlA`}{BlAb}}{cc{}}{{}Bd}``{ce{}{}}````{{{b{c}}}e{}{}}{c{{Cl{e}}}{}{}}0{{{b{c}}}Cn{}}3```````````=========<<<<<<<<<{{{Oh{{Od{c}}{Of{ce}}}}}{{Oj{ce}}}Ol{{On{c}}}}{{}{{Oj{cA@`}}}Ol}{{}A@`}{{}{{Oh{ce}}}KjKj}{{}A@b}{{}{{Od{c}}}{KjOl}}{{}A@d}{Bd{{b{c}}}{}}00000000{Bd{{b{dc}}}{}}00000000{BdB`}00000000{{{b{{Oj{ce}}}}{b{dBh}}}Bj{BlOl}{Bl{On{c}}}}{cc{}}00000000{{{b{A@`}}{b{{Eh{c}}}}}eOl{}}{{{b{A@`}}{b{Eh}}}c{}}{{}Bd}00000000{ce{}{}}00000000{{{b{A@`}}{b{Eh}}{b{{Eh{c}}}}}{}Ol}`{{{b{A@`}}{b{Eh}}{b{c}}}{}{}}{{{b{A@`}}{b{c}}{b{e}}}{}{}{}}{{{b{A@`}}{b{c}}{b{{Eh{e}}}}}{}{}Ol}{{}A@`}{{}{{Oh{A@bA@d}}}}{{{Oh{A@bA@d}}}{{Oh{{Od{c}}A@d}}}Ol}{{{Oh{{Od{c}}e}}g}{{Oh{{Od{c}}{Of{cg}}}}}Ol{}{{On{c}}}}{c{{Cl{e}}}{}{}}00000000000000000{{{b{c}}}Cn{}}00000000:::::::::```{{{b{{On{}{{A@f{c}}{A@h{e}}}}}}{b{{Eh{g}}}}}e{}{}Ol}{{{b{{On{}{{A@f{c}}{A@h{e}}}}}}{b{Eh}}}c{}{}}{{{b{{On{}{{A@f{c}}{A@h{e}}}}}}{b{Eh}}{b{{Eh{g}}}}}{}{}{}Ol}{{{b{{On{}{{A@f{c}}{A@h{e}}}}}}{b{Eh}}{b{e}}}{}{}{}}{{{b{{On{}{{A@f{c}}{A@h{e}}}}}}{b{c}}{b{e}}}{}{}{}}{{{b{{On{}{{A@f{c}}{A@h{e}}}}}}{b{c}}{b{{Eh{g}}}}}{}{}{}Ol}","D":"AMf","p":[[1,"reference"],[0,"mut"],[5,"ChallengeMid",10],[5,"QueryMid",10],[6,"VarMid",10],[5,"Gate",10],[10,"Clone",689],[10,"Field",690],[10,"Variable",251],[5,"ConstraintSystemMid",10],[5,"Preprocessing",10],[5,"CompiledCircuit",10],[6,"Any",10],[5,"ColumnMid",10],[5,"Cell",10],[1,"unit"],[6,"Ordering",691],[1,"usize"],[1,"bool"],[5,"Formatter",692],[8,"Result",692],[10,"Debug",692],[10,"Hasher",693],[1,"str"],[5,"Rotation",494],[6,"Option",694],[1,"u8"],[6,"Expression",251],[5,"String",695],[6,"Result",696],[5,"TypeId",697],[8,"Result",698],[10,"Write",699],[10,"PartialEq",691],[17,"Output"],[10,"Fn",700],[17,"Item"],[10,"Iterator",701],[5,"Argument",290],[10,"ParallelIterator",314,702],[10,"Send",703],[10,"Sync",703],[10,"ParallelSliceMut",314,704],[1,"slice"],[10,"IndexedParallelIterator",314,702],[5,"ExponentialBlocks",705],[5,"UniformBlocks",705],[5,"Chain",706],[10,"IntoParallelIterator",314,702],[5,"Chunks",707],[5,"Cloned",708],[10,"FromParallelIterator",702],[5,"Vec",709],[5,"LinkedList",710],[5,"Copied",711],[10,"Consumer",712],[10,"UnindexedConsumer",712],[5,"Enumerate",713],[5,"Filter",714],[5,"FilterMap",715],[5,"FlatMap",716],[5,"FlatMapIter",717],[10,"IntoIterator",718],[5,"Flatten",719],[5,"FlattenIter",720],[5,"Scope",314,721],[5,"Error",692],[5,"Fold",722],[5,"FoldChunks",723],[5,"FoldChunksWith",724],[5,"FoldWith",722],[5,"Inspect",725],[5,"Interleave",726],[5,"InterleaveShortest",727],[5,"Intersperse",728],[17,"Iter"],[1,"tuple"],[10,"FnOnce",700],[5,"Map",729],[5,"MapInit",730],[5,"MapWith",730],[10,"Ord",691],[5,"PanicFuse",731],[5,"ChunkByMut",732],[5,"ChunksExactMut",733],[5,"ChunksMut",733],[10,"IntoParallelRefIterator",314,702],[10,"IntoParallelRefMutIterator",314,702],[5,"RChunksExactMut",734],[5,"RChunksMut",734],[5,"SplitInclusiveMut",704],[5,"SplitMut",704],[10,"Default",735],[10,"ParallelExtend",702],[6,"Either",736],[5,"Positions",737],[10,"Product",738],[5,"Rev",739],[5,"Skip",740],[5,"SkipAny",741],[5,"SkipAnyWhile",742],[5,"BroadcastContext",743],[5,"StepBy",744],[10,"Sum",738],[5,"Take",745],[5,"TakeAny",746],[5,"TakeAnyWhile",747],[5,"TryFold",748],[10,"Try",749],[10,"TryFoldAndReduce",314],[5,"TryFoldWith",748],[5,"Update",750],[5,"WhileSome",751],[5,"MaxLen",752],[5,"MinLen",752],[10,"ProducerCallback",712],[5,"Zip",753],[5,"ZipEq",754],[5,"AssemblyMid",458],[5,"ArgumentMid",458],[5,"Argument",518],[5,"HasCurve",544],[5,"HasMsmEngine",544],[5,"PlonkEngineConfig",544],[5,"PlonkEngine",544],[10,"CurveAffine",755],[10,"MsmAccel",680],[5,"H2cEngine",544],[5,"NoCurve",544],[5,"NoMsmEngine",544],[17,"CoeffsDescriptor"],[17,"BaseDescriptor"],[8,"ExpressionMid",10],[8,"GateMid",10],[8,"ArgumentMid",290],[8,"ArgumentMid",518],[5,"H2cMsmCoeffsDesc",544],[5,"H2cMsmBaseDesc",544]],"r":[[314,702],[315,702],[316,702],[317,702],[325,702],[326,704],[327,721],[345,756],[383,757],[426,721]],"b":[[123,"impl-Display-for-VarMid"],[124,"impl-Debug-for-VarMid"],[130,"impl-Display-for-ColumnMid"],[131,"impl-Debug-for-ColumnMid"],[277,"impl-Mul-for-Expression%3CF,+V%3E"],[278,"impl-Mul%3CF%3E-for-Expression%3CF,+V%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMYBMgAAAAkAFAAAABcAAAAdAAAAIAAAACIAEwA3ABcAUgAzAJAABACWAAAAmAAJAKwAAQCvAAwAvQAAAL8AAQDCAAAAxAArAPEACgACAQUADAEDABEBAAAUAQAAFgEKACIBAAAkAQgALgECADIBCABJAQAATQEBAFsBAQBfAQAAbgEAAHkBAAC8AQEAwAEAAMQBAADMAQgA1gEIAOEBAQDlAQkA8AEEAPYBBAD8AQEAAAIAAAICBAAIAggAEgICABYCSABoAgoAfAI1AA=="}],\ -["halo2_proofs",{"t":"PPPGCNNCNNNNCNNNENNCCNCNNNNRRRTKKRKTRRTMMMMMNMMMMMMMNNMMHNNMNNMMFFKRKRFFFRFFFNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNOMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNMNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNCNNFFNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNCNNNNNNNNPPPGFPPGPPGPFPPPPPPGNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOGFPPPFFFFFOONNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNHHNONNNNNNNONNNNNNNNOOOOOONOOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFFNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFPPGGKPPPPFPKFPPKRPFPFFGGGGFFPPFKRPFPPPPPPPPPPPRKPFPPFFPPPFPFPPFFPNNNNNNNNNNNNONMNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNMNNMNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONMNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHHHHNNNNOONNNNNNNNNNNNNNNNNONONONONNNNNNNONNNNHMNNMNNMNNNNNNNNMNNNNNNONNNNONNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHHNNNNNNNNNNNNNNNNNNNNNNNNMNNOOFRFKNNNNNNNNNNNCNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNCNCNNNNMNNNNNMNNNNNNNNNNNNFTKRRKRRKKRKRKTTRKNNNMMMNNMNNMMNMNNNMNMNMNNNNMNNNMMMMNMMMMMNNNNMNMCCCCFFINNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNCCCCFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFKRKKKKKNNNNNNNNNNNNNMNNMNNNNNNNNNNNNMNNNNNNNMNMMNNNNNNNNMNMNMNMNNNNNNNNNNNNNNNNNNMNMN","n":["Processed","RawBytes","RawBytesUnchecked","SerdeFormat","arithmetic","borrow","borrow_mut","circuit","clone","clone_into","deref","deref_mut","dev","drop","fmt","from","halo2curves","init","into","plonk","poly","to_owned","transcript","try_from","try_into","type_id","vzip","AffineExt","Base","Base","CURVE_ID","CurveAffine","CurveExt","CurveExt","Field","ONE","ScalarExt","ScalarExt","ZERO","a","a","b","b","coordinates","cube","double","endo","from_xy","hash_to_curve","invert","is_on_curve","is_on_curve","is_zero","is_zero_vartime","jacobian_coordinates","new_jacobian","parallelize","pow","pow_vartime","random","sqrt","sqrt_alt","sqrt_ratio","square","AssignedCell","Cell","Chip","Config","Layouter","Loaded","NamespacedLayouter","Region","RegionIndex","Root","SimpleFloorPlanner","Table","Value","add","add","add","add","add","add","add","add","add","add","and_then","as_mut","as_ref","assert_if_known","assign","assign_advice","assign_advice_from_constant","assign_advice_from_instance","assign_cell","assign_fixed","assign_region","assign_region","assign_table","assign_table","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cell","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cloned","cloned","column","config","constrain_constant","constrain_equal","constrain_instance","constrain_instance","copied","copied","copy_advice","cube","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable_selector","error_if_known_and","evaluate","evaluate","floor_planner","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","get_challenge","get_challenge","get_root","get_root","init","init","init","init","init","init","init","init","instance_value","into","into","into","into","into","into","into","into","into_field","invert","known","loaded","map","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","name_column","namespace","neg","pop_namespace","pop_namespace","push_namespace","push_namespace","region_index","row_offset","square","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","synthesize","to_field","to_owned","to_owned","to_owned","to_owned","transpose_array","transpose_vec","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unknown","unzip","value","value_field","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","zip","V1","V1Pass","assign_region","assign_table","borrow","borrow","borrow_mut","borrow_mut","constrain_instance","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","get_challenge","get_root","init","init","into","into","pop_namespace","push_namespace","single_pass","synthesize","try_from","try_from","try_into","try_into","type_id","type_id","v1","vzip","vzip","SimpleFloorPlanner","SingleChipLayouter","assign_region","assign_table","borrow","borrow_mut","constrain_instance","deref","deref_mut","drop","fmt","from","get_challenge","get_root","init","into","new","pop_namespace","push_namespace","try_from","try_into","type_id","vzip","AssignmentPass","MeasurementPass","V1","V1Pass","borrow","borrow","borrow_mut","borrow_mut","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","strategy","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Assigned","Assigned","CellNotAssigned","CellValue","CircuitLayout","ConstraintNotSatisfied","ConstraintPoisoned","FailureLocation","InRegion","InstanceCellNotAssigned","InstanceValue","Lookup","MockProver","OutsideRegion","Padding","Permutation","Poison","Shuffle","Unassigned","VerifyFailure","advice","advice_mut","advice_values","annotate_column","assert_satisfied","assert_satisfied_at_rows","assign_advice","assign_fixed","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","circuit_dot_graph","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","copy","cost_model","cs","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","emit","enable_selector","enter_region","eq","eq","eq","eq","exit_region","fill_from_row","fixed","fixed_values","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","get_challenge","init","init","init","init","init","init","instance","instance_mut","into","into","into","into","into","into","mark_equality_cells","metadata","pop_namespace","push_namespace","query_instance","render","run","selectors","show_equality_constraints","show_labels","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","usable_rows","value","verify","verify_at_rows","view_height","view_width","vzip","vzip","vzip","vzip","vzip","vzip","offset","region","row","cell_values","column","column","column","constraint","constraint","gate","gate","gate_offset","gate_offset","location","location","location","location","lookup_index","name","name","offset","region","region","row","shuffle_index","CommitmentScheme","CostOptions","IPA","KZGGWC","KZGSHPLONK","Lookup","ModelCircuit","Permutation","Poly","Shuffle","advice","advice_columns","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","column_queries","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","eq","eq","fixed","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_circuit_to_cost_model_options","from_circuit_to_model_circuit","from_str","gate_degree","init","init","init","init","init","init","init","instance","into","into","into","into","into","into","into","into_model_circuit","k","k","lookup","lookups","max_deg","max_degree","partial_cmp","permutation","permutations","point_sets","rotations","serialize","serialize","shuffle","shuffles","size","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Column","Constraint","Gate","Region","VirtualCell","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","column_type","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","index","init","init","init","init","init","into","into","into","into","into","new","partial_cmp","partial_cmp","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","Advice","Advice","Advice","Any","Assigned","Assignment","AssignmentError","Backend","BoundsFailure","BoundsFailure","Challenge","Challenge","Circuit","Column","ColumnNotInPermutation","ColumnNotInPermutation","ColumnType","Config","Constant","ConstraintSystem","ConstraintSystemFailure","ConstraintSystemMid","Constraints","Error","ErrorBack","ErrorFront","Expression","FirstPhase","Fixed","Fixed","Fixed","FixedQuery","FloorPlanner","FloorPlanner","Frontend","Instance","Instance","Instance","InstanceTooLarge","InvalidInstances","Negated","NotEnoughColumnsForConstants","NotEnoughRowsAvailable","NotEnoughRowsAvailable","Opening","Other","Other","Params","Phase","Product","ProvingKey","Rational","Scaled","SecondPhase","Selector","Selector","Sum","Synthesis","TableColumn","TableError","ThirdPhase","Transcript","Trivial","VerifyingKey","VirtualCells","Zero","add","add","add","add","add","add","add","add_assign","add_assign","advice_column","advice_column_in","advice_column_phase","advice_column_phase","advice_queries","annotate_column","annotate_column","annotate_lookup_any_column","annotate_lookup_column","assign_advice","assign_fixed","blinding_factors","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge_phase","challenge_phase","challenge_usable_after","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","column_index","column_index","column_type","column_type","complex_selector","complexity","compress_selectors","configure","configure_with_params","constants","copy","create_gate","create_proof","create_proof_with_engine","cube","cur","default","degree","degree","denominator","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","directly_convert_selectors_to_fixed","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable","enable_constant","enable_equality","enable_selector","enter_region","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","evaluate","evaluate","evaluate_lazy","exit_region","expr","expr","fill_from_row","fixed_column","fixed_commitments","fixed_queries","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bytes","from_bytes","gates","gates","general_column_annotations","general_column_annotations","get_any_query_index","get_challenge","get_domain","get_vk","hash","hash","hash","hash","hash","hash","hash","hash","hash_into","identifier","index","index","index","index","index","index","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","inner","instance_column","instance_queries","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","invert","is_simple","is_zero_vartime","keygen_pk","keygen_pk_custom","keygen_vk","keygen_vk_custom","lookup","lookup_any","lookup_table_column","lookups","lookups","minimum_degree","minimum_rows","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","neg","neg","neg","new","next","not_enough_rows_available","not_enough_rows_available","num_advice_columns","num_advice_columns","num_challenges","num_challenges","num_fixed_columns","num_fixed_columns","num_instance_columns","num_instance_columns","num_selectors","numerator","params","partial_cmp","partial_cmp","partial_cmp","permutation","permutation","phase","phases","phases","pinned","pk_read","pop_namespace","prev","product","push_namespace","query_advice","query_any","query_cell","query_cell","query_cell","query_cell","query_cell","query_cell","query_cells","query_challenge","query_fixed","query_instance","query_instance","query_selector","read","read","rot","rotation","rotation","selector","set_minimum_degree","shuffle","shuffles","shuffles","source","square","square","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sum","synthesize","synthesize","to_bytes","to_bytes","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_sealed","to_sealed","to_sealed","to_string","to_string","to_string","transcript_repr","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unblinded_advice_column","unblinded_advice_column_in","unblinded_advice_columns","verify_proof","vk_read","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","with_selector","without_witnesses","write","write","current_k","current_k","EvaluationDomain","Output","Rotation","VerificationStrategy","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","coeff_from_vec","coeff_to_extended","commitment","constant_extended","constant_lagrange","cur","deref","deref","deref_mut","deref_mut","divide_by_vanishing_poly","drop","drop","empty_coeff","empty_extended","empty_lagrange","eq","extended_k","extended_len","extended_to_coeff","finalize","fmt","fmt","from","from","get_extended_omega","get_omega","get_omega_inv","get_quotient_poly_degree","hash","init","init","into","into","ipa","k","kzg","l_i_range","lagrange_extended","lagrange_from_vec","lagrange_to_coeff","new","new","next","partial_cmp","pinned","prev","process","rotate_extended","rotate_omega","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Blind","COMMIT_INSTANCE","CommitmentScheme","Curve","Guard","MSM","MSM","MSMAccumulator","Params","ParamsProver","ParamsProver","ParamsVerifier","ParamsVerifier","Prover","QUERY_INSTANCE","QUERY_INSTANCE","Scalar","Verifier","add","add_assign","add_assign","add_msm","append_term","bases","borrow","borrow_mut","check","clone","clone_into","commit","commit_lagrange","create_proof","create_proof_with_engine","default","deref","deref_mut","downsize","drop","empty_msm","eq","eval","fmt","from","init","into","k","mul","mul_assign","mul_assign","n","new","new","new","new","new_params","read","read_params","scalars","scale","to_owned","try_from","try_into","type_id","verify_proof","vzip","write","commitment","msm","multiopen","strategy","IPACommitmentScheme","ParamsIPA","ParamsVerifierIPA","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","commit","commit_lagrange","create_proof_with_engine","deref","deref","deref_mut","deref_mut","downsize","drop","drop","empty_msm","fmt","fmt","from","from","init","init","into","into","k","n","new","new_params","read","read_params","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","write","MSMIPA","add_constant_term","add_msm","add_msm","add_to_g_scalars","add_to_u_scalar","add_to_w_scalar","append_term","bases","borrow","borrow_mut","check","clone","clone_into","deref","deref_mut","drop","eval","fmt","from","init","into","new","scalars","scale","to_owned","try_from","try_into","type_id","vzip","ProverIPA","VerifierIPA","borrow","borrow","borrow_mut","borrow_mut","create_proof_with_engine","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","new","new","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","Accumulator","AccumulatorStrategy","GuardIPA","SingleStrategy","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","compute_g","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","finalize","finalize","fmt","fmt","fmt","fmt","from","from","from","from","g","init","init","init","init","into","into","into","into","new","new","process","process","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","u_packed","use_challenges","use_g","vzip","vzip","vzip","vzip","commitment","msm","multiopen","strategy","KZGCommitmentScheme","ParamsKZG","ParamsVerifierKZG","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","commit","commit_lagrange","commit_lagrange","deref","deref","deref","deref_mut","deref_mut","deref_mut","downsize","downsize","drop","drop","drop","empty_msm","empty_msm","fmt","fmt","fmt","from","from","from","from_parts","init","init","init","into","into","into","k","k","n","n","new","new_params","read","read","read_custom","read_custom","read_params","setup","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","verifier_params","vzip","vzip","vzip","write","write","write_custom","write_custom","DualMSM","MSMKZG","add_msm","add_msm","append_term","bases","borrow","borrow","borrow_mut","borrow_mut","check","check","clone","clone","clone_into","clone_into","combine_with_base","default","default","deref","deref","deref_mut","deref_mut","drop","drop","eval","fmt","fmt","from","from","init","init","into","into","new","new","scalars","scale","scale","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","ProverGWC","ProverSHPLONK","VerifierGWC","VerifierSHPLONK","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","create_proof_with_engine","create_proof_with_engine","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","fmt","fmt","fmt","fmt","from","from","from","from","init","init","init","init","into","into","into","into","new","new","new","new","new","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verify_proof","verify_proof","vzip","vzip","vzip","vzip","AccumulatorStrategy","GuardKZG","SingleStrategy","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","finalize","finalize","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","new","new","new","new","process","process","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","with","Blake2bRead","Blake2bWrite","Challenge255","EncodedChallenge","Input","Transcript","TranscriptRead","TranscriptReadBuffer","TranscriptWrite","TranscriptWriterBuffer","as_challenge_scalar","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","common_point","common_point","common_point","common_scalar","common_scalar","common_scalar","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","finalize","finalize","fmt","fmt","fmt","from","from","from","get_scalar","get_scalar","init","init","init","init","init","init","init","into","into","into","new","new","read_point","read_point","read_scalar","read_scalar","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge_scalar","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","write_point","write_point","write_scalar","write_scalar"],"q":[[0,"halo2_proofs"],[27,"halo2_proofs::arithmetic"],[64,"halo2_proofs::circuit"],[293,"halo2_proofs::circuit::floor_planner"],[331,"halo2_proofs::circuit::floor_planner::single_pass"],[354,"halo2_proofs::circuit::floor_planner::v1"],[385,"halo2_proofs::dev"],[542,"halo2_proofs::dev::FailureLocation"],[545,"halo2_proofs::dev::VerifyFailure"],[567,"halo2_proofs::dev::cost_model"],[711,"halo2_proofs::dev::metadata"],[829,"halo2_proofs::plonk"],[1477,"halo2_proofs::plonk::ErrorBack"],[1478,"halo2_proofs::plonk::ErrorFront"],[1479,"halo2_proofs::poly"],[1552,"halo2_proofs::poly::commitment"],[1618,"halo2_proofs::poly::ipa"],[1622,"halo2_proofs::poly::ipa::commitment"],[1667,"halo2_proofs::poly::ipa::msm"],[1697,"halo2_proofs::poly::ipa::multiopen"],[1729,"halo2_proofs::poly::ipa::strategy"],[1802,"halo2_proofs::poly::kzg"],[1806,"halo2_proofs::poly::kzg::commitment"],[1879,"halo2_proofs::poly::kzg::msm"],[1928,"halo2_proofs::poly::kzg::multiopen"],[1993,"halo2_proofs::poly::kzg::strategy"],[2053,"halo2_proofs::transcript"],[2141,"halo2_backend::helpers"],[2142,"core::fmt"],[2143,"core::result"],[2144,"core::any"],[2145,"pasta_curves::arithmetic::curves"],[2146,"subtle"],[2147,"ff"],[2148,"core::cmp"],[2149,"core::ops::arith"],[2150,"core::ops::function"],[2151,"alloc::boxed"],[2152,"core::marker"],[2153,"core::clone"],[2154,"core::convert"],[2155,"rand_core"],[2156,"halo2_frontend::plonk::assigned"],[2157,"halo2_frontend::circuit::value"],[2158,"halo2_frontend::circuit"],[2159,"halo2_frontend::plonk::circuit"],[2160,"halo2_frontend::plonk::circuit::expression"],[2161,"alloc::string"],[2162,"core::borrow"],[2163,"halo2_frontend::circuit::floor_planner::single_pass"],[2164,"halo2_frontend::circuit::layouter"],[2165,"halo2_frontend::circuit::table_layouter"],[2166,"core::iter::traits::collect"],[2167,"halo2_middleware::circuit"],[2168,"core::option"],[2169,"alloc::vec"],[2170,"halo2_frontend::circuit::floor_planner::v1"],[2171,"halo2_frontend::dev"],[2172,"core::iter::traits::iterator"],[2173,"halo2_frontend::dev::failure"],[2174,"halo2_frontend::plonk::circuit::constraint_system"],[2175,"halo2_frontend::dev::graph::layout"],[2176,"plotters::coord"],[2177,"plotters::drawing::area"],[2178,"plotters_backend"],[2179,"core::ops::range"],[2180,"halo2_frontend::dev::cost_model"],[2181,"serde::de"],[2182,"serde::ser"],[2183,"halo2_frontend::dev::metadata"],[2184,"std::collections::hash::map"],[2185,"core::hash"],[2186,"halo2_middleware::poly"],[2187,"halo2_backend::plonk"],[2188,"halo2_proofs::plonk::error"],[2189,"halo2_backend::transcript"],[2190,"halo2_middleware::zal::impls"],[2191,"halo2_middleware::zal::traits"],[2192,"std::io::error"],[2193,"halo2_backend::plonk::circuit"],[2194,"halo2_backend::poly::domain"],[2195,"halo2_backend::poly::commitment"],[2196,"halo2_frontend::plonk::lookup"],[2197,"core::default"],[2198,"halo2_frontend::plonk::permutation"],[2199,"halo2_frontend::plonk::circuit::expression::sealed"],[2200,"std::io"],[2201,"halo2_frontend::plonk::shuffle"],[2202,"core::error"],[2203,"halo2_backend::poly::strategy"],[2204,"halo2_backend::poly"],[2205,"halo2_backend::poly::query"],[2206,"halo2_backend::poly::ipa::commitment"],[2207,"halo2_backend::poly::ipa::msm"],[2208,"halo2_backend::poly::ipa::strategy"],[2209,"halo2_backend::poly::ipa::multiopen::prover"],[2210,"halo2_backend::poly::ipa::multiopen::verifier"],[2211,"halo2_backend::poly::kzg::commitment"],[2212,"pairing"],[2213,"halo2_backend::poly::kzg::msm"],[2214,"halo2_backend::poly::kzg::multiopen::gwc::prover"],[2215,"halo2_backend::poly::kzg::multiopen::shplonk::prover"],[2216,"halo2_backend::poly::kzg::multiopen::gwc::verifier"],[2217,"halo2_backend::poly::kzg::multiopen::shplonk::verifier"],[2218,"halo2_backend::poly::kzg::strategy"],[2219,"halo2_backend::arithmetic"],[2220,"halo2_frontend::circuit::floor_planner"],[2221,"halo2_frontend::dev::graph"],[2222,"halo2_proofs::plonk::prover"],[2223,"halo2_proofs::plonk::keygen"],[2224,"halo2_backend::plonk::verifier"],[2225,"halo2_backend::poly::ipa"],[2226,"halo2_backend::poly::ipa::commitment::prover"],[2227,"halo2_backend::poly::ipa::commitment::verifier"],[2228,"halo2_backend::poly::kzg"]],"i":[3,3,3,0,0,3,3,0,3,3,3,3,0,3,3,3,0,3,3,0,0,3,0,3,3,3,3,19,19,13,19,0,0,13,0,20,19,13,20,19,13,19,13,13,20,20,19,13,19,20,19,13,20,20,19,19,0,20,20,20,20,20,20,20,0,0,0,59,0,59,0,0,0,53,0,0,0,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,41,41,41,49,41,53,54,53,54,64,37,56,55,44,41,49,54,64,37,56,55,44,41,49,54,44,37,56,55,44,37,56,55,44,37,37,55,59,41,41,53,54,37,37,44,37,37,64,37,56,56,55,44,41,49,54,64,37,56,55,44,41,49,54,37,64,37,56,55,44,41,49,54,54,41,37,37,44,0,64,37,56,55,44,41,49,54,64,37,37,56,56,55,44,41,41,49,49,54,37,53,54,53,54,64,37,56,55,44,41,49,54,41,64,37,56,55,44,41,49,54,37,37,37,59,37,37,37,37,37,37,37,37,37,37,37,41,53,37,53,54,53,54,55,55,37,37,37,37,37,37,37,37,37,37,37,64,37,37,56,55,44,37,37,64,37,56,55,44,41,49,54,64,37,56,55,44,41,49,54,64,37,56,55,44,41,49,54,37,37,44,44,64,37,56,55,44,41,49,54,37,0,0,80,80,81,80,81,80,80,81,80,81,80,81,80,81,80,81,80,80,80,81,80,81,80,80,80,0,81,81,80,81,80,81,80,0,81,80,0,0,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,0,0,0,0,83,84,83,84,83,84,83,84,83,84,83,84,83,84,83,84,83,84,0,83,84,83,84,83,84,83,84,86,91,90,0,0,90,90,0,89,90,0,90,0,89,91,90,86,90,86,0,85,85,85,85,85,85,85,85,89,90,93,86,85,91,89,90,93,86,85,91,0,89,90,86,91,89,90,86,91,85,0,85,93,89,90,93,86,85,91,89,90,93,86,85,91,89,90,93,86,85,91,90,85,85,89,90,86,91,85,85,85,85,89,89,90,90,93,86,85,91,89,90,93,86,85,91,85,89,90,93,86,85,91,85,85,89,90,93,86,85,91,93,0,85,85,85,93,85,85,93,93,89,90,86,91,89,90,89,90,93,86,85,91,89,90,93,86,85,91,89,90,93,86,85,91,85,91,85,85,93,93,89,90,93,86,85,91,217,217,218,219,220,221,222,219,223,220,221,220,221,219,224,225,222,224,224,225,220,220,221,221,225,0,0,108,108,108,0,0,0,0,0,109,107,108,109,101,102,103,104,107,108,109,101,102,103,104,107,101,102,103,104,101,102,103,104,101,107,108,109,101,102,103,104,107,108,109,101,102,103,104,107,103,107,108,109,101,102,103,104,107,108,101,109,108,109,101,102,103,104,107,108,109,101,102,103,104,107,0,0,101,109,108,109,101,102,103,104,107,109,108,109,101,102,103,104,107,109,109,107,109,107,107,109,101,109,107,107,101,103,107,109,107,107,101,102,103,104,108,109,101,102,103,104,107,108,109,101,102,103,104,107,108,109,101,102,103,104,107,108,109,101,102,103,104,107,0,0,0,0,0,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,111,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,111,112,112,113,113,114,114,115,115,111,111,112,112,112,112,113,113,114,114,115,115,115,115,115,111,111,111,112,113,114,115,111,112,113,114,115,111,111,112,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,0,71,120,0,0,0,40,131,139,40,0,120,0,0,139,40,0,78,120,0,139,0,0,0,0,0,0,0,0,71,120,0,0,78,131,0,71,120,139,139,120,40,139,40,139,139,40,78,0,120,0,36,120,0,0,120,120,40,0,40,0,139,36,0,0,36,36,36,36,36,36,36,120,36,36,92,92,92,124,92,76,92,92,92,76,76,92,131,124,71,139,125,126,36,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,131,124,71,139,125,126,36,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,92,124,92,124,71,125,126,36,92,43,63,128,50,70,120,42,51,48,124,71,125,126,36,92,43,63,128,50,70,120,42,51,48,71,43,50,128,128,43,43,92,120,92,78,78,92,76,92,0,0,36,43,92,92,120,36,131,124,71,139,125,126,36,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,131,124,71,139,125,126,36,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,92,36,131,124,71,139,125,126,36,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,63,92,92,76,76,71,36,43,63,128,50,70,120,42,51,48,36,120,120,76,63,70,76,92,125,92,131,131,124,71,139,139,125,126,36,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,40,131,131,131,124,124,71,71,71,71,139,139,125,126,36,36,36,36,36,140,92,130,43,43,43,43,43,141,142,143,63,128,50,70,70,120,42,51,48,40,125,126,92,124,92,124,92,76,125,126,71,43,63,50,70,42,51,48,125,120,43,63,70,43,128,70,131,124,71,139,125,126,36,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,50,92,92,131,124,71,139,125,126,36,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,140,36,63,36,0,0,0,0,92,92,92,92,124,124,92,36,36,36,36,120,120,36,36,36,36,120,43,43,139,40,92,124,92,124,92,124,92,124,92,36,78,71,43,50,92,124,70,124,92,125,0,76,43,120,76,130,130,127,71,43,42,51,48,120,130,130,76,130,130,125,126,43,128,128,92,92,92,92,124,139,36,120,36,36,36,36,36,36,120,36,36,120,156,78,125,126,124,71,125,126,36,92,43,63,128,50,70,120,42,51,48,141,142,143,131,139,40,125,131,124,71,139,125,126,36,140,92,130,43,43,43,43,141,142,143,63,128,50,70,120,42,51,48,40,131,124,71,139,125,126,36,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,131,124,71,139,125,126,36,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,92,92,124,0,0,131,124,71,139,125,126,36,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,140,78,125,126,226,227,0,167,0,0,123,149,123,149,123,149,123,149,123,149,149,0,149,149,123,123,149,123,149,149,123,149,149,149,149,123,149,149,149,167,123,149,123,149,149,149,149,149,123,123,149,123,149,0,149,0,149,149,149,149,167,149,123,123,149,123,167,149,149,123,149,123,149,123,149,123,149,123,149,0,181,0,165,166,0,181,166,0,0,165,0,165,0,178,166,165,0,175,175,175,176,176,176,175,175,176,175,175,177,152,178,178,175,175,175,152,175,181,175,176,175,175,175,175,152,175,175,175,152,177,178,166,175,165,152,165,176,176,175,175,175,175,166,175,152,0,0,0,0,0,0,0,187,189,187,189,187,187,187,187,0,187,189,187,189,187,187,189,187,187,189,187,189,187,189,187,189,187,187,187,189,187,189,187,187,189,187,189,187,189,0,187,189,187,0,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,0,0,191,192,191,192,191,191,192,191,192,191,192,191,192,191,192,191,192,191,192,191,192,191,192,191,192,191,192,192,191,192,0,0,0,0,190,193,194,195,190,193,194,195,190,193,190,193,190,190,193,194,195,190,193,194,195,190,193,194,195,194,195,190,193,194,195,190,193,194,195,193,190,193,194,195,190,193,194,195,194,195,194,195,190,193,190,193,194,195,190,193,194,195,190,193,194,195,193,190,190,190,193,194,195,0,0,0,0,0,0,0,196,198,200,196,198,200,196,198,196,198,196,196,198,196,198,200,196,198,200,196,198,196,198,200,196,198,196,198,200,196,198,200,196,196,198,200,196,198,200,196,198,196,198,196,200,196,198,196,198,200,196,196,198,196,198,200,196,198,200,196,198,200,196,196,198,200,196,198,196,198,0,0,199,201,199,199,199,201,199,201,199,201,199,201,199,201,199,199,201,199,201,199,201,199,201,199,199,201,199,201,199,201,199,201,199,201,199,199,201,199,201,199,201,199,201,199,201,199,201,0,0,0,0,203,205,204,206,203,205,204,206,203,204,203,205,204,206,203,205,204,206,203,205,204,206,203,205,204,206,203,205,204,206,203,205,204,206,203,205,204,206,203,205,204,204,206,203,205,204,206,203,205,204,206,203,205,204,206,205,206,203,205,204,206,0,0,0,207,208,209,207,208,209,207,208,209,207,208,209,207,208,209,207,208,209,207,208,209,208,209,207,208,209,207,208,209,207,208,209,207,208,209,208,208,209,209,208,209,207,208,209,207,208,209,207,208,209,207,208,209,207,208,209,208,0,0,0,0,132,0,0,0,0,0,132,212,213,214,212,213,214,212,213,214,212,213,214,151,212,213,151,212,213,212,213,214,214,212,213,214,212,213,214,215,213,212,213,214,212,213,214,132,214,216,215,212,212,213,213,214,212,213,214,132,214,168,212,168,212,151,212,213,151,212,213,214,212,213,214,212,213,214,212,213,214,212,213,214,133,213,133,213],"f":"`````{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}`{{{b{f}}}f}{{{b{c}}{b{de}}}h{}{}}{j{{b{c}}}{}}{j{{b{dc}}}{}}`{jh}{{{b{f}}{b{dl}}}{{A`{hn}}}}{cc{}}`{{}j}{ce{}{}}``{{{b{c}}}e{}{}}`{c{{A`{e}}}{}{}}0{{{b{c}}}Ab{}}3````````````{{}c{}}000{{{b{{Aj{}{{Ad{c}}{Af{e}}{Ah{g}}}}}}}{{An{{Al{{Aj{}{{Ad{c}}{Af{e}}{Ah{g}}}}}}}}}{B`Bb}{B`Bb}{{Bf{}{{Bd{}}{Ad{}}}}}}{{{b{Bh}}}Bh}0{{{b{{Bf{}{{Ad{c}}{Af{e}}{Bd{g}}}}}}}{{Bf{}{{Ad{c}}{Af{e}}{Bd{g}}}}}B`B`{{Aj{}{{Ah{}}{Ad{}}{Bj{}}{Bj{}}}}{Bl{c}}{Bl{c}}}}{{cc}{{An{{Aj{}{{Ad{e}}{Af{c}}{Ah{g}}}}}}}{B`Bb}{B`Bb}{{Bf{}{{Bd{}}{Ad{}}}}}}{{{b{Bn}}}{{Cb{C`}}}}{{{b{Bh}}}{{An{Bh}}}}{{{b{{Bf{}{{Ad{c}}{Af{e}}{Bd{g}}}}}}}CdB`B`{{Aj{}{{Ah{}}{Ad{}}{Bj{}}{Bj{}}}}{Bl{c}}{Bl{c}}}}{{{b{{Aj{}{{Ad{c}}{Af{e}}{Ah{g}}}}}}}Cd{B`Bb}{B`Bb}{{Bf{}{{Bd{}}{Ad{}}}}}}{{{b{Bh}}}Cd}{{{b{Bh}}}Cf}{{{b{{Bf{}{{Ad{c}}{Af{e}}{Bd{g}}}}}}}{{Ch{eee}}}B`B`{{Aj{}{{Ah{}}{Ad{}}{Bj{}}{Bj{}}}}{Bl{c}}{Bl{c}}}}{{ccc}{{An{{Bf{}{{Ad{e}}{Af{c}}{Bd{g}}}}}}}B`B`{{Aj{}{{Ah{}}{Ad{}}{Bj{}}{Bj{}}}}{Bl{e}}{Bl{e}}}}{{{b{d{Cj{c}}}}e}hCl{{C`{{b{d{Cj{c}}}}j}}ClCnD`}}{{{b{Bh}}c}Bh{{Dd{{Cj{Db}}}}}}0{cBhDf}9{{{b{Bh}}}{{Ch{CdBh}}}}{{{b{Bh}}{b{Bh}}}{{Ch{CdBh}}}}?`````````````{{{Dj{{Dh{c}}}}c}{}Bh}{{{Dj{{Dh{c}}}}{Dj{c}}}{}Bh}{{{Dj{{b{c}}}}{Dj{c}}}{}{}}{{{Dj{c}}{b{{Dj{c}}}}}{}{{Dl{b}{{Bj{}}}}}{}}{{{Dj{{b{{Dh{c}}}}}}c}{}Bh}{{{Dj{{b{{Dh{c}}}}}}{Dj{c}}}{}Bh}{{{Dj{c}}{Dj{{b{c}}}}}{}{{Dl{b}{{Bj{}}}}}{}}{{{b{{Dj{c}}}}{Dj{c}}}{}{}}{{{Dj{e}}{Dj{e}}}{}{}{{Dl{}{{Bj{c}}}}}}{{{b{{Dj{c}}}}{b{{Dj{c}}}}}{}{}}{{{Dj{c}}g}{{Dj{e}}}{}{}{{Dn{c}{{Bj{{Dj{e}}}}}}}}{{{b{d{Dj{c}}}}}{{Dj{{b{dc}}}}}{}}{{{b{{Dj{c}}}}}{{Dj{{b{c}}}}}{}}{{{b{{Dj{c}}}}e}h{}{{Dn{{b{c}}}{{Bj{Cf}}}}}}{{{Dj{c}}}{{A`{cE`}}}{}}{{{b{d{Eb{c}}}}g{Ef{Ed}}jk}{{A`{{Eh{ic}}E`}}}Bh{{El{Ej}}}{{C`{}{{Bj{e}}}}}{}{{En{}{{Bj{{Dj{i}}}}}}}}{{{b{d{Eb{c}}}}g{Ef{Ed}}ji}{{A`{{Eh{ic}}E`}}}Bh{{El{Ej}}}{{C`{}{{Bj{e}}}}}{}}{{{b{d{Eb{c}}}}g{Ef{F`}}j{Ef{Ed}}j}{{A`{{Eh{cc}}E`}}}Bh{{El{Ej}}}{{C`{}{{Bj{e}}}}}}{{{b{d{Fb{c}}}}gFdjk}{{A`{hE`}}}Bh{{El{Ej}}}{{C`{}{{Bj{e}}}}}{{El{{Dh{c}}}}}{{En{}{{Bj{{Dj{i}}}}}}}}{{{b{d{Eb{c}}}}g{Ef{Ff}}jk}{{A`{{Eh{ic}}E`}}}Bh{{El{Ej}}}{{C`{}{{Bj{e}}}}}{}{{En{}{{Bj{{Dj{i}}}}}}}}{{{b{d{Fj{}{{Fh{c}}}}}}im}{{A`{kE`}}}{{Fj{e}}}Bh{{El{Ej}}}{{C`{}{{Bj{g}}}}}{}{{En{{Eb{e}}}{{Bj{{A`{kE`}}}}}}}}{{{b{d{Fl{ce}}}}im}{{A`{kE`}}}Bh{{Fj{c}}}{{El{Ej}}}{{C`{}{{Bj{g}}}}}{}{{En{{Eb{c}}}{{Bj{{A`{kE`}}}}}}}}{{{b{d{Fj{}{{Fh{c}}}}}}ik}{{A`{hE`}}}{{Fj{e}}}Bh{{El{Ej}}}{{C`{}{{Bj{g}}}}}{{En{{Fb{e}}}{{Bj{{A`{hE`}}}}}}}}{{{b{d{Fl{ce}}}}ik}{{A`{hE`}}}Bh{{Fj{c}}}{{El{Ej}}}{{C`{}{{Bj{g}}}}}{{En{{Fb{c}}}{{Bj{{A`{hE`}}}}}}}}{{{b{c}}}{{b{e}}}{}{}}0000000{{{b{dc}}}{{b{de}}}{}{}}0000000{{{b{{Eh{ce}}}}}Fn{}Bh}{{{b{{Dj{c}}}}}{{Dj{c}}}D`}{{{b{G`}}}G`}{{{b{Fn}}}Fn}{{{b{{Eh{ce}}}}}{{Eh{ce}}}D`{D`Bh}}{{{b{c}}{b{de}}}h{}{}}000{{{Dj{{b{c}}}}}{{Dj{c}}}D`}{{{Dj{{b{dc}}}}}{{Dj{c}}}D`}`{{{b{{Gf{}{{Gb{c}}{Gd{e}}}}}}}{{b{c}}}{GhD`}{GhD`}}{{{b{d{Eb{c}}}}Fne}{{A`{hE`}}}Bh{{El{{Dh{c}}}}}}{{{b{d{Eb{c}}}}FnFn}{{A`{hE`}}}Bh}{{{b{d{Fj{}{{Fh{c}}}}}}Fn{Ef{F`}}j}{{A`{hE`}}}{{Fj{e}}}Bh}{{{b{d{Fl{ce}}}}Fn{Ef{F`}}j}{{A`{hE`}}}Bh{{Fj{c}}}}{{{Dj{{b{c}}}}}{{Dj{c}}}Gj}{{{Dj{{b{dc}}}}}{{Dj{c}}}Gj}{{{b{{Eh{ce}}}}i{b{d{Eb{e}}}}{Ef{Ed}}j}{{A`{{Eh{ce}}E`}}}D`Bh{{El{Ej}}}{{C`{}{{Bj{g}}}}}}{{{b{{Dj{e}}}}}{{Dj{{Dh{c}}}}}Bh{{Gl{{Dh{c}}}}}}{{}{{Dj{c}}}{}}{j{{b{c}}}{}}00{{{b{G`}}}b}11111{j{{b{dc}}}{}}00000004{jh}0000000{{{b{d{Fl{ce}}}}}hBh{{Fj{c}}}}{{{b{d{Eb{c}}}}g{b{Gn}}j}{{A`{hE`}}}Bh{{El{Ej}}}{{C`{}{{Bj{e}}}}}}{{{b{{Dj{c}}}}e}{{A`{hE`}}}{}{{Dn{{b{c}}}{{Bj{Cf}}}}}}{{{Dj{{Dh{c}}}}}{{Dj{c}}}Bh}{{{Eh{{Dh{c}}c}}}{{Eh{cc}}}Bh}`{{{b{H`}}{b{dl}}}{{A`{hn}}}}{{{b{{Dj{c}}}}{b{dl}}}{{A`{hn}}}Gh}{{{b{G`}}{b{dl}}}{{A`{hn}}}}{{{b{Fn}}{b{dl}}}{{A`{hn}}}}{{{b{{Eh{ce}}}}{b{dl}}}{{A`{hn}}}Gh{GhBh}}{{{b{{Eb{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{{Fb{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{{Fl{ce}}}}{b{dl}}}{{A`{hn}}}{GhBh}{Gh{Fj{c}}}}{cc{}}0{{{Dj{c}}}{{Dj{{Dh{c}}}}}Bh}1{jG`}22{{{b{dHb}}}{{Eb{c}}}Bh}3{{{b{dHd}}}{{Fb{c}}}Bh}44{e{{Dj{g}}}{}{{Hh{}{{Hf{{Dj{c}}}}}}}{{Hj{c}}}}{{{b{{Fj{}{{Fh{c}}}}}}Hl}{{Dj{e}}}{{Fj{e}}}Bh}{{{b{{Fl{ce}}}}Hl}{{Dj{c}}}Bh{{Fj{c}}}}{{{b{d{Fj{}{{Fh{c}}}}}}}{{b{dc}}}{{Fj{e}}}Bh}{{{b{d{Fl{ce}}}}}{{b{d}}}Bh{{Fj{c}}}}{{}j}0000000{{{b{d{Eb{c}}}}{Ef{F`}}j}{{A`{{Dj{c}}E`}}}Bh}{ce{}{}}0000000{{{Dj{e}}}{{Dj{{Dh{c}}}}}Bh{{El{{Dh{c}}}}}}{{{b{{Dj{e}}}}}{{Dj{{Dh{c}}}}}Bh{{Gl{{Dh{c}}}}}}{c{{Dj{c}}}{}}{{{b{{Gf{}{{Gb{c}}{Gd{e}}}}}}}{{b{e}}}{GhD`}{GhD`}}{{{Dj{c}}g}{{Dj{e}}}{}{}{{Dn{c}{{Bj{e}}}}}}{{{Dj{{Dh{c}}}}{Dj{c}}}{}Bh}{{{Dj{{b{c}}}}{Dj{c}}}{}{}}{{{Dj{{b{{Dh{c}}}}}}c}{}Bh}{{{Dj{{Dh{c}}}}c}{}Bh}{{{Dj{c}}{b{{Dj{c}}}}}{}{{Bl{b}{{Bj{}}}}}{}}{{{b{{Dj{c}}}}{Dj{c}}}{}{}}{{{b{{Dj{c}}}}{b{{Dj{c}}}}}{}{}}{{{Dj{c}}{Dj{{b{c}}}}}{}{{Bl{b}{{Bj{}}}}}{}}{{{Dj{e}}{Dj{e}}}{}{}{{Bl{}{{Bj{c}}}}}}{{{Dj{{b{{Dh{c}}}}}}{Dj{c}}}{}Bh}{{{b{d{Eb{c}}}}gi}hBh{{El{Ej}}}{{C`{}{{Bj{e}}}}}{{El{{Ef{Hn}}}}}}{{{b{d{Fj{}{{Fh{c}}}}}}i}{{Fl{ec}}}{{Fj{e}}}Bh{{El{Ej}}}{{Dn{}{{Bj{g}}}}}}{{{Dj{c}}}{}I`}{{{b{d{Fj{}{{Fh{c}}}}}}{Ib{Ej}}}h{{Fj{e}}}Bh}{{{b{d{Fl{ce}}}}{Ib{Ej}}}hBh{{Fj{c}}}}{{{b{d{Fj{}{{Fh{c}}}}}}i}h{{Fj{e}}}Bh{{El{Ej}}}{{Dn{}{{Bj{g}}}}}}{{{b{d{Fl{ce}}}}i}hBh{{Fj{c}}}{{El{Ej}}}{{Dn{}{{Bj{g}}}}}}``{{{b{{Dj{e}}}}}{{Dj{{Dh{c}}}}}Bh{{Gl{{Dh{c}}}}}}{{{Dj{c}}{Dj{{b{c}}}}}{}{{Id{b}{{Bj{}}}}}{}}{{{Dj{{b{c}}}}{Dj{c}}}{}{}}:{{{Dj{{Dh{c}}}}c}{}Bh}?{{{Dj{c}}{b{{Dj{c}}}}}{}{{Id{b}{{Bj{}}}}}{}}?{{{Dj{{Dh{c}}}}{Dj{c}}}{}Bh}{{{Dj{e}}{Dj{e}}}{}{}{{Id{}{{Bj{c}}}}}}{{{Dj{{b{{Dh{c}}}}}}c}{}Bh}{{{b{de}}{b{g}}{If{{Ef{Ff}}}}}{{A`{hE`}}}Bh{{Ih{c}}Ij}{{Il{c}}}}{{{b{{Dj{c}}}}}{{Dj{{Dh{e}}}}}{}Bh}{{{b{c}}}e{}{}}000{{{Dj{{In{c}}}}}{{In{{Dj{c}}}}}Gj}{{{Dj{e}}j}{{If{{Dj{c}}}}}{}{{Hh{}{{Hf{c}}}}}}{c{{A`{e}}}{}{}}000000000000000{{{b{c}}}Ab{}}0000000{{}{{Dj{c}}}{}}{{{Dj{{Ch{ce}}}}}{{Ch{{Dj{c}}{Dj{e}}}}}{}{}}{{{b{{Eh{ce}}}}}{{Dj{{b{c}}}}}{}Bh}{{{b{{Eh{ce}}}}}{{Dj{{Dh{e}}}}}{}Bh}{ce{}{}}0000000{{{Dj{c}}{Dj{e}}}{{Dj{{Ch{ce}}}}}{}{}}``{{{b{d{J`{ce}}}}im}{{A`{kE`}}}Bh{{Ih{c}}Ij}{{El{Ej}}}{{C`{}{{Bj{g}}}}}{}{{En{{Eb{c}}}{{Bj{{A`{kE`}}}}}}}}{{{b{d{J`{ce}}}}ik}{{A`{hE`}}}Bh{{Ih{c}}Ij}{{El{Ej}}}{{C`{}{{Bj{g}}}}}{{En{{Fb{c}}}{{Bj{{A`{hE`}}}}}}}}{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{d{J`{ce}}}}Fn{Ef{F`}}j}{{A`{hE`}}}Bh{{Ih{c}}Ij}}{j{{b{c}}}{}}0{j{{b{dc}}}{}}0{jh}0{{{b{Jb}}{b{dl}}}{{A`{hn}}}}{{{b{{J`{ce}}}}{b{dl}}}{{A`{hn}}}{GhBh}{Gh{Ih{c}}}}{cc{}}0{{{b{{J`{ce}}}}Hl}{{Dj{c}}}Bh{{Ih{c}}Ij}}{{{b{d{J`{ce}}}}}{{b{d}}}Bh{{Ih{c}}Ij}}{{}j}0??{{{b{d{J`{ce}}}}{Ib{Ej}}}hBh{{Ih{c}}Ij}}{{{b{d{J`{ce}}}}i}hBh{{Ih{c}}Ij}{{El{Ej}}}{{Dn{}{{Bj{g}}}}}}`{{{b{de}}{b{g}}{If{{Ef{Ff}}}}}{{A`{hE`}}}Bh{{Ih{c}}Ij}{{Il{c}}}}{c{{A`{e}}}{}{}}000{{{b{c}}}Ab{}}0`{ce{}{}}0``{{{b{d{Jd{ce}}}}im}{{A`{kE`}}}Bh{{Ih{c}}Ij}{{El{Ej}}}{{C`{}{{Bj{g}}}}}{}{{En{{Eb{c}}}{{Bj{{A`{kE`}}}}}}}}{{{b{d{Jd{ce}}}}ik}{{A`{hE`}}}Bh{{Ih{c}}Ij}{{El{Ej}}}{{C`{}{{Bj{g}}}}}{{En{{Fb{c}}}{{Bj{{A`{hE`}}}}}}}}{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{d{Jd{ce}}}}Fn{Ef{F`}}j}{{A`{hE`}}}Bh{{Ih{c}}Ij}}{j{{b{c}}}{}}{j{{b{dc}}}{}}{jh}{{{b{{Jd{ce}}}}{b{dl}}}{{A`{hn}}}Bh{{Ih{c}}}}{cc{}}{{{b{{Jd{ce}}}}Hl}{{Dj{c}}}Bh{{Ih{c}}Ij}}{{{b{d{Jd{ce}}}}}{{b{d}}}Bh{{Ih{c}}Ij}}{{}j}={{{b{de}}{If{{Ef{Ff}}}}}{{A`{{Jd{ce}}E`}}}Bh{{Ih{c}}}}{{{b{d{Jd{ce}}}}{Ib{Ej}}}hBh{{Ih{c}}Ij}}{{{b{d{Jd{ce}}}}i}hBh{{Ih{c}}Ij}{{El{Ej}}}{{Dn{}{{Bj{g}}}}}}{c{{A`{e}}}{}{}}0{{{b{c}}}Ab{}}{ce{}{}}````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0??>>=={{{b{Jf}}{b{dl}}}{{A`{hn}}}}{{{b{{Jh{ce}}}}{b{dl}}}{{A`{hn}}}{GhBh}{Gh{Ih{c}}}}==::44`66665544````````````````````{{{b{{Jj{c}}}}}{{b{{If{{If{{Jl{c}}}}}}}}}{JnBb}}{{{b{d{Jj{c}}}}j}{{b{d{Cj{{Jl{c}}}}}}}Bh}{{{b{{Jj{c}}}}{Ef{Ed}}}{{b{{Cj{{Jl{c}}}}}}}{JnBb}}{{{b{d{Jj{c}}}}g{Ef{Hn}}}hBh{{El{Ej}}}{{Dn{}{{Bj{e}}}}}}{{{b{{Jj{c}}}}}h{JnBb}}{{{b{{Jj{c}}}}ee}h{JnBb}{D`{K`{}{{Hf{j}}}}}}{{{b{d{Jj{c}}}}g{Ef{Ed}}jk}{{A`{hE`}}}Bh{{El{Ej}}}{{Dn{}{{Bj{e}}}}}{{El{{Dh{c}}}}}{{Dn{}{{Bj{{Dj{i}}}}}}}}{{{b{d{Jj{c}}}}g{Ef{Ff}}jk}{{A`{hE`}}}Bh{{El{Ej}}}{{Dn{}{{Bj{e}}}}}{{El{{Dh{c}}}}}{{Dn{}{{Bj{{Dj{i}}}}}}}};;;;;;::::::{{{b{e}}}EjBh{{Il{c}}}}{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{{b{{Jl{c}}}}}{{Jl{c}}}{D`Bh}}{{{b{{Kf{c}}}}}{{Kf{c}}}{D`Bh}}{{{b{c}}{b{de}}}h{}{}}000{{{b{d{Jj{c}}}}{Ef{Hn}}j{Ef{Hn}}j}{{A`{hE`}}}Bh}`{{{b{{Jj{c}}}}}{{b{{Kh{c}}}}}{JnBb}}{{}Kj}{j{{b{c}}}{}}00000{j{{b{dc}}}{}}00000{jh}00000{{{b{Kd}}{b{{Jj{c}}}}}hBh}{{{b{d{Jj{c}}}}g{b{Gn}}j}{{A`{hE`}}}Bh{{El{Ej}}}{{Dn{}{{Bj{e}}}}}}{{{b{d{Jj{c}}}}g}hBh{{El{Ej}}}{{Dn{}{{Bj{e}}}}}}{{{b{Kb}}{b{Kb}}}Cf}{{{b{Kd}}{b{Kd}}}Cf}{{{b{{Jl{c}}}}{b{{Jl{c}}}}}Cf{KlBh}}{{{b{{Kf{c}}}}{b{{Kf{c}}}}}Cf{KlBh}}{{{b{d{Jj{c}}}}}hBh}{{{b{d{Jj{c}}}}{Ef{Ff}}j{Dj{{Dh{c}}}}}{{A`{hE`}}}Bh}{{{b{{Jj{c}}}}}{{b{{If{{If{{Jl{c}}}}}}}}}{JnBb}}{{{b{{Jj{c}}}}{Ef{Ff}}}{{b{{Cj{{Jl{c}}}}}}}{JnBb}}{{{b{Kb}}{b{dl}}}{{A`{hn}}}}0{{{b{Kd}}{b{dl}}}{{A`{hn}}}}0{{{b{Kj}}{b{dl}}}{{A`{hn}}}}{{{b{{Jl{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{{Jj{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{{Kf{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{cc{}}00000{{{b{{Jj{c}}}}Hl}{{Dj{c}}}Bh}{{}j}00000{{{b{{Jj{c}}}}}{{b{{If{{If{{Kf{c}}}}}}}}}{JnBb}}{{{b{d{Jj{c}}}}j}{{b{d{Cj{{Kf{c}}}}}}}Bh}{ce{}{}}00000{{KjCf}Kj}`{{{b{d{Jj{c}}}}{Ib{Ej}}}hBh}{{{b{d{Jj{c}}}}g}hBh{{El{Ej}}}{{Dn{}{{Bj{e}}}}}}{{{b{{Jj{c}}}}{Ef{F`}}j}{{A`{{Dj{c}}E`}}}Bh}{{KjKn{b{e}}{b{{Lb{gL`}}}}}{{A`{hLd}}}Bh{{Il{c}}}Lf}{{Kn{b{e}}{If{{If{c}}}}}{{A`{{Jj{c}}E`}}}{JnBb}{{Il{c}}}}{{{b{{Jj{c}}}}}{{b{{If{{If{Cf}}}}}}}{JnBb}}66{{{b{c}}}e{}{}}000{{{b{c}}}Ej{}}0{c{{A`{e}}}{}{}}00000000000{{{b{c}}}Ab{}}00000{{{b{{Jj{c}}}}}{{b{{Lh{j}}}}}{JnBb}}{{{b{{Kf{c}}}}}cBh}{{{b{{Jj{c}}}}}{{A`{h{If{Kd}}}}}{JnBb}}{{{b{{Jj{c}}}}ee}{{A`{h{If{Kd}}}}}{JnBb}{D`{K`{}{{Hf{j}}}}}}{{Kj{Lh{j}}}Kj}0{ce{}{}}00000`````````````````````````````````````{{{b{c}}}{{b{e}}}{}{}}000000{{{b{dc}}}{{b{de}}}{}{}}000000{{{b{Lj}}}Lj}{{{b{Ll}}}Ll}{{{b{Ln}}}Ln}{{{b{M`}}}M`}{{{b{c}}{b{de}}}h{}{}}000{{{b{Lj}}{b{Lj}}}Mb}`{j{{b{c}}}{}}000000{j{{b{dc}}}{}}000000{c{{A`{Ln}}}Md}{c{{A`{Mf}}}Md}{jh}000000{{{b{Mh}}{b{Mh}}}Cf}{{{b{Lj}}{b{Lj}}}Cf}`{{{b{Mh}}{b{dl}}}{{A`{hn}}}}{{{b{Mj}}{b{dl}}}{{A`{hn}}}}{{{b{Lj}}{b{dl}}}{{A`{hn}}}}{{{b{Ll}}{b{dl}}}{{A`{hn}}}}{{{b{Ln}}{b{dl}}}{{A`{hn}}}}{{{b{M`}}{b{dl}}}{{A`{hn}}}}{{{b{Mf}}{b{dl}}}{{A`{hn}}}}{cc{}}000000{{Kn{b{e}}{If{{If{c}}}}}Mj{BbBhJn}{{Il{c}}}}{{Kn{b{e}}{If{{If{c}}}}Mh}Mf{BbBhJn}{{Il{c}}}}{{{b{Bn}}}{{A`{Lj}}}}`{{}j}000000`{ce{}{}}000000{{{b{Mj}}Mh}Mf}``````{{{b{Lj}}{b{Lj}}}{{Ib{Mb}}}}````{{{b{Ln}}c}A`Ml}{{{b{Mf}}c}A`Ml}```{{{b{c}}}e{}{}}000{c{{A`{e}}}{}{}}0000000000000{{{b{c}}}Ab{}}0000007777777`````{{{b{c}}}{{b{e}}}{}{}}0000{{{b{dc}}}{{b{de}}}{}{}}0000{{{b{Mn}}}Mn}{{{b{N`}}}N`}{{{b{Nb}}}Nb}{{{b{Nd}}}Nd}{{{b{Nf}}}Nf}{{{b{c}}{b{de}}}h{}{}}0000{{{b{Mn}}{b{Mn}}}Mb}{{{b{N`}}{b{N`}}}Mb}`{j{{b{c}}}{}}0000{j{{b{dc}}}{}}0000{jh}0000{{{b{Mn}}{b{Mn}}}Cf}{{{b{N`}}{b{N`}}}Cf}{{{b{Nb}}{b{Nb}}}Cf}{{{b{Nd}}{b{Nd}}}Cf}{{{b{Nf}}{b{Nf}}}Cf}{{{b{Mn}}{b{dl}}}{{A`{hn}}}}0{{{b{N`}}{b{dl}}}{{A`{hn}}}}0{{{b{Nb}}{b{dl}}}{{A`{hn}}}}0{{{b{Nd}}{b{dl}}}{{A`{hn}}}}0{{{b{Nf}}{b{dl}}}{{A`{hn}}}}0{cc{}}{{{Ef{Hn}}}Mn}{NhN`}2{{{Ch{MnNj}}}N`}{{{Ch{cMnNj}}}N`{{Dd{Bn}}}}4{{{Ch{jc}}}Nb{{Dd{Bn}}}}{{{Ch{Nbjc}}}Nd{{Dd{Bn}}}}6{{{Ch{j{b{Bn}}}}}Nf}{{{Ch{jEj}}}Nf}{{{Ch{j{b{Bn}}{Nl{MnEj}}}}}Nf}{{{Ch{jEj{Nl{MnEj}}}}}Nf}:{{{b{Mn}}{b{dc}}}hNn}`{{}j}0000{ce{}{}}0000{{Hnj}Mn}{{{b{Mn}}{b{Mn}}}{{Ib{Mb}}}}{{{b{N`}}{b{N`}}}{{Ib{Mb}}}}{{{b{c}}}e{}{}}0000{{{b{c}}}Ej{}}0000{c{{A`{e}}}{}{}}000000000{{{b{c}}}Ab{}}000077777``````````````````````````````````````````````````````````````````{{{Dh{c}}{Dh{c}}}{{Dh{c}}}Bh}{{{Dh{c}}{b{{Dh{c}}}}}{{Dh{c}}}Bh}{{{b{{Dh{c}}}}c}{{Dh{c}}}Bh}{{{b{{Dh{c}}}}{Dh{c}}}{{Dh{c}}}Bh}{{{b{{Dh{c}}}}{b{{Dh{c}}}}}{{Dh{c}}}Bh}{{{Dh{c}}c}{{Dh{c}}}Bh}{{{O`{c}}{O`{c}}}{{O`{c}}}Bh}{{{b{d{Dh{c}}}}{Dh{c}}}hBh}{{{b{d{Dh{c}}}}{b{{Dh{c}}}}}hBh}{{{b{d{Kh{c}}}}}{{Ef{Ed}}}Bh}{{{b{d{Kh{c}}}}e}{{Ef{Ed}}}BhOb}{{{b{{Kh{c}}}}}{{If{Od}}}Bh}`{{{b{{Kh{c}}}}}{{b{{If{{Ch{{Ef{Ed}}Of}}}}}}}Bh}{{{b{dIh}}e{Ef{Hn}}}h{{El{Ej}}}{{Dn{}{{Bj{c}}}}}}{{{b{d{Kh{c}}}}ei}hBh{{El{{Ef{Hn}}}}}{{El{Ej}}}{{C`{}{{Bj{g}}}}}}0{{{b{d{Kh{c}}}}Fdg}hBh{{El{Ej}}}{{C`{}{{Bj{e}}}}}}{{{b{dIh}}e{Ef{Ed}}jk}{{A`{hE`}}}{{El{Ej}}}{{Dn{}{{Bj{c}}}}}Bh{{El{{Dh{g}}}}}{{Dn{}{{Bj{{Dj{i}}}}}}}}{{{b{dIh}}e{Ef{Ff}}jk}{{A`{hE`}}}{{El{Ej}}}{{Dn{}{{Bj{c}}}}}Bh{{El{{Dh{g}}}}}{{Dn{}{{Bj{{Dj{i}}}}}}}}{{{b{{Kh{c}}}}}jBh}{{{b{c}}}{{b{e}}}{}{}}0000000000000000000000{{{b{dc}}}{{b{de}}}{}{}}00000000000000000000009`{{{b{d{Kh{c}}}}e}HlBhOb}{{{b{{Oh{c}}}}}{{Oh{c}}}{D`Bh}}{{{b{Hn}}}Hn}{{{b{{Oj{c}}}}}{{Oj{c}}}{D`Aj}}{{{b{{Ol{c}}}}}{{Ol{c}}}{D`Aj}}{{{b{{Dh{c}}}}}{{Dh{c}}}D`}{{{b{{Kh{c}}}}}{{Kh{c}}}{D`Bh}}{{{b{{Ef{c}}}}}{{Ef{c}}}{D`On}}{{{b{Gn}}}Gn}{{{b{A@`}}}A@`}{{{b{Fd}}}Fd}{{{b{Hl}}}Hl}{{{b{{O`{c}}}}}{{O`{c}}}D`}{{{b{Ed}}}Ed}{{{b{Ff}}}Ff}{{{b{F`}}}F`}{{{b{c}}{b{de}}}h{}{}}00000000000000{{{b{Hn}}{b{Hn}}}Mb}{{{b{{Ef{c}}}}{b{{Ef{c}}}}}MbOn}{{{b{Fd}}{b{Fd}}}Mb}{{{b{A@`}}}j}`{{{b{{Ef{c}}}}}{{b{c}}}On}`{{{b{d{Kh{c}}}}}GnBh}{{{b{{O`{c}}}}}jBh}{{{Kh{c}}{If{{If{Cf}}}}}{{Ch{{Kh{c}}{If{{If{c}}}}}}}Bh}{{{b{d{Kh{c}}}}}eBh{}}{{{b{d{Kh{c}}}}e}gBh{}{}}{{{b{{Kh{c}}}}}{{b{{If{{Ef{Ff}}}}}}}Bh}{{{b{dIh}}{Ef{Hn}}j{Ef{Hn}}j}{{A`{hE`}}}}{{{b{d{Kh{c}}}}ek}hBh{{Dd{Bn}}}{{El{{A@b{c}}}}}{{Hh{}{{Hf{g}}}}}{{Dn{{b{d{A@d{c}}}}}{{Bj{i}}}}}}{{b{b{Ol}}{b{{Cj{c}}}}{b{{Cj{{If{If}}}}}}e{b{di}}}{{A`{hA@f}}}IlDfA@h{{A@j{g}}}}{{{A@l{c}}b{b{Ol}}{b{{Cj{e}}}}{b{{Cj{{If{If}}}}}}g{b{dk}}}{{A`{hA@f}}}A@nIlDfA@h{{A@j{i}}}}{{{b{{Dh{c}}}}}{{Dh{c}}}Bh}{{{b{{Ef{c}}}}}{{O`{e}}}OnBh}{{}{{Kh{c}}}Bh}{{{b{{Kh{c}}}}}jBh}<{{{b{{Dh{c}}}}}{{Ib{c}}}Bh}{j{{b{c}}}{}}0000000000000000000000{j{{b{dc}}}{}}0000000000000000000000>6{jh}0000000000000000000000{{{b{Gn}}{b{d{Eb{c}}}}j}{{A`{hE`}}}Bh}{{{b{d{Kh{c}}}}{Ef{Ff}}}hBh}{{{b{d{Kh{c}}}}e}hBh{{El{{Ef{Hn}}}}}}{{{b{dIh}}e{b{Gn}}j}{{A`{hE`}}}{{El{Ej}}}{{Dn{}{{Bj{c}}}}}}{{{b{dIh}}e}h{{El{Ej}}}{{Dn{}{{Bj{c}}}}}}{{{b{Hn}}{b{Hn}}}Cf}{{{b{{Dh{c}}}}{b{{Dh{c}}}}}CfBh}{{{b{{Ef{c}}}}{b{{Ef{c}}}}}Cf{KlOn}}{{{b{Gn}}{b{Gn}}}Cf}{{{b{A@`}}{b{A@`}}}Cf}{{{b{Fd}}{b{Fd}}}Cf}{{{b{Hl}}{b{Hl}}}Cf}{{{b{{O`{c}}}}{b{{O`{c}}}}}CfKl}{{{b{Ed}}{b{Ed}}}Cf}{{{b{Ff}}{b{Ff}}}Cf}{{{b{F`}}{b{F`}}}Cf}{{{Dh{c}}}cBh}{{{b{{O`{c}}}}{b{g}}{b{i}}{b{k}}{b{m}}{b{o}}{b{Aa}}{b{Ac}}{b{Ae}}{b{Ag}}{b{Ai}}}eBh{}{{C`{c}{{Bj{e}}}}}{{C`{Gn}{{Bj{e}}}}}{{C`{A@`}{{Bj{e}}}}}{{C`{AA`}{{Bj{e}}}}}{{C`{AAb}{{Bj{e}}}}}{{C`{Hl}{{Bj{e}}}}}{{C`{e}{{Bj{e}}}}}{{C`{ee}{{Bj{e}}}}}{{C`{ee}{{Bj{e}}}}}{{C`{ec}{{Bj{e}}}}}}{{{b{{O`{c}}}}{b{g}}{b{i}}{b{k}}{b{m}}{b{o}}{b{Aa}}{b{Ac}}{b{Ae}}{b{Ag}}{b{Ai}}{b{e}}}eBhKl{{C`{c}{{Bj{e}}}}}{{C`{Gn}{{Bj{e}}}}}{{C`{A@`}{{Bj{e}}}}}{{C`{AA`}{{Bj{e}}}}}{{C`{AAb}{{Bj{e}}}}}{{C`{Hl}{{Bj{e}}}}}{{C`{e}{{Bj{e}}}}}{{C`{ee}{{Bj{e}}}}}{{C`{ee}{{Bj{e}}}}}{{C`{ec}{{Bj{e}}}}}}{{{b{dIh}}}h}{{{b{Gn}}}{{O`{c}}}Bh}{{{b{Hl}}}{{O`{c}}}Bh}{{{b{dIh}}{Ef{Ff}}j{Dj{{Dh{c}}}}}{{A`{hE`}}}Bh}{{{b{d{Kh{c}}}}}{{Ef{Ff}}}Bh}{{{b{{Oj{c}}}}}{{b{{If{c}}}}}Aj}{{{b{{Kh{c}}}}}{{b{{If{{Ch{{Ef{Ff}}Of}}}}}}}Bh}{{{b{A@f}}{b{dl}}}AAd}0{{{b{{Oh{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{Hn}}{b{dl}}}{{A`{hn}}}}{{{b{AAf}}{b{dl}}}{{A`{hn}}}}0{{{b{{Oj{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{Ol{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{Dh{c}}}}{b{dl}}}{{A`{hn}}}Gh}{{{b{{AAh{ceg}}}}{b{dl}}}{{A`{hn}}}{GhBh}{Gh{El{{A@b{c}}}}}{Gh{Hh{}{{Hf{e}}}}}}{{{b{{Kh{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{{A@d{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{{Ef{c}}}}{b{dl}}}{{A`{hn}}}{GhOn}}{{{b{AAj}}{b{dl}}}{{A`{hn}}}}{{{b{AAl}}{b{dl}}}{{A`{hn}}}}{{{b{AAn}}{b{dl}}}{{A`{hn}}}}{{{b{Gn}}{b{dl}}}{{A`{hn}}}}{{{b{A@`}}{b{dl}}}{{A`{hn}}}}{{{b{Fd}}{b{dl}}}{{A`{hn}}}}{{{b{Hl}}{b{dl}}}{{A`{hn}}}}{{{b{{O`{c}}}}{b{dl}}}{{A`{hn}}}Gh}{{{b{Ed}}{b{dl}}}{{A`{hn}}}}{{{b{Ff}}{b{dl}}}{{A`{hn}}}}{{{b{F`}}{b{dl}}}{{A`{hn}}}}{{{b{E`}}{b{dl}}}{{A`{hn}}}}0{E`A@f}{AAfA@f}{cc{}}{{{Kh{c}}}{{Oh{c}}}Bh}1{F`Hn}{FfHn}{EdHn}4{AB`AAf}555{{{Ch{cc}}}{{Dh{c}}}Bh}{{{b{c}}}{{Dh{c}}}Bh}{c{{Dh{c}}}Bh}8{{{b{{Dh{c}}}}}{{Dh{c}}}Bh}999{{{Ef{F`}}}{{Ef{Hn}}}}{{{Ef{Ff}}}{{Ef{Hn}}}}{{{Ef{Ed}}}{{Ef{Hn}}}}{Mn{{Ef{Hn}}}}======={ABbHl}>>>>>>{{{b{{Cj{Od}}}}fABd}{{A`{{Oj{c}}AB`}}}ABf}{{{b{{Cj{Od}}}}fABd}{{A`{{Ol{c}}AB`}}}ABf}{{{b{{Kh{c}}}}}{{b{{If{{ABh{c}}}}}}}Bh}`{{{b{{Kh{c}}}}}{{b{{Nl{MnEj}}}}}Bh}`{{{b{{Kh{c}}}}{Ef{Hn}}Of}jBh}{{{b{Ih}}Hl}{{Dj{c}}}Bh}{{{b{{Oj{c}}}}}{{b{ABj}}}Aj}{{{b{{Ol{c}}}}}{{b{{Oj{c}}}}}Aj}{{{b{Hn}}{b{dc}}}hNn}{{{b{{Ef{c}}}}{b{de}}}h{ABlOn}Nn}{{{b{Gn}}{b{dc}}}hNn}{{{b{Fd}}{b{dc}}}hNn}{{{b{Hl}}{b{dc}}}hNn}{{{b{Ed}}{b{dc}}}hNn}{{{b{Ff}}{b{dc}}}hNn}{{{b{F`}}{b{dc}}}hNn}{{{b{{Oj{c}}}}{b{dg}}}{{A`{hAB`}}}Aj{{A@h{c}}}{{ABn{ce}}}}{{{b{{O`{c}}}}}EjBh}{{{b{{Ef{c}}}}}jOn}{{{b{Gn}}}j}{{{b{Hl}}}j}```{{}j}0000000000000000000000{{{b{Fd}}}{{Ef{Ff}}}}{{{b{d{Kh{c}}}}}{{Ef{F`}}}Bh}{{{b{{Kh{c}}}}}{{b{{If{{Ch{{Ef{F`}}Of}}}}}}}Bh}{ce{}{}}0000000000000000000000{{{AAh{ceg}}}{}Bh{{El{{A@b{c}}}}}{{Hh{}{{Hf{e}}}}}}{{{b{{Dh{c}}}}}{{Dh{c}}}Bh}{{{b{Gn}}}Cf}{{{b{{Dh{c}}}}}CfBh}{{{b{e}}{Oj{c}}{b{g}}}{{A`{{Ol{c}}A@f}}}Aj{{AC`{c}}}Il}{{{b{e}}{Oj{c}}{b{g}}Cf}{{A`{{Ol{c}}A@f}}}Aj{{AC`{c}}}Il}{{{b{e}}{b{g}}}{{A`{{Oj{c}}A@f}}}Aj{{AC`{c}}}Il}{{{b{e}}{b{g}}Cf}{{A`{{Oj{c}}A@f}}}Aj{{AC`{c}}}Il}{{{b{d{Kh{c}}}}eg}jBh{{Dd{Bn}}}{{Dn{{b{d{A@d{c}}}}}{{Bj{{If{{Ch{{O`{c}}Fd}}}}}}}}}}{{{b{d{Kh{c}}}}eg}jBh{{Dd{Bn}}}{{Dn{{b{d{A@d{c}}}}}{{Bj{{If{{Ch{{O`{c}}{O`{c}}}}}}}}}}}}{{{b{d{Kh{c}}}}}FdBh}{{{b{{Kh{c}}}}}{{b{{If{{ACb{c}}}}}}}Bh}``{{{b{{Kh{c}}}}}jBh}{{{Dh{c}}{b{{Dh{c}}}}}{{Dh{c}}}Bh}{{{Dh{c}}{Dh{c}}}{{Dh{c}}}Bh}{{{Dh{c}}c}{{Dh{c}}}Bh}{{{b{{Dh{c}}}}c}{{Dh{c}}}Bh}{{{O`{c}}c}{{O`{c}}}Bh}{{{O`{c}}{O`{c}}}{{O`{c}}}Bh}{{{b{d{Dh{c}}}}{b{{Dh{c}}}}}hBh}{{{b{d{Dh{c}}}}{Dh{c}}}hBh}{{{Dh{c}}}{}Bh}{{{b{{Dh{c}}}}}{}Bh}{{{O`{c}}}{}Bh}{{jc}{{Ef{c}}}On}{{{b{{Ef{c}}}}}{{O`{e}}}OnBh}{KnAAf}{KnE`}?`?`?`?`?{{{b{{Dh{c}}}}}cBh}{{{b{{Il{}{{Gb{c}}{ACd{e}}{ACf{g}}}}}}}gD`AChACj}{{{b{Hn}}{b{Hn}}}{{Ib{Mb}}}}{{{b{{Ef{c}}}}{b{{Ef{c}}}}}{{Ib{Mb}}}On}{{{b{Fd}}{b{Fd}}}{{Ib{Mb}}}}{{{b{{Kh{c}}}}}{{b{ACl}}}Bh}`{{{b{Hl}}}Od}{{{b{{Oh{c}}}}}jBh}{{{b{{Kh{c}}}}}{{`{{K`{}{{Hf{ACn}}}}}}}Bh}{{{b{{Oj{c}}}}}{{AD`{c}}}Aj}{{{b{dc}}fKn{b{e}}Cf}{{ADb{{Ol{g}}}}}ADdIlABf}{{{b{dIh}}{Ib{Ej}}}h}>{e{{O`{c}}}Bh{{K`{}{{Hf{{O`{c}}}}}}}}{{{b{dIh}}e}h{{El{Ej}}}{{Dn{}{{Bj{c}}}}}}{{{b{d{A@d{c}}}}{Ef{Ed}}Of}{{O`{c}}}Bh}{{{b{d{A@d{c}}}}eOf}{{O`{c}}}Bh{{El{{Ef{Hn}}}}}}{{{b{On}}jOf}{{O`{c}}}Bh}{{{b{Hn}}jOf}{{O`{c}}}Bh}{{{b{{Ef{c}}}}Of}{{O`{e}}}OnBh}{{{b{Ed}}jOf}{{O`{c}}}Bh}{{{b{Ff}}jOf}{{O`{c}}}Bh}{{{b{F`}}jOf}{{O`{c}}}Bh}{{{b{d{O`{c}}}}{b{d{A@d{c}}}}}hBh}{{{b{d{A@d{c}}}}Hl}{{O`{c}}}Bh}{{{b{d{A@d{c}}}}{Ef{Ff}}Of}{{O`{c}}}Bh}{{{b{Ih}}{Ef{F`}}j}{{A`{{Dj{c}}E`}}}Bh}{{{b{d{A@d{c}}}}{Ef{F`}}Of}{{O`{c}}}Bh}{{{b{d{A@d{c}}}}Gn}{{O`{c}}}Bh}{{{b{dc}}fABd}{{A`{{Oj{e}}AB`}}}ADdABf}{{{b{dc}}fABd}{{A`{{Ol{e}}AB`}}}ADdABf}{{{b{{Ef{c}}}}Nj}{{O`{e}}}OnBh}{{{b{A@`}}}Of}`{{{b{d{Kh{c}}}}}GnBh}{{{b{d{Kh{c}}}}j}hBh}{{{b{d{Kh{c}}}}eg}jBh{{Dd{Bn}}}{{Dn{{b{d{A@d{c}}}}}{{Bj{{If{{Ch{{O`{c}}{O`{c}}}}}}}}}}}}{{{b{{Kh{c}}}}}{{b{{If{{ADf{c}}}}}}}Bh}`{{{b{AAf}}}{{Ib{{b{ADh}}}}}}{{{b{{Dh{c}}}}}{{Dh{c}}}Bh}{{{O`{c}}}{{O`{c}}}Bh}{{{Dh{c}}c}{{Dh{c}}}Bh}{{{Dh{c}}{Dh{c}}}{{Dh{c}}}Bh}{{{b{{Dh{c}}}}{Dh{c}}}{{Dh{c}}}Bh}{{{Dh{c}}{b{{Dh{c}}}}}{{Dh{c}}}Bh}{{{b{{Dh{c}}}}c}{{Dh{c}}}Bh}{{{b{{Dh{c}}}}{b{{Dh{c}}}}}{{Dh{c}}}Bh}{{{O`{c}}{O`{c}}}{{O`{c}}}Bh}{{{b{d{Dh{c}}}}{Dh{c}}}hBh}{{{b{d{Dh{c}}}}{b{{Dh{c}}}}}hBh}{e{{O`{c}}}Bh{{K`{}{{Hf{{O`{c}}}}}}}}{{{b{de}}{b{g}}{If{{Ef{Ff}}}}}{{A`{hE`}}}Bh{{Ih{c}}Ij}{{Il{c}}}}{{{b{{Il{}{{Gb{c}}{ACd{e}}{ACf{g}}}}}}ck}{{A`{hE`}}}D`AChACjBh{{Fj{i}}}}{{{b{{Oj{c}}}}f}{{If{Od}}}ABf}{{{b{{Ol{c}}}}f}{{If{Od}}}ABf}{{{b{c}}}e{}{}}00000000000000{AAjACn}{AAlACn}{AAnACn}{{{b{c}}}Ej{}}00{{{b{{Oj{c}}}}}{}Aj}{c{{A`{e}}}{}{}}0000000000{{{Ef{Hn}}}{{A`{{Ef{Ed}}}}}}{{{Ef{Hn}}}{{A`{{Ef{Ff}}}}}}{{{Ef{Hn}}}{{A`{{Ef{F`}}}}}}33333333333333333333333333333333333{{{b{c}}}Ab{}}0000000000000000000000{{{b{d{Kh{c}}}}}{{Ef{Ed}}}Bh}{{{b{d{Kh{c}}}}e}{{Ef{Ed}}}BhOb}`{{b{b{Oj}}g{b{{Cj{{If{If}}}}}}{b{dk}}}{{A`{AAf}}}ADj{{ADl{c}}}{{ADn{ce}}}A@h{{AE`{i}}}}{{{b{dc}}fKn{b{e}}Cf}{{ADb{{Oj{g}}}}}ADdIlABf}{ce{}{}}0000000000000000000000{{{O`{c}}g}{{AAh{ceg}}}Bh{{El{{A@b{c}}}}}{{Hh{}{{Hf{e}}}}}}{{{b{{Il{}{{Gb{c}}{ACd{e}}{ACf{g}}}}}}}{{Il{}{{Gb{c}}{ACd{e}}{ACf{g}}}}}D`AChACj}{{{b{{Oj{c}}}}{b{de}}f}{{A`{hAB`}}}ABfAEb}{{{b{{Ol{c}}}}{b{de}}f}{{A`{hAB`}}}ABfAEb}``````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{Of}}}Of}{{{b{{ABj{c}}}}}{{ABj{c}}}{D`Bh}}{{{b{c}}{b{de}}}h{}{}}0{{{b{Of}}{b{Of}}}Mb}{{{b{{ABj{c}}}}{If{c}}}{{AEf{cAEd}}}B`}{{{b{{ABj{c}}}}{AEf{cAEd}}}{{AEf{cAEh}}}B`}`{{{b{{ABj{c}}}}c}{{AEf{cAEh}}}B`}{{{b{{ABj{c}}}}c}{{AEf{cAEj}}}B`}{{}Of}{j{{b{c}}}{}}0{j{{b{dc}}}{}}0{{{b{{ABj{c}}}}{AEf{cAEh}}}{{AEf{cAEh}}}B`}{jh}0{{{b{{ABj{c}}}}}{{AEf{cAEd}}}B`}{{{b{{ABj{c}}}}}{{AEf{cAEh}}}B`}{{{b{{ABj{c}}}}}{{AEf{cAEj}}}B`}{{{b{Of}}{b{Of}}}Cf}{{{b{{ABj{c}}}}}KnB`}{{{b{{ABj{c}}}}}jB`}{{{b{{ABj{c}}}}{AEf{cAEh}}}{{If{c}}}B`}{{{ADn{}{{Bj{c}}}}}Cf{}}{{{b{Of}}{b{dl}}}{{A`{hn}}}}{{{b{{ABj{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{cc{}}0{{{b{{ABj{c}}}}}cB`}006{{{b{Of}}{b{dc}}}hNn}{{}j}0{ce{}{}}0`:`{{{b{{ABj{c}}}}cce}{{If{c}}}B`{{Hh{}{{Hf{Nj}}}}D`}}{{{b{{ABj{c}}}}j}{{AEf{cAEh}}}B`}{{{b{{ABj{c}}}}{If{c}}}{{AEf{cAEj}}}B`}{{{b{{ABj{c}}}}{AEf{cAEj}}}{{AEf{cAEd}}}B`}{b{{ADn{}{{Bj{c}}}}}{}}{{KnKn}{{ABj{c}}}B`}{{}Of}{{{b{Of}}{b{Of}}}{{Ib{Mb}}}}{{{b{{ABj{c}}}}}{{AEl{c}}}B`}2{{{ADn{}{{Bj{c}}}}e}{{A`{cAAf}}}{}{{Dn{}{{Bj{{A`{AAf}}}}}}}}{{{b{{ABj{c}}}}{b{{AEf{cAEh}}}}Of}{{AEf{cAEh}}}B`}{{{b{{ABj{c}}}}cOf}cB`}{{{b{c}}}e{}{}}0{c{{A`{e}}}{}{}}000{{{b{c}}}Ab{}}0??``````````````````{{{AEn{c}}{AEn{c}}}{{AEn{c}}}Bh}{{{b{d{AEn{c}}}}{AEn{c}}}hBh}{{{b{d{AEn{c}}}}c}hBh}{{{b{dAF`}}{b{AF`}}}h}{{{b{dAF`}}}h}{{{b{AF`}}}If}{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{AF`}}{b{e}}}CfAj{{A@n{c}}}}{{{b{{AEn{c}}}}}{{AEn{c}}}D`}{{{b{c}}{b{de}}}h{}{}}{{{b{AFb}}{b{e}}{b{{AEf{AEd}}}}AEn}{}Aj{{A@n{c}}}}{{{b{AC`}}{b{e}}{b{{AEf{AEj}}}}AEn}{}Aj{{A@n{c}}}}{{{b{AFd}}c{b{dg}}i}{{A`{hAB`}}}DfA@h{{A@j{e}}}{{Hh{}{{Hf{AFf}}}}D`}}{{{b{AFd}}{b{c}}e{b{di}}k}{{A`{hAB`}}}A@nDfA@h{{A@j{g}}}{{Hh{}{{Hf{AFf}}}}D`}}{{}{{AEn{c}}}Bh}{j{{b{c}}}{}}{j{{b{dc}}}{}}{{{b{dAC`}}Kn}h}{jh}{{{b{{AFj{}{{AFh{c}}}}}}}c{{AF`{e}}}Aj}{{{b{{AEn{c}}}}{b{{AEn{c}}}}}CfKl}{{{b{AF`}}{b{e}}}{}Aj{{A@n{c}}}}{{{b{{AEn{c}}}}{b{dl}}}{{A`{hn}}}Gh}{cc{}}{{}j}{ce{}{}}{{{b{AC`}}}Kn}{{{AEn{c}}{AEn{c}}}{{AEn{c}}}Bh}{{{b{d{AEn{c}}}}c}hBh}{{{b{d{AEn{c}}}}{AEn{c}}}hBh}{{{b{AC`}}}Db}{KnAFb}{bAFd}{{}{{ADl{}{{AFl{c}}{AFn{g}}}}}{{AG`{e}{{AFn{g}}}}}ADj{}}{{{b{dc}}}{{AEn{e}}}DfBh}{Knc{}}{{{b{dc}}}{{A`{AC`AB`}}}ADd}{{{b{dc}}}{{A`{eAB`}}}ADd{}}{{{b{AF`}}}If}{{{b{dAF`}}}h}{{{b{c}}}e{}{}}{c{{A`{e}}}{}{}}0{{{b{c}}}Ab{}}{{{b{{ADl{}{{AFl{c}}{AFn{g}}}}}}{b{dk}}mg}{{A`{cAGb}}}{{AG`{e}{{AFn{g}}}}}ADj{}A@h{{AE`{i}}}{{Hh{}{{Hf{AGd}}}}D`}}{ce{}{}}{{{b{AC`}}{b{dc}}}{{A`{hAB`}}}AEb}```````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{{AGf{c}}}}}{{AGf{c}}}{D`Aj}}{{{b{c}}{b{de}}}h{}{}}{{{b{{AGf{c}}}}{b{e}}{b{{AEf{AEd}}}}AEn}{}Aj{{A@n{c}}}}{{{b{{AGf{c}}}}{b{e}}{b{{AEf{AEj}}}}AEn}{}Aj{{A@n{c}}}}{{{b{e}}{b{{AGf{c}}}}g{b{dk}}{b{{AEf{AEd}}}}AEn}{{A`{hAB`}}}Aj{{A@n{c}}}Df{{A@h{c}}}{{A@j{ci}}}}{j{{b{c}}}{}}0{j{{b{dc}}}{}}0{{{b{d{AGf{c}}}}Kn}hAj}{jh}0{{{b{{AGf{c}}}}}{{AGh{c}}}Aj}{{{b{{AGf{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{AGj{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{cc{}}0{{}j}0{ce{}{}}0{{{b{{AGf{c}}}}}KnAj}{{{b{{AGf{c}}}}}DbAj}{Kn{{AGf{c}}}Aj}{Kn}{{{b{dc}}}{{A`{{AGf{e}}AB`}}}ADdAj}{{{b{dc}}}{{A`{AB`}}}ADd}{{{b{c}}}e{}{}}{c{{A`{e}}}{}{}}000{{{b{c}}}Ab{}}0{{{AGh{c}}{b{dg}}}{{A`{{AGl{c}}AGb}}}Aj{{A@h{c}}}{{AE`{ce}}}}::{{{b{{AGf{c}}}}{b{de}}}{{A`{hAB`}}}AjAEb}`{{{b{d{AGh{c}}}}}hAj}{{{b{d{AGh{c}}}}{b{{AGh{c}}}}}hAj}0{{{b{d{AGh{c}}}}{b{Cj}}}hAj}222{{{b{{AGh{c}}}}}IfAj}{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{{AGh{c}}}}{b{e}}}CfAj{{A@n{c}}}}{{{b{{AGh{c}}}}}{{AGh{c}}}{D`Aj}}{{{b{c}}{b{de}}}h{}{}}{j{{b{c}}}{}}{j{{b{dc}}}{}}{jh}{{{b{{AGh{c}}}}{b{e}}}{}Aj{{A@n{c}}}}{{{b{{AGh{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{cc{}}{{}j}{ce{}{}}{{{b{{AGf{c}}}}}{{AGh{c}}}Aj}>{{{b{d{AGh{c}}}}}hAj}{{{b{c}}}e{}{}}{c{{A`{e}}}{}{}}0{{{b{c}}}Ab{}}5``{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{{AGn{c}}}}{b{e}}g{b{dk}}m}{{A`{hAB`}}}Aj{{A@n{c}}}Df{{A@h{c}}}{{A@j{ci}}}{{Hh{}{{Hf{{AFf{c}}}}}}D`}}??>>=={{{b{{AGn{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{AH`{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}<<;;::{{{b{{AGf{c}}}}}{{AGn{c}}}Aj}{{}{{AH`{c}}}Aj}888877{{{b{{AH`{c}}}}{b{dg}}i{AGh{c}}}{{A`{AGb}}}Aj{{A@h{c}}}{{AE`{ce}}}{{Hh{}{{Hf{{AGd{c{AGh{c}}}}}}}}D`}}==````77776666{{{b{{AGl{c}}}}}{{AGl{c}}}{D`Aj}}{{{b{{AHb{c}}}}}{{AHb{c}}}{D`Aj}}{{{b{c}}{b{de}}}h{}{}}0{{{b{{AGl{c}}}}{b{e}}}cAj{{A@n{c}}}}{j{{b{c}}}{}}000{j{{b{dc}}}{}}000{jh}000{{{AHd{c}}}CfAj}{{{AHf{c}}}CfAj}{{{b{{AGl{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{AHb{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{AHd{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{AHf{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{cc{}}000`{{}j}000{ce{}{}}000{{{b{{AGf{c}}}}}{{AHd{c}}}Aj}{{{b{{AGf{c}}}}}{{AHf{c}}}Aj}{{{AHd{c}}e}{{A`{AAf}}}Aj{{Dn{{AGh{c}}}{{Bj{{A`{{AGl{c}}AAf}}}}}}}}{{{AHf{c}}e}{{A`{AAf}}}Aj{{Dn{{AGh{c}}}{{Bj{{A`{{AGl{c}}AAf}}}}}}}}{{{b{c}}}e{}{}}0{c{{A`{e}}}{}{}}0000000{{{b{c}}}Ab{}}000`{{{AGl{c}}}{{AGh{c}}}Aj}{{{AGl{c}}c}{{Ch{{AGh{c}}{AHb{c}}}}}Aj}9999```````{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{{AHh{c}}}}}{{AHh{c}}}{D`AHj}}{{{b{{AHl{c}}}}}{{AHl{c}}}{D`AHj}}{{{b{c}}{b{de}}}h{}{}}0{{{b{{AHh{c}}}}{b{e}}{b{{AEf{AEd}}}}AEn}{}AHjA@n}{{{b{{AHh{c}}}}{b{e}}{b{{AEf{AEj}}}}AEn}{}AHjA@n}{{{b{{AHl{c}}}}{b{e}}{b{{AEf{AEj}}}}AEn}{}AHjA@n}{j{{b{c}}}{}}00{j{{b{dc}}}{}}00{{{b{d{AHh{c}}}}Kn}hAHj}{{{b{d{AHl{c}}}}Kn}hAHj}{jh}00{{{b{{AHh{c}}}}}{{AHn{c}}}AHj}{{{b{{AHl{c}}}}}{{AHn{c}}}AHj}{{{b{{AHh{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AHl{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AI`{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{cc{}}00{{{b{{AHh{c}}}}KnIf{Ib{If}}}{{AHh{c}}}AHj}{{}j}00{ce{}{}}00{{{b{{AHh{c}}}}}KnAHj}{{{b{{AHl{c}}}}}KnAHj}{{{b{{AHh{c}}}}}DbAHj}{{{b{{AHl{c}}}}}DbAHj}{Kn{{AHh{c}}}AHj}{Kn}{{{b{dc}}}{{A`{{AHh{e}}AB`}}}ADdAHj}{{{b{dc}}}{{A`{{AHl{e}}AB`}}}ADdAHj}{{{b{dc}}f}{{A`{{AHh{e}}AB`}}}ADdAHj}{{{b{dc}}f}{{A`{{AHl{e}}AB`}}}ADdAHj}{{{b{dc}}}{{A`{AB`}}}ADd}{{Knc}{{AHh{e}}}DfAHj}{{{b{c}}}e{}{}}0{c{{A`{e}}}{}{}}00000{{{b{c}}}Ab{}}00{{{b{{AHh{c}}}}}{{AHl{c}}}AHj}{ce{}{}}00{{{b{{AHh{c}}}}{b{de}}}{{A`{hAB`}}}AHjAEb}{{{b{{AHl{c}}}}{b{de}}}{{A`{hAB`}}}AHjAEb}{{{b{{AHh{c}}}}{b{de}}f}{{A`{hAB`}}}AHjAEb}{{{b{{AHl{c}}}}{b{de}}f}{{A`{hAB`}}}AHjAEb}``{{{b{d{AHn{c}}}}{b{{AHn{c}}}}}hAHj}{{{b{d{AIb{c}}}}{AIb{c}}}hAId}{{{b{d{AHn{c}}}}}hAHj}{{{b{{AHn{c}}}}}IfAHj}{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{{AHn{c}}}}{b{e}}}CfAHjA@n}{{{AIb{c}}{b{e}}{b{{AHl{c}}}}}CfAIdA@n}{{{b{{AHn{c}}}}}{{AHn{c}}}{D`AHj}}{{{b{{AIb{c}}}}}{{AIb{c}}}{D`AHj}}{{{b{c}}{b{de}}}h{}{}}08{{}{{AHn{c}}}{ACjAHj}}{{}{{AIb{c}}}{ACjAHj}}{j{{b{c}}}{}}0{j{{b{dc}}}{}}0{jh}0{{{b{{AHn{c}}}}{b{e}}}{}AHjA@n}{{{b{{AHn{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AIb{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{cc{}}0{{}j}0{ce{}{}}0{{}{{AHn{c}}}AHj}{{}{{AIb{c}}}AId}{{{b{{AHn{c}}}}}IfAHj}{{{b{d{AHn{c}}}}}hAHj}{{{b{d{AIb{c}}}}}hAId}{{{b{c}}}e{}{}}0{c{{A`{e}}}{}{}}000{{{b{c}}}Ab{}}088````{{{b{c}}}{{b{e}}}{}{}}000{{{b{dc}}}{{b{de}}}{}{}}000{{{b{{AIf{c}}}}{b{e}}g{b{dk}}m}{{A`{hAB`}}}{AHjGh}A@nDfA@h{{A@j{i}}}{{Hh{}{{Hf{AFf}}}}D`}}{{{b{{AIh{c}}}}{b{e}}g{b{dk}}m}{{A`{hAB`}}}{AHjGh}A@nDfA@h{{A@j{i}}}{{Hh{}{{Hf{AFf}}}}D`}}{j{{b{c}}}{}}000{j{{b{dc}}}{}}000{jh}000{{{b{{AIf{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AIj{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AIh{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AIl{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{cc{}}000{{}j}000{ce{}{}}000{{{b{{AHh{c}}}}}{{AIf{c}}}{AHjGh}}{{}{{AIj{c}}}{AIdGh}}{{{b{{AHh{c}}}}}{{AIh{c}}}{AHjGh}}{{{b{{AHh{c}}}}}{{AIh{c}}}AHj}{{}{{AIl{c}}}{AIdGh}}{c{{A`{e}}}{}{}}0000000{{{b{c}}}Ab{}}000{{{b{{AIj{c}}}}{b{dg}}i{AIb{c}}}{{A`{AGb}}}{AIdGh}A@h{{AE`{e}}}{{Hh{}{{Hf{{AGd{{AHn{c}}}}}}}}D`}}{{{b{{AIl{c}}}}{b{dg}}i{AIb{c}}}{{A`{AGb}}}{AIdGh}A@h{{AE`{e}}}{{Hh{}{{Hf{{AGd{{AHn{c}}}}}}}}D`}}9999```{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{{AIn{c}}}}}{{AIn{c}}}{D`AId}}{{{b{{AJ`{c}}}}}{{AJ`{c}}}{D`AHj}}{{{b{{AJb{c}}}}}{{AJb{c}}}{D`AHj}}{{{b{c}}{b{de}}}h{}{}}00{j{{b{c}}}{}}00{j{{b{dc}}}{}}00{jh}00{{{AJ`{c}}}Cf{AIdGh}}{{{AJb{c}}}Cf{AIdGh}}{{{b{{AIn{c}}}}{b{dl}}}{{A`{hn}}}{GhAId}}{{{b{{AJ`{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AJb{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{cc{}}00{{}j}00{ce{}{}}00{{{b{{AHl{c}}}}}{{AJ`{c}}}{AIdGh}}{{{b{{AHl{c}}}}}{{AJ`{c}}}AId}{{{b{{AHl{c}}}}}{{AJb{c}}}{AIdGh}}0{{{AJ`{c}}e}{{A`{AAf}}}{AIdGh}{{Dn{}{{Bj{{A`{AAf}}}}}}}}{{{AJb{c}}e}{{A`{AAf}}}{AIdGh}{{Dn{}{{Bj{{A`{AAf}}}}}}}}{{{b{c}}}e{}{}}00{c{{A`{e}}}{}{}}00000{{{b{c}}}Ab{}}00888{{{AIb{c}}{b{{AHl{c}}}}}{{AJ`{c}}}AId}``````````{{{b{{A@h{}{{AJd{c}}}}}}}{{AJf{eg}}}{}Aj{}}{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{{AJh{ceg}}}}}{{AJh{ceg}}}{D`ADd}{D`Aj}{D`{A@h{e}}}}{{{b{{AJj{ceg}}}}}{{AJj{ceg}}}{D`AEb}{D`Aj}{D`{A@h{e}}}}{{{b{{AJl{c}}}}}{{AJl{c}}}{D`Aj}}{{{b{c}}{b{de}}}h{}{}}00{{{b{dABn}}c}{{A`{hAB`}}}Aj}{{{b{d{AJh{ce{AJl{e}}}}}}e}{{A`{hAB`}}}ADdAj}{{{b{d{AJj{ce{AJl{e}}}}}}e}{{A`{hAB`}}}AEbAj}{{{b{dABn}}}{{A`{hAB`}}}}{{{b{d{AJh{ce{AJl{e}}}}}}}{{A`{hAB`}}}ADdAj}{{{b{d{AJj{ce{AJl{e}}}}}}}{{A`{hAB`}}}AEbAj}{j{{b{c}}}{}}00{{{b{{AJl{c}}}}}bAj}{j{{b{dc}}}{}}00{jh}00{AJncAEb}{{{AJj{ce{AJl{e}}}}}cAEbAj}{{{b{{AJh{ceg}}}}{b{dl}}}{{A`{hn}}}{GhADd}{GhAj}{Gh{A@h{e}}}}{{{b{{AJj{ceg}}}}{b{dl}}}{{A`{hn}}}{GhAEb}{GhAj}{Gh{A@h{e}}}}{{{b{{AJl{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{cc{}}00{{{b{{A@h{}{{AJd{c}}}}}}}{}{}}{{{b{{AJl{c}}}}}{}Aj}{cAK`ADd}{cAJnAEb}{c{{AJh{ce{AJl{e}}}}}ADdAj}{{}j}0{c{{AJj{ce{AJl{e}}}}}AEbAj}1{ce{}{}}00{{{b{c}}}{{A@h{}{{AJd{c}}}}}{}}{{{b{{In{Od}}}}}{{AJl{c}}}Aj}{{{b{dAE`}}}{{A`{cAB`}}}Aj}{{{b{d{AJh{ce{AJl{e}}}}}}}{{A`{eAB`}}}ADdAj}{{{b{dAE`}}}{{A`{AB`}}}}{{{b{d{AJh{ce{AJl{e}}}}}}}{{A`{AB`}}}ADdAj}{{{b{dABn}}}eAj{{A@h{c}}}}{{{b{d{AJh{ce{AJl{e}}}}}}}{{AJl{e}}}ADdAj}{{{b{d{AJj{ce{AJl{e}}}}}}}{{AJl{e}}}AEbAj}{{{b{dABn}}}{{AJf{ce}}}Aj{}}{{{b{c}}}e{}{}}00{c{{A`{e}}}{}{}}00000{{{b{c}}}Ab{}}00==={{{b{dA@j}}c}{{A`{hAB`}}}Aj}{{{b{d{AJj{ce{AJl{e}}}}}}e}{{A`{hAB`}}}AEbAj}{{{b{dA@j}}}{{A`{hAB`}}}}{{{b{d{AJj{ce{AJl{e}}}}}}}{{A`{hAB`}}}AEbAj}","D":"F@n","p":[[1,"reference"],[0,"mut"],[6,"SerdeFormat",0,2141],[1,"unit"],[1,"usize"],[5,"Formatter",2142],[5,"Error",2142],[6,"Result",2143],[5,"TypeId",2144],[17,"ScalarExt"],[17,"Base"],[17,"CurveExt"],[10,"CurveAffine",27,2145],[5,"Coordinates",2145],[5,"CtOption",2146],[10,"WithSmallOrderMulGroup",2147],[10,"Ord",2148],[17,"AffineExt"],[10,"CurveExt",27,2145],[10,"Field",27,2147],[17,"Output"],[10,"Mul",2149],[1,"str"],[10,"Fn",2150],[5,"Box",2151],[5,"Choice",2146],[1,"bool"],[1,"tuple"],[1,"slice"],[10,"Send",2152],[10,"Sync",2152],[10,"Clone",2153],[1,"u64"],[10,"AsRef",2154],[10,"RngCore",2155],[6,"Assigned",829,2156],[5,"Value",64,2157],[10,"Add",2149],[10,"FnOnce",2150],[6,"ErrorFront",829],[5,"Region",64,2158],[5,"Advice",829,2159],[5,"Column",829,2160],[5,"AssignedCell",64,2158],[5,"String",2161],[10,"Into",2154],[10,"FnMut",2150],[5,"Instance",829,2159],[5,"Table",64,2158],[5,"TableColumn",829,2160],[5,"Fixed",829,2159],[17,"Root"],[10,"Layouter",64,2158],[5,"NamespacedLayouter",64,2158],[5,"Cell",64,2158],[5,"RegionIndex",64,2158],[17,"Config"],[17,"Loaded"],[10,"Chip",64,2158],[10,"Debug",2142],[10,"Copy",2152],[10,"Borrow",2162],[5,"Selector",829,2160],[5,"SimpleFloorPlanner",64,2163],[10,"RegionLayouter",2164],[10,"TableLayouter",2165],[17,"Item"],[10,"IntoIterator",2166],[10,"FromIterator",2166],[5,"Challenge",829,2160],[6,"Any",829,2167],[10,"Neg",2149],[6,"Option",2168],[10,"Sub",2149],[5,"Vec",2169],[10,"Assignment",829,2159],[10,"SyncDeps",2164],[10,"Circuit",829,2159],[1,"array"],[5,"V1Pass",293,2170],[5,"V1",293,2170],[5,"SingleChipLayouter",331,2163],[5,"MeasurementPass",354,2170],[5,"AssignmentPass",354,2170],[5,"MockProver",385,2171],[6,"CellValue",385,2171],[10,"FromUniformBytes",2147],[10,"Iterator",2172],[6,"FailureLocation",385,2173],[6,"VerifyFailure",385,2173],[6,"InstanceValue",385,2171],[5,"ConstraintSystem",829,2174],[5,"CircuitLayout",385,2175],[10,"PartialEq",2148],[1,"u32"],[5,"Shift",2176],[5,"DrawingArea",2177],[6,"DrawingAreaErrorKind",2177],[10,"DrawingBackend",2178],[5,"Range",2179],[5,"Poly",567,2180],[5,"Lookup",567,2180],[5,"Permutation",567,2180],[5,"Shuffle",567,2180],[6,"Ordering",2148],[10,"Deserializer",2181],[5,"ModelCircuit",567,2180],[6,"CommitmentScheme",567,2180],[5,"CostOptions",567,2180],[10,"Serializer",2182],[5,"Column",711],[5,"VirtualCell",711,2183],[5,"Gate",711,2183],[5,"Constraint",711,2183],[5,"Region",711,2183],[5,"VirtualCell",2174],[1,"i32"],[5,"HashMap",2184],[10,"Hasher",2185],[6,"Expression",829,2160],[10,"Phase",829,2160],[1,"u8"],[5,"Rotation",1479,2186],[5,"ConstraintSystemMid",829,2167],[5,"VerifyingKey",829,2187],[5,"ProvingKey",829,2187],[10,"ColumnType",829,2159],[5,"FixedQuery",829,2160],[5,"Constraint",2174],[5,"VirtualCells",829,2174],[6,"Error",829,2188],[10,"EncodedChallenge",2053,2189],[10,"TranscriptWrite",2053,2189],[5,"PlonkEngine",2190],[10,"MsmAccel",2191],[5,"AdviceQuery",2160],[5,"InstanceQuery",2160],[8,"Result",2142],[6,"ErrorBack",829],[5,"Constraints",829,2174],[5,"FirstPhase",829,2160],[5,"SecondPhase",829,2160],[5,"ThirdPhase",829,2160],[5,"Error",2192],[5,"ChallengeMid",2167],[5,"ConstraintSystemBack",2193],[10,"SerdeCurveAffine",2141],[5,"Gate",2174],[5,"EvaluationDomain",1479,2194],[10,"Hash",2185],[10,"Transcript",2053,2189],[10,"Params",1552,2195],[5,"Argument",2196],[17,"FloorPlanner"],[17,"Params"],[10,"FloorPlanner",829,2159],[10,"Default",2197],[5,"Argument",2198],[5,"Phase",2199],[5,"PinnedVerificationKey",2187],[8,"Result",2192],[10,"Read",2200],[5,"Argument",2201],[10,"Error",2202],[10,"CommitmentScheme",1552,2195],[10,"Verifier",1552,2195],[10,"VerificationStrategy",1479,2203],[10,"TranscriptRead",2053,2189],[10,"Write",2200],[5,"Coeff",2204],[5,"Polynomial",2204],[5,"ExtendedLagrangeCoeff",2204],[5,"LagrangeCoeff",2204],[5,"PinnedEvaluationDomain",2194],[5,"Blind",1552,2195],[10,"MSM",1552,2195],[10,"ParamsProver",1552,2195],[10,"Prover",1552,2195],[5,"ProverQuery",2205],[17,"MSM"],[10,"ParamsVerifier",1552,2195],[17,"Guard"],[17,"MSMAccumulator"],[10,"Guard",2203],[6,"Error",2204],[5,"VerifierQuery",2205],[5,"ParamsIPA",1622,2206],[5,"MSMIPA",1667,2207],[5,"IPACommitmentScheme",1622,2206],[5,"GuardIPA",1729,2208],[5,"ProverIPA",1697,2209],[5,"VerifierIPA",1697,2210],[5,"Accumulator",1729,2208],[5,"AccumulatorStrategy",1729,2208],[5,"SingleStrategy",1729,2208],[5,"ParamsKZG",1806,2211],[10,"Engine",2212],[5,"ParamsVerifierKZG",1806,2211],[5,"MSMKZG",1879,2213],[5,"KZGCommitmentScheme",1806,2211],[5,"DualMSM",1879,2213],[10,"MultiMillerLoop",2212],[5,"ProverGWC",1928,2214],[5,"ProverSHPLONK",1928,2215],[5,"VerifierGWC",1928,2216],[5,"VerifierSHPLONK",1928,2217],[5,"GuardKZG",1993,2218],[5,"AccumulatorStrategy",1993,2218],[5,"SingleStrategy",1993,2218],[17,"Input"],[5,"ChallengeScalar",2189],[5,"Blake2bRead",2053,2189],[5,"Blake2bWrite",2053,2189],[5,"Challenge255",2053,2189],[10,"TranscriptWriterBuffer",2053,2189],[10,"TranscriptReadBuffer",2053,2189],[15,"InRegion",542],[15,"OutsideRegion",542],[15,"ConstraintNotSatisfied",545],[15,"CellNotAssigned",545],[15,"InstanceCellNotAssigned",545],[15,"Permutation",545],[15,"ConstraintPoisoned",545],[15,"Lookup",545],[15,"Shuffle",545],[15,"NotEnoughRowsAvailable",1477],[15,"NotEnoughRowsAvailable",1478]],"r":[[3,2141],[31,2145],[32,2145],[34,2147],[56,2219],[64,2158],[65,2158],[66,2158],[68,2158],[70,2158],[71,2158],[72,2158],[74,2163],[75,2158],[76,2157],[170,2158],[293,2170],[294,2170],[320,2220],[328,2220],[331,2163],[332,2163],[354,2170],[355,2170],[356,2170],[357,2170],[376,2170],[388,2171],[389,2175],[392,2173],[395,2171],[397,2171],[404,2173],[425,2221],[435,2171],[497,2171],[567,2180],[568,2180],[572,2180],[573,2180],[574,2180],[575,2180],[576,2180],[643,2180],[644,2180],[712,2183],[713,2183],[714,2183],[715,2183],[829,2159],[832,2167],[833,2156],[834,2159],[839,2160],[841,2159],[842,2160],[845,2159],[848,2174],[850,2167],[851,2174],[852,2188],[855,2160],[856,2160],[857,2159],[860,2160],[861,2159],[864,2159],[877,2160],[879,2187],[882,2160],[883,2160],[887,2160],[889,2160],[892,2187],[893,2174],[1010,2222],[1011,2222],[1259,2223],[1260,2223],[1261,2223],[1262,2223],[1448,2224],[1479,2194],[1481,2186],[1482,2203],[1494,2204],[1526,2204],[1528,2204],[1552,2195],[1554,2195],[1557,2195],[1560,2195],[1561,2195],[1563,2195],[1565,2195],[1569,2195],[1618,2225],[1619,2225],[1620,2225],[1621,2225],[1622,2206],[1623,2206],[1624,2206],[1633,2226],[1663,2227],[1667,2207],[1697,2209],[1698,2210],[1729,2208],[1730,2208],[1731,2208],[1732,2208],[1802,2228],[1803,2228],[1804,2228],[1805,2228],[1806,2211],[1807,2211],[1808,2211],[1879,2213],[1880,2213],[1928,2214],[1929,2215],[1930,2216],[1931,2217],[1993,2218],[1994,2218],[1995,2218],[2053,2189],[2054,2189],[2055,2189],[2056,2189],[2058,2189],[2059,2189],[2060,2189],[2061,2189],[2062,2189]],"b":[[77,"impl-Add%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[78,"impl-Add%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[79,"impl-Add%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[80,"impl-Add%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[81,"impl-Add%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[82,"impl-Add%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[83,"impl-Add%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[84,"impl-Add%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[85,"impl-Add-for-Value%3CV%3E"],[86,"impl-Add-for-%26Value%3CV%3E"],[126,"impl-Value%3C%26V%3E"],[127,"impl-Value%3C%26mut+V%3E"],[134,"impl-Value%3C%26V%3E"],[135,"impl-Value%3C%26mut+V%3E"],[218,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[219,"impl-Mul%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[220,"impl-Mul%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[221,"impl-Mul%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[222,"impl-Mul%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[223,"impl-Mul%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[224,"impl-Mul-for-%26Value%3CV%3E"],[225,"impl-Mul%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[226,"impl-Mul-for-Value%3CV%3E"],[227,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[238,"impl-Sub%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[239,"impl-Sub%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[240,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[241,"impl-Sub%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[242,"impl-Sub%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[243,"impl-Sub%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[244,"impl-Sub-for-%26Value%3CV%3E"],[245,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[246,"impl-Sub-for-Value%3CV%3E"],[247,"impl-Sub%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[467,"impl-Display-for-FailureLocation"],[468,"impl-Debug-for-FailureLocation"],[469,"impl-Display-for-VerifyFailure"],[470,"impl-Debug-for-VerifyFailure"],[759,"impl-Debug-for-ColumnMid"],[760,"impl-Display-for-ColumnMid"],[761,"impl-Debug-for-VirtualCell"],[762,"impl-Display-for-VirtualCell"],[763,"impl-Debug-for-Gate"],[764,"impl-Display-for-Gate"],[765,"impl-Display-for-Constraint"],[766,"impl-Debug-for-Constraint"],[767,"impl-Display-for-Region"],[768,"impl-Debug-for-Region"],[771,"impl-From%3CVirtualCell%3E-for-VirtualCell"],[773,"impl-From%3C(ColumnMid,+i32)%3E-for-VirtualCell"],[774,"impl-From%3C(S,+ColumnMid,+i32)%3E-for-VirtualCell"],[779,"impl-From%3C(usize,+%26str)%3E-for-Region"],[780,"impl-From%3C(usize,+String)%3E-for-Region"],[781,"impl-From%3C(usize,+%26str,+HashMap%3CColumnMid,+String%3E)%3E-for-Region"],[782,"impl-From%3C(usize,+String,+HashMap%3CColumnMid,+String%3E)%3E-for-Region"],[895,"impl-Add-for-Assigned%3CF%3E"],[896,"impl-Add%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[897,"impl-Add%3CF%3E-for-%26Assigned%3CF%3E"],[898,"impl-Add%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[899,"impl-Add%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[900,"impl-Add%3CF%3E-for-Assigned%3CF%3E"],[902,"impl-AddAssign-for-Assigned%3CF%3E"],[903,"impl-AddAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1115,"impl-Display-for-Error"],[1116,"impl-Debug-for-Error"],[1119,"impl-Display-for-Error"],[1120,"impl-Debug-for-Error"],[1139,"impl-Debug-for-Error"],[1140,"impl-Display-for-Error"],[1141,"impl-From%3CError%3E-for-Error"],[1142,"impl-From%3CError%3E-for-Error"],[1146,"impl-From%3CInstance%3E-for-Any"],[1147,"impl-From%3CFixed%3E-for-Any"],[1148,"impl-From%3CAdvice%3E-for-Any"],[1154,"impl-From%3C(F,+F)%3E-for-Assigned%3CF%3E"],[1155,"impl-From%3C%26F%3E-for-Assigned%3CF%3E"],[1156,"impl-From%3CF%3E-for-Assigned%3CF%3E"],[1158,"impl-From%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1162,"impl-From%3CColumn%3CInstance%3E%3E-for-Column%3CAny%3E"],[1163,"impl-From%3CColumn%3CFixed%3E%3E-for-Column%3CAny%3E"],[1164,"impl-From%3CColumn%3CAdvice%3E%3E-for-Column%3CAny%3E"],[1165,"impl-From%3CColumnMid%3E-for-Column%3CAny%3E"],[1270,"impl-Mul%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1271,"impl-Mul-for-Assigned%3CF%3E"],[1272,"impl-Mul%3CF%3E-for-Assigned%3CF%3E"],[1273,"impl-Mul%3CF%3E-for-%26Assigned%3CF%3E"],[1274,"impl-Mul%3CF%3E-for-Expression%3CF%3E"],[1275,"impl-Mul-for-Expression%3CF%3E"],[1276,"impl-MulAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1277,"impl-MulAssign-for-Assigned%3CF%3E"],[1278,"impl-Neg-for-Assigned%3CF%3E"],[1279,"impl-Neg-for-%26Assigned%3CF%3E"],[1337,"impl-Sub%3CF%3E-for-Assigned%3CF%3E"],[1338,"impl-Sub-for-Assigned%3CF%3E"],[1339,"impl-Sub%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1340,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1341,"impl-Sub%3CF%3E-for-%26Assigned%3CF%3E"],[1342,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1344,"impl-SubAssign-for-Assigned%3CF%3E"],[1345,"impl-SubAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1384,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CAdvice%3E"],[1385,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CFixed%3E"],[1386,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CInstance%3E"],[1571,"impl-AddAssign-for-Blind%3CF%3E"],[1572,"impl-AddAssign%3CF%3E-for-Blind%3CF%3E"],[1599,"impl-MulAssign%3CF%3E-for-Blind%3CF%3E"],[1600,"impl-MulAssign-for-Blind%3CF%3E"],[1669,"impl-MSMIPA%3C\'a,+C%3E"],[1670,"impl-MSM%3CC%3E-for-MSMIPA%3C\'a,+C%3E"],[1972,"impl-Prover%3C\'params,+KZGCommitmentScheme%3CE%3E%3E-for-ProverSHPLONK%3C\'params,+E%3E"],[1973,"impl-ProverSHPLONK%3C\'a,+E%3E"],[2031,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-AccumulatorStrategy%3CE%3E"],[2032,"impl-AccumulatorStrategy%3CE%3E"],[2033,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-SingleStrategy%3CE%3E"],[2034,"impl-SingleStrategy%3CE%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAFYFtAAGAAEACQADAA4AAQARAAEAFgAAABgAAwBOAAkAYwAAAGUAEAB3AAcAhgAAAIsAEQCeAAgArAAHALYAAAC4AAAAuwAAAL0AAADCAAAAxAAIANsACQDnAAAA6QAAAOsAAADvAAoA+wADAAEBFwAdAQcAKAEOADkBAwA/AQwATgEIAFgBAgBdAQUAZwELAHUBAQB5AQgAmQEAAJwBDQCrAQgAtgESAMoBBwDUAQcA4gEGAPMBAgD7ARcAGQIFAEQCFgBcAhgAdgIGAIYCAACIAgYAngIAAKMCAQCoAh8AzQIVAOQCHQADAwEABgMBAAkDAQAMAwMAEQMAABMDBAAdAyAAgAMIAJUDLQDGAyAA6gMAAPcDAAD7Ay0AKwQWAEcECgBcBBsAeQQAAHsEAgB/BAAAgwQCAIcEAACLBAMAlgQAAKAEAACiBAEApwQHALQEAAC2BBcA6AQAAPQEAQD3BAsABwUAAAkFAAALBQAADQUAABEFAgAVBQAAHQUAACIFAAAkBQIANgUBADoFCQBIBRQAXgVHAKsFFgDMBQgA2wUDAOAFAQDlBQAA6gUBAPIFAgD7BQAAAQYAAAcGCQAjBgIAKQYBACwGAQAyBgIANgYAADgGAAA6BgAAPAYAAD8GAgBMBgMAUQYAAFoGBQBjBgkAbwYBAHMGAQB2BgAAeAYHAIEGAQCLBgsAmAYAAJsGBgCkBgMAqQYHALMGAQC3BgoAxgYLANMGCwDhBgMA6gYDAPIGEQAHBwMAEgccADMHAgA5BwUAQgcBAEUHDgBXBwAAWgcAAFwHBgBkBwMAaQcKAHYHAQB8BwEAfwcJAI0HBwCXBw8AqwcDALMHAgC3Bw0AxgcDAM0HGQDqBwIA8AcAAPIHAAD0BxAAEQgLAB4IAQAhCAsALggDADYIAAA6CAEAPQgAAEIIAABECAAARggAAEgIAQBLCA4AWwgAAF0IAAA="}],\ -["p3_frontend",{"t":"PKFPFPPGPPPFFPFPPFGFPGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHHNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNONNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Add","AirBuilderWithPublicValues","CompileParams","Constant","FWrap","FirstRow","LastRow","Location","Location","Mul","Neg","PreprocessingInfo","Public","Public","Query","Query","Sub","SymbolicAirBuilder","SymbolicExpression","SymbolicVariable","Transition","Var","Variable","add","add","add","add","add","add","add","add_assign","add_assign","add_assign","as_base_slice","as_base_slice","as_canonical_biguint","as_canonical_u64","as_slice","as_slice_mut","assert_zero","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","column","compile_circuit_cs","compile_preprocessing","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","disable_zk","div","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from_base","from_base","from_base_fn","from_base_fn","from_base_slice","from_base_slice","from_bool","from_bool","from_canonical_u16","from_canonical_u16","from_canonical_u32","from_canonical_u32","from_canonical_u64","from_canonical_u64","from_canonical_u8","from_canonical_u8","from_canonical_usize","from_canonical_usize","from_f","from_f","from_fn","from_slice","from_slice_mut","from_wrapped_u32","from_wrapped_u32","from_wrapped_u64","from_wrapped_u64","generator","generator","get_public_inputs","hash","index","init","init","init","init","init","init","init","init","init","init","interleave","into","into","into","into","into","into","into","into","into","into","is_first_row","is_last_row","is_next","is_one","is_transition_window","is_zero","is_zero","main","mul","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","mul_assign","neg","neg","neg_one","neg_one","new_public","new_query","one","one","order","partial_cmp","product","product","product","public_values","public_values","serialize","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sum","sum","sum","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","trace_to_wit","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_inverse","two","two","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","zero","zero"],"q":[[0,"p3_frontend"],[304,"p3_frontend::fwrap"],[305,"ff"],[306,"p3_frontend::symbolic_expression"],[307,"p3_field::field"],[308,"p3_frontend::symbolic_variable"],[309,"num_bigint::biguint"],[310,"core::hash"],[311,"core::cmp"],[312,"p3_frontend::symbolic_builder"],[313,"core::convert"],[314,"core::clone"],[315,"halo2_middleware::circuit"],[316,"p3_air::air"],[317,"core::default"],[318,"core::result"],[319,"serde::de"],[320,"core::fmt"],[321,"core::ops::function"],[322,"alloc::vec"],[323,"core::option"],[324,"core::iter::traits::iterator"],[325,"p3_frontend::air"],[326,"serde::ser"],[327,"alloc::string"],[328,"p3_matrix::dense"],[329,"core::any"]],"i":[3,0,0,3,0,18,18,0,3,3,3,0,0,19,0,19,3,0,0,0,18,0,3,1,3,3,3,5,5,5,1,3,3,1,3,1,1,1,1,15,15,1,18,3,5,19,20,21,22,23,15,1,18,3,5,19,20,21,22,23,1,18,3,5,19,20,21,22,23,1,18,3,5,19,20,21,22,23,1,20,0,0,1,3,23,15,1,18,3,5,19,20,21,22,23,15,1,18,3,5,19,20,21,22,23,1,23,1,3,15,1,18,3,5,19,20,21,22,23,1,1,1,18,18,3,3,5,5,19,20,21,22,23,15,1,18,3,3,3,5,19,20,21,22,23,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,1,1,1,3,1,3,1,3,0,1,21,15,1,18,3,5,19,20,21,22,23,1,15,1,18,3,5,19,20,21,22,23,15,15,20,3,15,1,3,15,1,3,3,3,5,5,5,1,3,3,1,3,1,3,5,5,1,3,1,1,1,3,3,49,15,1,1,3,3,3,5,5,5,1,3,3,1,3,3,1,18,3,5,19,20,21,22,23,1,18,3,5,0,15,1,18,3,5,19,20,21,22,23,15,1,18,3,5,19,20,21,22,23,1,1,3,15,1,18,3,5,19,20,21,22,23,15,1,18,3,5,19,20,21,22,23,1,3],"f":"```````````````````````{{{b{c}}{b{c}}}{{b{c}}}d}{{{f{c}}{f{c}}}{{f{c}}}h}{{{f{c}}{j{c}}}eh{}}{{{f{c}}c}{{f{c}}}h}{{{j{c}}{j{c}}}eh{}}{{{j{c}}{f{c}}}eh{}}{{{j{c}}c}eh{}}{{{n{l{b{c}}}}{b{c}}}A`d}{{{n{l{f{c}}}}c}A`h}{{{n{l{f{c}}}}{f{c}}}A`h}{{{n{c}}}{{n{{Ab{e}}}}}{}{}}0{{{n{{b{c}}}}}Ad{AfAhAj}}{{{n{{b{c}}}}}Al{AfAhAj}}{{{n{c}}}{{n{Ab}}}{}}{{{n{lc}}}{{n{lAb}}}{}}{{{n{l{An{c}}}}g}A`h{}{{B`{e}}}}{{{n{c}}}{{n{e}}}{}{}}000000000{{{n{lc}}}{{n{le}}}{}{}}000000000{{{n{{b{c}}}}}{{b{c}}}{Bbd}}{{{n{Bd}}}Bd}{{{n{{f{c}}}}}{{f{c}}}{Bbh}}{{{n{{j{c}}}}}{{j{c}}}{Bbh}}{{{n{Bf}}}Bf}{{{n{Bh}}}Bh}{{{n{Bj}}}Bj}{{{n{Bl}}}Bl}{{{n{Bn}}}Bn}{{{n{c}}{n{le}}}A`{}{}}00000000{{{n{{b{c}}}}{n{{b{c}}}}}C`{Ajd}}`{{{n{e}}{n{Bn}}Cb}{{Cf{{Cd{c}}Bl}}}{AfAh}{{Ch{{An{{b{c}}}}}}}}{{CjCb{n{Bl}}{n{e}}}{{Cl{c}}}{AfAh}{{Ch{{An{{b{c}}}}}}}}{{}{{b{c}}}{Cnd}}{{}{{f{c}}}h}{{}Bn}{Cb{{n{c}}}{}}000000000{Cb{{n{lc}}}{}}000000000{c{{D`{{b{e}}}}}DbAf}`{{{b{c}}{b{c}}}{{b{c}}}d}{{{n{{f{c}}}}}{{f{c}}}h}{CbA`}000000000{{{n{{b{c}}}}{n{{b{c}}}}}Dd{Dfd}}{{{n{{b{c}}}}{n{lDh}}}Dj{Dld}}{{{n{{b{c}}}}{n{lDh}}}Djd}{{{n{Bd}}{n{lDh}}}Dj}0{{{n{{f{c}}}}{n{lDh}}}Djh}{{{n{{f{c}}}}{n{lDh}}}Dj{Dlh}}{{{n{{j{c}}}}{n{lDh}}}Djh}{{{n{{j{c}}}}{n{lDh}}}Dj{Dlh}}{{{n{Bf}}{n{lDh}}}Dj}{{{n{Bh}}{n{lDh}}}Dj}{{{n{Bj}}{n{lDh}}}Dj}{{{n{Bl}}{n{lDh}}}Dj}{{{n{Bn}}{n{lDh}}}Dj}{cc{}}00{c{{f{c}}}h}{{{j{c}}}{{f{c}}}h}222222222{ec{}{{E`{Cb}{{Dn{c}}}}}}0{{{n{{Ab{c}}}}}c{}}0{Dd{{b{c}}}{AfAh}}{Dd{{f{c}}}h}{Eb{{b{c}}}{AfAh}}{Eb{{f{c}}}h}{Cj{{b{c}}}{AfAh}}{Cj{{f{c}}}h}{Al{{b{c}}}{AfAh}}{Al{{f{c}}}h}{Ed{{b{c}}}{AfAh}}{Ed{{f{c}}}h}{Cb{{b{c}}}{AfAh}}{Cb{{f{c}}}h}{c{{b{e}}}{}{AfAh}}{c{{f{e}}}{}h}{ce{{E`{Cb}{{Dn{}}}}}{}}{{{n{Ab}}}{{n{c}}}{}}{{{n{lAb}}}{{n{lc}}}{}}<;:9{{}{{b{c}}}{AfAh}}{{}{{f{c}}}h}{{{n{Bl}}Cb{n{{Ab{{Ef{c}}}}}}}{{Ef{{Ef{c}}}}}d}{{{n{{b{c}}}}{n{le}}}A`{Ahd}Eh}`{{}Cb}000000000{{{n{c}}eCb}{{Cf{ee}}}{}{}}{ce{}{}}000000000{{{n{{An{c}}}}}eh{}}0`{{{n{{f{c}}}}}Ddh}{{{n{{An{c}}}}Cb}eh{}}{{{n{{b{c}}}}}Dd{AfAh}}23{{{b{c}}{b{c}}}{{b{c}}}d}{{{f{c}}{j{c}}}eh{}}{{{f{c}}c}{{f{c}}}h}{{{f{c}}{f{c}}}{{f{c}}}h}{{{j{c}}{f{c}}}eh{}}{{{j{c}}c}eh{}}{{{j{c}}{j{c}}}eh{}}{{{n{l{b{c}}}}{b{c}}}A`d}{{{n{l{f{c}}}}c}A`h}{{{n{l{f{c}}}}{f{c}}}A`h}{{{b{c}}}ed{}}{{{f{c}}}{{f{c}}}h}{{}{{b{c}}}{AfAh}}{{}{{f{c}}}h}{Cb{{j{c}}}h}{{DdCb}{{j{c}}}h}32{{}Ad}{{{n{{b{c}}}}{n{{b{c}}}}}{{Ej{C`}}}{Eld}}{e{{b{c}}}d{{F`{}{{En{{b{c}}}}}}}}{e{{f{c}}}h{{F`{}{{En{c}}}}}}{e{{f{c}}}h{{F`{}{{En{{f{c}}}}}}}}{{{n{Fb}}}{{n{{Ab{c}}}}}{}}{{{n{{An{c}}}}}{{n{{Ab{e}}}}}h{}}{{{n{{b{c}}}}e}D`AfFd}{{{b{c}}{b{c}}}{{b{c}}}d}{{{f{c}}c}{{f{c}}}h}{{{f{c}}{j{c}}}eh{}}{{{f{c}}{f{c}}}{{f{c}}}h}{{{j{c}}{f{c}}}eh{}}{{{j{c}}{j{c}}}eh{}}{{{j{c}}c}eh{}}{{{n{l{b{c}}}}{b{c}}}A`d}{{{n{l{f{c}}}}{f{c}}}A`h}{{{n{l{f{c}}}}c}A`h}?>={{{n{c}}}e{}{}}00000000{{{n{c}}}Ff{}}000{{Cj{Fh{{b{c}}}}}{{Ef{{Ef{c}}}}}d}{c{{D`{e}}}{}{}}0000000000000000000{{{n{{b{c}}}}}{{Ej{{b{c}}}}}{AfAh}}{{}{{b{c}}}{AfAh}}{{}{{f{c}}}h}{{{n{c}}}Fj{}}000000000{ce{}{}}00000000032","D":"C`","p":[[5,"FWrap",0,304],[10,"Field",305],[6,"SymbolicExpression",0,306],[10,"Field",307],[5,"SymbolicVariable",0,308],[0,"mut"],[1,"reference"],[1,"unit"],[1,"slice"],[5,"BigUint",309],[10,"PrimeField",305],[10,"Hash",310],[10,"Ord",311],[1,"u64"],[5,"SymbolicAirBuilder",0,312],[10,"Into",313],[10,"Clone",314],[6,"Location",0,306],[6,"Var",0,308],[5,"Query",0,308],[5,"Public",0,308],[5,"PreprocessingInfo",0],[5,"CompileParams",0],[6,"Ordering",311],[1,"usize"],[5,"ConstraintSystemMid",315],[1,"tuple"],[10,"Air",316],[1,"u32"],[5,"Preprocessing",315],[10,"Default",317],[6,"Result",318],[10,"Deserializer",319],[1,"bool"],[10,"PartialEq",311],[5,"Formatter",320],[8,"Result",320],[10,"Debug",320],[17,"Output"],[10,"FnMut",321],[1,"u16"],[1,"u8"],[5,"Vec",322],[10,"Hasher",310],[6,"Option",323],[10,"PartialOrd",311],[17,"Item"],[10,"Iterator",324],[10,"AirBuilderWithPublicValues",0,325],[10,"Serializer",326],[5,"String",327],[5,"RowMajorMatrix",328],[5,"TypeId",329]],"r":[[1,325],[4,304],[7,306],[12,308],[14,308],[17,312],[18,306],[19,308],[21,308]],"b":[[24,"impl-Add-for-SymbolicExpression%3CF%3E"],[25,"impl-Add%3CSymbolicVariable%3CF%3E%3E-for-SymbolicExpression%3CF%3E"],[26,"impl-Add%3CF%3E-for-SymbolicExpression%3CF%3E"],[27,"impl-Add-for-SymbolicVariable%3CF%3E"],[28,"impl-Add%3CSymbolicExpression%3CF%3E%3E-for-SymbolicVariable%3CF%3E"],[29,"impl-Add%3CF%3E-for-SymbolicVariable%3CF%3E"],[31,"impl-AddAssign%3CF%3E-for-SymbolicExpression%3CF%3E"],[32,"impl-AddAssign-for-SymbolicExpression%3CF%3E"],[120,"impl-Debug-for-FWrap%3CF%3E"],[121,"impl-Display-for-FWrap%3CF%3E"],[122,"impl-Debug-for-Location"],[123,"impl-Display-for-Location"],[124,"impl-Display-for-SymbolicExpression%3CF%3E"],[125,"impl-Debug-for-SymbolicExpression%3CF%3E"],[126,"impl-Display-for-SymbolicVariable%3CF%3E"],[127,"impl-Debug-for-SymbolicVariable%3CF%3E"],[136,"impl-From%3CF%3E-for-SymbolicExpression%3CF%3E"],[137,"impl-From%3CSymbolicVariable%3CF%3E%3E-for-SymbolicExpression%3CF%3E"],[207,"impl-Mul%3CSymbolicVariable%3CF%3E%3E-for-SymbolicExpression%3CF%3E"],[208,"impl-Mul%3CF%3E-for-SymbolicExpression%3CF%3E"],[209,"impl-Mul-for-SymbolicExpression%3CF%3E"],[210,"impl-Mul%3CSymbolicExpression%3CF%3E%3E-for-SymbolicVariable%3CF%3E"],[211,"impl-Mul%3CF%3E-for-SymbolicVariable%3CF%3E"],[212,"impl-Mul-for-SymbolicVariable%3CF%3E"],[214,"impl-MulAssign%3CF%3E-for-SymbolicExpression%3CF%3E"],[215,"impl-MulAssign-for-SymbolicExpression%3CF%3E"],[227,"impl-Product%3CF%3E-for-SymbolicExpression%3CF%3E"],[228,"impl-Product-for-SymbolicExpression%3CF%3E"],[233,"impl-Sub%3CF%3E-for-SymbolicExpression%3CF%3E"],[234,"impl-Sub%3CSymbolicVariable%3CF%3E%3E-for-SymbolicExpression%3CF%3E"],[235,"impl-Sub-for-SymbolicExpression%3CF%3E"],[236,"impl-Sub%3CSymbolicExpression%3CF%3E%3E-for-SymbolicVariable%3CF%3E"],[237,"impl-Sub-for-SymbolicVariable%3CF%3E"],[238,"impl-Sub%3CF%3E-for-SymbolicVariable%3CF%3E"],[240,"impl-SubAssign-for-SymbolicExpression%3CF%3E"],[241,"impl-SubAssign%3CF%3E-for-SymbolicExpression%3CF%3E"],[243,"impl-Sum%3CF%3E-for-SymbolicExpression%3CF%3E"],[244,"impl-Sum-for-SymbolicExpression%3CF%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABgBBQABABAAFQBwAIkAAQCSACoAxwBpAA=="}]\ +["halo2_frontend",{"t":"CCCFFKRKRFFFFREFFKFFNNNNNNNNNNNNNNNNNNMNNNMNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHMNNMNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNNNNNNNNNNNNNNNNNNNCMNNNNNNNNNNNNNNNNMNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNEECCFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNPGKFPKKMNMNMNMMNNNNNNNNNNNMNMNNNNNNNMNNNNNNNNNNNMNNNMNNNNNNNNNNNNNNNPPPGEFFPPGPPGPFPPPPPFPGNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGFPPPFFFFFOONNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNHHNONNNNNNNONNNNNNNNOOOOOONOOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFFNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCCCCCCGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFKKKRFKRFRMMMNNNNNNNNNNNNCMNCMNNNNNNNNNMMNNNMCMNNNNNNMNNNNNNNNNNMMMNNNMMMNNNNNNNNNNNNNNNMFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPFFPFPGFPFPFPKPPFFPPFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFKNNNNNNNNNNNNNNNNNMNNNNNPPGPPPPPPGPPPPPPPGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNN","n":["circuit","dev","plonk","AssignedCell","Cell","Chip","Config","Layouter","Loaded","NamespacedLayouter","Region","RegionIndex","RegionStart","Root","SimpleFloorPlanner","SimpleTableLayouter","Table","TableLayouter","Value","WitnessCalculator","add","add","add","add","add","add","add","add","add","add","and_then","as_mut","as_ref","assert_if_known","assign","assign_advice","assign_advice_from_constant","assign_advice_from_instance","assign_cell","assign_cell","assign_cell","assign_fixed","assign_region","assign_region","assign_table","assign_table","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","calc","cell","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cloned","cloned","column","compile_circuit","config","constrain_constant","constrain_equal","constrain_instance","constrain_instance","copied","copied","copy_advice","cube","default","default_and_assigned","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable_selector","eq","error_if_known_and","evaluate","evaluate","floor_planner","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","get_challenge","get_challenge","get_root","get_root","init","init","init","init","init","init","init","init","init","init","instance_value","into","into","into","into","into","into","into","into","into","into","into_field","invert","known","layouter","loaded","map","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","name_column","namespace","neg","new","new","pop_namespace","pop_namespace","push_namespace","push_namespace","region_index","row_offset","square","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","to_field","to_owned","to_owned","to_owned","to_owned","to_owned","transpose_array","transpose_vec","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unknown","unzip","value","value_field","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","zip","V1","V1Pass","single_pass","v1","SimpleFloorPlanner","SingleChipLayouter","assign_region","assign_table","borrow","borrow","borrow_mut","borrow_mut","constrain_instance","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","get_challenge","get_root","init","init","into","into","new","pop_namespace","push_namespace","synthesize","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","AssignmentPass","MeasurementPass","V1","V1Pass","assign_region","assign_table","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","constrain_instance","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","fmt","fmt","fmt","fmt","from","from","from","from","get_challenge","get_root","init","init","init","init","into","into","into","into","pop_namespace","push_namespace","strategy","synthesize","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","Column","RegionColumn","RegionLayouter","RegionShape","Selector","SyncDeps","TableLayouter","assign_advice","assign_advice","assign_advice_from_constant","assign_advice_from_constant","assign_advice_from_instance","assign_advice_from_instance","assign_cell","assign_fixed","assign_fixed","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","columns","constrain_constant","constrain_constant","constrain_equal","constrain_equal","deref","deref","deref_mut","deref_mut","drop","drop","enable_selector","enable_selector","eq","fmt","fmt","from","from","from","from","hash","init","init","instance_value","instance_value","into","into","name_column","name_column","new","partial_cmp","region_index","row_count","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Assigned","Assigned","CellNotAssigned","CellValue","CircuitCost","CircuitGates","CircuitLayout","ConstraintNotSatisfied","ConstraintPoisoned","FailureLocation","InRegion","InstanceCellNotAssigned","InstanceValue","Lookup","MockProver","OutsideRegion","Padding","Permutation","Poison","Shuffle","TracingFloorPlanner","Unassigned","VerifyFailure","advice","advice_mut","advice_values","annotate_column","assert_satisfied","assert_satisfied_at_rows","assign_advice","assign_fixed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","circuit_dot_graph","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","collect","copy","cost","cost_model","cs","default","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","emit","enable_selector","enter_region","eq","eq","eq","eq","exit_region","fill_from_row","fixed","fixed_values","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","get_challenge","init","init","init","init","init","init","init","init","instance","instance_mut","into","into","into","into","into","into","into","into","mark_equality_cells","metadata","pop_namespace","push_namespace","queries_to_csv","query_instance","render","run","selectors","show_equality_constraints","show_labels","synthesize","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","usable_rows","value","verify","verify_at_rows","view_height","view_width","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","offset","region","row","cell_values","column","column","column","constraint","constraint","gate","gate","gate_offset","gate_offset","location","location","location","location","lookup_index","name","name","offset","region","region","row","shuffle_index","CircuitCost","MarginalProofSize","ProofSize","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","marginal_proof_size","measure","proof_size","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","CommitmentScheme","CostOptions","IPA","KZGGWC","KZGSHPLONK","Lookup","ModelCircuit","Permutation","Poly","Shuffle","advice","advice_columns","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","column_queries","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","eq","eq","fixed","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_circuit_to_cost_model_options","from_circuit_to_model_circuit","from_str","gate_degree","init","init","init","init","init","init","init","instance","into","into","into","into","into","into","into","into_model_circuit","k","k","lookup","lookups","max_deg","max_degree","partial_cmp","permutation","permutations","point_sets","rotations","serialize","serialize","shuffle","shuffles","size","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Column","Constraint","Gate","Region","VirtualCell","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","column_type","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","index","init","init","init","init","init","into","into","into","into","into","new","partial_cmp","partial_cmp","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","assigned","circuit","error","keygen","lookup","permutation","shuffle","Assigned","Rational","Trivial","Zero","add","add","add","add","add","add","add_assign","add_assign","borrow","borrow_mut","clone","clone_into","cube","denominator","deref","deref_mut","double","drop","eq","evaluate","fmt","from","from","from","from","from","init","into","invert","is_zero_vartime","mul","mul","mul","mul","mul_assign","mul_assign","neg","neg","numerator","square","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","to_owned","try_from","try_into","type_id","vzip","Advice","Assignment","Circuit","ColumnType","Config","Fixed","FloorPlanner","FloorPlanner","Instance","Params","annotate_column","assign_advice","assign_fixed","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","compress_selectors","configure","configure_with_params","constraint_system","copy","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","enable_selector","enter_region","eq","eq","eq","exit_region","expression","fill_from_row","fmt","fmt","fmt","from","from","from","get_challenge","hash","hash","hash","init","init","init","into","into","into","params","pop_namespace","push_namespace","query_cell","query_cell","query_cell","query_cell","query_instance","synthesize","synthesize","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","without_witnesses","Constraint","ConstraintSystem","Constraints","Gate","VirtualCell","VirtualCells","advice_column","advice_column_in","advice_column_phase","advice_queries","annotate_column","annotate_lookup_any_column","annotate_lookup_column","blinding_factors","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge_phase","challenge_usable_after","clone","clone","clone","clone_into","clone_into","clone_into","column","complex_selector","compress_selectors","constants","constraint_name","create_gate","default","degree","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","directly_convert_selectors_to_fixed","drop","drop","drop","drop","drop","drop","enable_constant","enable_equality","fixed_column","fixed_queries","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","gates","general_column_annotations","get_any_query_index","init","init","init","init","init","init","instance_column","instance_queries","into","into","into","into","into","into","into_iter","lookup","lookup_any","lookup_table_column","lookups","minimum_rows","name","num_advice_columns","num_challenges","num_fixed_columns","num_instance_columns","num_selectors","permutation","phases","polynomials","queried_cells","queried_selectors","query_advice","query_any","query_challenge","query_fixed","query_instance","query_selector","rotation","selector","set_minimum_degree","shuffle","shuffles","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","unblinded_advice_column","unblinded_advice_column_in","vzip","vzip","vzip","vzip","vzip","vzip","with_selector","Advice","AdviceQuery","Challenge","Challenge","Column","Constant","Expression","FirstPhase","Fixed","FixedQuery","Instance","InstanceQuery","Negated","Phase","Product","Scaled","SecondPhase","Selector","Selector","Sum","TableColumn","ThirdPhase","add","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","column_index","column_index","column_index","column_index","column_index","column_index","column_type","column_type","complexity","cur","degree","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable","eq","eq","eq","eq","eq","eq","eq","eq","evaluate","evaluate_lazy","expr","expr","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","hash","hash","hash","identifier","index","index","index","index","index","index","index","index","init","init","init","init","init","init","init","init","init","init","init","inner","into","into","into","into","into","into","into","into","into","into","into","is_simple","mul","mul","neg","new","next","partial_cmp","partial_cmp","phase","prev","product","query_cell","query_cells","rot","rotation","rotation","rotation","rotation","rotation","rotation","sealed","square","sub","sum","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_sealed","to_sealed","to_sealed","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Phase","SealedPhase","borrow","borrow_mut","clone","clone_into","cmp","deref","deref_mut","drop","eq","fmt","from","hash","init","into","partial_cmp","prev","to_owned","to_sealed","to_sealed","try_from","try_into","type_id","vzip","AssignAdvice","AssignFixed","AssignmentError","AssignmentError","BoundsFailure","ColumnNotAssigned","ColumnNotInPermutation","Copy","EnableSelector","Error","FillFromRow","NotEnoughColumnsForConstants","NotEnoughRowsAvailable","Other","OverwriteDefault","QueryInstance","Synthesis","TableError","TableError","UnevenColumnLengths","UsedColumn","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","not_enough_rows_available","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","col","col","col","col","desc","desc","desc","from_row","k","k","k","k","k","k","left_col","left_row","right_col","right_row","row","row","row","row","selector","usable_rows","usable_rows","usable_rows","usable_rows","usable_rows","usable_rows","current_k","Argument","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","from","init","input_expressions","into","name","new","table_expressions","to_owned","try_from","try_into","type_id","vzip","Argument","borrow","borrow_mut","clone","clone_into","default","deref","deref_mut","drop","fmt","from","get_columns","init","into","to_owned","try_from","try_into","type_id","vzip","Argument","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","from","init","input_expressions","into","name","new","shuffle_expressions","to_owned","try_from","try_into","type_id","vzip"],"q":[[0,"halo2_frontend"],[3,"halo2_frontend::circuit"],[275,"halo2_frontend::circuit::floor_planner"],[279,"halo2_frontend::circuit::floor_planner::single_pass"],[316,"halo2_frontend::circuit::floor_planner::v1"],[381,"halo2_frontend::circuit::layouter"],[449,"halo2_frontend::dev"],[641,"halo2_frontend::dev::FailureLocation"],[644,"halo2_frontend::dev::VerifyFailure"],[666,"halo2_frontend::dev::cost"],[711,"halo2_frontend::dev::cost_model"],[855,"halo2_frontend::dev::metadata"],[973,"halo2_frontend::plonk"],[980,"halo2_frontend::plonk::assigned"],[1037,"halo2_frontend::plonk::circuit"],[1126,"halo2_frontend::plonk::circuit::constraint_system"],[1281,"halo2_frontend::plonk::circuit::expression"],[1546,"halo2_frontend::plonk::circuit::expression::sealed"],[1571,"halo2_frontend::plonk::error"],[1638,"halo2_frontend::plonk::error::AssignmentError"],[1667,"halo2_frontend::plonk::error::Error"],[1668,"halo2_frontend::plonk::lookup"],[1689,"halo2_frontend::plonk::permutation"],[1708,"halo2_frontend::plonk::shuffle"],[1729,"halo2_frontend::circuit::value"],[1730,"core::ops::arith"],[1731,"ff"],[1732,"core::ops::function"],[1733,"core::result"],[1734,"alloc::string"],[1735,"core::convert"],[1736,"halo2_frontend::circuit::table_layouter"],[1737,"std::collections::hash::map"],[1738,"alloc::vec"],[1739,"core::option"],[1740,"core::clone"],[1741,"halo2_middleware::circuit"],[1742,"core::fmt"],[1743,"core::marker"],[1744,"core::borrow"],[1745,"core::iter::traits::collect"],[1746,"core::any"],[1747,"core::cmp"],[1748,"std::collections::hash::set"],[1749,"core::hash"],[1750,"core::iter::traits::iterator"],[1751,"halo2_frontend::dev::failure"],[1752,"halo2_frontend::dev::gates"],[1753,"halo2_frontend::dev::graph::layout"],[1754,"halo2_frontend::dev::tfp"],[1755,"plotters::coord"],[1756,"plotters::drawing::area"],[1757,"plotters_backend"],[1758,"core::ops::range"],[1759,"group::prime"],[1760,"serde::de"],[1761,"serde::ser"],[1762,"core::default"],[1763,"halo2_middleware::poly"],[1764,"halo2_frontend::dev::graph"]],"i":[0,0,0,0,0,0,48,0,48,0,0,0,0,30,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,13,13,13,23,25,27,13,30,31,30,31,25,1,32,40,41,38,17,13,27,31,25,1,32,40,41,38,17,13,27,31,32,17,1,40,41,38,17,1,40,41,38,17,1,1,38,0,48,13,13,30,31,1,1,17,1,1,25,25,1,32,40,40,41,41,38,17,13,27,31,25,1,32,40,41,38,17,13,27,31,1,25,1,32,40,41,38,17,13,27,31,31,13,41,1,1,17,0,25,1,32,40,41,38,17,13,27,31,25,1,1,32,40,40,41,41,38,17,13,13,27,27,31,1,30,31,30,31,25,1,32,40,41,38,17,13,27,31,13,25,1,32,40,41,38,17,13,27,31,1,1,1,0,48,1,1,1,1,1,1,1,1,1,1,1,13,30,1,25,32,30,31,30,31,38,38,1,1,1,1,1,1,1,1,1,1,1,1,1,40,41,38,17,1,1,25,1,32,40,41,38,17,13,27,31,25,1,32,40,41,38,17,13,27,31,25,1,32,40,41,38,17,13,27,31,1,1,17,17,25,1,32,40,41,38,17,13,27,31,1,0,0,0,0,0,0,67,67,67,69,67,69,67,67,69,67,69,67,69,67,69,67,69,67,67,67,69,67,69,67,67,67,69,67,69,67,69,67,69,67,69,0,0,0,0,70,70,71,70,72,73,71,70,72,73,70,71,70,72,73,71,70,72,73,71,70,72,73,71,70,72,73,71,70,72,73,70,70,71,70,72,73,71,70,72,73,70,70,0,71,71,70,72,73,71,70,72,73,71,70,72,73,71,70,72,73,75,0,0,0,75,0,0,55,74,55,74,55,74,23,55,74,74,75,74,75,74,75,74,75,75,74,55,74,55,74,74,75,74,75,74,75,55,74,75,74,75,74,75,75,75,75,74,75,55,74,74,75,55,74,74,75,74,74,74,75,74,75,74,75,74,75,74,75,80,86,85,0,0,0,0,85,85,0,84,85,0,85,0,84,86,85,80,85,0,80,0,79,79,79,79,79,79,79,79,84,85,87,91,88,80,79,86,84,85,87,91,88,80,79,86,0,84,85,80,86,84,85,80,86,87,79,0,0,79,88,84,85,87,91,88,80,79,86,84,85,87,91,88,80,79,86,84,85,87,91,88,80,79,86,85,79,79,84,85,80,86,79,79,79,79,84,84,85,85,87,87,91,88,80,79,86,84,85,87,91,88,80,79,86,79,84,85,87,91,88,80,79,86,79,79,84,85,87,91,88,80,79,86,88,0,79,79,87,79,88,79,79,88,88,91,84,85,80,86,84,85,87,84,85,87,91,88,80,79,86,84,85,87,91,88,80,79,86,84,85,87,91,88,80,79,86,79,86,79,79,88,88,84,85,87,91,88,80,79,86,146,146,147,148,149,150,151,148,152,149,150,149,150,148,153,154,151,153,153,154,149,149,150,150,154,0,0,0,98,100,101,98,100,101,98,100,101,98,100,101,98,100,101,98,100,101,98,100,101,98,100,101,98,100,101,98,98,98,98,100,101,98,100,101,98,100,101,98,100,101,0,0,108,108,108,0,0,0,0,0,109,107,108,109,102,103,104,105,107,108,109,102,103,104,105,107,102,103,104,105,102,103,104,105,102,107,108,109,102,103,104,105,107,108,109,102,103,104,105,107,104,107,108,109,102,103,104,105,107,108,102,109,108,109,102,103,104,105,107,108,109,102,103,104,105,107,0,0,102,109,108,109,102,103,104,105,107,109,108,109,102,103,104,105,107,109,109,107,109,107,107,109,102,109,107,107,102,104,107,109,107,107,102,103,104,105,108,109,102,103,104,105,107,108,109,102,103,104,105,107,108,109,102,103,104,105,107,108,109,102,103,104,105,107,0,0,0,0,0,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,113,112,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,112,113,113,114,114,115,115,116,116,112,112,113,113,113,113,114,114,115,115,116,116,116,116,116,112,112,112,113,114,115,116,112,113,114,115,116,112,112,113,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,112,113,114,115,116,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,37,0,0,37,0,37,26,26,26,14,28,22,14,28,22,14,28,22,14,28,22,0,37,37,0,26,14,28,22,14,28,22,14,28,22,26,26,14,28,22,26,0,26,14,28,22,14,28,22,26,14,28,22,14,28,22,14,28,22,37,26,26,123,14,28,22,26,92,37,14,28,22,14,28,22,14,28,22,14,28,22,14,28,22,37,0,0,0,0,0,0,44,44,44,44,44,44,44,44,119,128,130,127,44,129,119,128,130,127,44,129,44,44,119,127,44,119,127,44,119,44,44,44,127,44,44,44,119,128,130,127,44,129,119,128,130,127,44,129,44,119,128,130,127,44,129,44,44,44,44,119,128,130,127,44,129,119,119,128,128,128,130,127,44,129,44,44,44,119,128,130,127,44,129,44,44,119,128,130,127,44,129,130,44,44,44,44,44,127,44,44,44,44,44,44,44,127,127,127,129,129,129,129,129,129,119,44,44,44,44,119,127,44,119,128,130,127,44,129,119,128,130,127,44,129,119,128,130,127,44,129,44,44,119,128,130,127,44,129,130,125,0,0,125,0,125,0,0,125,0,125,0,125,0,125,125,0,0,125,125,0,0,125,15,138,139,140,52,135,136,137,24,59,125,15,138,139,140,52,135,136,137,24,59,125,15,52,135,136,137,24,59,125,15,52,135,136,137,24,59,125,15,24,135,136,137,135,136,137,15,15,125,15,125,15,138,139,140,52,135,136,137,24,59,125,15,138,139,140,52,135,136,137,24,59,125,15,138,139,140,52,135,136,137,24,59,125,52,15,52,135,136,137,24,59,125,125,125,52,59,15,138,139,140,52,135,136,137,24,59,125,15,15,15,15,15,138,139,140,52,135,136,137,24,59,59,125,15,52,24,59,125,15,52,59,15,135,136,137,59,15,138,139,140,52,135,136,137,24,59,125,24,15,138,139,140,52,135,136,137,24,59,125,52,125,125,125,15,15,15,24,59,15,125,15,125,15,135,136,137,135,136,137,0,125,125,125,15,52,135,136,137,24,59,125,138,139,140,15,15,15,15,138,139,140,52,135,136,137,24,59,125,15,138,139,140,52,135,136,137,24,59,125,15,138,139,140,52,135,136,137,24,59,125,15,138,139,140,52,135,136,137,24,59,125,0,0,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,143,133,133,133,133,133,145,145,0,11,11,144,11,145,145,0,145,11,11,11,144,145,11,0,11,144,144,11,144,145,11,144,145,11,144,145,11,144,145,11,144,145,11,11,144,144,145,145,11,144,145,11,144,145,11,144,145,11,11,144,145,11,144,145,11,144,145,11,144,145,11,144,145,155,156,157,158,155,156,159,158,155,156,159,157,160,158,160,160,160,160,155,156,159,157,159,155,156,159,157,160,158,161,0,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,0,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,0,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134],"f":"````````````````````{{{d{{b{c}}}}{b{c}}}e{}{}}{{{b{{d{c}}}}{b{c}}}e{}{}}{{{d{{b{c}}}}{d{{b{c}}}}}e{}{}}{{{b{e}}{b{e}}}g{}{{h{}{{f{c}}}}}{}}{{{b{{j{c}}}}c}el{}}{{{b{{j{c}}}}{b{c}}}el{}}{{{b{c}}{b{{d{c}}}}}g{{h{d}{{f{}}}}}{}{}}{{{b{c}}{d{{b{c}}}}}g{{h{d}{{f{}}}}}{}{}}{{{b{{d{{j{c}}}}}}c}el{}}{{{b{{d{{j{c}}}}}}{b{c}}}el{}}{{{b{c}}g}{{b{e}}}{}{}{{n{c}{{f{{b{e}}}}}}}}{{{d{A`{b{c}}}}}{{b{{d{A`c}}}}}{}}{{{d{{b{c}}}}}{{b{{d{c}}}}}{}}{{{d{{b{c}}}}e}Ab{}{{n{{d{c}}}{{f{Ad}}}}}}{{{b{c}}}{{Ah{cAf}}}{}}{{{d{A`{Aj{c}}}}g{An{Al}}B`k}{{Ah{{Bb{ic}}Af}}}l{{Bf{Bd}}}{{Bh{}{{f{e}}}}}{}{{Bj{}{{f{{b{i}}}}}}}}{{{d{A`{Aj{c}}}}g{An{Al}}B`i}{{Ah{{Bb{ic}}Af}}}l{{Bf{Bd}}}{{Bh{}{{f{e}}}}}{}}{{{d{A`{Aj{c}}}}g{An{Bl}}B`{An{Al}}B`}{{Ah{{Bb{cc}}Af}}}l{{Bf{Bd}}}{{Bh{}{{f{e}}}}}}{{{d{A`Bn}}{d{Bh}}C`B`{d{A`Bj}}}{{Ah{AbAf}}}}{{{d{A`{Cb{ce}}}}{d{Bh}}C`B`{d{A`Bj}}}{{Ah{AbAf}}}l{{Cd{c}}}}{{{d{A`{Cf{c}}}}gC`B`k}{{Ah{AbAf}}}l{{Bf{Bd}}}{{Bh{}{{f{e}}}}}{{Bf{{j{c}}}}}{{Bj{}{{f{{b{i}}}}}}}}{{{d{A`{Aj{c}}}}g{An{Ch}}B`k}{{Ah{{Bb{ic}}Af}}}l{{Bf{Bd}}}{{Bh{}{{f{e}}}}}{}{{Bj{}{{f{{b{i}}}}}}}}{{{d{A`{Cl{}{{Cj{c}}}}}}im}{{Ah{kAf}}}{{Cl{e}}}l{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{}{{Bj{{Aj{e}}}{{f{{Ah{kAf}}}}}}}}{{{d{A`{Cn{ce}}}}im}{{Ah{kAf}}}l{{Cl{c}}}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{}{{Bj{{Aj{c}}}{{f{{Ah{kAf}}}}}}}}{{{d{A`{Cl{}{{Cj{c}}}}}}ik}{{Ah{AbAf}}}{{Cl{e}}}l{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{{Bj{{Cf{e}}}{{f{{Ah{AbAf}}}}}}}}{{{d{A`{Cn{ce}}}}ik}{{Ah{AbAf}}}l{{Cl{c}}}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{{Bj{{Cf{c}}}{{f{{Ah{AbAf}}}}}}}}{{{d{c}}}{{d{e}}}{}{}}000000000{{{d{A`c}}}{{d{A`e}}}{}{}}000000000{{{d{A`{D`{ce}}}}Db{d{{Dd{B`c}}}}}{{Ah{{Df{{Dh{{Df{c}}}}}}Af}}}l{{Dj{c}}}}{{{d{{Bb{ce}}}}}Dl{}l}{{{d{{b{c}}}}}{{b{c}}}Dn}{{{d{E`}}}E`}{{{d{Eb}}}Eb}{{{d{Dl}}}Dl}{{{d{{Bb{ce}}}}}{{Bb{ce}}}Dn{Dnl}}{{{d{c}}{d{A`e}}}Ab{}{}}0000{{{b{{d{A`c}}}}}{{b{c}}}Dn}{{{b{{d{c}}}}}{{b{c}}}Dn}`{{Ed{d{e}}Ad}{{Ah{{Ej{{Ef{c}}{Eh{c}}}}Af}}}l{{Dj{c}}}}{{{d{{F`{}{{El{c}}{En{e}}}}}}}{{d{c}}}{FbDn}{FbDn}}{{{d{A`{Aj{c}}}}Dle}{{Ah{AbAf}}}l{{Bf{{j{c}}}}}}{{{d{A`{Aj{c}}}}DlDl}{{Ah{AbAf}}}l}{{{d{A`{Cl{}{{Cj{c}}}}}}Dl{An{Bl}}B`}{{Ah{AbAf}}}{{Cl{e}}}l}{{{d{A`{Cn{ce}}}}Dl{An{Bl}}B`}{{Ah{AbAf}}}l{{Cl{c}}}}{{{b{{d{A`c}}}}}{{b{c}}}Fd}{{{b{{d{c}}}}}{{b{c}}}Fd}{{{d{{Bb{ce}}}}i{d{A`{Aj{e}}}}{An{Al}}B`}{{Ah{{Bb{ce}}Af}}}Dnl{{Bf{Bd}}}{{Bh{}{{f{g}}}}}}{{{d{{b{e}}}}}{{b{{j{c}}}}}l{{Ff{{j{c}}}}}}{{}{{b{c}}}{}}`{B`{{d{c}}}{}}000{{{d{E`}}}{{d{c}}}{}}1{{{d{Eb}}}{{d{c}}}{}}22222{B`{{d{A`c}}}{}}0000000005{B`Ab}00000000{{{d{A`{Cn{ce}}}}}Abl{{Cl{c}}}}1{{{d{A`{Aj{c}}}}g{d{Fh}}B`}{{Ah{AbAf}}}l{{Bf{Bd}}}{{Bh{}{{f{e}}}}}}{{{d{Eb}}{d{Eb}}}Ad}{{{d{{b{c}}}}e}{{Ah{AbAf}}}{}{{n{{d{c}}}{{f{Ad}}}}}}{{{b{{j{c}}}}}{{b{c}}}l}{{{Bb{{j{c}}c}}}{{Bb{cc}}}l}`{{{d{{Cb{ce}}}}{d{A`Fj}}}Fll{{Cd{c}}}}{{{d{{b{c}}}}{d{A`Fj}}}FlFb}{{{d{{D`{ce}}}}{d{A`Fj}}}Fl{Fbl}{Fb{Dj{c}}}}{{{d{E`}}{d{A`Fj}}}Fl}{{{d{Eb}}{d{A`Fj}}}Fl}{{{d{Dl}}{d{A`Fj}}}Fl}{{{d{{Bb{ce}}}}{d{A`Fj}}}FlFb{Fbl}}{{{d{{Aj{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{Cf{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{Cn{ce}}}}{d{A`Fj}}}Fl{Fbl}{Fb{Cl{c}}}}{cc{}}0{{{b{c}}}{{b{{j{c}}}}}l}1{B`E`}22{B`Eb}33{{{d{A`Fn}}}{{Aj{c}}}l}44{{{d{A`Bn}}}{{Cf{c}}}l}5{e{{b{g}}}{}{{Gb{}{{G`{{b{c}}}}}}}{{Gd{c}}}}{{{d{{Cl{}{{Cj{c}}}}}}Gf}{{b{e}}}{{Cl{e}}}l}{{{d{{Cn{ce}}}}Gf}{{b{c}}}l{{Cl{c}}}}{{{d{A`{Cl{}{{Cj{c}}}}}}}{{d{A`c}}}{{Cl{e}}}l}{{{d{A`{Cn{ce}}}}}{{d{A`g}}}l{{Cl{c}}}{}}{{}B`}000000000{{{d{A`{Aj{c}}}}{An{Bl}}B`}{{Ah{{b{c}}Af}}}l}{ce{}{}}000000000{{{b{e}}}{{b{{j{c}}}}}l{{Bf{{j{c}}}}}}{{{d{{b{e}}}}}{{b{{j{c}}}}}l{{Ff{{j{c}}}}}}{c{{b{c}}}{}}`{{{d{{F`{}{{El{c}}{En{e}}}}}}}{{d{e}}}{FbDn}{FbDn}}{{{b{c}}g}{{b{e}}}{}{}{{n{c}{{f{e}}}}}}{{{d{{b{c}}}}{d{{b{c}}}}}e{}{}}{{{b{{j{c}}}}{b{c}}}el{}}{{{d{{b{c}}}}{b{c}}}e{}{}}{{{b{{d{{j{c}}}}}}c}el{}}{{{b{{j{c}}}}c}el{}}{{{b{{d{{j{c}}}}}}{b{c}}}el{}}{{{b{{d{c}}}}{b{c}}}e{}{}}{{{b{c}}{d{{b{c}}}}}g{{Gh{d}{{f{}}}}}{}{}}{{{b{c}}{b{{d{c}}}}}g{{Gh{d}{{f{}}}}}{}{}}{{{b{e}}{b{e}}}g{}{{Gh{}{{f{c}}}}}{}}{{{d{A`{Aj{c}}}}gi}Abl{{Bf{Bd}}}{{Bh{}{{f{e}}}}}{{Bf{{An{Gj}}}}}}{{{d{A`{Cl{}{{Cj{c}}}}}}i}{{Cn{ec}}}{{Cl{e}}}l{{Bf{Bd}}}{{n{}{{f{g}}}}}}{{{b{c}}}eGl{}}{{{d{A`e}}{d{{Gn{C`}}}}}{{Cb{ce}}}l{{Cd{c}}}}{{Ed{d{e}}d{d{{Eh{c}}}}{d{{Gn{{Df{c}}}}}}}{{D`{ce}}}l{{Dj{c}}}}{{{d{A`{Cl{}{{Cj{c}}}}}}{Dh{Bd}}}Ab{{Cl{e}}}l}{{{d{A`{Cn{ce}}}}{Dh{Bd}}}Abl{{Cl{c}}}}{{{d{A`{Cl{}{{Cj{c}}}}}}i}Ab{{Cl{e}}}l{{Bf{Bd}}}{{n{}{{f{g}}}}}}{{{d{A`{Cn{ce}}}}i}Abl{{Cl{c}}}{{Bf{Bd}}}{{n{}{{f{g}}}}}}``{{{d{{b{e}}}}}{{b{{j{c}}}}}l{{Ff{{j{c}}}}}}{{{b{c}}{d{{b{c}}}}}g{{H`{d}{{f{}}}}}{}{}}?{{{d{{b{c}}}}{b{c}}}e{}{}}{{{b{c}}{b{{d{c}}}}}g{{H`{d}{{f{}}}}}{}{}}{{{b{{d{{j{c}}}}}}c}el{}}{{{b{{j{c}}}}c}el{}}{{{b{e}}{b{e}}}g{}{{H`{}{{f{c}}}}}{}}{{{b{{d{c}}}}{b{c}}}e{}{}}{{{d{{b{c}}}}{d{{b{c}}}}}e{}{}}{{{b{{j{c}}}}{b{c}}}el{}}{{{d{{b{c}}}}}{{b{{j{e}}}}}{}l}{{{d{c}}}e{}{}}0000{{{b{{Hb{c}}}}}{{Hb{{b{c}}}}}Fd}{{{b{e}}B`}{{Df{{b{c}}}}}{}{{Gb{}{{G`{c}}}}}}{c{{Ah{e}}}{}{}}0000000000000000000{{{d{c}}}Hd{}}000000000{{}{{b{c}}}{}}{{{b{{Ej{ce}}}}}{{Ej{{b{c}}{b{e}}}}}{}{}}{{{d{{Bb{ce}}}}}{{b{{d{c}}}}}{}l}{{{d{{Bb{ce}}}}}{{b{{j{e}}}}}{}l}{ce{}{}}000000000{{{b{c}}{b{e}}}{{b{{Ej{ce}}}}}{}{}}``````{{{d{A`{Hf{ce}}}}im}{{Ah{kAf}}}l{{Cd{c}}Hh}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{}{{Bj{{Aj{c}}}{{f{{Ah{kAf}}}}}}}}{{{d{A`{Hf{ce}}}}ik}{{Ah{AbAf}}}l{{Cd{c}}Hh}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{{Bj{{Cf{c}}}{{f{{Ah{AbAf}}}}}}}}{{{d{c}}}{{d{e}}}{}{}}0{{{d{A`c}}}{{d{A`e}}}{}{}}0{{{d{A`{Hf{ce}}}}Dl{An{Bl}}B`}{{Ah{AbAf}}}l{{Cd{c}}Hh}}{B`{{d{c}}}{}}0{B`{{d{A`c}}}{}}0{B`Ab}0{{{d{{Hf{ce}}}}{d{A`Fj}}}Fll{{Cd{c}}}}{{{d{Hj}}{d{A`Fj}}}Fl}{cc{}}0{{{d{{Hf{ce}}}}Gf}{{b{c}}}l{{Cd{c}}Hh}}{{{d{A`{Hf{ce}}}}}{{d{A`g}}}l{{Cd{c}}Hh}{}}{{}B`}0??{{{d{A`e}}{Df{{An{Ch}}}}}{{Ah{{Hf{ce}}Af}}}l{{Cd{c}}}}{{{d{A`{Hf{ce}}}}{Dh{Bd}}}Abl{{Cd{c}}Hh}}{{{d{A`{Hf{ce}}}}i}Abl{{Cd{c}}Hh}{{Bf{Bd}}}{{n{}{{f{g}}}}}}{{{d{A`e}}{d{g}}{Df{{An{Ch}}}}}{{Ah{AbAf}}}l{{Cd{c}}Hh}{{Dj{c}}}}{c{{Ah{e}}}{}{}}000{{{d{c}}}Hd{}}0{ce{}{}}0````{{{d{A`{Hl{ce}}}}im}{{Ah{kAf}}}l{{Cd{c}}Hh}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{}{{Bj{{Aj{c}}}{{f{{Ah{kAf}}}}}}}}{{{d{A`{Hl{ce}}}}ik}{{Ah{AbAf}}}l{{Cd{c}}Hh}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}{{Bj{{Cf{c}}}{{f{{Ah{AbAf}}}}}}}}{{{d{c}}}{{d{e}}}{}{}}000{{{d{A`c}}}{{d{A`e}}}{}{}}000{{{d{A`{Hl{ce}}}}Dl{An{Bl}}B`}{{Ah{AbAf}}}l{{Cd{c}}Hh}}{B`{{d{c}}}{}}000{B`{{d{A`c}}}{}}000{B`Ab}000{{{d{Hn}}{d{A`Fj}}}Fl}{{{d{{Hl{ce}}}}{d{A`Fj}}}Fl{Fbl}{Fb{Cd{c}}}}{{{d{I`}}{d{A`Fj}}}Fl}{{{d{{Ib{ce}}}}{d{A`Fj}}}Fl{Fbl}{Fb{Cd{c}}}}{cc{}}000{{{d{{Hl{ce}}}}Gf}{{b{c}}}l{{Cd{c}}Hh}}{{{d{A`{Hl{ce}}}}}{{d{A`g}}}l{{Cd{c}}Hh}{}}{{}B`}000{ce{}{}}000{{{d{A`{Hl{ce}}}}{Dh{Bd}}}Abl{{Cd{c}}Hh}}{{{d{A`{Hl{ce}}}}i}Abl{{Cd{c}}Hh}{{Bf{Bd}}}{{n{}{{f{g}}}}}}`{{{d{A`e}}{d{g}}{Df{{An{Ch}}}}}{{Ah{AbAf}}}l{{Cd{c}}Hh}{{Dj{c}}}}{c{{Ah{e}}}{}{}}0000000{{{d{c}}}Hd{}}0005555```````{{{d{A`Fn}}{d{Bh}}{An{Al}}B`{d{A`Bj}}}{{Ah{DlAf}}}}{{{d{A`Id}}{d{Bh}}{An{Al}}B`{d{A`Bj}}}{{Ah{DlAf}}}}{{{d{A`Fn}}{d{Bh}}{An{Al}}B`{j{c}}}{{Ah{DlAf}}}l}{{{d{A`Id}}{d{Bh}}{An{Al}}B`{j{c}}}{{Ah{DlAf}}}l}{{{d{A`Fn}}{d{Bh}}{An{Bl}}B`{An{Al}}B`}{{Ah{{Ej{Dl{b{c}}}}Af}}}l}{{{d{A`Id}}{d{Bh}}{An{Bl}}B`{An{Al}}B`}{{Ah{{Ej{Dl{b{c}}}}Af}}}l}{{{d{A`Bn}}{d{Bh}}C`B`{d{A`Bj}}}{{Ah{AbAf}}}}{{{d{A`Fn}}{d{Bh}}{An{Ch}}B`{d{A`Bj}}}{{Ah{DlAf}}}}{{{d{A`Id}}{d{Bh}}{An{Ch}}B`{d{A`Bj}}}{{Ah{DlAf}}}}{{{d{c}}}{{d{e}}}{}{}}0{{{d{A`c}}}{{d{A`e}}}{}{}}0{{{d{Id}}}Id}{{{d{If}}}If}{{{d{c}}{d{A`e}}}Ab{}{}}0{{{d{If}}{d{If}}}Ih}{{{d{Id}}}{{d{{Ij{If}}}}}}{{{d{A`Fn}}Dl{j{c}}}{{Ah{AbAf}}}l}{{{d{A`Id}}Dl{j{c}}}{{Ah{AbAf}}}l}{{{d{A`Fn}}DlDl}{{Ah{AbAf}}}}{{{d{A`Id}}DlDl}{{Ah{AbAf}}}}{B`{{d{c}}}{}}0{B`{{d{A`c}}}{}}0{B`Ab}0{{{d{A`Fn}}{d{Bh}}{d{Fh}}B`}{{Ah{AbAf}}}}{{{d{A`Id}}{d{Bh}}{d{Fh}}B`}{{Ah{AbAf}}}}{{{d{If}}{d{If}}}Ad}{{{d{Id}}{d{A`Fj}}}Fl}{{{d{If}}{d{A`Fj}}}Fl}{cc{}}0{FhIf}{{{An{Gj}}}If}{{{d{If}}{d{A`c}}}AbIl}{{}B`}0{{{d{A`Fn}}{An{Bl}}B`}{{Ah{{b{c}}Af}}}l}{{{d{A`Id}}{An{Bl}}B`}{{Ah{{b{c}}Af}}}l}{ce{}{}}0{{{d{A`Fn}}{d{Bh}}{An{Gj}}}Ab}{{{d{A`Id}}{d{Bh}}{An{Gj}}}Ab}{E`Id}{{{d{If}}{d{If}}}{{Dh{Ih}}}}{{{d{Id}}}E`}{{{d{Id}}}B`}{{{d{c}}}e{}{}}0{c{{Ah{e}}}{}{}}000{{{d{c}}}Hd{}}099```````````````````````{{{d{{In{c}}}}}{{d{{Df{{Df{{J`{c}}}}}}}}}{JbJd}}{{{d{A`{In{c}}}}B`}{{d{A`{Gn{{J`{c}}}}}}}l}{{{d{{In{c}}}}{An{Al}}}{{d{{Gn{{J`{c}}}}}}}{JbJd}}{{{d{A`{In{c}}}}g{An{Gj}}}Abl{{Bf{Bd}}}{{n{}{{f{e}}}}}}{{{d{{In{c}}}}}Ab{JbJd}}{{{d{{In{c}}}}ee}Ab{JbJd}{Dn{Jf{}{{G`{B`}}}}}}{{{d{A`{In{c}}}}g{An{Al}}B`k}{{Ah{AbAf}}}l{{Bf{Bd}}}{{n{}{{f{e}}}}}{{Bf{{j{c}}}}}{{n{}{{f{{b{i}}}}}}}}{{{d{A`{In{c}}}}g{An{Ch}}B`k}{{Ah{AbAf}}}l{{Bf{Bd}}}{{n{}{{f{e}}}}}{{Bf{{j{c}}}}}{{n{}{{f{{b{i}}}}}}}}{{{d{c}}}{{d{e}}}{}{}}0000000{{{d{A`c}}}{{d{A`e}}}{}{}}0000000{{{d{e}}}Bdl{{Dj{c}}}}{{{d{Jh}}}Jh}{{{d{Jj}}}Jj}{{{d{{J`{c}}}}}{{J`{c}}}{Dnl}}{{{d{{Jl{c}}}}}{{Jl{c}}}{Dnl}}{{{d{c}}{d{A`e}}}Ab{}{}}000{{}Jn}{{{d{A`{In{c}}}}{An{Gj}}B`{An{Gj}}B`}{{Ah{AbAf}}}l}``{{{d{{In{c}}}}}{{d{{Eh{c}}}}}{JbJd}}{{}K`}{B`{{d{c}}}{}}0000000{B`{{d{A`c}}}{}}0000000{B`Ab}0000000{{{d{Jj}}{d{{In{c}}}}}Abl}{{{d{A`{In{c}}}}g{d{Fh}}B`}{{Ah{AbAf}}}l{{Bf{Bd}}}{{n{}{{f{e}}}}}}{{{d{A`{In{c}}}}g}Abl{{Bf{Bd}}}{{n{}{{f{e}}}}}}{{{d{Jh}}{d{Jh}}}Ad}{{{d{Jj}}{d{Jj}}}Ad}{{{d{{J`{c}}}}{d{{J`{c}}}}}Ad{Kbl}}{{{d{{Jl{c}}}}{d{{Jl{c}}}}}Ad{Kbl}}{{{d{A`{In{c}}}}}Abl}{{{d{A`{In{c}}}}{An{Ch}}B`{b{{j{c}}}}}{{Ah{AbAf}}}l}{{{d{{In{c}}}}}{{d{{Df{{Df{{J`{c}}}}}}}}}{JbJd}}{{{d{{In{c}}}}{An{Ch}}}{{d{{Gn{{J`{c}}}}}}}{JbJd}}{{{d{Jh}}{d{A`Fj}}}Fl}0{{{d{Jj}}{d{A`Fj}}}Fl}0{{{d{Jn}}{d{A`Fj}}}{{Ah{AbKd}}}}{{{d{Jn}}{d{A`Fj}}}Fl}{{{d{{Kf{c}}}}{d{A`Fj}}}Fl{FbKh}}{{{d{K`}}{d{A`Fj}}}Fl}{{{d{{J`{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{In{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{Jl{c}}}}{d{A`Fj}}}Fl{Fbl}}{cc{}}0000000{{{d{{In{c}}}}Gf}{{b{c}}}l}{{}B`}0000000{{{d{{In{c}}}}}{{d{{Df{{Df{{Jl{c}}}}}}}}}{JbJd}}{{{d{A`{In{c}}}}B`}{{d{A`{Gn{{Jl{c}}}}}}}l}{ce{}{}}0000000{{K`Ad}K`}`{{{d{A`{In{c}}}}{Dh{Bd}}}Abl}{{{d{A`{In{c}}}}g}Abl{{Bf{Bd}}}{{n{}{{f{e}}}}}}{{{d{Jn}}}Bd}{{{d{{In{c}}}}{An{Bl}}B`}{{Ah{{b{c}}Af}}}l}{{K`Ed{d{e}}{d{{Kl{gKj}}}}}{{Ah{AbKn}}}l{{Dj{c}}}L`}{{Ed{d{e}}{Df{{Df{c}}}}}{{Ah{{In{c}}Af}}}{JbJd}{{Dj{c}}}}{{{d{{In{c}}}}}{{d{{Df{{Df{Ad}}}}}}}{JbJd}}77{{{d{A`e}}{d{g}}{Df{{An{Ch}}}}}{{Ah{AbAf}}}l{{Cd{c}}Hh}{{Dj{c}}}}{{{d{c}}}e{}{}}000{{{d{c}}}Bd{}}00{c{{Ah{e}}}{}{}}000000000000000{{{d{c}}}Hd{}}0000000{{{d{{In{c}}}}}{{d{{Lb{B`}}}}}{JbJd}}{{{d{{Jl{c}}}}}cl}{{{d{{In{c}}}}}{{Ah{Ab{Df{Jj}}}}}{JbJd}}{{{d{{In{c}}}}ee}{{Ah{Ab{Df{Jj}}}}}{JbJd}{Dn{Jf{}{{G`{B`}}}}}}{{K`{Lb{B`}}}K`}0{ce{}{}}0000000````````````````````````````{{{d{c}}}{{d{e}}}{}{}}00{{{d{A`c}}}{{d{A`e}}}{}{}}00{B`{{d{c}}}{}}00{B`{{d{A`c}}}{}}00{B`Ab}00{{{d{{Ld{ce}}}}{d{A`Fj}}}Fl{FbLf}{FbDj}}{{{d{{Lh{c}}}}{d{A`Fj}}}Fl{FbLf}}{{{d{{Lj{c}}}}{d{A`Fj}}}Fl{FbLf}}{cc{}}00{{}B`}00:::{{{d{{Ld{ce}}}}}{{Lh{c}}}LfDj}{{Ed{d{c}}}{{Ld{ec}}}DjLf}{{{d{{Ld{ce}}}}B`}{{Lj{c}}}LfDj}{c{{Ah{e}}}{}{}}00000{{{d{c}}}Hd{}}00???````````````>>>>>>>======={{{d{Ll}}}Ll}{{{d{Ln}}}Ln}{{{d{M`}}}M`}{{{d{Mb}}}Mb}{{{d{c}}{d{A`e}}}Ab{}{}}000{{{d{Ll}}{d{Ll}}}Ih}`{B`{{d{c}}}{}}000000{B`{{d{A`c}}}{}}000000{c{{Ah{M`}}}Md}{c{{Ah{Mf}}}Md}{B`Ab}000000{{{d{Mh}}{d{Mh}}}Ad}{{{d{Ll}}{d{Ll}}}Ad}`{{{d{Mh}}{d{A`Fj}}}Fl}{{{d{Mj}}{d{A`Fj}}}Fl}{{{d{Ll}}{d{A`Fj}}}Fl}{{{d{Ln}}{d{A`Fj}}}Fl}{{{d{M`}}{d{A`Fj}}}Fl}{{{d{Mb}}{d{A`Fj}}}Fl}{{{d{Mf}}{d{A`Fj}}}Fl}{cc{}}000000{{Ed{d{e}}{Df{{Df{c}}}}}Mj{JdlJb}{{Dj{c}}}}{{Ed{d{e}}{Df{{Df{c}}}}Mh}Mf{JdlJb}{{Dj{c}}}}{{{d{Ml}}}{{Ah{Llc}}}{}}`{{}B`}000000`{ce{}{}}000000{{{d{Mj}}Mh}Mf}``````{{{d{Ll}}{d{Ll}}}{{Dh{Ih}}}}````{{{d{M`}}c}AhMn}{{{d{Mf}}c}AhMn}```{{{d{c}}}e{}{}}000{c{{Ah{e}}}{}{}}0000000000000{{{d{c}}}Hd{}}0000007777777`````{{{d{c}}}{{d{e}}}{}{}}0000{{{d{A`c}}}{{d{A`e}}}{}{}}0000{{{d{N`}}}N`}{{{d{Nb}}}Nb}{{{d{Nd}}}Nd}{{{d{Nf}}}Nf}{{{d{Nh}}}Nh}{{{d{c}}{d{A`e}}}Ab{}{}}0000{{{d{N`}}{d{N`}}}Ih}{{{d{Nb}}{d{Nb}}}Ih}`{B`{{d{c}}}{}}0000{B`{{d{A`c}}}{}}0000{B`Ab}0000{{{d{N`}}{d{N`}}}Ad}{{{d{Nb}}{d{Nb}}}Ad}{{{d{Nd}}{d{Nd}}}Ad}{{{d{Nf}}{d{Nf}}}Ad}{{{d{Nh}}{d{Nh}}}Ad}{{{d{N`}}{d{A`Fj}}}{{Ah{AbKd}}}}0{{{d{Nb}}{d{A`Fj}}}Fl}0{{{d{Nd}}{d{A`Fj}}}Fl}0{{{d{Nf}}{d{A`Fj}}}Fl}0{{{d{Nh}}{d{A`Fj}}}Fl}0{cc{}}{{{An{Gj}}}N`}{{{Ej{cN`Nj}}}Nb{{Nl{Ml}}}}{NnNb}{{{Ej{N`Nj}}}Nb}44{{{Ej{B`c}}}Nd{{Nl{Ml}}}}{{{Ej{NdB`c}}}Nf{{Nl{Ml}}}}6{{{Ej{B`{d{Ml}}}}}Nh}{{{Ej{B`Bd}}}Nh}{{{Ej{B`Bd{Dd{N`Bd}}}}}Nh}9{{{Ej{B`{d{Ml}}{Dd{N`Bd}}}}}Nh}{{{d{N`}}{d{A`c}}}AbIl}`{{}B`}0000{ce{}{}}0000{{GjB`}N`}{{{d{N`}}{d{N`}}}{{Dh{Ih}}}}{{{d{Nb}}{d{Nb}}}{{Dh{Ih}}}}{{{d{c}}}e{}{}}0000{{{d{c}}}Bd{}}0000{c{{Ah{e}}}{}{}}000000000{{{d{c}}}Hd{}}000077777```````````{{{j{c}}{d{{j{c}}}}}{{j{c}}}l}{{{d{{j{c}}}}{j{c}}}{{j{c}}}l}{{{d{{j{c}}}}c}{{j{c}}}l}{{{d{{j{c}}}}{d{{j{c}}}}}{{j{c}}}l}{{{j{c}}c}{{j{c}}}l}{{{j{c}}{j{c}}}{{j{c}}}l}{{{d{A`{j{c}}}}{d{{j{c}}}}}Abl}{{{d{A`{j{c}}}}{j{c}}}Abl}{{{d{c}}}{{d{e}}}{}{}}{{{d{A`c}}}{{d{A`e}}}{}{}}{{{d{{j{c}}}}}{{j{c}}}Dn}{{{d{c}}{d{A`e}}}Ab{}{}}{{{d{{j{c}}}}}{{j{c}}}l}{{{d{{j{c}}}}}{{Dh{c}}}l}{B`{{d{c}}}{}}{B`{{d{A`c}}}{}}3{B`Ab}{{{d{{j{c}}}}{d{{j{c}}}}}Adl}{{{j{c}}}cl}{{{d{{j{c}}}}{d{A`Fj}}}FlFb}{{{d{c}}}{{j{c}}}l}{{{Ej{cc}}}{{j{c}}}l}9{cc{}}{c{{j{c}}}l}{{}B`}{ce{}{}}={{{d{{j{c}}}}}Adl}{{{j{c}}c}{{j{c}}}l}{{{d{{j{c}}}}c}{{j{c}}}l}{{{j{c}}{d{{j{c}}}}}{{j{c}}}l}{{{j{c}}{j{c}}}{{j{c}}}l}{{{d{A`{j{c}}}}{d{{j{c}}}}}Abl}{{{d{A`{j{c}}}}{j{c}}}Abl}{{{d{{j{c}}}}}el{}}{{{j{c}}}el{}}{{{d{{j{c}}}}}cl}{{{d{{j{c}}}}}{{j{c}}}l}897{{{d{{j{c}}}}{j{c}}}{{j{c}}}l}{{{d{{j{c}}}}{d{{j{c}}}}}{{j{c}}}l}876{{{d{c}}}e{}{}}{c{{Ah{e}}}{}{}}0{{{d{c}}}Hd{}}{ce{}{}}``````````{{{d{A`Cd}}e{An{Gj}}}Ab{{Bf{Bd}}}{{n{}{{f{c}}}}}}{{{d{A`Cd}}e{An{Al}}B`k}{{Ah{AbAf}}}{{Bf{Bd}}}{{n{}{{f{c}}}}}l{{Bf{{j{g}}}}}{{n{}{{f{{b{i}}}}}}}}{{{d{A`Cd}}e{An{Ch}}B`k}{{Ah{AbAf}}}{{Bf{Bd}}}{{n{}{{f{c}}}}}l{{Bf{{j{g}}}}}{{n{}{{f{{b{i}}}}}}}}{{{d{c}}}{{d{e}}}{}{}}00{{{d{A`c}}}{{d{A`e}}}{}{}}00{{{d{Al}}}Al}{{{d{Ch}}}Ch}{{{d{Bl}}}Bl}{{{d{c}}{d{A`e}}}Ab{}{}}00`{{{d{A`{Eh{c}}}}}el{}}{{{d{A`{Eh{c}}}}e}gl{}{}}`{{{d{A`Cd}}{An{Gj}}B`{An{Gj}}B`}{{Ah{AbAf}}}}{B`{{d{c}}}{}}00{B`{{d{A`c}}}{}}00{B`Ab}00{{{d{A`Cd}}e{d{Fh}}B`}{{Ah{AbAf}}}{{Bf{Bd}}}{{n{}{{f{c}}}}}}{{{d{A`Cd}}e}Ab{{Bf{Bd}}}{{n{}{{f{c}}}}}}{{{d{Al}}{d{Al}}}Ad}{{{d{Ch}}{d{Ch}}}Ad}{{{d{Bl}}{d{Bl}}}Ad}{{{d{A`Cd}}}Ab}`{{{d{A`Cd}}{An{Ch}}B`{b{{j{c}}}}}{{Ah{AbAf}}}l}{{{d{Al}}{d{A`Fj}}}Fl}{{{d{Ch}}{d{A`Fj}}}Fl}{{{d{Bl}}{d{A`Fj}}}Fl}{cc{}}00{{{d{Cd}}Gf}{{b{c}}}l}{{{d{Al}}{d{A`c}}}AbIl}{{{d{Ch}}{d{A`c}}}AbIl}{{{d{Bl}}{d{A`c}}}AbIl}{{}B`}00{ce{}{}}00{{{d{{Dj{}{{El{c}}{O`{e}}{Ob{g}}}}}}}gDnKhOd}{{{d{A`Cd}}{Dh{Bd}}}Ab}{{{d{A`Cd}}e}Ab{{Bf{Bd}}}{{n{}{{f{c}}}}}}{{{d{Of}}B`Oh}{{Oj{c}}}l}{{{d{Al}}B`Oh}{{Oj{c}}}l}{{{d{Ch}}B`Oh}{{Oj{c}}}l}{{{d{Bl}}B`Oh}{{Oj{c}}}l}{{{d{Cd}}{An{Bl}}B`}{{Ah{{b{c}}Af}}}l}{{{d{A`e}}{d{g}}{Df{{An{Ch}}}}}{{Ah{AbAf}}}l{{Cd{c}}Hh}{{Dj{c}}}}{{{d{{Dj{}{{El{c}}{O`{e}}{Ob{g}}}}}}ck}{{Ah{AbAf}}}DnKhOdl{{Cl{i}}}}{{{d{c}}}e{}{}}00{c{{Ah{e}}}{}{}}00000{{{d{c}}}Hd{}}00==={{{d{{Dj{}{{El{c}}{O`{e}}{Ob{g}}}}}}}{{Dj{}{{El{c}}{O`{e}}{Ob{g}}}}}DnKhOd}``````{{{d{A`{Eh{c}}}}}{{An{Al}}}l}{{{d{A`{Eh{c}}}}e}{{An{Al}}}lOl}{{{d{{Eh{c}}}}}{{Df{Db}}}l}{{{d{{Eh{c}}}}}{{d{{Df{{Ej{{An{Al}}Oh}}}}}}}l}{{{d{A`{Eh{c}}}}ei}Abl{{Bf{{An{Gj}}}}}{{Bf{Bd}}}{{Bh{}{{f{g}}}}}}0{{{d{A`{Eh{c}}}}C`g}Abl{{Bf{Bd}}}{{Bh{}{{f{e}}}}}}{{{d{{Eh{c}}}}}B`l}{{{d{c}}}{{d{e}}}{}{}}00000{{{d{A`c}}}{{d{A`e}}}{}{}}000006{{{d{A`{Eh{c}}}}e}GflOl}{{{d{Nn}}}Nn}{{{d{{On{c}}}}}{{On{c}}}{Dnl}}{{{d{{Eh{c}}}}}{{Eh{c}}}{Dnl}}{{{d{c}}{d{A`e}}}Ab{}{}}00`{{{d{A`{Eh{c}}}}}Fhl}{{{Eh{c}}{Df{{Df{Ad}}}}}{{Ej{{Eh{c}}{Df{{Df{c}}}}}}}l}{{{d{{Eh{c}}}}}{{d{{Df{{An{Ch}}}}}}}l}{{{d{{On{c}}}}B`}{{d{Ml}}}l}{{{d{A`{Eh{c}}}}ek}Abl{{Nl{Ml}}}{{Bf{{A@`{c}}}}}{{Gb{}{{G`{g}}}}}{{n{{d{A`{A@b{c}}}}}{{f{i}}}}}}{{}{{Eh{c}}}l}={B`{{d{c}}}{}}00000{B`{{d{A`c}}}{}}000006{B`Ab}00000{{{d{A`{Eh{c}}}}{An{Ch}}}Abl}{{{d{A`{Eh{c}}}}e}Abl{{Bf{{An{Gj}}}}}}{{{d{A`{Eh{c}}}}}{{An{Ch}}}l}{{{d{{Eh{c}}}}}{{d{{Df{{Ej{{An{Ch}}Oh}}}}}}}l}{{{d{Nn}}{d{A`Fj}}}Fl}{{{d{{A@`{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{A@d{ceg}}}}{d{A`Fj}}}Fl{Fbl}{Fb{Bf{{A@`{c}}}}}{Fb{Gb{}{{G`{e}}}}}}{{{d{{On{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{Eh{c}}}}{d{A`Fj}}}Fl{Fbl}}{{{d{{A@b{c}}}}{d{A`Fj}}}Fl{Fbl}}{cc{}}{{{Ej{cOh}}}Nn{{Bf{{An{Gj}}}}}}1{{{Oj{c}}}{{A@`{c}}}l}{{{Ej{c{Oj{e}}}}}{{A@`{e}}}{{Nl{Ml}}}l}3333{{{d{{Eh{c}}}}}{{d{{Df{{On{c}}}}}}}l}{{{d{{Eh{c}}}}}{{d{{Dd{N`Bd}}}}}l}{{{d{{Eh{c}}}}{An{Gj}}Oh}B`l}{{}B`}00000{{{d{A`{Eh{c}}}}}{{An{Bl}}}l}{{{d{{Eh{c}}}}}{{d{{Df{{Ej{{An{Bl}}Oh}}}}}}}l}{ce{}{}}00000{{{A@d{ceg}}}il{{Bf{{A@`{c}}}}}{{Gb{}{{G`{e}}}}}{}}{{{d{A`{Eh{c}}}}eg}B`l{{Nl{Ml}}}{{n{{d{A`{A@b{c}}}}}{{f{{Df{{Ej{{Oj{c}}C`}}}}}}}}}}{{{d{A`{Eh{c}}}}eg}B`l{{Nl{Ml}}}{{n{{d{A`{A@b{c}}}}}{{f{{Df{{Ej{{Oj{c}}{Oj{c}}}}}}}}}}}}{{{d{A`{Eh{c}}}}}C`l}{{{d{{Eh{c}}}}}{{d{{Df{{A@f{c}}}}}}}l}{{{d{{Eh{c}}}}}B`l}{{{d{{On{c}}}}}{{d{Ml}}}l}11111{{{d{{Eh{c}}}}}{{d{A@h}}}l}{{{d{{Eh{c}}}}}{{`{{Jf{}{{G`{A@j}}}}}}}l}{{{d{{On{c}}}}}{{d{{Gn{{Oj{c}}}}}}}l}{{{d{{On{c}}}}}{{d{{Gn{Nn}}}}}l}{{{d{{On{c}}}}}{{d{{Gn{Fh}}}}}l}{{{d{A`{A@b{c}}}}{An{Al}}Oh}{{Oj{c}}}l}{{{d{A`{A@b{c}}}}eOh}{{Oj{c}}}l{{Bf{{An{Gj}}}}}}{{{d{A`{A@b{c}}}}Gf}{{Oj{c}}}l}{{{d{A`{A@b{c}}}}{An{Ch}}Oh}{{Oj{c}}}l}{{{d{A`{A@b{c}}}}{An{Bl}}Oh}{{Oj{c}}}l}{{{d{A`{A@b{c}}}}Fh}{{Oj{c}}}l}`{{{d{A`{Eh{c}}}}}Fhl}{{{d{A`{Eh{c}}}}B`}Abl}{{{d{A`{Eh{c}}}}eg}B`l{{Nl{Ml}}}{{n{{d{A`{A@b{c}}}}}{{f{{Df{{Ej{{Oj{c}}{Oj{c}}}}}}}}}}}}{{{d{{Eh{c}}}}}{{d{{Df{{A@l{c}}}}}}}l}{{{d{c}}}e{}{}}00{c{{Ah{e}}}{}{}}00000000000{{{d{c}}}Hd{}}00000{{{d{A`{Eh{c}}}}}{{An{Al}}}l}{{{d{A`{Eh{c}}}}e}{{An{Al}}}lOl}{ce{}{}}00000{{{Oj{c}}g}{{A@d{ceg}}}l{{Bf{{A@`{c}}}}}{{Gb{}{{G`{e}}}}}}``````````````````````{{{Oj{c}}{Oj{c}}}{{Oj{c}}}l}{{{d{c}}}{{d{e}}}{}{}}0000000000{{{d{A`c}}}{{d{A`e}}}{}{}}0000000000{{{d{{An{c}}}}}{{An{c}}}{DnOf}}{{{d{Fh}}}Fh}{{{d{A@n}}}A@n}{{{d{AA`}}}AA`}{{{d{AAb}}}AAb}{{{d{C`}}}C`}{{{d{Gf}}}Gf}{{{d{{Oj{c}}}}}{{Oj{c}}}Dn}{{{d{c}}{d{A`e}}}Ab{}{}}0000000{{{d{{An{c}}}}{d{{An{c}}}}}IhOf}{{{d{C`}}{d{C`}}}Ih}{{{d{A@n}}}B`}{{{d{AA`}}}B`}{{{d{AAb}}}B`}```{{{d{{An{c}}}}}{{d{c}}}Of}`{{{d{{Oj{c}}}}}B`l}{{{d{{An{c}}}}}{{Oj{e}}}Ofl}1{B`{{d{c}}}{}}0000000000{B`{{d{A`c}}}{}}0000000000{B`Ab}0000000000{{{d{Fh}}{d{A`{Aj{c}}}}B`}{{Ah{AbAf}}}l}{{{d{{An{c}}}}{d{{An{c}}}}}Ad{KbOf}}{{{d{Fh}}{d{Fh}}}Ad}{{{d{A@n}}{d{A@n}}}Ad}{{{d{AA`}}{d{AA`}}}Ad}{{{d{AAb}}{d{AAb}}}Ad}{{{d{C`}}{d{C`}}}Ad}{{{d{Gf}}{d{Gf}}}Ad}{{{d{{Oj{c}}}}{d{{Oj{c}}}}}AdKb}{{{d{{Oj{c}}}}{d{g}}{d{i}}{d{k}}{d{m}}{d{o}}{d{Aa}}{d{Ac}}{d{Ae}}{d{Ag}}{d{Ai}}}el{}{{Bh{c}{{f{e}}}}}{{Bh{Fh}{{f{e}}}}}{{Bh{A@n}{{f{e}}}}}{{Bh{AA`}{{f{e}}}}}{{Bh{AAb}{{f{e}}}}}{{Bh{Gf}{{f{e}}}}}{{Bh{e}{{f{e}}}}}{{Bh{ee}{{f{e}}}}}{{Bh{ee}{{f{e}}}}}{{Bh{ec}{{f{e}}}}}}{{{d{{Oj{c}}}}{d{g}}{d{i}}{d{k}}{d{m}}{d{o}}{d{Aa}}{d{Ac}}{d{Ae}}{d{Ag}}{d{Ai}}{d{e}}}elKb{{Bh{c}{{f{e}}}}}{{Bh{Fh}{{f{e}}}}}{{Bh{A@n}{{f{e}}}}}{{Bh{AA`}{{f{e}}}}}{{Bh{AAb}{{f{e}}}}}{{Bh{Gf}{{f{e}}}}}{{Bh{e}{{f{e}}}}}{{Bh{ee}{{f{e}}}}}{{Bh{ee}{{f{e}}}}}{{Bh{ec}{{f{e}}}}}}{{{d{Fh}}}{{Oj{c}}}l}{{{d{Gf}}}{{Oj{c}}}l}{{{d{{An{c}}}}{d{A`Fj}}}Fl{FbOf}}{{{d{AAd}}{d{A`Fj}}}Fl}{{{d{AAf}}{d{A`Fj}}}Fl}{{{d{AAh}}{d{A`Fj}}}Fl}{{{d{Fh}}{d{A`Fj}}}Fl}{{{d{A@n}}{d{A`Fj}}}Fl}{{{d{AA`}}{d{A`Fj}}}Fl}{{{d{AAb}}{d{A`Fj}}}Fl}{{{d{C`}}{d{A`Fj}}}Fl}{{{d{Gf}}{d{A`Fj}}}Fl}{{{d{{Oj{c}}}}{d{A`Fj}}}FlFb}{{{An{Ch}}}{{An{Gj}}}}{cc{}}{{{An{Bl}}}{{An{Gj}}}}{N`{{An{Gj}}}}{{{An{Al}}}{{An{Gj}}}}333333333{AAjGf}4{{{d{{An{c}}}}{d{A`e}}}Ab{AAlOf}Il}{{{d{Fh}}{d{A`c}}}AbIl}{{{d{C`}}{d{A`c}}}AbIl}{{{d{Gf}}{d{A`c}}}AbIl}{{{d{{Oj{c}}}}}Bdl}{{{d{{An{c}}}}}B`Of}{{{d{Fh}}}B`}{{{d{Gf}}}B`}`````{{}B`}0000000000{{{d{C`}}}{{An{Ch}}}}{ce{}{}}0000000000{{{d{Fh}}}Ad}{{{Oj{c}}{Oj{c}}}{{Oj{c}}}l}{{{Oj{c}}c}{{Oj{c}}}l}{{{Oj{c}}}el{}}{{B`c}{{An{c}}}Of}{{{d{{An{c}}}}}{{Oj{e}}}Ofl}{{{d{{An{c}}}}{d{{An{c}}}}}{{Dh{Ih}}}Of}{{{d{C`}}{d{C`}}}{{Dh{Ih}}}}{{{d{Gf}}}Db}3{e{{Oj{c}}}l{{Jf{}{{G`{{Oj{c}}}}}}}}{{{d{{An{c}}}}Oh}{{Oj{e}}}Ofl}{{{d{A`{Oj{c}}}}{d{A`{A@b{c}}}}}Abl}{{{d{{An{c}}}}Nj}{{Oj{e}}}Ofl}{{{d{A@n}}}Oh}{{{d{AA`}}}Oh}{{{d{AAb}}}Oh}````{{{Oj{c}}}{{Oj{c}}}l}?7{{{d{c}}}e{}{}}0000000{AAdA@j}{AAfA@j}{AAhA@j}{c{{Ah{e}}}{}{}}{{{An{Gj}}}{{Ah{{An{Al}}c}}}{}}{{{An{Gj}}}{{Ah{{An{Bl}}c}}}{}}{{{An{Gj}}}{{Ah{{An{Ch}}c}}}{}}333333333333333333333{{{d{c}}}Hd{}}0000000000{ce{}{}}0000000000``{{{d{c}}}{{d{e}}}{}{}}{{{d{A`c}}}{{d{A`e}}}{}{}}{{{d{A@j}}}A@j}{{{d{c}}{d{A`e}}}Ab{}{}}{{{d{A@j}}{d{A@j}}}Ih}{B`{{d{c}}}{}}{B`{{d{A`c}}}{}}{B`Ab}{{{d{A@j}}{d{A@j}}}Ad}{{{d{A@j}}{d{A`Fj}}}Fl}{cc{}}{{{d{A@j}}{d{A`c}}}AbIl}{{}B`}={{{d{A@j}}{d{A@j}}}{{Dh{Ih}}}}{{{d{A@j}}}{{Dh{A@j}}}}{{{d{c}}}e{}{}}{AAnA@j}{A@jA@j}{c{{Ah{e}}}{}{}}0{{{d{c}}}Hd{}}{ce{}{}}`````````````````````{{{d{c}}}{{d{e}}}{}{}}00{{{d{A`c}}}{{d{A`e}}}{}{}}00{B`{{d{c}}}{}}00{B`{{d{A`c}}}{}}00{B`Ab}00{{{d{Af}}{d{A`Fj}}}Fl}0{{{d{AB`}}{d{A`Fj}}}Fl}0{{{d{ABb}}{d{A`Fj}}}Fl}0{cc{}}00{{}B`}00:::{EdAf}{{{d{c}}}Bd{}}00>>>>>>===<<<```````````````````````````````;:{{{d{{A@f{c}}}}}{{A@f{c}}}{Dnl}}{{{d{c}}{d{A`e}}}Ab{}{}};:9{{{d{{A@f{c}}}}{d{A`Fj}}}Fll}65{{{d{{A@f{c}}}}}{{d{{Df{{Oj{c}}}}}}}l}{ce{}{}}{{{d{{A@f{c}}}}}{{d{Ml}}}l}{{c{Df{{Ej{{Oj{e}}{Oj{e}}}}}}}{{A@f{e}}}{{Nl{Ml}}}l}3{{{d{c}}}e{}{}}{c{{Ah{e}}}{}{}}0{{{d{c}}}Hd{}}5`{{{d{c}}}{{d{e}}}{}{}}{{{d{A`c}}}{{d{A`e}}}{}{}}{{{d{A@h}}}A@h};{{}A@h}{B`{{d{c}}}{}}{B`{{d{A`c}}}{}}{B`Ab}{{{d{A@h}}{d{A`Fj}}}Fl}{cc{}}{{{d{A@h}}}{{Df{{An{Gj}}}}}}{{}B`}{ce{}{}}>==<0`;:{{{d{{A@l{c}}}}}{{A@l{c}}}{Dnl}}{{{d{c}}{d{A`e}}}Ab{}{}}987{{{d{{A@l{c}}}}{d{A`Fj}}}Fll}64{{{d{{A@l{c}}}}}{{d{{Df{{Oj{c}}}}}}}l}4{{{d{{A@l{c}}}}}{{d{Ml}}}l}{{c{Df{{Ej{{Oj{e}}{Oj{e}}}}}}}{{A@l{e}}}{{Nl{Ml}}}l}2{{{d{c}}}e{}{}}{c{{Ah{e}}}{}{}}0{{{d{c}}}Hd{}}9","D":"DEh","p":[[5,"Value",3,1729],[1,"reference"],[17,"Output"],[10,"Add",1730],[6,"Assigned",980],[10,"Field",1731],[10,"FnOnce",1732],[0,"mut"],[1,"unit"],[1,"bool"],[6,"Error",1571],[6,"Result",1733],[5,"Region",3],[5,"Advice",1037],[5,"Column",1281],[1,"usize"],[5,"AssignedCell",3],[5,"String",1734],[10,"Into",1735],[10,"Fn",1732],[10,"FnMut",1732],[5,"Instance",1037],[10,"TableLayouter",381,1736],[5,"TableColumn",1281],[5,"SimpleTableLayouter",3,1736],[10,"Assignment",1037],[5,"Table",3],[5,"Fixed",1037],[17,"Root"],[10,"Layouter",3],[5,"NamespacedLayouter",3],[5,"WitnessCalculator",3],[1,"u8"],[5,"HashMap",1737],[5,"Vec",1738],[6,"Option",1739],[10,"Circuit",1037],[5,"Cell",3],[10,"Clone",1740],[5,"RegionIndex",3],[5,"RegionStart",3],[1,"u32"],[5,"CompiledCircuit",1741],[5,"ConstraintSystem",1126],[1,"tuple"],[17,"Config"],[17,"Loaded"],[10,"Chip",3],[10,"Debug",1742],[10,"Copy",1743],[10,"Borrow",1744],[5,"Selector",1281],[5,"Formatter",1742],[8,"Result",1742],[10,"RegionLayouter",381],[17,"Item"],[10,"IntoIterator",1745],[10,"FromIterator",1745],[5,"Challenge",1281],[10,"Mul",1730],[6,"Any",1741],[10,"Neg",1730],[1,"slice"],[10,"Sub",1730],[1,"array"],[5,"TypeId",1746],[5,"SingleChipLayouter",279],[10,"SyncDeps",381],[5,"SimpleFloorPlanner",279],[5,"V1Pass",316],[5,"V1",316],[5,"MeasurementPass",316],[5,"AssignmentPass",316],[5,"RegionShape",381],[6,"RegionColumn",381],[6,"Ordering",1747],[5,"HashSet",1748],[10,"Hasher",1749],[5,"MockProver",449],[6,"CellValue",449],[10,"FromUniformBytes",1731],[10,"Ord",1747],[10,"Iterator",1750],[6,"FailureLocation",449,1751],[6,"VerifyFailure",449,1751],[6,"InstanceValue",449],[5,"CircuitGates",449,1752],[5,"CircuitLayout",449,1753],[10,"PartialEq",1747],[5,"Error",1742],[5,"TracingFloorPlanner",449,1754],[10,"FloorPlanner",1037],[5,"Shift",1755],[5,"DrawingArea",1756],[6,"DrawingAreaErrorKind",1756],[10,"DrawingBackend",1757],[5,"Range",1758],[5,"CircuitCost",666],[10,"PrimeGroup",1759],[5,"MarginalProofSize",666],[5,"ProofSize",666],[5,"Poly",711],[5,"Lookup",711],[5,"Permutation",711],[5,"Shuffle",711],[10,"Deserializer",1760],[5,"ModelCircuit",711],[6,"CommitmentScheme",711],[5,"CostOptions",711],[1,"str"],[10,"Serializer",1761],[5,"Column",855],[5,"VirtualCell",855],[5,"Gate",855],[5,"Constraint",855],[5,"Region",855],[1,"i32"],[10,"AsRef",1735],[5,"VirtualCell",1126],[17,"FloorPlanner"],[17,"Params"],[10,"Default",1762],[10,"ColumnType",1037],[5,"Rotation",1763],[6,"Expression",1281],[10,"Phase",1281],[5,"Gate",1126],[5,"Constraint",1126],[5,"VirtualCells",1126],[5,"Constraints",1126],[5,"Argument",1668],[5,"Argument",1689],[5,"Phase",1546],[5,"Argument",1708],[5,"FixedQuery",1281],[5,"AdviceQuery",1281],[5,"InstanceQuery",1281],[5,"FirstPhase",1281],[5,"SecondPhase",1281],[5,"ThirdPhase",1281],[5,"ChallengeMid",1741],[10,"Hash",1749],[10,"SealedPhase",1546],[6,"TableError",1571],[6,"AssignmentError",1571],[15,"InRegion",641],[15,"OutsideRegion",641],[15,"ConstraintNotSatisfied",644],[15,"CellNotAssigned",644],[15,"InstanceCellNotAssigned",644],[15,"Permutation",644],[15,"ConstraintPoisoned",644],[15,"Lookup",644],[15,"Shuffle",644],[15,"AssignAdvice",1638],[15,"AssignFixed",1638],[15,"QueryInstance",1638],[15,"FillFromRow",1638],[15,"EnableSelector",1638],[15,"Copy",1638],[15,"NotEnoughRowsAvailable",1667]],"r":[[14,279],[15,1736],[17,1736],[18,1729],[275,316],[276,316],[387,1736],[453,666],[454,1752],[455,1753],[458,1751],[469,1754],[471,1751],[496,1764]],"b":[[20,"impl-Add%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[21,"impl-Add%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[22,"impl-Add-for-%26Value%3CV%3E"],[23,"impl-Add-for-Value%3CV%3E"],[24,"impl-Add%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[25,"impl-Add%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[26,"impl-Add%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[27,"impl-Add%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[28,"impl-Add%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[29,"impl-Add%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[78,"impl-Value%3C%26mut+V%3E"],[79,"impl-Value%3C%26V%3E"],[87,"impl-Value%3C%26mut+V%3E"],[88,"impl-Value%3C%26V%3E"],[190,"impl-Mul-for-%26Value%3CV%3E"],[191,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[192,"impl-Mul%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[193,"impl-Mul%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[194,"impl-Mul%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[195,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[196,"impl-Mul%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[197,"impl-Mul%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[198,"impl-Mul%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[199,"impl-Mul-for-Value%3CV%3E"],[212,"impl-Sub%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[213,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[214,"impl-Sub%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[215,"impl-Sub%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[216,"impl-Sub%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[217,"impl-Sub%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[218,"impl-Sub-for-Value%3CV%3E"],[219,"impl-Sub%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[220,"impl-Sub-for-%26Value%3CV%3E"],[221,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[424,"impl-From%3CSelector%3E-for-RegionColumn"],[425,"impl-From%3CColumn%3CAny%3E%3E-for-RegionColumn"],[546,"impl-Debug-for-FailureLocation"],[547,"impl-Display-for-FailureLocation"],[548,"impl-Debug-for-VerifyFailure"],[549,"impl-Display-for-VerifyFailure"],[550,"impl-Display-for-CircuitGates"],[551,"impl-Debug-for-CircuitGates"],[903,"impl-Display-for-ColumnMid"],[904,"impl-Debug-for-ColumnMid"],[905,"impl-Debug-for-VirtualCell"],[906,"impl-Display-for-VirtualCell"],[907,"impl-Debug-for-Gate"],[908,"impl-Display-for-Gate"],[909,"impl-Debug-for-Constraint"],[910,"impl-Display-for-Constraint"],[911,"impl-Display-for-Region"],[912,"impl-Debug-for-Region"],[915,"impl-From%3C(S,+ColumnMid,+i32)%3E-for-VirtualCell"],[916,"impl-From%3CVirtualCell%3E-for-VirtualCell"],[917,"impl-From%3C(ColumnMid,+i32)%3E-for-VirtualCell"],[923,"impl-From%3C(usize,+%26str)%3E-for-Region"],[924,"impl-From%3C(usize,+String)%3E-for-Region"],[925,"impl-From%3C(usize,+String,+HashMap%3CColumnMid,+String%3E)%3E-for-Region"],[927,"impl-From%3C(usize,+%26str,+HashMap%3CColumnMid,+String%3E)%3E-for-Region"],[984,"impl-Add%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[985,"impl-Add%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[986,"impl-Add%3CF%3E-for-%26Assigned%3CF%3E"],[987,"impl-Add%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[988,"impl-Add%3CF%3E-for-Assigned%3CF%3E"],[989,"impl-Add-for-Assigned%3CF%3E"],[990,"impl-AddAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[991,"impl-AddAssign-for-Assigned%3CF%3E"],[1005,"impl-From%3C%26F%3E-for-Assigned%3CF%3E"],[1006,"impl-From%3C(F,+F)%3E-for-Assigned%3CF%3E"],[1007,"impl-From%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1009,"impl-From%3CF%3E-for-Assigned%3CF%3E"],[1014,"impl-Mul%3CF%3E-for-Assigned%3CF%3E"],[1015,"impl-Mul%3CF%3E-for-%26Assigned%3CF%3E"],[1016,"impl-Mul%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1017,"impl-Mul-for-Assigned%3CF%3E"],[1018,"impl-MulAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1019,"impl-MulAssign-for-Assigned%3CF%3E"],[1020,"impl-Neg-for-%26Assigned%3CF%3E"],[1021,"impl-Neg-for-Assigned%3CF%3E"],[1024,"impl-Sub%3CF%3E-for-%26Assigned%3CF%3E"],[1025,"impl-Sub%3CF%3E-for-Assigned%3CF%3E"],[1026,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1027,"impl-Sub%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1028,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1029,"impl-Sub-for-Assigned%3CF%3E"],[1030,"impl-SubAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1031,"impl-SubAssign-for-Assigned%3CF%3E"],[1200,"impl-From%3CExpression%3CF%3E%3E-for-Constraint%3CF%3E"],[1201,"impl-From%3C(S,+Expression%3CF%3E)%3E-for-Constraint%3CF%3E"],[1412,"impl-From%3CColumn%3CFixed%3E%3E-for-Column%3CAny%3E"],[1414,"impl-From%3CColumn%3CInstance%3E%3E-for-Column%3CAny%3E"],[1415,"impl-From%3CColumnMid%3E-for-Column%3CAny%3E"],[1416,"impl-From%3CColumn%3CAdvice%3E%3E-for-Column%3CAny%3E"],[1465,"impl-Mul-for-Expression%3CF%3E"],[1466,"impl-Mul%3CF%3E-for-Expression%3CF%3E"],[1500,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CAdvice%3E"],[1501,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CInstance%3E"],[1502,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CFixed%3E"],[1607,"impl-Display-for-Error"],[1608,"impl-Debug-for-Error"],[1609,"impl-Display-for-TableError"],[1610,"impl-Debug-for-TableError"],[1611,"impl-Debug-for-AssignmentError"],[1612,"impl-Display-for-AssignmentError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJUEkAAAAAAAAwAAAA8AAAAVAAkAKAAAACwAAAAuABQARQAJAFcAAABcAAAAXgAVAHUACgCBAAAAhgAJAJIAAACUAAAAlwAAAJoAAACdAAAAoQAAAKMACgC/AAkAywAAAM8AAADRAAAA1QAJAOAABADnAB0ACQEJABQBAwAaAQ4AKwEDADIBCgBBARoAYAEFAGoBEwCGAQAAiAEAAIoBAACNAQkAmQEAAJsBBgCjAQMAqQEEAK8BAACzAQAAtQEAALgBCQDGAQAA3AEAAN8BEQDyAQcA+wEAAP8BGAAZAgcAIwIKADYCCABLAgEATgIAAFQCHwB6AgcAngIRALMCAgC8AgsA1AIWAOwCGAAGAwYAFgMAABgDBgAuAwAAMwMBADgDHwBdAxUAdAMdAJMDAwCZAwEAnAMCAKADAQCjAwQArQMlANQDAADZAwsA5wMBAOoDAQDtAwMA8gMBAPcDBwABBAwAGwQMACoEAAAsBAgANwQCADsEAAA9BAIARAQFAFEEAgBXBA4AdQQLAIMEBgCPBAAAkQQLAJ4EBQCoBAUArwQAALEEAQC5BAYAyAQAANcEAQDfBAAA5AQUAPsEBQAYBSgASAUAAEwFIABuBQcAegULAIcFAgCTBQAAlQUDAJ0FAAChBQsAugUDAL8FAQDDBQAAzQUAAM8FOwANBgkAGAYBABsGCgArBgEALgYAADMGAAA5BhQAUQYCAFgGKwCGBgcAjwYAAJUGBACbBggApgYAAKgGBACuBgcAtwYAAL0GBAA="}],\ +["halo2_middleware",{"t":"CCEECCCCCCPGFPFFFPFIPFIPPFPPFPPGONNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNOOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNOONNNNOONNNNNNNNNNNNNNNNNNNNOONOONNOOOONNNOONONOONOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNPGPPPPKNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNMFINNNNNNNNNNOONOOOONNNNNKKKKRRRRRRRKKFKNNMNNNNNNNNNNNNNHNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMHNMNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNMNNNNNNNNNNNNNNNNMNNFFNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNFINNNNNNNNNNOONOOOONNNNNCCFFFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRRKMMMMMM","n":["circuit","expression","ff","halo2curves","lookup","multicore","permutation","poly","shuffle","zal","Advice","Any","Cell","Challenge","ChallengeMid","ColumnMid","CompiledCircuit","Constant","ConstraintSystemMid","ExpressionMid","Fixed","Gate","GateMid","Instance","Negated","Preprocessing","Product","Query","QueryMid","Sum","Var","VarMid","advice_column_phase","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge_phase","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","column","column_index","column_type","column_type","complexity","cs","degree","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","fixed","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","gates","general_column_annotations","hash","hash","hash","index","index","index","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","lookups","minimum_degree","name","name","name","new","new","num_advice_columns","num_challenges","num_fixed_columns","num_instance_columns","partial_cmp","partial_cmp","partial_cmp","permutation","permutation","phase","phase","phases","poly","poly","polynomial","preprocessing","rotation","row","shuffles","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unblinded_advice_columns","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write_identifier","Constant","Expression","Negated","Product","Sum","Var","Variable","add","borrow","borrow_mut","clone","clone_into","complexity","complexity","degree","degree","deref","deref_mut","drop","eq","evaluate","fmt","from","identifier","init","into","mul","mul","neg","product","sub","sum","to_owned","try_from","try_into","type_id","vzip","write_identifier","Argument","ArgumentMid","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","from","init","input_expressions","input_expressions","into","name","name","table_expressions","table_expressions","to_owned","try_from","try_into","type_id","vzip","IndexedParallelIterator","IntoParallelIterator","IntoParallelRefIterator","IntoParallelRefMutIterator","Item","Item","Item","Item","Iter","Iter","Iter","ParallelIterator","ParallelSliceMut","Scope","TryFoldAndReduce","all","any","as_parallel_slice_mut","borrow","borrow_mut","by_exponential_blocks","by_uniform_blocks","chain","chunks","cloned","cmp","collect","collect_into_vec","collect_vec_list","copied","count","current_num_threads","deref","deref_mut","drive","drive_unindexed","drop","enumerate","eq","filter","filter_map","find_any","find_first","find_last","find_map_any","find_map_first","find_map_last","flat_map","flat_map_iter","flatten","flatten_iter","fmt","fold","fold_chunks","fold_chunks_with","fold_with","for_each","for_each_init","for_each_with","from","ge","gt","init","inspect","interleave","interleave_shortest","intersperse","into","into_par_iter","join","le","len","lt","map","map_init","map_with","max","max_by","max_by_key","min","min_by","min_by_key","ne","opt_len","panic_fuse","par_chunk_by_mut","par_chunks_exact_mut","par_chunks_mut","par_iter","par_iter_mut","par_rchunks_exact_mut","par_rchunks_mut","par_sort","par_sort_by","par_sort_by_cached_key","par_sort_by_key","par_sort_unstable","par_sort_unstable_by","par_sort_unstable_by_key","par_split_inclusive_mut","par_split_mut","partial_cmp","partition","partition_map","position_any","position_first","position_last","positions","product","reduce","reduce_with","rev","scope","skip","skip_any","skip_any_while","spawn","spawn_broadcast","step_by","sum","take","take_any","take_any_while","try_fold","try_fold_and_reduce","try_fold_with","try_for_each","try_for_each_init","try_for_each_with","try_from","try_into","try_reduce","try_reduce_with","type_id","unzip","unzip_into_vecs","update","vzip","while_some","with_max_len","with_min_len","with_producer","zip","zip_eq","ArgumentMid","AssemblyMid","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","columns","copies","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Rotation","borrow","borrow_mut","clone","clone_into","cmp","cur","deref","deref_mut","drop","eq","fmt","from","hash","init","into","next","partial_cmp","prev","to_owned","try_from","try_into","type_id","vzip","Argument","ArgumentMid","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","from","init","input_expressions","input_expressions","into","name","name","shuffle_expressions","shuffle_expressions","to_owned","try_from","try_into","type_id","vzip","impls","traits","H2cEngine","H2cMsmBaseDesc","H2cMsmCoeffsDesc","HasCurve","HasMsmEngine","NoCurve","NoMsmEngine","PlonkEngine","PlonkEngineConfig","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build_default","default","default","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","fmt","from","from","from","from","from","from","from","from","from","get_base_descriptor","get_coeffs_descriptor","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","msm","msm_backend","msm_with_cached_base","msm_with_cached_inputs","msm_with_cached_scalars","new","new","set_curve","set_msm","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","BaseDescriptor","CoeffsDescriptor","MsmAccel","get_base_descriptor","get_coeffs_descriptor","msm","msm_with_cached_base","msm_with_cached_inputs","msm_with_cached_scalars"],"q":[[0,"halo2_middleware"],[10,"halo2_middleware::circuit"],[251,"halo2_middleware::expression"],[289,"halo2_middleware::lookup"],[313,"halo2_middleware::multicore"],[457,"halo2_middleware::permutation"],[493,"halo2_middleware::poly"],[517,"halo2_middleware::shuffle"],[541,"halo2_middleware::zal"],[543,"halo2_middleware::zal::impls"],[679,"halo2_middleware::zal::traits"],[688,"core::clone"],[689,"ff"],[690,"core::cmp"],[691,"core::fmt"],[692,"core::hash"],[693,"core::option"],[694,"alloc::string"],[695,"core::result"],[696,"core::any"],[697,"std::io::error"],[698,"std::io"],[699,"core::ops::function"],[700,"core::iter::traits::iterator"],[701,"rayon::iter"],[702,"core::marker"],[703,"rayon::slice"],[704,"rayon::iter::blocks"],[705,"rayon::iter::chain"],[706,"rayon::iter::chunks"],[707,"rayon::iter::cloned"],[708,"alloc::vec"],[709,"alloc::collections::linked_list"],[710,"rayon::iter::copied"],[711,"rayon::iter::plumbing"],[712,"rayon::iter::enumerate"],[713,"rayon::iter::filter"],[714,"rayon::iter::filter_map"],[715,"rayon::iter::flat_map"],[716,"rayon::iter::flat_map_iter"],[717,"core::iter::traits::collect"],[718,"rayon::iter::flatten"],[719,"rayon::iter::flatten_iter"],[720,"rayon_core::scope"],[721,"rayon::iter::fold"],[722,"rayon::iter::fold_chunks"],[723,"rayon::iter::fold_chunks_with"],[724,"rayon::iter::inspect"],[725,"rayon::iter::interleave"],[726,"rayon::iter::interleave_shortest"],[727,"rayon::iter::intersperse"],[728,"rayon::iter::map"],[729,"rayon::iter::map_with"],[730,"rayon::iter::panic_fuse"],[731,"rayon::slice::chunk_by"],[732,"rayon::slice::chunks"],[733,"rayon::slice::rchunks"],[734,"core::default"],[735,"either"],[736,"rayon::iter::positions"],[737,"core::iter::traits::accum"],[738,"rayon::iter::rev"],[739,"rayon::iter::skip"],[740,"rayon::iter::skip_any"],[741,"rayon::iter::skip_any_while"],[742,"rayon_core::broadcast"],[743,"rayon::iter::step_by"],[744,"rayon::iter::take"],[745,"rayon::iter::take_any"],[746,"rayon::iter::take_any_while"],[747,"rayon::iter::try_fold"],[748,"rayon::iter::private"],[749,"rayon::iter::update"],[750,"rayon::iter::while_some"],[751,"rayon::iter::len"],[752,"rayon::iter::zip"],[753,"rayon::iter::zip_eq"],[754,"pasta_curves::arithmetic::curves"],[755,"rayon_core"],[756,"rayon_core::join"]],"i":[0,0,0,0,0,0,0,0,0,0,13,0,0,5,0,0,0,133,0,0,13,0,0,13,133,0,133,5,0,133,133,0,10,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,10,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,13,14,15,15,4,4,14,5,12,5,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,3,4,5,13,14,15,11,3,4,5,5,6,10,11,12,13,14,14,15,3,4,5,6,10,11,12,13,14,15,10,10,3,13,14,3,3,14,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,10,10,6,134,6,4,14,10,10,10,10,13,14,15,10,11,3,3,10,134,6,6,12,4,15,10,3,4,5,6,10,11,12,13,14,15,5,14,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,3,4,5,6,10,11,12,13,14,15,10,3,4,5,6,10,11,12,13,14,15,5,28,0,28,28,28,28,0,28,28,28,28,28,9,28,9,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,9,0,0,39,39,39,39,39,39,39,39,39,39,135,39,39,135,39,135,39,39,39,39,39,39,0,0,0,0,49,87,88,40,49,87,88,0,0,0,0,40,40,43,66,66,45,45,40,45,40,45,40,45,40,40,40,0,66,66,45,40,66,45,45,40,40,40,40,40,40,40,40,40,40,40,40,66,40,45,45,40,40,40,40,66,45,45,66,40,45,45,40,66,49,0,45,45,45,40,40,40,40,40,40,40,40,40,45,40,40,43,43,43,87,88,43,43,43,43,43,43,43,43,43,43,43,45,40,40,45,45,45,45,40,40,40,45,0,45,40,40,66,66,45,40,45,40,40,40,110,40,40,40,40,66,66,40,40,66,40,45,40,66,40,45,45,45,45,45,0,0,119,120,119,120,119,120,119,120,120,119,119,120,119,120,119,120,119,120,119,120,119,120,119,120,119,120,119,120,119,120,119,120,119,120,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,121,121,121,121,121,121,121,121,121,121,136,121,121,136,121,136,121,121,121,121,121,121,0,0,0,0,0,0,0,0,0,0,0,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,124,124,128,124,129,122,130,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,125,137,138,123,128,125,124,129,122,130,128,128,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,128,125,128,128,128,128,124,124,124,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,137,138,123,128,125,124,129,122,130,127,127,0,127,127,127,127,127,127],"f":"`````````````````````````````````{{{b{c}}}{{b{e}}}{}{}}000000000{{{b{dc}}}{{b{de}}}{}{}}000000000`{{{b{f}}}f}{{{b{h}}}h}{{{b{j}}}j}{{{b{{l{ce}}}}}{{l{ce}}}{nA`}{nAb}}{{{b{{Ad{c}}}}}{{Ad{c}}}{nA`}}{{{b{{Af{c}}}}}{{Af{c}}}{nA`}}{{{b{{Ah{c}}}}}{{Ah{c}}}{nA`}}{{{b{Aj}}}Aj}{{{b{Al}}}Al}{{{b{An}}}An}{{{b{c}}{b{de}}}B`{}{}}000000000{{{b{Aj}}{b{Aj}}}Bb}{{{b{Al}}{b{Al}}}Bb}{{{b{An}}{b{An}}}Bb}````{{{b{j}}}Bd}`0{Bd{{b{c}}}{}}000000000{Bd{{b{dc}}}{}}000000000{BdB`}000000000{{{b{f}}{b{f}}}Bf}{{{b{h}}{b{h}}}Bf}{{{b{j}}{b{j}}}Bf}{{{b{Aj}}{b{Aj}}}Bf}{{{b{Al}}{b{Al}}}Bf}{{{b{An}}{b{An}}}Bf}`{{{b{f}}{b{dBh}}}Bj}{{{b{h}}{b{dBh}}}Bj}{{{b{j}}{b{dBh}}}Bj}0{{{b{{l{ce}}}}{b{dBh}}}Bj{BlA`}{BlAb}}{{{b{{Ad{c}}}}{b{dBh}}}Bj{BlA`}}{{{b{{Af{c}}}}{b{dBh}}}Bj{BlA`}}{{{b{{Ah{c}}}}{b{dBh}}}Bj{BlA`}}{{{b{Aj}}{b{dBh}}}Bj}{{{b{Al}}{b{dBh}}}Bj}0{{{b{An}}{b{dBh}}}Bj}{cc{}}000000000``{{{b{f}}{b{dc}}}B`Bn}{{{b{Aj}}{b{dc}}}B`Bn}{{{b{Al}}{b{dc}}}B`Bn}{{{b{f}}}Bd}``{{}Bd}000000000{ce{}{}}000000000``{{{b{{l{ce}}}}}{{b{C`}}}A`Ab}``{{AjBdCb}h}{{AjBd}Al}````{{{b{Aj}}{b{Aj}}}{{Cd{Bb}}}}{{{b{Al}}{b{Al}}}{{Cd{Bb}}}}{{{b{An}}{b{An}}}{{Cd{Bb}}}}``{{{b{f}}}Cf}`{{{b{{Ad{c}}}}}BdA`}``{{{b{{l{ce}}}}}{{b{{Ch{ce}}}}}A`Ab}````{{{b{c}}}e{}{}}000000000{{{b{c}}}Cj{}}0{c{{Cl{e}}}{}{}}0000000000000000000{{{b{c}}}Cn{}}000000000`=========={{{b{j}}{b{dc}}}{{D`{B`}}}Db}```````{{{Ch{ce}}{Ch{ce}}}{{Ch{ce}}}A`Ab}{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{{Ch{ce}}}}}{{Ch{ce}}}n{nAb}}{{{b{c}}{b{de}}}B`{}{}}{{{b{Ab}}}Bd}{{{b{{Ch{ce}}}}}BdA`Ab}10{Bd{{b{c}}}{}}{Bd{{b{dc}}}{}}{BdB`}{{{b{{Ch{ce}}}}{b{{Ch{ce}}}}}BfDd{DdAb}}{{{b{{Ch{ce}}}}{b{i}}{b{k}}{b{m}}{b{o}}{b{Aa}}}gA`Ab{}{{Dh{c}{{Df{g}}}}}{{Dh{e}{{Df{g}}}}}{{Dh{g}{{Df{g}}}}}{{Dh{gg}{{Df{g}}}}}{{Dh{gg}{{Df{g}}}}}}{{{b{{Ch{ce}}}}{b{dBh}}}BjBl{BlAb}}{cc{}}{{{b{{Ch{ce}}}}}CjA`Ab}{{}Bd}{ce{}{}}{{{Ch{ce}}c}{{Ch{ce}}}A`Ab}{{{Ch{ce}}{Ch{ce}}}{{Ch{ce}}}A`Ab}{{{Ch{ce}}}gA`Ab{}}{g{{Ch{ce}}}A`Ab{{Dl{}{{Dj{{Ch{ce}}}}}}}}20{{{b{c}}}e{}{}}{c{{Cl{e}}}{}{}}0{{{b{c}}}Cn{}}7{{{b{Ab}}{b{dc}}}{{D`{B`}}}Db}``{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{{Dn{ce}}}}}{{Dn{ce}}}{nA`}{nAb}}{{{b{c}}{b{de}}}B`{}{}}{Bd{{b{c}}}{}}{Bd{{b{dc}}}{}}{BdB`}{{{b{{Dn{ce}}}}{b{dBh}}}Bj{BlA`}{BlAb}}{cc{}}{{}Bd}``{ce{}{}}````>==<0```````````````{{{E`{}{{Dj{c}}}}e}BfEb{{Dh{c}{{Df{Bf}}}}EdEb}}0{{{b{dEf}}}{{b{d{Eh{c}}}}}Eb}<;{Ej{{El{Ej}}}}{{EjBd}{{En{Ej}}}}{{{E`{}{{Dj{c}}}}e}{{F`{{E`{}{{Dj{c}}}}}}}Eb{{Fb{}{{Dj{c}}}}}}{{EjBd}{{Fd{Ej}}}}{{{E`{}{{Dj{c}}}}}{{Ff{{E`{}{{Dj{c}}}}}}}Eb}{{Eje}Bb{}{{Fb{}{{Dj{c}}}}}}{{{E`{}{{Dj{c}}}}}eEb{{Fh{c}}}}{{Ej{b{d{Fj{c}}}}}B`{}}{{{E`{}{{Dj{c}}}}}{{Fl{{Fj{c}}}}}Eb}{{{E`{}{{Dj{c}}}}}{{Fn{{E`{}{{Dj{c}}}}}}}Eb}{{{E`{}{{Dj{c}}}}}BdEb}>{Bd{{b{c}}}{}}{Bd{{b{dc}}}{}}{{Eje}{}{}{{G`{c}}}}{{{E`{}{{Dj{c}}}}e}{}Eb{{Gb{c}}}}{BdB`}{Ej{{Gd{Ej}}}}{{Ejc}BfFb}{{{E`{}{{Dj{c}}}}e}{{Gf{{E`{}{{Dj{c}}}}e}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}}{{{E`{}{{Dj{c}}}}g}{{Gh{{E`{}{{Dj{c}}}}g}}}EbEb{{Dh{c}{{Df{{Cd{e}}}}}}EdEb}}{{{E`{}{{Dj{c}}}}e}{{Cd{c}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}}00{{{E`{}{{Dj{c}}}}g}{{Cd{e}}}EbEb{{Dh{c}{{Df{{Cd{e}}}}}}EdEb}}00{{{E`{}{{Dj{c}}}}g}{{Gj{{E`{}{{Dj{c}}}}g}}}EbFb{{Dh{c}{{Df{e}}}}EdEb}}{{{E`{}{{Dj{c}}}}g}{{Gl{{E`{}{{Dj{c}}}}g}}}EbGn{{Dh{c}{{Df{e}}}}EdEb}}{{{E`{}{{Dj{c}}}}}{{H`{{E`{}{{Dj{c}}}}}}}Eb}{{{E`{}{{Dj{c}}}}}{{Hb{{E`{}{{Dj{c}}}}}}}Eb}{{{b{Hd}}{b{dBh}}}{{Cl{B`Hf}}}}{{{E`{}{{Dj{c}}}}gi}{{Hh{{E`{}{{Dj{c}}}}gi}}}EbEb{{Dh{}{{Df{e}}}}EdEb}{{Dh{ec}{{Df{e}}}}EdEb}}{{EjBdei}{{Hj{Ejei}}}Eb{{Dh{}{{Df{c}}}}EbEd}{}{{Dh{cg}{{Df{c}}}}EbEd}}{{EjBdcg}{{Hl{Ejcg}}}{Ebn}{}{{Dh{ce}{{Df{c}}}}EbEd}}{{{E`{}{{Dj{c}}}}eg}{{Hn{{E`{}{{Dj{c}}}}eg}}}Eb{Ebn}{{Dh{ec}{{Df{e}}}}EdEb}}{{{E`{}{{Dj{c}}}}e}B`Eb{{Dh{c}}EdEb}}{{{E`{}{{Dj{c}}}}gi}B`Eb{}{{Dh{}{{Df{e}}}}EdEb}{{Dh{{b{de}}c}}EdEb}}{{{E`{}{{Dj{c}}}}eg}B`Eb{Ebn}{{Dh{{b{de}}c}}EdEb}}{cc{}}{{Ejc}BfFb}0{{}Bd}{{{E`{}{{Dj{c}}}}e}{{I`{{E`{}{{Dj{c}}}}e}}}Eb{{Dh{{b{c}}}}EdEb}}{{Eje}{{Ib{Ej}}}{}{{Fb{}{{Dj{c}}}}}}{{Eje}{{Id{Ej}}}{}{{Fb{}{{Dj{c}}}}}}{{{E`{}{{Dj{c}}}}c}{{If{{E`{}{{Dj{c}}}}}}}Eb}{ce{}{}}{{{Fb{}{{Ih{c}}{Dj{e}}}}}c{{E`{}{{Dj{e}}}}}Eb}{{ei}{{Ij{cg}}}Eb{{Il{}{{Df{c}}}}Eb}Eb{{Il{}{{Df{g}}}}Eb}}8{{{b{Ej}}}Bd}9{{{E`{}{{Dj{c}}}}g}{{In{{E`{}{{Dj{c}}}}g}}}EbEb{{Dh{c}{{Df{e}}}}EdEb}}{{{E`{}{{Dj{c}}}}gk}{{J`{{E`{}{{Dj{c}}}}gk}}}Eb{}{{Dh{}{{Df{e}}}}EdEb}Eb{{Dh{{b{de}}c}{{Df{i}}}}EdEb}}{{{E`{}{{Dj{c}}}}ei}{{Jb{{E`{}{{Dj{c}}}}ei}}}Eb{Ebn}Eb{{Dh{{b{de}}c}{{Df{g}}}}EdEb}}{{{E`{}{{Dj{c}}}}}{{Cd{c}}}Eb}{{{E`{}{{Dj{c}}}}e}{{Cd{c}}}Eb{EdEb{Dh{{b{c}}{b{c}}}{{Df{Bb}}}}}}{{{E`{}{{Dj{c}}}}g}{{Cd{c}}}Eb{JdEb}{EdEb{Dh{{b{c}}}{{Df{e}}}}}}210?{{{b{{E`{}{{Dj{c}}}}}}}{{Cd{Bd}}}Eb}{{{E`{}{{Dj{c}}}}}{{Jf{{E`{}{{Dj{c}}}}}}}Eb}{{{b{dEf}}e}{{Jh{ce}}}Eb{{Dh{{b{c}}{b{c}}}{{Df{Bf}}}}EbEd}}{{{b{dEf}}Bd}{{Jj{c}}}Eb}{{{b{dEf}}Bd}{{Jl{c}}}Eb}{{{b{{Jn{}{{Ih{c}}{Dj{e}}}}}}}c{{E`{}{{Dj{e}}}}}Eb}{{{b{d{K`{}{{Ih{c}}{Dj{e}}}}}}}c{{E`{}{{Dj{e}}}}}Eb}{{{b{dEf}}Bd}{{Kb{c}}}Eb}{{{b{dEf}}Bd}{{Kd{c}}}Eb}{{{b{dEf}}}B`}{{{b{dEf}}e}B`Eb{{Dh{{b{c}}{b{c}}}{{Df{Bb}}}}Ed}}{{{b{dEf}}g}B`Eb{JdEb}{{Dh{{b{c}}}{{Df{e}}}}Ed}}{{{b{dEf}}g}B`EbJd{{Dh{{b{c}}}{{Df{e}}}}Ed}}320{{{b{dEf}}e}{{Kf{ce}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}}{{{b{dEf}}e}{{Kh{ce}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}}{{Ejc}{{Cd{Bb}}}Fb}{{{E`{}{{Dj{c}}}}e}{{Ij{gi}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}{KjEb{Kl{c}}}{KjEb{Kl{c}}}}{{{E`{}{{Dj{c}}}}i}{{Ij{km}}}EbEbEb{{Dh{c}{{Df{{Kn{eg}}}}}}EdEb}{KjEb{Kl{e}}}{KjEb{Kl{g}}}}{{Eje}{{Cd{Bd}}}{}{{Dh{c}{{Df{Bf}}}}EdEb}}00{{Eje}{{L`{Eje}}}{}{{Dh{c}{{Df{Bf}}}}EdEb}}{{{E`{}{{Dj{c}}}}}eEb{Eb{Lb{c}}Lb}}{{{E`{}{{Dj{c}}}}eg}cEb{{Dh{}{{Df{c}}}}EdEb}{{Dh{cc}{{Df{c}}}}EdEb}}{{{E`{}{{Dj{c}}}}e}{{Cd{c}}}Eb{{Dh{cc}{{Df{c}}}}EdEb}}{Ej{{Ld{Ej}}}}{ecEb{{Il{{b{Hd}}}{{Df{c}}}}Eb}}{{EjBd}{{Lf{Ej}}}}{{{E`{}{{Dj{c}}}}Bd}{{Lh{{E`{}{{Dj{c}}}}}}}Eb}{{{E`{}{{Dj{c}}}}e}{{Lj{{E`{}{{Dj{c}}}}e}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}}{{{b{Hd}}c}B`{{Il{{b{Hd}}}}Eb}}{{{b{Hd}}c}B`{{Dh{{b{Hd}}Ll}}EbEd}}{{EjBd}{{Ln{Ej}}}}{{{E`{}{{Dj{c}}}}}eEb{Eb{M`{c}}M`}}{{EjBd}{{Mb{Ej}}}}{{{E`{}{{Dj{c}}}}Bd}{{Md{{E`{}{{Dj{c}}}}}}}Eb}{{{E`{}{{Dj{c}}}}e}{{Mf{{E`{}{{Dj{c}}}}e}}}Eb{{Dh{{b{c}}}{{Df{Bf}}}}EdEb}}{{{E`{}{{Dj{c}}}}gk}{{Mh{{E`{}{{Dj{c}}}}igk}}}Eb{}{{Dh{}{{Df{e}}}}EdEb}{{Mj{}{{Df{e}}}}Eb}{{Dh{ec}{{Df{i}}}}EdEb}}{{Mlei}{{Cl{cg}}}{}{{Dh{}{{Df{c}}}}EbEd}{}{{Dh{c{Cl{cg}}}{{Df{{Cl{cg}}}}}}EbEd}}{{{E`{}{{Dj{c}}}}ei}{{Mn{{E`{}{{Dj{c}}}}gi}}}Eb{nEb}{{Mj{}{{Df{e}}}}Eb}{{Dh{ec}{{Df{g}}}}EdEb}}{{{E`{}{{Dj{c}}}}g}eEb{{Mj{}{{Df{B`}}}}Eb}{{Dh{c}{{Df{e}}}}EdEb}}{{{E`{}{{Dj{c}}}}gk}iEb{}{{Dh{}{{Df{e}}}}EdEb}{{Mj{}{{Df{B`}}}}Eb}{{Dh{{b{de}}c}{{Df{i}}}}EdEb}}{{{E`{}{{Dj{c}}}}ei}gEb{Ebn}{{Mj{}{{Df{B`}}}}Eb}{{Dh{{b{de}}c}{{Df{g}}}}EdEb}}{c{{Cl{e}}}{}{}}0{{{E`{}{{Dj{c}}}}gi}cEb{}{{Dh{}{{Df{e}}}}EdEb}{{Dh{ee}{{Df{c}}}}EdEb}}{{{E`{}{{Dj{c}}}}g}{{Cd{c}}}Eb{}{{Dh{ee}{{Df{c}}}}EdEb}}{{{b{c}}}Cn{}}{{{E`{}{{Dj{c}}}}}{{Ij{gk}}}EbEb{KjEb{Kl{e}}}Eb{KjEb{Kl{i}}}}{{Ej{b{d{Fj{c}}}}{b{d{Fj{e}}}}}B`EbEb}{{{E`{}{{Dj{c}}}}e}{{N`{{E`{}{{Dj{c}}}}e}}}Eb{{Dh{{b{dc}}}}EdEb}}{ce{}{}}{{{E`{}{{Dj{c}}}}}{{Nb{{E`{}{{Dj{c}}}}}}}Eb}{{EjBd}{{Nd{Ej}}}}{{EjBd}{{Nf{Ej}}}}{{Eje}{}{}{{Nh{c}}}}{{Ejc}{{Nj{Ej}}}Fb}{{Ejc}{{Nl{Ej}}}Fb}``{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{Nn}}}Nn}{{{b{O`}}}O`}{{{b{c}}{b{de}}}B`{}{}}0``{Bd{{b{c}}}{}}0{Bd{{b{dc}}}{}}0{BdB`}0{{{b{Nn}}{b{dBh}}}Bj}{{{b{O`}}{b{dBh}}}Bj}{cc{}}0{{}Bd}0{ce{}{}}0{{{b{c}}}e{}{}}0{c{{Cl{e}}}{}{}}000{{{b{c}}}Cn{}}033`?>{{{b{Cb}}}Cb}<{{{b{Cb}}{b{Cb}}}Bb}{{}Cb}=<;{{{b{Cb}}{b{Cb}}}Bf}{{{b{Cb}}{b{dBh}}}Bj}:{{{b{Cb}}{b{dc}}}B`Bn}:93{{{b{Cb}}{b{Cb}}}{{Cd{Bb}}}}49887:``{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{{Ob{ce}}}}}{{Ob{ce}}}{nA`}{nAb}}{{{b{c}}{b{de}}}B`{}{}}{Bd{{b{c}}}{}}{Bd{{b{dc}}}{}}{BdB`}{{{b{{Ob{ce}}}}{b{dBh}}}Bj{BlA`}{BlAb}}{cc{}}{{}Bd}``{ce{}{}}````{{{b{c}}}e{}{}}{c{{Cl{e}}}{}{}}0{{{b{c}}}Cn{}}3```````````=========<<<<<<<<<{{{Oh{{Od{c}}{Of{ce}}}}}{{Oj{ce}}}Ol{{On{c}}}}{{}{{Oj{cA@`}}}Ol}{{}A@`}{{}{{Oh{ce}}}KjKj}{{}A@b}{{}{{Od{c}}}{KjOl}}{{}A@d}{Bd{{b{c}}}{}}00000000{Bd{{b{dc}}}{}}00000000{BdB`}00000000{{{b{{Oj{ce}}}}{b{dBh}}}Bj{BlOl}{Bl{On{c}}}}{cc{}}00000000{{{b{A@`}}{b{{Eh{c}}}}}eOl{}}{{{b{A@`}}{b{Eh}}}c{}}{{}Bd}00000000{ce{}{}}00000000{{{b{A@`}}{b{Eh}}{b{{Eh{c}}}}}{}Ol}`{{{b{A@`}}{b{Eh}}{b{c}}}{}{}}{{{b{A@`}}{b{c}}{b{e}}}{}{}{}}{{{b{A@`}}{b{c}}{b{{Eh{e}}}}}{}{}Ol}{{}A@`}{{}{{Oh{A@bA@d}}}}{{{Oh{A@bA@d}}}{{Oh{{Od{c}}A@d}}}Ol}{{{Oh{{Od{c}}e}}g}{{Oh{{Od{c}}{Of{cg}}}}}Ol{}{{On{c}}}}{c{{Cl{e}}}{}{}}00000000000000000{{{b{c}}}Cn{}}00000000:::::::::```{{{b{{On{}{{A@f{c}}{A@h{e}}}}}}{b{{Eh{g}}}}}e{}{}Ol}{{{b{{On{}{{A@f{c}}{A@h{e}}}}}}{b{Eh}}}c{}{}}{{{b{{On{}{{A@f{c}}{A@h{e}}}}}}{b{Eh}}{b{{Eh{g}}}}}{}{}{}Ol}{{{b{{On{}{{A@f{c}}{A@h{e}}}}}}{b{Eh}}{b{e}}}{}{}{}}{{{b{{On{}{{A@f{c}}{A@h{e}}}}}}{b{c}}{b{e}}}{}{}{}}{{{b{{On{}{{A@f{c}}{A@h{e}}}}}}{b{c}}{b{{Eh{g}}}}}{}{}{}Ol}","D":"AMf","p":[[1,"reference"],[0,"mut"],[5,"ChallengeMid",10],[5,"QueryMid",10],[6,"VarMid",10],[5,"Gate",10],[10,"Clone",688],[10,"Field",689],[10,"Variable",251],[5,"ConstraintSystemMid",10],[5,"Preprocessing",10],[5,"CompiledCircuit",10],[6,"Any",10],[5,"ColumnMid",10],[5,"Cell",10],[1,"unit"],[6,"Ordering",690],[1,"usize"],[1,"bool"],[5,"Formatter",691],[8,"Result",691],[10,"Debug",691],[10,"Hasher",692],[1,"str"],[5,"Rotation",493],[6,"Option",693],[1,"u8"],[6,"Expression",251],[5,"String",694],[6,"Result",695],[5,"TypeId",696],[8,"Result",697],[10,"Write",698],[10,"PartialEq",690],[17,"Output"],[10,"Fn",699],[17,"Item"],[10,"Iterator",700],[5,"Argument",289],[10,"ParallelIterator",313,701],[10,"Send",702],[10,"Sync",702],[10,"ParallelSliceMut",313,703],[1,"slice"],[10,"IndexedParallelIterator",313,701],[5,"ExponentialBlocks",704],[5,"UniformBlocks",704],[5,"Chain",705],[10,"IntoParallelIterator",313,701],[5,"Chunks",706],[5,"Cloned",707],[10,"FromParallelIterator",701],[5,"Vec",708],[5,"LinkedList",709],[5,"Copied",710],[10,"Consumer",711],[10,"UnindexedConsumer",711],[5,"Enumerate",712],[5,"Filter",713],[5,"FilterMap",714],[5,"FlatMap",715],[5,"FlatMapIter",716],[10,"IntoIterator",717],[5,"Flatten",718],[5,"FlattenIter",719],[5,"Scope",313,720],[5,"Error",691],[5,"Fold",721],[5,"FoldChunks",722],[5,"FoldChunksWith",723],[5,"FoldWith",721],[5,"Inspect",724],[5,"Interleave",725],[5,"InterleaveShortest",726],[5,"Intersperse",727],[17,"Iter"],[1,"tuple"],[10,"FnOnce",699],[5,"Map",728],[5,"MapInit",729],[5,"MapWith",729],[10,"Ord",690],[5,"PanicFuse",730],[5,"ChunkByMut",731],[5,"ChunksExactMut",732],[5,"ChunksMut",732],[10,"IntoParallelRefIterator",313,701],[10,"IntoParallelRefMutIterator",313,701],[5,"RChunksExactMut",733],[5,"RChunksMut",733],[5,"SplitInclusiveMut",703],[5,"SplitMut",703],[10,"Default",734],[10,"ParallelExtend",701],[6,"Either",735],[5,"Positions",736],[10,"Product",737],[5,"Rev",738],[5,"Skip",739],[5,"SkipAny",740],[5,"SkipAnyWhile",741],[5,"BroadcastContext",742],[5,"StepBy",743],[10,"Sum",737],[5,"Take",744],[5,"TakeAny",745],[5,"TakeAnyWhile",746],[5,"TryFold",747],[10,"Try",748],[10,"TryFoldAndReduce",313],[5,"TryFoldWith",747],[5,"Update",749],[5,"WhileSome",750],[5,"MaxLen",751],[5,"MinLen",751],[10,"ProducerCallback",711],[5,"Zip",752],[5,"ZipEq",753],[5,"AssemblyMid",457],[5,"ArgumentMid",457],[5,"Argument",517],[5,"HasCurve",543],[5,"HasMsmEngine",543],[5,"PlonkEngineConfig",543],[5,"PlonkEngine",543],[10,"CurveAffine",754],[10,"MsmAccel",679],[5,"H2cEngine",543],[5,"NoCurve",543],[5,"NoMsmEngine",543],[17,"CoeffsDescriptor"],[17,"BaseDescriptor"],[8,"ExpressionMid",10],[8,"GateMid",10],[8,"ArgumentMid",289],[8,"ArgumentMid",517],[5,"H2cMsmCoeffsDesc",543],[5,"H2cMsmBaseDesc",543]],"r":[[313,701],[314,701],[315,701],[316,701],[324,701],[325,703],[326,720],[344,755],[382,756],[425,720]],"b":[[123,"impl-Display-for-VarMid"],[124,"impl-Debug-for-VarMid"],[130,"impl-Debug-for-ColumnMid"],[131,"impl-Display-for-ColumnMid"],[277,"impl-Mul%3CF%3E-for-Expression%3CF,+V%3E"],[278,"impl-Mul-for-Expression%3CF,+V%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMUBMQAAAAkAFAAAABcAAAAdAAAAIAAAACIAEwA3ABcAUgAzAJAABACWAAAAmAAJAKwAAQCvAAwAvQAAAL8AAQDCAAAAxAArAPEACgACAQUADAEDABEBAAAUAQAAFgEKACMBCAAtAQIAMQEIAEgBAABMAQEAWgEBAF4BAABtAQAAeAEAALsBAQC/AQAAwwEAAMsBCADVAQgA4AEBAOQBCQDvAQQA9QEEAPsBAQD/AQAAAQIEAAcCCAARAgIAFQJIAGcCCgB7AjUA"}],\ +["halo2_proofs",{"t":"PPPGCNNCNNNNCNNNENNCCNCNNNNRRRTKKRKTRRTMMMMMNMMMMMMMNNMMHNNMNNMMFFKRKRFFFRFFFNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNOMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNMNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNCNNFFNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNCNNNNNNNNPPPGFPPGPPGPFPPPPPPGNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOGFPPPFFFFFOONNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNHHNONNNNNNNONNNNNNNNOOOOOONOOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFFNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFPPGGKPPPPFPKFPPKRPFPFFGGGGFFPPFKRPFPPPPPPPPPPPRKPFPPFFPPPFPFPPFFPNNNNNNNNNNNNONMNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNMNNMNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONMNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHHHHNNNNOONNNNNNNNNNNNNNNNNONONONONNNNNNNONNNNHMNNMNNMNNNNNNNNMNNNNNNONNNNONNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHHNNNNNNNNNNNNNNNNNNNNNNNNMNNOOFRFKNNNNNNNNNNNCNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNCNCNNNNMNNNNNMNNNNNNNNNNNNFTKRRKRRKKRKRKTTRKNNNMMMNNMNNMMNMNNNMNMNMNNNNMNNNMMMMNMMMMMNNNNMNMCCCCFFINNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNCCCCFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFKRKKKKKNNNNNNNNNNNNNMNNMNNNNNNNNNNNNMNNNNNNNMNMMNNNNNNNNMNMNMNMNNNNNNNNNNNNNNNNNNMNMN","n":["Processed","RawBytes","RawBytesUnchecked","SerdeFormat","arithmetic","borrow","borrow_mut","circuit","clone","clone_into","deref","deref_mut","dev","drop","fmt","from","halo2curves","init","into","plonk","poly","to_owned","transcript","try_from","try_into","type_id","vzip","AffineExt","Base","Base","CURVE_ID","CurveAffine","CurveExt","CurveExt","Field","ONE","ScalarExt","ScalarExt","ZERO","a","a","b","b","coordinates","cube","double","endo","from_xy","hash_to_curve","invert","is_on_curve","is_on_curve","is_zero","is_zero_vartime","jacobian_coordinates","new_jacobian","parallelize","pow","pow_vartime","random","sqrt","sqrt_alt","sqrt_ratio","square","AssignedCell","Cell","Chip","Config","Layouter","Loaded","NamespacedLayouter","Region","RegionIndex","Root","SimpleFloorPlanner","Table","Value","add","add","add","add","add","add","add","add","add","add","and_then","as_mut","as_ref","assert_if_known","assign","assign_advice","assign_advice_from_constant","assign_advice_from_instance","assign_cell","assign_fixed","assign_region","assign_region","assign_table","assign_table","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cell","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cloned","cloned","column","config","constrain_constant","constrain_equal","constrain_instance","constrain_instance","copied","copied","copy_advice","cube","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable_selector","error_if_known_and","evaluate","evaluate","floor_planner","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","get_challenge","get_challenge","get_root","get_root","init","init","init","init","init","init","init","init","instance_value","into","into","into","into","into","into","into","into","into_field","invert","known","loaded","map","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","name_column","namespace","neg","pop_namespace","pop_namespace","push_namespace","push_namespace","region_index","row_offset","square","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","synthesize","to_field","to_owned","to_owned","to_owned","to_owned","transpose_array","transpose_vec","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unknown","unzip","value","value_field","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","zip","V1","V1Pass","assign_region","assign_table","borrow","borrow","borrow_mut","borrow_mut","constrain_instance","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","get_challenge","get_root","init","init","into","into","pop_namespace","push_namespace","single_pass","synthesize","try_from","try_from","try_into","try_into","type_id","type_id","v1","vzip","vzip","SimpleFloorPlanner","SingleChipLayouter","assign_region","assign_table","borrow","borrow_mut","constrain_instance","deref","deref_mut","drop","fmt","from","get_challenge","get_root","init","into","new","pop_namespace","push_namespace","try_from","try_into","type_id","vzip","AssignmentPass","MeasurementPass","V1","V1Pass","borrow","borrow","borrow_mut","borrow_mut","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","strategy","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Assigned","Assigned","CellNotAssigned","CellValue","CircuitLayout","ConstraintNotSatisfied","ConstraintPoisoned","FailureLocation","InRegion","InstanceCellNotAssigned","InstanceValue","Lookup","MockProver","OutsideRegion","Padding","Permutation","Poison","Shuffle","Unassigned","VerifyFailure","advice","advice_mut","advice_values","annotate_column","assert_satisfied","assert_satisfied_at_rows","assign_advice","assign_fixed","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","circuit_dot_graph","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","copy","cost_model","cs","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","emit","enable_selector","enter_region","eq","eq","eq","eq","exit_region","fill_from_row","fixed","fixed_values","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","get_challenge","init","init","init","init","init","init","instance","instance_mut","into","into","into","into","into","into","mark_equality_cells","metadata","pop_namespace","push_namespace","query_instance","render","run","selectors","show_equality_constraints","show_labels","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","usable_rows","value","verify","verify_at_rows","view_height","view_width","vzip","vzip","vzip","vzip","vzip","vzip","offset","region","row","cell_values","column","column","column","constraint","constraint","gate","gate","gate_offset","gate_offset","location","location","location","location","lookup_index","name","name","offset","region","region","row","shuffle_index","CommitmentScheme","CostOptions","IPA","KZGGWC","KZGSHPLONK","Lookup","ModelCircuit","Permutation","Poly","Shuffle","advice","advice_columns","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","column_queries","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","eq","eq","fixed","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_circuit_to_cost_model_options","from_circuit_to_model_circuit","from_str","gate_degree","init","init","init","init","init","init","init","instance","into","into","into","into","into","into","into","into_model_circuit","k","k","lookup","lookups","max_deg","max_degree","partial_cmp","permutation","permutations","point_sets","rotations","serialize","serialize","shuffle","shuffles","size","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Column","Constraint","Gate","Region","VirtualCell","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","column_type","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","index","init","init","init","init","init","into","into","into","into","into","new","partial_cmp","partial_cmp","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","Advice","Advice","Advice","Any","Assigned","Assignment","AssignmentError","Backend","BoundsFailure","BoundsFailure","Challenge","Challenge","Circuit","Column","ColumnNotInPermutation","ColumnNotInPermutation","ColumnType","Config","Constant","ConstraintSystem","ConstraintSystemFailure","ConstraintSystemMid","Constraints","Error","ErrorBack","ErrorFront","Expression","FirstPhase","Fixed","Fixed","Fixed","FixedQuery","FloorPlanner","FloorPlanner","Frontend","Instance","Instance","Instance","InstanceTooLarge","InvalidInstances","Negated","NotEnoughColumnsForConstants","NotEnoughRowsAvailable","NotEnoughRowsAvailable","Opening","Other","Other","Params","Phase","Product","ProvingKey","Rational","Scaled","SecondPhase","Selector","Selector","Sum","Synthesis","TableColumn","TableError","ThirdPhase","Transcript","Trivial","VerifyingKey","VirtualCells","Zero","add","add","add","add","add","add","add","add_assign","add_assign","advice_column","advice_column_in","advice_column_phase","advice_column_phase","advice_queries","annotate_column","annotate_column","annotate_lookup_any_column","annotate_lookup_column","assign_advice","assign_fixed","blinding_factors","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge_phase","challenge_phase","challenge_usable_after","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","column_index","column_index","column_type","column_type","complex_selector","complexity","compress_selectors","configure","configure_with_params","constants","copy","create_gate","create_proof","create_proof_with_engine","cube","cur","default","degree","degree","denominator","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","directly_convert_selectors_to_fixed","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable","enable_constant","enable_equality","enable_selector","enter_region","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","evaluate","evaluate","evaluate_lazy","exit_region","expr","expr","fill_from_row","fixed_column","fixed_commitments","fixed_queries","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bytes","from_bytes","gates","gates","general_column_annotations","general_column_annotations","get_any_query_index","get_challenge","get_domain","get_vk","hash","hash","hash","hash","hash","hash","hash","hash","hash_into","identifier","index","index","index","index","index","index","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","inner","instance_column","instance_queries","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","invert","is_simple","is_zero_vartime","keygen_pk","keygen_pk_custom","keygen_vk","keygen_vk_custom","lookup","lookup_any","lookup_table_column","lookups","lookups","minimum_degree","minimum_rows","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","neg","neg","neg","new","next","not_enough_rows_available","not_enough_rows_available","num_advice_columns","num_advice_columns","num_challenges","num_challenges","num_fixed_columns","num_fixed_columns","num_instance_columns","num_instance_columns","num_selectors","numerator","params","partial_cmp","partial_cmp","partial_cmp","permutation","permutation","phase","phases","phases","pinned","pk_read","pop_namespace","prev","product","push_namespace","query_advice","query_any","query_cell","query_cell","query_cell","query_cell","query_cell","query_cell","query_cells","query_challenge","query_fixed","query_instance","query_instance","query_selector","read","read","rot","rotation","rotation","selector","set_minimum_degree","shuffle","shuffles","shuffles","source","square","square","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sum","synthesize","synthesize","to_bytes","to_bytes","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_sealed","to_sealed","to_sealed","to_string","to_string","to_string","transcript_repr","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unblinded_advice_column","unblinded_advice_column_in","unblinded_advice_columns","verify_proof","vk_read","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","with_selector","without_witnesses","write","write","current_k","current_k","EvaluationDomain","Output","Rotation","VerificationStrategy","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","coeff_from_vec","coeff_to_extended","commitment","constant_extended","constant_lagrange","cur","deref","deref","deref_mut","deref_mut","divide_by_vanishing_poly","drop","drop","empty_coeff","empty_extended","empty_lagrange","eq","extended_k","extended_len","extended_to_coeff","finalize","fmt","fmt","from","from","get_extended_omega","get_omega","get_omega_inv","get_quotient_poly_degree","hash","init","init","into","into","ipa","k","kzg","l_i_range","lagrange_extended","lagrange_from_vec","lagrange_to_coeff","new","new","next","partial_cmp","pinned","prev","process","rotate_extended","rotate_omega","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Blind","COMMIT_INSTANCE","CommitmentScheme","Curve","Guard","MSM","MSM","MSMAccumulator","Params","ParamsProver","ParamsProver","ParamsVerifier","ParamsVerifier","Prover","QUERY_INSTANCE","QUERY_INSTANCE","Scalar","Verifier","add","add_assign","add_assign","add_msm","append_term","bases","borrow","borrow_mut","check","clone","clone_into","commit","commit_lagrange","create_proof","create_proof_with_engine","default","deref","deref_mut","downsize","drop","empty_msm","eq","eval","fmt","from","init","into","k","mul","mul_assign","mul_assign","n","new","new","new","new","new_params","read","read_params","scalars","scale","to_owned","try_from","try_into","type_id","verify_proof","vzip","write","commitment","msm","multiopen","strategy","IPACommitmentScheme","ParamsIPA","ParamsVerifierIPA","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","commit","commit_lagrange","create_proof_with_engine","deref","deref","deref_mut","deref_mut","downsize","drop","drop","empty_msm","fmt","fmt","from","from","init","init","into","into","k","n","new","new_params","read","read_params","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","write","MSMIPA","add_constant_term","add_msm","add_msm","add_to_g_scalars","add_to_u_scalar","add_to_w_scalar","append_term","bases","borrow","borrow_mut","check","clone","clone_into","deref","deref_mut","drop","eval","fmt","from","init","into","new","scalars","scale","to_owned","try_from","try_into","type_id","vzip","ProverIPA","VerifierIPA","borrow","borrow","borrow_mut","borrow_mut","create_proof_with_engine","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","new","new","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","Accumulator","AccumulatorStrategy","GuardIPA","SingleStrategy","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","compute_g","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","finalize","finalize","fmt","fmt","fmt","fmt","from","from","from","from","g","init","init","init","init","into","into","into","into","new","new","process","process","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","u_packed","use_challenges","use_g","vzip","vzip","vzip","vzip","commitment","msm","multiopen","strategy","KZGCommitmentScheme","ParamsKZG","ParamsVerifierKZG","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","commit","commit_lagrange","commit_lagrange","deref","deref","deref","deref_mut","deref_mut","deref_mut","downsize","downsize","drop","drop","drop","empty_msm","empty_msm","fmt","fmt","fmt","from","from","from","from_parts","init","init","init","into","into","into","k","k","n","n","new","new_params","read","read","read_custom","read_custom","read_params","setup","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","verifier_params","vzip","vzip","vzip","write","write","write_custom","write_custom","DualMSM","MSMKZG","add_msm","add_msm","append_term","bases","borrow","borrow","borrow_mut","borrow_mut","check","check","clone","clone","clone_into","clone_into","combine_with_base","default","default","deref","deref","deref_mut","deref_mut","drop","drop","eval","fmt","fmt","from","from","init","init","into","into","new","new","scalars","scale","scale","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","ProverGWC","ProverSHPLONK","VerifierGWC","VerifierSHPLONK","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","create_proof_with_engine","create_proof_with_engine","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","fmt","fmt","fmt","fmt","from","from","from","from","init","init","init","init","into","into","into","into","new","new","new","new","new","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verify_proof","verify_proof","vzip","vzip","vzip","vzip","AccumulatorStrategy","GuardKZG","SingleStrategy","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","finalize","finalize","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","new","new","new","new","process","process","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","with","Blake2bRead","Blake2bWrite","Challenge255","EncodedChallenge","Input","Transcript","TranscriptRead","TranscriptReadBuffer","TranscriptWrite","TranscriptWriterBuffer","as_challenge_scalar","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","common_point","common_point","common_point","common_scalar","common_scalar","common_scalar","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","finalize","finalize","fmt","fmt","fmt","from","from","from","get_scalar","get_scalar","init","init","init","init","init","init","init","into","into","into","new","new","read_point","read_point","read_scalar","read_scalar","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge_scalar","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","write_point","write_point","write_scalar","write_scalar"],"q":[[0,"halo2_proofs"],[27,"halo2_proofs::arithmetic"],[64,"halo2_proofs::circuit"],[293,"halo2_proofs::circuit::floor_planner"],[331,"halo2_proofs::circuit::floor_planner::single_pass"],[354,"halo2_proofs::circuit::floor_planner::v1"],[385,"halo2_proofs::dev"],[542,"halo2_proofs::dev::FailureLocation"],[545,"halo2_proofs::dev::VerifyFailure"],[567,"halo2_proofs::dev::cost_model"],[711,"halo2_proofs::dev::metadata"],[829,"halo2_proofs::plonk"],[1477,"halo2_proofs::plonk::ErrorBack"],[1478,"halo2_proofs::plonk::ErrorFront"],[1479,"halo2_proofs::poly"],[1552,"halo2_proofs::poly::commitment"],[1618,"halo2_proofs::poly::ipa"],[1622,"halo2_proofs::poly::ipa::commitment"],[1667,"halo2_proofs::poly::ipa::msm"],[1697,"halo2_proofs::poly::ipa::multiopen"],[1729,"halo2_proofs::poly::ipa::strategy"],[1802,"halo2_proofs::poly::kzg"],[1806,"halo2_proofs::poly::kzg::commitment"],[1879,"halo2_proofs::poly::kzg::msm"],[1928,"halo2_proofs::poly::kzg::multiopen"],[1993,"halo2_proofs::poly::kzg::strategy"],[2053,"halo2_proofs::transcript"],[2141,"halo2_backend::helpers"],[2142,"core::fmt"],[2143,"core::result"],[2144,"core::any"],[2145,"pasta_curves::arithmetic::curves"],[2146,"subtle"],[2147,"ff"],[2148,"core::cmp"],[2149,"core::ops::arith"],[2150,"core::ops::function"],[2151,"alloc::boxed"],[2152,"core::marker"],[2153,"core::clone"],[2154,"core::convert"],[2155,"rand_core"],[2156,"halo2_frontend::circuit::value"],[2157,"halo2_frontend::plonk::assigned"],[2158,"halo2_frontend::circuit"],[2159,"halo2_frontend::plonk::circuit"],[2160,"halo2_frontend::plonk::circuit::expression"],[2161,"alloc::string"],[2162,"core::borrow"],[2163,"halo2_frontend::circuit::floor_planner::single_pass"],[2164,"halo2_frontend::circuit::layouter"],[2165,"halo2_frontend::circuit::table_layouter"],[2166,"core::iter::traits::collect"],[2167,"halo2_middleware::circuit"],[2168,"core::option"],[2169,"alloc::vec"],[2170,"halo2_frontend::circuit::floor_planner::v1"],[2171,"halo2_frontend::dev"],[2172,"core::iter::traits::iterator"],[2173,"halo2_frontend::dev::failure"],[2174,"halo2_frontend::plonk::circuit::constraint_system"],[2175,"halo2_frontend::dev::graph::layout"],[2176,"plotters::coord"],[2177,"plotters::drawing::area"],[2178,"plotters_backend"],[2179,"core::ops::range"],[2180,"halo2_frontend::dev::cost_model"],[2181,"serde::de"],[2182,"serde::ser"],[2183,"halo2_frontend::dev::metadata"],[2184,"std::collections::hash::map"],[2185,"core::hash"],[2186,"halo2_middleware::poly"],[2187,"halo2_backend::plonk"],[2188,"halo2_proofs::plonk::error"],[2189,"halo2_backend::transcript"],[2190,"halo2_middleware::zal::impls"],[2191,"halo2_middleware::zal::traits"],[2192,"std::io::error"],[2193,"halo2_backend::plonk::circuit"],[2194,"halo2_backend::poly::domain"],[2195,"halo2_backend::poly::commitment"],[2196,"halo2_frontend::plonk::lookup"],[2197,"core::default"],[2198,"halo2_frontend::plonk::permutation"],[2199,"halo2_frontend::plonk::circuit::expression::sealed"],[2200,"std::io"],[2201,"halo2_frontend::plonk::shuffle"],[2202,"core::error"],[2203,"halo2_backend::poly::strategy"],[2204,"halo2_backend::poly"],[2205,"halo2_backend::poly::query"],[2206,"halo2_backend::poly::ipa::commitment"],[2207,"halo2_backend::poly::ipa::msm"],[2208,"halo2_backend::poly::ipa::strategy"],[2209,"halo2_backend::poly::ipa::multiopen::prover"],[2210,"halo2_backend::poly::ipa::multiopen::verifier"],[2211,"halo2_backend::poly::kzg::commitment"],[2212,"pairing"],[2213,"halo2_backend::poly::kzg::msm"],[2214,"halo2_backend::poly::kzg::multiopen::gwc::prover"],[2215,"halo2_backend::poly::kzg::multiopen::shplonk::prover"],[2216,"halo2_backend::poly::kzg::multiopen::gwc::verifier"],[2217,"halo2_backend::poly::kzg::multiopen::shplonk::verifier"],[2218,"halo2_backend::poly::kzg::strategy"],[2219,"halo2_backend::arithmetic"],[2220,"halo2_frontend::circuit::floor_planner"],[2221,"halo2_frontend::dev::graph"],[2222,"halo2_proofs::plonk::prover"],[2223,"halo2_proofs::plonk::keygen"],[2224,"halo2_backend::plonk::verifier"],[2225,"halo2_backend::poly::ipa"],[2226,"halo2_backend::poly::ipa::commitment::prover"],[2227,"halo2_backend::poly::ipa::commitment::verifier"],[2228,"halo2_backend::poly::kzg"]],"i":[3,3,3,0,0,3,3,0,3,3,3,3,0,3,3,3,0,3,3,0,0,3,0,3,3,3,3,19,19,13,19,0,0,13,0,20,19,13,20,19,13,19,13,13,20,20,19,13,19,20,19,13,20,20,19,19,0,20,20,20,20,20,20,20,0,0,0,59,0,59,0,0,0,53,0,0,0,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,41,41,41,49,41,53,54,53,54,64,36,56,55,44,41,49,54,64,36,56,55,44,41,49,54,44,36,56,55,44,36,56,55,44,36,36,55,59,41,41,53,54,36,36,44,36,36,64,36,56,56,55,44,41,49,54,64,36,56,55,44,41,49,54,36,64,36,56,55,44,41,49,54,54,41,36,36,44,0,64,36,56,55,44,41,49,54,64,36,36,56,56,55,44,41,41,49,49,54,36,53,54,53,54,64,36,56,55,44,41,49,54,41,64,36,56,55,44,41,49,54,36,36,36,59,36,36,36,36,36,36,36,36,36,36,36,41,53,36,53,54,53,54,55,55,36,36,36,36,36,36,36,36,36,36,36,64,36,36,56,55,44,36,36,64,36,56,55,44,41,49,54,64,36,56,55,44,41,49,54,64,36,56,55,44,41,49,54,36,36,44,44,64,36,56,55,44,41,49,54,36,0,0,80,80,81,80,81,80,80,81,80,81,80,81,80,81,80,81,80,80,80,81,80,81,80,80,80,0,81,81,80,81,80,81,80,0,81,80,0,0,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,0,0,0,0,83,84,83,84,83,84,83,84,83,84,83,84,83,84,83,84,83,84,0,83,84,83,84,83,84,83,84,86,91,90,0,0,90,90,0,89,90,0,90,0,89,91,90,86,90,86,0,85,85,85,85,85,85,85,85,89,90,93,86,85,91,89,90,93,86,85,91,0,89,90,86,91,89,90,86,91,85,0,85,93,89,90,93,86,85,91,89,90,93,86,85,91,89,90,93,86,85,91,90,85,85,89,90,86,91,85,85,85,85,89,89,90,90,93,86,85,91,89,90,93,86,85,91,85,89,90,93,86,85,91,85,85,89,90,93,86,85,91,93,0,85,85,85,93,85,85,93,93,89,90,86,91,89,90,89,90,93,86,85,91,89,90,93,86,85,91,89,90,93,86,85,91,85,91,85,85,93,93,89,90,93,86,85,91,217,217,218,219,220,221,222,219,223,220,221,220,221,219,224,225,222,224,224,225,220,220,221,221,225,0,0,108,108,108,0,0,0,0,0,109,107,108,109,101,102,103,104,107,108,109,101,102,103,104,107,101,102,103,104,101,102,103,104,101,107,108,109,101,102,103,104,107,108,109,101,102,103,104,107,103,107,108,109,101,102,103,104,107,108,101,109,108,109,101,102,103,104,107,108,109,101,102,103,104,107,0,0,101,109,108,109,101,102,103,104,107,109,108,109,101,102,103,104,107,109,109,107,109,107,107,109,101,109,107,107,101,103,107,109,107,107,101,102,103,104,108,109,101,102,103,104,107,108,109,101,102,103,104,107,108,109,101,102,103,104,107,108,109,101,102,103,104,107,0,0,0,0,0,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,111,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,111,112,112,113,113,114,114,115,115,111,111,112,112,112,112,113,113,114,114,115,115,115,115,115,111,111,111,112,113,114,115,111,112,113,114,115,111,111,112,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,0,71,120,0,0,0,40,131,139,40,0,120,0,0,139,40,0,78,120,0,139,0,0,0,0,0,0,0,0,71,120,0,0,78,131,0,71,120,139,139,120,40,139,40,139,139,40,78,0,120,0,38,120,0,0,120,120,40,0,40,0,139,38,0,0,38,38,38,38,38,38,38,120,38,38,92,92,92,124,92,76,92,92,92,76,76,92,131,124,71,139,125,126,38,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,131,124,71,139,125,126,38,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,92,124,92,124,71,125,126,38,92,43,63,128,50,70,120,42,51,48,124,71,125,126,38,92,43,63,128,50,70,120,42,51,48,71,43,50,128,128,43,43,92,120,92,78,78,92,76,92,0,0,38,43,92,92,120,38,131,124,71,139,125,126,38,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,131,124,71,139,125,126,38,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,92,38,131,124,71,139,125,126,38,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,63,92,92,76,76,71,38,43,63,128,50,70,120,42,51,48,38,120,120,76,63,70,76,92,125,92,131,131,124,71,139,139,125,126,38,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,40,131,131,131,124,124,71,71,71,71,139,139,125,126,38,38,38,38,38,140,92,130,43,43,43,43,43,141,142,143,63,128,50,70,70,120,42,51,48,40,125,126,92,124,92,124,92,76,125,126,71,43,63,50,70,42,51,48,125,120,43,63,70,43,128,70,131,124,71,139,125,126,38,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,50,92,92,131,124,71,139,125,126,38,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,140,38,63,38,0,0,0,0,92,92,92,92,124,124,92,38,38,38,38,120,120,38,38,38,38,120,43,43,139,40,92,124,92,124,92,124,92,124,92,38,78,71,43,50,92,124,70,124,92,125,0,76,43,120,76,130,130,127,71,43,42,51,48,120,130,130,76,130,130,125,126,43,128,128,92,92,92,92,124,139,38,120,38,38,38,38,38,38,120,38,38,120,156,78,125,126,124,71,125,126,38,92,43,63,128,50,70,120,42,51,48,141,142,143,131,139,40,125,131,124,71,139,125,126,38,140,92,130,43,43,43,43,141,142,143,63,128,50,70,120,42,51,48,40,131,124,71,139,125,126,38,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,131,124,71,139,125,126,38,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,92,92,124,0,0,131,124,71,139,125,126,38,140,92,130,43,141,142,143,63,128,50,70,120,42,51,48,40,140,78,125,126,226,227,0,167,0,0,123,149,123,149,123,149,123,149,123,149,149,0,149,149,123,123,149,123,149,149,123,149,149,149,149,123,149,149,149,167,123,149,123,149,149,149,149,149,123,123,149,123,149,0,149,0,149,149,149,149,167,149,123,123,149,123,167,149,149,123,149,123,149,123,149,123,149,123,149,0,181,0,165,166,0,181,166,0,0,165,0,165,0,178,166,165,0,175,175,175,176,176,176,175,175,176,175,175,177,152,178,178,175,175,175,152,175,181,175,176,175,175,175,175,152,175,175,175,152,177,178,166,175,165,152,165,176,176,175,175,175,175,166,175,152,0,0,0,0,0,0,0,187,189,187,189,187,187,187,187,0,187,189,187,189,187,187,189,187,187,189,187,189,187,189,187,189,187,187,187,189,187,189,187,187,189,187,189,187,189,0,187,189,187,0,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,0,0,191,192,191,192,191,191,192,191,192,191,192,191,192,191,192,191,192,191,192,191,192,191,192,191,192,191,192,192,191,192,0,0,0,0,190,193,194,195,190,193,194,195,190,193,190,193,190,190,193,194,195,190,193,194,195,190,193,194,195,194,195,190,193,194,195,190,193,194,195,193,190,193,194,195,190,193,194,195,194,195,194,195,190,193,190,193,194,195,190,193,194,195,190,193,194,195,193,190,190,190,193,194,195,0,0,0,0,0,0,0,196,198,200,196,198,200,196,198,196,198,196,196,198,196,198,200,196,198,200,196,198,196,198,200,196,198,196,198,200,196,198,200,196,196,198,200,196,198,200,196,198,196,198,196,200,196,198,196,198,200,196,196,198,196,198,200,196,198,200,196,198,200,196,196,198,200,196,198,196,198,0,0,199,201,199,199,199,201,199,201,199,201,199,201,199,201,199,199,201,199,201,199,201,199,201,199,199,201,199,201,199,201,199,201,199,201,199,199,201,199,201,199,201,199,201,199,201,199,201,0,0,0,0,203,205,204,206,203,205,204,206,203,204,203,205,204,206,203,205,204,206,203,205,204,206,203,205,204,206,203,205,204,206,203,205,204,206,203,205,204,206,203,205,204,204,206,203,205,204,206,203,205,204,206,203,205,204,206,205,206,203,205,204,206,0,0,0,207,208,209,207,208,209,207,208,209,207,208,209,207,208,209,207,208,209,207,208,209,208,209,207,208,209,207,208,209,207,208,209,207,208,209,208,208,209,209,208,209,207,208,209,207,208,209,207,208,209,207,208,209,207,208,209,208,0,0,0,0,132,0,0,0,0,0,132,212,213,214,212,213,214,212,213,214,212,213,214,151,212,213,151,212,213,212,213,214,214,212,213,214,212,213,214,215,213,212,213,214,212,213,214,132,214,216,215,212,212,213,213,214,212,213,214,132,214,168,212,168,212,151,212,213,151,212,213,214,212,213,214,212,213,214,212,213,214,212,213,214,133,213,133,213],"f":"`````{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}`{{{b{f}}}f}{{{b{c}}{b{de}}}h{}{}}{j{{b{c}}}{}}{j{{b{dc}}}{}}`{jh}{{{b{f}}{b{dl}}}{{A`{hn}}}}{cc{}}`{{}j}{ce{}{}}``{{{b{c}}}e{}{}}`{c{{A`{e}}}{}{}}0{{{b{c}}}Ab{}}3````````````{{}c{}}000{{{b{{Aj{}{{Ad{c}}{Af{e}}{Ah{g}}}}}}}{{An{{Al{{Aj{}{{Ad{c}}{Af{e}}{Ah{g}}}}}}}}}{B`Bb}{B`Bb}{{Bf{}{{Bd{}}{Ad{}}}}}}{{{b{Bh}}}Bh}0{{{b{{Bf{}{{Ad{c}}{Af{e}}{Bd{g}}}}}}}{{Bf{}{{Ad{c}}{Af{e}}{Bd{g}}}}}B`B`{{Aj{}{{Ah{}}{Ad{}}{Bj{}}{Bj{}}}}{Bl{c}}{Bl{c}}}}{{cc}{{An{{Aj{}{{Ad{e}}{Af{c}}{Ah{g}}}}}}}{B`Bb}{B`Bb}{{Bf{}{{Bd{}}{Ad{}}}}}}{{{b{Bn}}}{{Cb{C`}}}}{{{b{Bh}}}{{An{Bh}}}}{{{b{{Bf{}{{Ad{c}}{Af{e}}{Bd{g}}}}}}}CdB`B`{{Aj{}{{Ah{}}{Ad{}}{Bj{}}{Bj{}}}}{Bl{c}}{Bl{c}}}}{{{b{{Aj{}{{Ad{c}}{Af{e}}{Ah{g}}}}}}}Cd{B`Bb}{B`Bb}{{Bf{}{{Bd{}}{Ad{}}}}}}{{{b{Bh}}}Cd}{{{b{Bh}}}Cf}{{{b{{Bf{}{{Ad{c}}{Af{e}}{Bd{g}}}}}}}{{Ch{eee}}}B`B`{{Aj{}{{Ah{}}{Ad{}}{Bj{}}{Bj{}}}}{Bl{c}}{Bl{c}}}}{{ccc}{{An{{Bf{}{{Ad{e}}{Af{c}}{Bd{g}}}}}}}B`B`{{Aj{}{{Ah{}}{Ad{}}{Bj{}}{Bj{}}}}{Bl{e}}{Bl{e}}}}{{{b{d{Cj{c}}}}e}hCl{{C`{{b{d{Cj{c}}}}j}}ClCnD`}}{{{b{Bh}}c}Bh{{Dd{{Cj{Db}}}}}}0{cBhDf}9{{{b{Bh}}}{{Ch{CdBh}}}}{{{b{Bh}}{b{Bh}}}{{Ch{CdBh}}}}?`````````````{{{b{{Dh{c}}}}{b{{Dh{c}}}}}{}{}}{{{Dh{c}}{b{{Dh{c}}}}}{}{{Dj{b}{{Bj{}}}}}{}}{{{b{{Dh{c}}}}{Dh{c}}}{}{}}{{{Dh{e}}{Dh{e}}}{}{}{{Dj{}{{Bj{c}}}}}}{{{Dh{{b{c}}}}{Dh{c}}}{}{}}{{{Dh{{b{{Dl{c}}}}}}{Dh{c}}}{}Bh}{{{Dh{{b{{Dl{c}}}}}}c}{}Bh}{{{Dh{c}}{Dh{{b{c}}}}}{}{{Dj{b}{{Bj{}}}}}{}}{{{Dh{{Dl{c}}}}c}{}Bh}{{{Dh{{Dl{c}}}}{Dh{c}}}{}Bh}{{{Dh{c}}g}{{Dh{e}}}{}{}{{Dn{c}{{Bj{{Dh{e}}}}}}}}{{{b{d{Dh{c}}}}}{{Dh{{b{dc}}}}}{}}{{{b{{Dh{c}}}}}{{Dh{{b{c}}}}}{}}{{{b{{Dh{c}}}}e}h{}{{Dn{{b{c}}}{{Bj{Cf}}}}}}{{{Dh{c}}}{{A`{cE`}}}{}}{{{b{d{Eb{c}}}}g{Ef{Ed}}jk}{{A`{{Eh{ic}}E`}}}Bh{{El{Ej}}}{{C`{}{{Bj{e}}}}}{}{{En{}{{Bj{{Dh{i}}}}}}}}{{{b{d{Eb{c}}}}g{Ef{Ed}}ji}{{A`{{Eh{ic}}E`}}}Bh{{El{Ej}}}{{C`{}{{Bj{e}}}}}{}}{{{b{d{Eb{c}}}}g{Ef{F`}}j{Ef{Ed}}j}{{A`{{Eh{cc}}E`}}}Bh{{El{Ej}}}{{C`{}{{Bj{e}}}}}}{{{b{d{Fb{c}}}}gFdjk}{{A`{hE`}}}Bh{{El{Ej}}}{{C`{}{{Bj{e}}}}}{{El{{Dl{c}}}}}{{En{}{{Bj{{Dh{i}}}}}}}}{{{b{d{Eb{c}}}}g{Ef{Ff}}jk}{{A`{{Eh{ic}}E`}}}Bh{{El{Ej}}}{{C`{}{{Bj{e}}}}}{}{{En{}{{Bj{{Dh{i}}}}}}}}{{{b{d{Fj{}{{Fh{c}}}}}}im}{{A`{kE`}}}{{Fj{e}}}Bh{{El{Ej}}}{{C`{}{{Bj{g}}}}}{}{{En{{Eb{e}}}{{Bj{{A`{kE`}}}}}}}}{{{b{d{Fl{ce}}}}im}{{A`{kE`}}}Bh{{Fj{c}}}{{El{Ej}}}{{C`{}{{Bj{g}}}}}{}{{En{{Eb{c}}}{{Bj{{A`{kE`}}}}}}}}{{{b{d{Fj{}{{Fh{c}}}}}}ik}{{A`{hE`}}}{{Fj{e}}}Bh{{El{Ej}}}{{C`{}{{Bj{g}}}}}{{En{{Fb{e}}}{{Bj{{A`{hE`}}}}}}}}{{{b{d{Fl{ce}}}}ik}{{A`{hE`}}}Bh{{Fj{c}}}{{El{Ej}}}{{C`{}{{Bj{g}}}}}{{En{{Fb{c}}}{{Bj{{A`{hE`}}}}}}}}{{{b{c}}}{{b{e}}}{}{}}0000000{{{b{dc}}}{{b{de}}}{}{}}0000000{{{b{{Eh{ce}}}}}Fn{}Bh}{{{b{{Dh{c}}}}}{{Dh{c}}}D`}{{{b{G`}}}G`}{{{b{Fn}}}Fn}{{{b{{Eh{ce}}}}}{{Eh{ce}}}D`{D`Bh}}{{{b{c}}{b{de}}}h{}{}}000{{{Dh{{b{dc}}}}}{{Dh{c}}}D`}{{{Dh{{b{c}}}}}{{Dh{c}}}D`}`{{{b{{Gf{}{{Gb{c}}{Gd{e}}}}}}}{{b{c}}}{GhD`}{GhD`}}{{{b{d{Eb{c}}}}Fne}{{A`{hE`}}}Bh{{El{{Dl{c}}}}}}{{{b{d{Eb{c}}}}FnFn}{{A`{hE`}}}Bh}{{{b{d{Fj{}{{Fh{c}}}}}}Fn{Ef{F`}}j}{{A`{hE`}}}{{Fj{e}}}Bh}{{{b{d{Fl{ce}}}}Fn{Ef{F`}}j}{{A`{hE`}}}Bh{{Fj{c}}}}{{{Dh{{b{dc}}}}}{{Dh{c}}}Gj}{{{Dh{{b{c}}}}}{{Dh{c}}}Gj}{{{b{{Eh{ce}}}}i{b{d{Eb{e}}}}{Ef{Ed}}j}{{A`{{Eh{ce}}E`}}}D`Bh{{El{Ej}}}{{C`{}{{Bj{g}}}}}}{{{b{{Dh{e}}}}}{{Dh{{Dl{c}}}}}Bh{{Gl{{Dl{c}}}}}}{{}{{Dh{c}}}{}}{j{{b{c}}}{}}00{{{b{G`}}}b}11111{j{{b{dc}}}{}}00000004{jh}000000{{{b{d{Fl{ce}}}}}hBh{{Fj{c}}}}1{{{b{d{Eb{c}}}}g{b{Gn}}j}{{A`{hE`}}}Bh{{El{Ej}}}{{C`{}{{Bj{e}}}}}}{{{b{{Dh{c}}}}e}{{A`{hE`}}}{}{{Dn{{b{c}}}{{Bj{Cf}}}}}}{{{Dh{{Dl{c}}}}}{{Dh{c}}}Bh}{{{Eh{{Dl{c}}c}}}{{Eh{cc}}}Bh}`{{{b{H`}}{b{dl}}}{{A`{hn}}}}{{{b{{Dh{c}}}}{b{dl}}}{{A`{hn}}}Gh}{{{b{G`}}{b{dl}}}{{A`{hn}}}}{{{b{Fn}}{b{dl}}}{{A`{hn}}}}{{{b{{Eh{ce}}}}{b{dl}}}{{A`{hn}}}Gh{GhBh}}{{{b{{Eb{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{{Fb{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{{Fl{ce}}}}{b{dl}}}{{A`{hn}}}{GhBh}{Gh{Fj{c}}}}{cc{}}0{{{Dh{c}}}{{Dh{{Dl{c}}}}}Bh}1{jG`}22{{{b{dHb}}}{{Eb{c}}}Bh}3{{{b{dHd}}}{{Fb{c}}}Bh}44{e{{Dh{g}}}{}{{Hh{}{{Hf{{Dh{c}}}}}}}{{Hj{c}}}}{{{b{{Fj{}{{Fh{c}}}}}}Hl}{{Dh{e}}}{{Fj{e}}}Bh}{{{b{{Fl{ce}}}}Hl}{{Dh{c}}}Bh{{Fj{c}}}}{{{b{d{Fj{}{{Fh{c}}}}}}}{{b{dc}}}{{Fj{e}}}Bh}{{{b{d{Fl{ce}}}}}{{b{d}}}Bh{{Fj{c}}}}{{}j}0000000{{{b{d{Eb{c}}}}{Ef{F`}}j}{{A`{{Dh{c}}E`}}}Bh}{ce{}{}}0000000{{{Dh{e}}}{{Dh{{Dl{c}}}}}Bh{{El{{Dl{c}}}}}}{{{b{{Dh{e}}}}}{{Dh{{Dl{c}}}}}Bh{{Gl{{Dl{c}}}}}}{c{{Dh{c}}}{}}{{{b{{Gf{}{{Gb{c}}{Gd{e}}}}}}}{{b{e}}}{GhD`}{GhD`}}{{{Dh{c}}g}{{Dh{e}}}{}{}{{Dn{c}{{Bj{e}}}}}}{{{Dh{{Dl{c}}}}c}{}Bh}{{{Dh{c}}{Dh{{b{c}}}}}{}{{Bl{b}{{Bj{}}}}}{}}{{{b{{Dh{c}}}}{Dh{c}}}{}{}}{{{Dh{{Dl{c}}}}{Dh{c}}}{}Bh}{{{Dh{e}}{Dh{e}}}{}{}{{Bl{}{{Bj{c}}}}}}{{{b{{Dh{c}}}}{b{{Dh{c}}}}}{}{}}{{{Dh{{b{{Dl{c}}}}}}{Dh{c}}}{}Bh}{{{Dh{{b{{Dl{c}}}}}}c}{}Bh}{{{Dh{{b{c}}}}{Dh{c}}}{}{}}{{{Dh{c}}{b{{Dh{c}}}}}{}{{Bl{b}{{Bj{}}}}}{}}{{{b{d{Eb{c}}}}gi}hBh{{El{Ej}}}{{C`{}{{Bj{e}}}}}{{El{{Ef{Hn}}}}}}{{{b{d{Fj{}{{Fh{c}}}}}}i}{{Fl{ec}}}{{Fj{e}}}Bh{{El{Ej}}}{{Dn{}{{Bj{g}}}}}}{{{Dh{c}}}{}I`}{{{b{d{Fj{}{{Fh{c}}}}}}{Ib{Ej}}}h{{Fj{e}}}Bh}{{{b{d{Fl{ce}}}}{Ib{Ej}}}hBh{{Fj{c}}}}{{{b{d{Fj{}{{Fh{c}}}}}}i}h{{Fj{e}}}Bh{{El{Ej}}}{{Dn{}{{Bj{g}}}}}}{{{b{d{Fl{ce}}}}i}hBh{{Fj{c}}}{{El{Ej}}}{{Dn{}{{Bj{g}}}}}}``{{{b{{Dh{e}}}}}{{Dh{{Dl{c}}}}}Bh{{Gl{{Dl{c}}}}}}9{{{Dh{e}}{Dh{e}}}{}{}{{Id{}{{Bj{c}}}}}}?=;<{{{Dh{c}}{Dh{{b{c}}}}}{}{{Id{b}{{Bj{}}}}}{}}{{{b{{Dh{c}}}}{Dh{c}}}{}{}}{{{Dh{{Dl{c}}}}c}{}Bh}{{{Dh{c}}{b{{Dh{c}}}}}{}{{Id{b}{{Bj{}}}}}{}}{{{b{de}}{b{g}}{If{{Ef{Ff}}}}}{{A`{hE`}}}Bh{{Ih{c}}Ij}{{Il{c}}}}{{{b{{Dh{c}}}}}{{Dh{{Dl{e}}}}}{}Bh}{{{b{c}}}e{}{}}000{{{Dh{{In{c}}}}}{{In{{Dh{c}}}}}Gj}{{{Dh{e}}j}{{If{{Dh{c}}}}}{}{{Hh{}{{Hf{c}}}}}}{c{{A`{e}}}{}{}}000000000000000{{{b{c}}}Ab{}}0000000{{}{{Dh{c}}}{}}{{{Dh{{Ch{ce}}}}}{{Ch{{Dh{c}}{Dh{e}}}}}{}{}}{{{b{{Eh{ce}}}}}{{Dh{{b{c}}}}}{}Bh}{{{b{{Eh{ce}}}}}{{Dh{{Dl{e}}}}}{}Bh}{ce{}{}}0000000{{{Dh{c}}{Dh{e}}}{{Dh{{Ch{ce}}}}}{}{}}``{{{b{d{J`{ce}}}}im}{{A`{kE`}}}Bh{{Ih{c}}Ij}{{El{Ej}}}{{C`{}{{Bj{g}}}}}{}{{En{{Eb{c}}}{{Bj{{A`{kE`}}}}}}}}{{{b{d{J`{ce}}}}ik}{{A`{hE`}}}Bh{{Ih{c}}Ij}{{El{Ej}}}{{C`{}{{Bj{g}}}}}{{En{{Fb{c}}}{{Bj{{A`{hE`}}}}}}}}{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{d{J`{ce}}}}Fn{Ef{F`}}j}{{A`{hE`}}}Bh{{Ih{c}}Ij}}{j{{b{c}}}{}}0{j{{b{dc}}}{}}0{jh}0{{{b{Jb}}{b{dl}}}{{A`{hn}}}}{{{b{{J`{ce}}}}{b{dl}}}{{A`{hn}}}{GhBh}{Gh{Ih{c}}}}{cc{}}0{{{b{{J`{ce}}}}Hl}{{Dh{c}}}Bh{{Ih{c}}Ij}}{{{b{d{J`{ce}}}}}{{b{d}}}Bh{{Ih{c}}Ij}}{{}j}0??{{{b{d{J`{ce}}}}{Ib{Ej}}}hBh{{Ih{c}}Ij}}{{{b{d{J`{ce}}}}i}hBh{{Ih{c}}Ij}{{El{Ej}}}{{Dn{}{{Bj{g}}}}}}`{{{b{de}}{b{g}}{If{{Ef{Ff}}}}}{{A`{hE`}}}Bh{{Ih{c}}Ij}{{Il{c}}}}{c{{A`{e}}}{}{}}000{{{b{c}}}Ab{}}0`{ce{}{}}0``{{{b{d{Jd{ce}}}}im}{{A`{kE`}}}Bh{{Ih{c}}Ij}{{El{Ej}}}{{C`{}{{Bj{g}}}}}{}{{En{{Eb{c}}}{{Bj{{A`{kE`}}}}}}}}{{{b{d{Jd{ce}}}}ik}{{A`{hE`}}}Bh{{Ih{c}}Ij}{{El{Ej}}}{{C`{}{{Bj{g}}}}}{{En{{Fb{c}}}{{Bj{{A`{hE`}}}}}}}}{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{d{Jd{ce}}}}Fn{Ef{F`}}j}{{A`{hE`}}}Bh{{Ih{c}}Ij}}{j{{b{c}}}{}}{j{{b{dc}}}{}}{jh}{{{b{{Jd{ce}}}}{b{dl}}}{{A`{hn}}}Bh{{Ih{c}}}}{cc{}}{{{b{{Jd{ce}}}}Hl}{{Dh{c}}}Bh{{Ih{c}}Ij}}{{{b{d{Jd{ce}}}}}{{b{d}}}Bh{{Ih{c}}Ij}}{{}j}={{{b{de}}{If{{Ef{Ff}}}}}{{A`{{Jd{ce}}E`}}}Bh{{Ih{c}}}}{{{b{d{Jd{ce}}}}{Ib{Ej}}}hBh{{Ih{c}}Ij}}{{{b{d{Jd{ce}}}}i}hBh{{Ih{c}}Ij}{{El{Ej}}}{{Dn{}{{Bj{g}}}}}}{c{{A`{e}}}{}{}}0{{{b{c}}}Ab{}}{ce{}{}}````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0??>>=={{{b{Jf}}{b{dl}}}{{A`{hn}}}}{{{b{{Jh{ce}}}}{b{dl}}}{{A`{hn}}}{GhBh}{Gh{Ih{c}}}}==::44`66665544````````````````````{{{b{{Jj{c}}}}}{{b{{If{{If{{Jl{c}}}}}}}}}{JnBb}}{{{b{d{Jj{c}}}}j}{{b{d{Cj{{Jl{c}}}}}}}Bh}{{{b{{Jj{c}}}}{Ef{Ed}}}{{b{{Cj{{Jl{c}}}}}}}{JnBb}}{{{b{d{Jj{c}}}}g{Ef{Hn}}}hBh{{El{Ej}}}{{Dn{}{{Bj{e}}}}}}{{{b{{Jj{c}}}}}h{JnBb}}{{{b{{Jj{c}}}}ee}h{JnBb}{D`{K`{}{{Hf{j}}}}}}{{{b{d{Jj{c}}}}g{Ef{Ed}}jk}{{A`{hE`}}}Bh{{El{Ej}}}{{Dn{}{{Bj{e}}}}}{{El{{Dl{c}}}}}{{Dn{}{{Bj{{Dh{i}}}}}}}}{{{b{d{Jj{c}}}}g{Ef{Ff}}jk}{{A`{hE`}}}Bh{{El{Ej}}}{{Dn{}{{Bj{e}}}}}{{El{{Dl{c}}}}}{{Dn{}{{Bj{{Dh{i}}}}}}}};;;;;;::::::{{{b{e}}}EjBh{{Il{c}}}}{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{{b{{Jl{c}}}}}{{Jl{c}}}{D`Bh}}{{{b{{Kf{c}}}}}{{Kf{c}}}{D`Bh}}{{{b{c}}{b{de}}}h{}{}}000{{{b{d{Jj{c}}}}{Ef{Hn}}j{Ef{Hn}}j}{{A`{hE`}}}Bh}`{{{b{{Jj{c}}}}}{{b{{Kh{c}}}}}{JnBb}}{{}Kj}{j{{b{c}}}{}}00000{j{{b{dc}}}{}}00000{jh}00000{{{b{Kd}}{b{{Jj{c}}}}}hBh}{{{b{d{Jj{c}}}}g{b{Gn}}j}{{A`{hE`}}}Bh{{El{Ej}}}{{Dn{}{{Bj{e}}}}}}{{{b{d{Jj{c}}}}g}hBh{{El{Ej}}}{{Dn{}{{Bj{e}}}}}}{{{b{Kb}}{b{Kb}}}Cf}{{{b{Kd}}{b{Kd}}}Cf}{{{b{{Jl{c}}}}{b{{Jl{c}}}}}Cf{KlBh}}{{{b{{Kf{c}}}}{b{{Kf{c}}}}}Cf{KlBh}}{{{b{d{Jj{c}}}}}hBh}{{{b{d{Jj{c}}}}{Ef{Ff}}j{Dh{{Dl{c}}}}}{{A`{hE`}}}Bh}{{{b{{Jj{c}}}}}{{b{{If{{If{{Jl{c}}}}}}}}}{JnBb}}{{{b{{Jj{c}}}}{Ef{Ff}}}{{b{{Cj{{Jl{c}}}}}}}{JnBb}}{{{b{Kb}}{b{dl}}}{{A`{hn}}}}0{{{b{Kd}}{b{dl}}}{{A`{hn}}}}0{{{b{Kj}}{b{dl}}}{{A`{hn}}}}{{{b{{Jl{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{{Jj{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{{Kf{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{cc{}}00000{{{b{{Jj{c}}}}Hl}{{Dh{c}}}Bh}{{}j}00000{{{b{{Jj{c}}}}}{{b{{If{{If{{Kf{c}}}}}}}}}{JnBb}}{{{b{d{Jj{c}}}}j}{{b{d{Cj{{Kf{c}}}}}}}Bh}{ce{}{}}00000{{KjCf}Kj}`{{{b{d{Jj{c}}}}{Ib{Ej}}}hBh}{{{b{d{Jj{c}}}}g}hBh{{El{Ej}}}{{Dn{}{{Bj{e}}}}}}{{{b{{Jj{c}}}}{Ef{F`}}j}{{A`{{Dh{c}}E`}}}Bh}{{KjKn{b{e}}{b{{Lb{gL`}}}}}{{A`{hLd}}}Bh{{Il{c}}}Lf}{{Kn{b{e}}{If{{If{c}}}}}{{A`{{Jj{c}}E`}}}{JnBb}{{Il{c}}}}{{{b{{Jj{c}}}}}{{b{{If{{If{Cf}}}}}}}{JnBb}}66{{{b{c}}}e{}{}}000{{{b{c}}}Ej{}}0{c{{A`{e}}}{}{}}00000000000{{{b{c}}}Ab{}}00000{{{b{{Jj{c}}}}}{{b{{Lh{j}}}}}{JnBb}}{{{b{{Kf{c}}}}}cBh}{{{b{{Jj{c}}}}}{{A`{h{If{Kd}}}}}{JnBb}}{{{b{{Jj{c}}}}ee}{{A`{h{If{Kd}}}}}{JnBb}{D`{K`{}{{Hf{j}}}}}}{{Kj{Lh{j}}}Kj}0{ce{}{}}00000`````````````````````````````````````{{{b{c}}}{{b{e}}}{}{}}000000{{{b{dc}}}{{b{de}}}{}{}}000000{{{b{Lj}}}Lj}{{{b{Ll}}}Ll}{{{b{Ln}}}Ln}{{{b{M`}}}M`}{{{b{c}}{b{de}}}h{}{}}000{{{b{Lj}}{b{Lj}}}Mb}`{j{{b{c}}}{}}000000{j{{b{dc}}}{}}000000{c{{A`{Ln}}}Md}{c{{A`{Mf}}}Md}{jh}000000{{{b{Mh}}{b{Mh}}}Cf}{{{b{Lj}}{b{Lj}}}Cf}`{{{b{Mh}}{b{dl}}}{{A`{hn}}}}{{{b{Mj}}{b{dl}}}{{A`{hn}}}}{{{b{Lj}}{b{dl}}}{{A`{hn}}}}{{{b{Ll}}{b{dl}}}{{A`{hn}}}}{{{b{Ln}}{b{dl}}}{{A`{hn}}}}{{{b{M`}}{b{dl}}}{{A`{hn}}}}{{{b{Mf}}{b{dl}}}{{A`{hn}}}}{cc{}}000000{{Kn{b{e}}{If{{If{c}}}}}Mj{BbBhJn}{{Il{c}}}}{{Kn{b{e}}{If{{If{c}}}}Mh}Mf{BbBhJn}{{Il{c}}}}{{{b{Bn}}}{{A`{Lj}}}}`{{}j}000000`{ce{}{}}000000{{{b{Mj}}Mh}Mf}``````{{{b{Lj}}{b{Lj}}}{{Ib{Mb}}}}````{{{b{Ln}}c}A`Ml}{{{b{Mf}}c}A`Ml}```{{{b{c}}}e{}{}}000{c{{A`{e}}}{}{}}0000000000000{{{b{c}}}Ab{}}0000007777777`````{{{b{c}}}{{b{e}}}{}{}}0000{{{b{dc}}}{{b{de}}}{}{}}0000{{{b{Mn}}}Mn}{{{b{N`}}}N`}{{{b{Nb}}}Nb}{{{b{Nd}}}Nd}{{{b{Nf}}}Nf}{{{b{c}}{b{de}}}h{}{}}0000{{{b{Mn}}{b{Mn}}}Mb}{{{b{N`}}{b{N`}}}Mb}`{j{{b{c}}}{}}0000{j{{b{dc}}}{}}0000{jh}0000{{{b{Mn}}{b{Mn}}}Cf}{{{b{N`}}{b{N`}}}Cf}{{{b{Nb}}{b{Nb}}}Cf}{{{b{Nd}}{b{Nd}}}Cf}{{{b{Nf}}{b{Nf}}}Cf}{{{b{Mn}}{b{dl}}}{{A`{hn}}}}0{{{b{N`}}{b{dl}}}{{A`{hn}}}}0{{{b{Nb}}{b{dl}}}{{A`{hn}}}}0{{{b{Nd}}{b{dl}}}{{A`{hn}}}}0{{{b{Nf}}{b{dl}}}{{A`{hn}}}}0{{{Ef{Hn}}}Mn}{cc{}}{NhN`}{{{Ch{MnNj}}}N`}2{{{Ch{cMnNj}}}N`{{Dd{Bn}}}}{{{Ch{jc}}}Nb{{Dd{Bn}}}}4{{{Ch{Nbjc}}}Nd{{Dd{Bn}}}}5{{{Ch{j{b{Bn}}{Nl{MnEj}}}}}Nf}6{{{Ch{j{b{Bn}}}}}Nf}{{{Ch{jEj}}}Nf}{{{Ch{jEj{Nl{MnEj}}}}}Nf}{{{b{Mn}}{b{dc}}}hNn}`{{}j}0000{ce{}{}}0000{{Hnj}Mn}{{{b{Mn}}{b{Mn}}}{{Ib{Mb}}}}{{{b{N`}}{b{N`}}}{{Ib{Mb}}}}{{{b{c}}}e{}{}}0000{{{b{c}}}Ej{}}0000{c{{A`{e}}}{}{}}000000000{{{b{c}}}Ab{}}000077777``````````````````````````````````````````````````````````````````{{{b{{Dl{c}}}}{Dl{c}}}{{Dl{c}}}Bh}{{{Dl{c}}{Dl{c}}}{{Dl{c}}}Bh}{{{Dl{c}}{b{{Dl{c}}}}}{{Dl{c}}}Bh}{{{b{{Dl{c}}}}c}{{Dl{c}}}Bh}{{{Dl{c}}c}{{Dl{c}}}Bh}{{{b{{Dl{c}}}}{b{{Dl{c}}}}}{{Dl{c}}}Bh}{{{O`{c}}{O`{c}}}{{O`{c}}}Bh}{{{b{d{Dl{c}}}}{Dl{c}}}hBh}{{{b{d{Dl{c}}}}{b{{Dl{c}}}}}hBh}{{{b{d{Kh{c}}}}}{{Ef{Ed}}}Bh}{{{b{d{Kh{c}}}}e}{{Ef{Ed}}}BhOb}{{{b{{Kh{c}}}}}{{If{Od}}}Bh}`{{{b{{Kh{c}}}}}{{b{{If{{Ch{{Ef{Ed}}Of}}}}}}}Bh}{{{b{dIh}}e{Ef{Hn}}}h{{El{Ej}}}{{Dn{}{{Bj{c}}}}}}{{{b{d{Kh{c}}}}ei}hBh{{El{{Ef{Hn}}}}}{{El{Ej}}}{{C`{}{{Bj{g}}}}}}0{{{b{d{Kh{c}}}}Fdg}hBh{{El{Ej}}}{{C`{}{{Bj{e}}}}}}{{{b{dIh}}e{Ef{Ed}}jk}{{A`{hE`}}}{{El{Ej}}}{{Dn{}{{Bj{c}}}}}Bh{{El{{Dl{g}}}}}{{Dn{}{{Bj{{Dh{i}}}}}}}}{{{b{dIh}}e{Ef{Ff}}jk}{{A`{hE`}}}{{El{Ej}}}{{Dn{}{{Bj{c}}}}}Bh{{El{{Dl{g}}}}}{{Dn{}{{Bj{{Dh{i}}}}}}}}{{{b{{Kh{c}}}}}jBh}{{{b{c}}}{{b{e}}}{}{}}0000000000000000000000{{{b{dc}}}{{b{de}}}{}{}}00000000000000000000009`{{{b{d{Kh{c}}}}e}HlBhOb}{{{b{{Oh{c}}}}}{{Oh{c}}}{D`Bh}}{{{b{Hn}}}Hn}{{{b{{Oj{c}}}}}{{Oj{c}}}{D`Aj}}{{{b{{Ol{c}}}}}{{Ol{c}}}{D`Aj}}{{{b{{Dl{c}}}}}{{Dl{c}}}D`}{{{b{{Kh{c}}}}}{{Kh{c}}}{D`Bh}}{{{b{{Ef{c}}}}}{{Ef{c}}}{D`On}}{{{b{Gn}}}Gn}{{{b{A@`}}}A@`}{{{b{Fd}}}Fd}{{{b{Hl}}}Hl}{{{b{{O`{c}}}}}{{O`{c}}}D`}{{{b{Ed}}}Ed}{{{b{Ff}}}Ff}{{{b{F`}}}F`}{{{b{c}}{b{de}}}h{}{}}00000000000000{{{b{Hn}}{b{Hn}}}Mb}{{{b{{Ef{c}}}}{b{{Ef{c}}}}}MbOn}{{{b{Fd}}{b{Fd}}}Mb}{{{b{A@`}}}j}`{{{b{{Ef{c}}}}}{{b{c}}}On}`{{{b{d{Kh{c}}}}}GnBh}{{{b{{O`{c}}}}}jBh}{{{Kh{c}}{If{{If{Cf}}}}}{{Ch{{Kh{c}}{If{{If{c}}}}}}}Bh}{{{b{d{Kh{c}}}}}eBh{}}{{{b{d{Kh{c}}}}e}gBh{}{}}{{{b{{Kh{c}}}}}{{b{{If{{Ef{Ff}}}}}}}Bh}{{{b{dIh}}{Ef{Hn}}j{Ef{Hn}}j}{{A`{hE`}}}}{{{b{d{Kh{c}}}}ek}hBh{{Dd{Bn}}}{{El{{A@b{c}}}}}{{Hh{}{{Hf{g}}}}}{{Dn{{b{d{A@d{c}}}}}{{Bj{i}}}}}}{{b{b{Ol}}{b{{Cj{c}}}}{b{{Cj{{If{If}}}}}}e{b{di}}}{{A`{hA@f}}}IlDfA@h{{A@j{g}}}}{{{A@l{c}}b{b{Ol}}{b{{Cj{e}}}}{b{{Cj{{If{If}}}}}}g{b{dk}}}{{A`{hA@f}}}A@nIlDfA@h{{A@j{i}}}}{{{b{{Dl{c}}}}}{{Dl{c}}}Bh}{{{b{{Ef{c}}}}}{{O`{e}}}OnBh}{{}{{Kh{c}}}Bh}{{{b{{Kh{c}}}}}jBh}<{{{b{{Dl{c}}}}}{{Ib{c}}}Bh}{j{{b{c}}}{}}0000000000000000000000{j{{b{dc}}}{}}0000000000000000000000>6{jh}0000000000000000000000{{{b{Gn}}{b{d{Eb{c}}}}j}{{A`{hE`}}}Bh}{{{b{d{Kh{c}}}}{Ef{Ff}}}hBh}{{{b{d{Kh{c}}}}e}hBh{{El{{Ef{Hn}}}}}}{{{b{dIh}}e{b{Gn}}j}{{A`{hE`}}}{{El{Ej}}}{{Dn{}{{Bj{c}}}}}}{{{b{dIh}}e}h{{El{Ej}}}{{Dn{}{{Bj{c}}}}}}{{{b{Hn}}{b{Hn}}}Cf}{{{b{{Dl{c}}}}{b{{Dl{c}}}}}CfBh}{{{b{{Ef{c}}}}{b{{Ef{c}}}}}Cf{KlOn}}{{{b{Gn}}{b{Gn}}}Cf}{{{b{A@`}}{b{A@`}}}Cf}{{{b{Fd}}{b{Fd}}}Cf}{{{b{Hl}}{b{Hl}}}Cf}{{{b{{O`{c}}}}{b{{O`{c}}}}}CfKl}{{{b{Ed}}{b{Ed}}}Cf}{{{b{Ff}}{b{Ff}}}Cf}{{{b{F`}}{b{F`}}}Cf}{{{Dl{c}}}cBh}{{{b{{O`{c}}}}{b{g}}{b{i}}{b{k}}{b{m}}{b{o}}{b{Aa}}{b{Ac}}{b{Ae}}{b{Ag}}{b{Ai}}}eBh{}{{C`{c}{{Bj{e}}}}}{{C`{Gn}{{Bj{e}}}}}{{C`{A@`}{{Bj{e}}}}}{{C`{AA`}{{Bj{e}}}}}{{C`{AAb}{{Bj{e}}}}}{{C`{Hl}{{Bj{e}}}}}{{C`{e}{{Bj{e}}}}}{{C`{ee}{{Bj{e}}}}}{{C`{ee}{{Bj{e}}}}}{{C`{ec}{{Bj{e}}}}}}{{{b{{O`{c}}}}{b{g}}{b{i}}{b{k}}{b{m}}{b{o}}{b{Aa}}{b{Ac}}{b{Ae}}{b{Ag}}{b{Ai}}{b{e}}}eBhKl{{C`{c}{{Bj{e}}}}}{{C`{Gn}{{Bj{e}}}}}{{C`{A@`}{{Bj{e}}}}}{{C`{AA`}{{Bj{e}}}}}{{C`{AAb}{{Bj{e}}}}}{{C`{Hl}{{Bj{e}}}}}{{C`{e}{{Bj{e}}}}}{{C`{ee}{{Bj{e}}}}}{{C`{ee}{{Bj{e}}}}}{{C`{ec}{{Bj{e}}}}}}{{{b{dIh}}}h}{{{b{Gn}}}{{O`{c}}}Bh}{{{b{Hl}}}{{O`{c}}}Bh}{{{b{dIh}}{Ef{Ff}}j{Dh{{Dl{c}}}}}{{A`{hE`}}}Bh}{{{b{d{Kh{c}}}}}{{Ef{Ff}}}Bh}{{{b{{Oj{c}}}}}{{b{{If{c}}}}}Aj}{{{b{{Kh{c}}}}}{{b{{If{{Ch{{Ef{Ff}}Of}}}}}}}Bh}{{{b{A@f}}{b{dl}}}AAd}0{{{b{{Oh{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{Hn}}{b{dl}}}{{A`{hn}}}}{{{b{AAf}}{b{dl}}}{{A`{hn}}}}0{{{b{{Oj{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{Ol{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{Dl{c}}}}{b{dl}}}{{A`{hn}}}Gh}{{{b{{AAh{ceg}}}}{b{dl}}}{{A`{hn}}}{GhBh}{Gh{El{{A@b{c}}}}}{Gh{Hh{}{{Hf{e}}}}}}{{{b{{Kh{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{{A@d{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{{{b{{Ef{c}}}}{b{dl}}}{{A`{hn}}}{GhOn}}{{{b{AAj}}{b{dl}}}{{A`{hn}}}}{{{b{AAl}}{b{dl}}}{{A`{hn}}}}{{{b{AAn}}{b{dl}}}{{A`{hn}}}}{{{b{Gn}}{b{dl}}}{{A`{hn}}}}{{{b{A@`}}{b{dl}}}{{A`{hn}}}}{{{b{Fd}}{b{dl}}}{{A`{hn}}}}{{{b{Hl}}{b{dl}}}{{A`{hn}}}}{{{b{{O`{c}}}}{b{dl}}}{{A`{hn}}}Gh}{{{b{Ed}}{b{dl}}}{{A`{hn}}}}{{{b{Ff}}{b{dl}}}{{A`{hn}}}}{{{b{F`}}{b{dl}}}{{A`{hn}}}}{{{b{E`}}{b{dl}}}{{A`{hn}}}}0{E`A@f}{cc{}}{AAfA@f}{{{Kh{c}}}{{Oh{c}}}Bh}2{F`Hn}3{FfHn}{EdHn}{AB`AAf}666{{{Ch{cc}}}{{Dl{c}}}Bh}{{{b{c}}}{{Dl{c}}}Bh}{{{b{{Dl{c}}}}}{{Dl{c}}}Bh}9{c{{Dl{c}}}Bh}:::{Mn{{Ef{Hn}}}};{{{Ef{Ed}}}{{Ef{Hn}}}}{{{Ef{F`}}}{{Ef{Hn}}}}{{{Ef{Ff}}}{{Ef{Hn}}}}>>>>>>>{ABbHl}?????{{{b{{Cj{Od}}}}fABd}{{A`{{Oj{c}}AB`}}}ABf}{{{b{{Cj{Od}}}}fABd}{{A`{{Ol{c}}AB`}}}ABf}{{{b{{Kh{c}}}}}{{b{{If{{ABh{c}}}}}}}Bh}`{{{b{{Kh{c}}}}}{{b{{Nl{MnEj}}}}}Bh}`{{{b{{Kh{c}}}}{Ef{Hn}}Of}jBh}{{{b{Ih}}Hl}{{Dh{c}}}Bh}{{{b{{Oj{c}}}}}{{b{ABj}}}Aj}{{{b{{Ol{c}}}}}{{b{{Oj{c}}}}}Aj}{{{b{Hn}}{b{dc}}}hNn}{{{b{{Ef{c}}}}{b{de}}}h{ABlOn}Nn}{{{b{Gn}}{b{dc}}}hNn}{{{b{Fd}}{b{dc}}}hNn}{{{b{Hl}}{b{dc}}}hNn}{{{b{Ed}}{b{dc}}}hNn}{{{b{Ff}}{b{dc}}}hNn}{{{b{F`}}{b{dc}}}hNn}{{{b{{Oj{c}}}}{b{dg}}}{{A`{hAB`}}}Aj{{A@h{c}}}{{ABn{ce}}}}{{{b{{O`{c}}}}}EjBh}{{{b{{Ef{c}}}}}jOn}{{{b{Gn}}}j}{{{b{Hl}}}j}```{{}j}0000000000000000000000{{{b{Fd}}}{{Ef{Ff}}}}{{{b{d{Kh{c}}}}}{{Ef{F`}}}Bh}{{{b{{Kh{c}}}}}{{b{{If{{Ch{{Ef{F`}}Of}}}}}}}Bh}{ce{}{}}0000000000000000000000{{{AAh{ceg}}}{}Bh{{El{{A@b{c}}}}}{{Hh{}{{Hf{e}}}}}}{{{b{{Dl{c}}}}}{{Dl{c}}}Bh}{{{b{Gn}}}Cf}{{{b{{Dl{c}}}}}CfBh}{{{b{e}}{Oj{c}}{b{g}}}{{A`{{Ol{c}}A@f}}}Aj{{AC`{c}}}Il}{{{b{e}}{Oj{c}}{b{g}}Cf}{{A`{{Ol{c}}A@f}}}Aj{{AC`{c}}}Il}{{{b{e}}{b{g}}}{{A`{{Oj{c}}A@f}}}Aj{{AC`{c}}}Il}{{{b{e}}{b{g}}Cf}{{A`{{Oj{c}}A@f}}}Aj{{AC`{c}}}Il}{{{b{d{Kh{c}}}}eg}jBh{{Dd{Bn}}}{{Dn{{b{d{A@d{c}}}}}{{Bj{{If{{Ch{{O`{c}}Fd}}}}}}}}}}{{{b{d{Kh{c}}}}eg}jBh{{Dd{Bn}}}{{Dn{{b{d{A@d{c}}}}}{{Bj{{If{{Ch{{O`{c}}{O`{c}}}}}}}}}}}}{{{b{d{Kh{c}}}}}FdBh}{{{b{{Kh{c}}}}}{{b{{If{{ACb{c}}}}}}}Bh}``{{{b{{Kh{c}}}}}jBh}{{{Dl{c}}c}{{Dl{c}}}Bh}{{{Dl{c}}{Dl{c}}}{{Dl{c}}}Bh}{{{Dl{c}}{b{{Dl{c}}}}}{{Dl{c}}}Bh}{{{b{{Dl{c}}}}c}{{Dl{c}}}Bh}{{{O`{c}}{O`{c}}}{{O`{c}}}Bh}{{{O`{c}}c}{{O`{c}}}Bh}{{{b{d{Dl{c}}}}{b{{Dl{c}}}}}hBh}{{{b{d{Dl{c}}}}{Dl{c}}}hBh}{{{Dl{c}}}{}Bh}{{{b{{Dl{c}}}}}{}Bh}{{{O`{c}}}{}Bh}{{jc}{{Ef{c}}}On}{{{b{{Ef{c}}}}}{{O`{e}}}OnBh}{KnAAf}{KnE`}?`?`?`?`?{{{b{{Dl{c}}}}}cBh}{{{b{{Il{}{{Gb{c}}{ACd{e}}{ACf{g}}}}}}}gD`AChACj}{{{b{Hn}}{b{Hn}}}{{Ib{Mb}}}}{{{b{{Ef{c}}}}{b{{Ef{c}}}}}{{Ib{Mb}}}On}{{{b{Fd}}{b{Fd}}}{{Ib{Mb}}}}{{{b{{Kh{c}}}}}{{b{ACl}}}Bh}`{{{b{Hl}}}Od}{{{b{{Oh{c}}}}}jBh}{{{b{{Kh{c}}}}}{{`{{K`{}{{Hf{ACn}}}}}}}Bh}{{{b{{Oj{c}}}}}{{AD`{c}}}Aj}{{{b{dc}}fKn{b{e}}Cf}{{ADb{{Ol{g}}}}}ADdIlABf}{{{b{dIh}}{Ib{Ej}}}h}>{e{{O`{c}}}Bh{{K`{}{{Hf{{O`{c}}}}}}}}{{{b{dIh}}e}h{{El{Ej}}}{{Dn{}{{Bj{c}}}}}}{{{b{d{A@d{c}}}}{Ef{Ed}}Of}{{O`{c}}}Bh}{{{b{d{A@d{c}}}}eOf}{{O`{c}}}Bh{{El{{Ef{Hn}}}}}}{{{b{On}}jOf}{{O`{c}}}Bh}{{{b{Hn}}jOf}{{O`{c}}}Bh}{{{b{{Ef{c}}}}Of}{{O`{e}}}OnBh}{{{b{Ed}}jOf}{{O`{c}}}Bh}{{{b{Ff}}jOf}{{O`{c}}}Bh}{{{b{F`}}jOf}{{O`{c}}}Bh}{{{b{d{O`{c}}}}{b{d{A@d{c}}}}}hBh}{{{b{d{A@d{c}}}}Hl}{{O`{c}}}Bh}{{{b{d{A@d{c}}}}{Ef{Ff}}Of}{{O`{c}}}Bh}{{{b{Ih}}{Ef{F`}}j}{{A`{{Dh{c}}E`}}}Bh}{{{b{d{A@d{c}}}}{Ef{F`}}Of}{{O`{c}}}Bh}{{{b{d{A@d{c}}}}Gn}{{O`{c}}}Bh}{{{b{dc}}fABd}{{A`{{Oj{e}}AB`}}}ADdABf}{{{b{dc}}fABd}{{A`{{Ol{e}}AB`}}}ADdABf}{{{b{{Ef{c}}}}Nj}{{O`{e}}}OnBh}{{{b{A@`}}}Of}`{{{b{d{Kh{c}}}}}GnBh}{{{b{d{Kh{c}}}}j}hBh}{{{b{d{Kh{c}}}}eg}jBh{{Dd{Bn}}}{{Dn{{b{d{A@d{c}}}}}{{Bj{{If{{Ch{{O`{c}}{O`{c}}}}}}}}}}}}{{{b{{Kh{c}}}}}{{b{{If{{ADf{c}}}}}}}Bh}`{{{b{AAf}}}{{Ib{{b{ADh}}}}}}{{{b{{Dl{c}}}}}{{Dl{c}}}Bh}{{{O`{c}}}{{O`{c}}}Bh}{{{Dl{c}}c}{{Dl{c}}}Bh}{{{b{{Dl{c}}}}{Dl{c}}}{{Dl{c}}}Bh}{{{b{{Dl{c}}}}c}{{Dl{c}}}Bh}{{{Dl{c}}{Dl{c}}}{{Dl{c}}}Bh}{{{b{{Dl{c}}}}{b{{Dl{c}}}}}{{Dl{c}}}Bh}{{{Dl{c}}{b{{Dl{c}}}}}{{Dl{c}}}Bh}{{{O`{c}}{O`{c}}}{{O`{c}}}Bh}{{{b{d{Dl{c}}}}{b{{Dl{c}}}}}hBh}{{{b{d{Dl{c}}}}{Dl{c}}}hBh}{e{{O`{c}}}Bh{{K`{}{{Hf{{O`{c}}}}}}}}{{{b{de}}{b{g}}{If{{Ef{Ff}}}}}{{A`{hE`}}}Bh{{Ih{c}}Ij}{{Il{c}}}}{{{b{{Il{}{{Gb{c}}{ACd{e}}{ACf{g}}}}}}ck}{{A`{hE`}}}D`AChACjBh{{Fj{i}}}}{{{b{{Oj{c}}}}f}{{If{Od}}}ABf}{{{b{{Ol{c}}}}f}{{If{Od}}}ABf}{{{b{c}}}e{}{}}00000000000000{AAjACn}{AAlACn}{AAnACn}{{{b{c}}}Ej{}}00{{{b{{Oj{c}}}}}{}Aj}{c{{A`{e}}}{}{}}000000000{{{Ef{Hn}}}{{A`{{Ef{Ed}}}}}}{{{Ef{Hn}}}{{A`{{Ef{Ff}}}}}}2{{{Ef{Hn}}}{{A`{{Ef{F`}}}}}}33333333333333333333333333333333333{{{b{c}}}Ab{}}0000000000000000000000{{{b{d{Kh{c}}}}}{{Ef{Ed}}}Bh}{{{b{d{Kh{c}}}}e}{{Ef{Ed}}}BhOb}`{{b{b{Oj}}g{b{{Cj{{If{If}}}}}}{b{dk}}}{{A`{AAf}}}ADj{{ADl{c}}}{{ADn{ce}}}A@h{{AE`{i}}}}{{{b{dc}}fKn{b{e}}Cf}{{ADb{{Oj{g}}}}}ADdIlABf}{ce{}{}}0000000000000000000000{{{O`{c}}g}{{AAh{ceg}}}Bh{{El{{A@b{c}}}}}{{Hh{}{{Hf{e}}}}}}{{{b{{Il{}{{Gb{c}}{ACd{e}}{ACf{g}}}}}}}{{Il{}{{Gb{c}}{ACd{e}}{ACf{g}}}}}D`AChACj}{{{b{{Oj{c}}}}{b{de}}f}{{A`{hAB`}}}ABfAEb}{{{b{{Ol{c}}}}{b{de}}f}{{A`{hAB`}}}ABfAEb}``````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{Of}}}Of}{{{b{{ABj{c}}}}}{{ABj{c}}}{D`Bh}}{{{b{c}}{b{de}}}h{}{}}0{{{b{Of}}{b{Of}}}Mb}{{{b{{ABj{c}}}}{If{c}}}{{AEf{cAEd}}}B`}{{{b{{ABj{c}}}}{AEf{cAEd}}}{{AEf{cAEh}}}B`}`{{{b{{ABj{c}}}}c}{{AEf{cAEh}}}B`}{{{b{{ABj{c}}}}c}{{AEf{cAEj}}}B`}{{}Of}{j{{b{c}}}{}}0{j{{b{dc}}}{}}0{{{b{{ABj{c}}}}{AEf{cAEh}}}{{AEf{cAEh}}}B`}{jh}0{{{b{{ABj{c}}}}}{{AEf{cAEd}}}B`}{{{b{{ABj{c}}}}}{{AEf{cAEh}}}B`}{{{b{{ABj{c}}}}}{{AEf{cAEj}}}B`}{{{b{Of}}{b{Of}}}Cf}{{{b{{ABj{c}}}}}KnB`}{{{b{{ABj{c}}}}}jB`}{{{b{{ABj{c}}}}{AEf{cAEh}}}{{If{c}}}B`}{{{ADn{}{{Bj{c}}}}}Cf{}}{{{b{Of}}{b{dl}}}{{A`{hn}}}}{{{b{{ABj{c}}}}{b{dl}}}{{A`{hn}}}{GhBh}}{cc{}}0{{{b{{ABj{c}}}}}cB`}006{{{b{Of}}{b{dc}}}hNn}{{}j}0{ce{}{}}0`:`{{{b{{ABj{c}}}}cce}{{If{c}}}B`{{Hh{}{{Hf{Nj}}}}D`}}{{{b{{ABj{c}}}}j}{{AEf{cAEh}}}B`}{{{b{{ABj{c}}}}{If{c}}}{{AEf{cAEj}}}B`}{{{b{{ABj{c}}}}{AEf{cAEj}}}{{AEf{cAEd}}}B`}{b{{ADn{}{{Bj{c}}}}}{}}{{KnKn}{{ABj{c}}}B`}{{}Of}{{{b{Of}}{b{Of}}}{{Ib{Mb}}}}{{{b{{ABj{c}}}}}{{AEl{c}}}B`}2{{{ADn{}{{Bj{c}}}}e}{{A`{cAAf}}}{}{{Dn{}{{Bj{{A`{AAf}}}}}}}}{{{b{{ABj{c}}}}{b{{AEf{cAEh}}}}Of}{{AEf{cAEh}}}B`}{{{b{{ABj{c}}}}cOf}cB`}{{{b{c}}}e{}{}}0{c{{A`{e}}}{}{}}000{{{b{c}}}Ab{}}0??``````````````````{{{AEn{c}}{AEn{c}}}{{AEn{c}}}Bh}{{{b{d{AEn{c}}}}c}hBh}{{{b{d{AEn{c}}}}{AEn{c}}}hBh}{{{b{dAF`}}{b{AF`}}}h}{{{b{dAF`}}}h}{{{b{AF`}}}If}{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{AF`}}{b{e}}}CfAj{{A@n{c}}}}{{{b{{AEn{c}}}}}{{AEn{c}}}D`}{{{b{c}}{b{de}}}h{}{}}{{{b{AFb}}{b{e}}{b{{AEf{AEd}}}}AEn}{}Aj{{A@n{c}}}}{{{b{AC`}}{b{e}}{b{{AEf{AEj}}}}AEn}{}Aj{{A@n{c}}}}{{{b{AFd}}c{b{dg}}i}{{A`{hAB`}}}DfA@h{{A@j{e}}}{{Hh{}{{Hf{AFf}}}}D`}}{{{b{AFd}}{b{c}}e{b{di}}k}{{A`{hAB`}}}A@nDfA@h{{A@j{g}}}{{Hh{}{{Hf{AFf}}}}D`}}{{}{{AEn{c}}}Bh}{j{{b{c}}}{}}{j{{b{dc}}}{}}{{{b{dAC`}}Kn}h}{jh}{{{b{{AFj{}{{AFh{c}}}}}}}c{{AF`{e}}}Aj}{{{b{{AEn{c}}}}{b{{AEn{c}}}}}CfKl}{{{b{AF`}}{b{e}}}{}Aj{{A@n{c}}}}{{{b{{AEn{c}}}}{b{dl}}}{{A`{hn}}}Gh}{cc{}}{{}j}{ce{}{}}{{{b{AC`}}}Kn}{{{AEn{c}}{AEn{c}}}{{AEn{c}}}Bh}{{{b{d{AEn{c}}}}c}hBh}{{{b{d{AEn{c}}}}{AEn{c}}}hBh}{{{b{AC`}}}Db}{KnAFb}{bAFd}{{}{{ADl{}{{AFl{c}}{AFn{g}}}}}{{AG`{e}{{AFn{g}}}}}ADj{}}{{{b{dc}}}{{AEn{e}}}DfBh}{Knc{}}{{{b{dc}}}{{A`{AC`AB`}}}ADd}{{{b{dc}}}{{A`{eAB`}}}ADd{}}{{{b{AF`}}}If}{{{b{dAF`}}}h}{{{b{c}}}e{}{}}{c{{A`{e}}}{}{}}0{{{b{c}}}Ab{}}{{{b{{ADl{}{{AFl{c}}{AFn{g}}}}}}{b{dk}}mg}{{A`{cAGb}}}{{AG`{e}{{AFn{g}}}}}ADj{}A@h{{AE`{i}}}{{Hh{}{{Hf{AGd}}}}D`}}{ce{}{}}{{{b{AC`}}{b{dc}}}{{A`{hAB`}}}AEb}```````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{{AGf{c}}}}}{{AGf{c}}}{D`Aj}}{{{b{c}}{b{de}}}h{}{}}{{{b{{AGf{c}}}}{b{e}}{b{{AEf{AEd}}}}AEn}{}Aj{{A@n{c}}}}{{{b{{AGf{c}}}}{b{e}}{b{{AEf{AEj}}}}AEn}{}Aj{{A@n{c}}}}{{{b{e}}{b{{AGf{c}}}}g{b{dk}}{b{{AEf{AEd}}}}AEn}{{A`{hAB`}}}Aj{{A@n{c}}}Df{{A@h{c}}}{{A@j{ci}}}}{j{{b{c}}}{}}0{j{{b{dc}}}{}}0{{{b{d{AGf{c}}}}Kn}hAj}{jh}0{{{b{{AGf{c}}}}}{{AGh{c}}}Aj}{{{b{{AGf{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{AGj{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{cc{}}0{{}j}0{ce{}{}}0{{{b{{AGf{c}}}}}KnAj}{{{b{{AGf{c}}}}}DbAj}{Kn{{AGf{c}}}Aj}{Kn}{{{b{dc}}}{{A`{{AGf{e}}AB`}}}ADdAj}{{{b{dc}}}{{A`{AB`}}}ADd}{{{b{c}}}e{}{}}{c{{A`{e}}}{}{}}000{{{b{c}}}Ab{}}0{{{AGh{c}}{b{dg}}}{{A`{{AGl{c}}AGb}}}Aj{{A@h{c}}}{{AE`{ce}}}}::{{{b{{AGf{c}}}}{b{de}}}{{A`{hAB`}}}AjAEb}`{{{b{d{AGh{c}}}}}hAj}{{{b{d{AGh{c}}}}{b{{AGh{c}}}}}hAj}0{{{b{d{AGh{c}}}}{b{Cj}}}hAj}222{{{b{{AGh{c}}}}}IfAj}{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{{AGh{c}}}}{b{e}}}CfAj{{A@n{c}}}}{{{b{{AGh{c}}}}}{{AGh{c}}}{D`Aj}}{{{b{c}}{b{de}}}h{}{}}{j{{b{c}}}{}}{j{{b{dc}}}{}}{jh}{{{b{{AGh{c}}}}{b{e}}}{}Aj{{A@n{c}}}}{{{b{{AGh{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{cc{}}{{}j}{ce{}{}}{{{b{{AGf{c}}}}}{{AGh{c}}}Aj}>{{{b{d{AGh{c}}}}}hAj}{{{b{c}}}e{}{}}{c{{A`{e}}}{}{}}0{{{b{c}}}Ab{}}5``{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{{AGn{c}}}}{b{e}}g{b{dk}}m}{{A`{hAB`}}}Aj{{A@n{c}}}Df{{A@h{c}}}{{A@j{ci}}}{{Hh{}{{Hf{{AFf{c}}}}}}D`}}??>>=={{{b{{AGn{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{AH`{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}<<;;::{{{b{{AGf{c}}}}}{{AGn{c}}}Aj}{{}{{AH`{c}}}Aj}888877{{{b{{AH`{c}}}}{b{dg}}i{AGh{c}}}{{A`{AGb}}}Aj{{A@h{c}}}{{AE`{ce}}}{{Hh{}{{Hf{{AGd{c{AGh{c}}}}}}}}D`}}==````77776666{{{b{{AGl{c}}}}}{{AGl{c}}}{D`Aj}}{{{b{{AHb{c}}}}}{{AHb{c}}}{D`Aj}}{{{b{c}}{b{de}}}h{}{}}0{{{b{{AGl{c}}}}{b{e}}}cAj{{A@n{c}}}}{j{{b{c}}}{}}000{j{{b{dc}}}{}}000{jh}000{{{AHd{c}}}CfAj}{{{AHf{c}}}CfAj}{{{b{{AGl{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{AHb{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{AHd{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{{{b{{AHf{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{cc{}}000`{{}j}000{ce{}{}}000{{{b{{AGf{c}}}}}{{AHd{c}}}Aj}{{{b{{AGf{c}}}}}{{AHf{c}}}Aj}{{{AHd{c}}e}{{A`{AAf}}}Aj{{Dn{{AGh{c}}}{{Bj{{A`{{AGl{c}}AAf}}}}}}}}{{{AHf{c}}e}{{A`{AAf}}}Aj{{Dn{{AGh{c}}}{{Bj{{A`{{AGl{c}}AAf}}}}}}}}{{{b{c}}}e{}{}}0{c{{A`{e}}}{}{}}0000000{{{b{c}}}Ab{}}000`{{{AGl{c}}}{{AGh{c}}}Aj}{{{AGl{c}}c}{{Ch{{AGh{c}}{AHb{c}}}}}Aj}9999```````{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{{AHh{c}}}}}{{AHh{c}}}{D`AHj}}{{{b{{AHl{c}}}}}{{AHl{c}}}{D`AHj}}{{{b{c}}{b{de}}}h{}{}}0{{{b{{AHh{c}}}}{b{e}}{b{{AEf{AEd}}}}AEn}{}AHjA@n}{{{b{{AHh{c}}}}{b{e}}{b{{AEf{AEj}}}}AEn}{}AHjA@n}{{{b{{AHl{c}}}}{b{e}}{b{{AEf{AEj}}}}AEn}{}AHjA@n}{j{{b{c}}}{}}00{j{{b{dc}}}{}}00{{{b{d{AHh{c}}}}Kn}hAHj}{{{b{d{AHl{c}}}}Kn}hAHj}{jh}00{{{b{{AHh{c}}}}}{{AHn{c}}}AHj}{{{b{{AHl{c}}}}}{{AHn{c}}}AHj}{{{b{{AHh{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AHl{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AI`{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{cc{}}00{{{b{{AHh{c}}}}KnIf{Ib{If}}}{{AHh{c}}}AHj}{{}j}00{ce{}{}}00{{{b{{AHh{c}}}}}KnAHj}{{{b{{AHl{c}}}}}KnAHj}{{{b{{AHh{c}}}}}DbAHj}{{{b{{AHl{c}}}}}DbAHj}{Kn{{AHh{c}}}AHj}{Kn}{{{b{dc}}}{{A`{{AHh{e}}AB`}}}ADdAHj}{{{b{dc}}}{{A`{{AHl{e}}AB`}}}ADdAHj}{{{b{dc}}f}{{A`{{AHh{e}}AB`}}}ADdAHj}{{{b{dc}}f}{{A`{{AHl{e}}AB`}}}ADdAHj}{{{b{dc}}}{{A`{AB`}}}ADd}{{Knc}{{AHh{e}}}DfAHj}{{{b{c}}}e{}{}}0{c{{A`{e}}}{}{}}00000{{{b{c}}}Ab{}}00{{{b{{AHh{c}}}}}{{AHl{c}}}AHj}{ce{}{}}00{{{b{{AHh{c}}}}{b{de}}}{{A`{hAB`}}}AHjAEb}{{{b{{AHl{c}}}}{b{de}}}{{A`{hAB`}}}AHjAEb}{{{b{{AHh{c}}}}{b{de}}f}{{A`{hAB`}}}AHjAEb}{{{b{{AHl{c}}}}{b{de}}f}{{A`{hAB`}}}AHjAEb}``{{{b{d{AHn{c}}}}{b{{AHn{c}}}}}hAHj}{{{b{d{AIb{c}}}}{AIb{c}}}hAId}{{{b{d{AHn{c}}}}}hAHj}{{{b{{AHn{c}}}}}IfAHj}{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{{AHn{c}}}}{b{e}}}CfAHjA@n}{{{AIb{c}}{b{e}}{b{{AHl{c}}}}}CfAIdA@n}{{{b{{AHn{c}}}}}{{AHn{c}}}{D`AHj}}{{{b{{AIb{c}}}}}{{AIb{c}}}{D`AHj}}{{{b{c}}{b{de}}}h{}{}}08{{}{{AHn{c}}}{ACjAHj}}{{}{{AIb{c}}}{ACjAHj}}{j{{b{c}}}{}}0{j{{b{dc}}}{}}0{jh}0{{{b{{AHn{c}}}}{b{e}}}{}AHjA@n}{{{b{{AHn{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AIb{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{cc{}}0{{}j}0{ce{}{}}0{{}{{AHn{c}}}AHj}{{}{{AIb{c}}}AId}{{{b{{AHn{c}}}}}IfAHj}{{{b{d{AHn{c}}}}}hAHj}{{{b{d{AIb{c}}}}}hAId}{{{b{c}}}e{}{}}0{c{{A`{e}}}{}{}}000{{{b{c}}}Ab{}}088````{{{b{c}}}{{b{e}}}{}{}}000{{{b{dc}}}{{b{de}}}{}{}}000{{{b{{AIf{c}}}}{b{e}}g{b{dk}}m}{{A`{hAB`}}}{AHjGh}A@nDfA@h{{A@j{i}}}{{Hh{}{{Hf{AFf}}}}D`}}{{{b{{AIh{c}}}}{b{e}}g{b{dk}}m}{{A`{hAB`}}}{AHjGh}A@nDfA@h{{A@j{i}}}{{Hh{}{{Hf{AFf}}}}D`}}{j{{b{c}}}{}}000{j{{b{dc}}}{}}000{jh}000{{{b{{AIf{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AIj{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AIh{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AIl{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{cc{}}000{{}j}000{ce{}{}}000{{{b{{AHh{c}}}}}{{AIf{c}}}{AHjGh}}{{}{{AIj{c}}}{AIdGh}}{{{b{{AHh{c}}}}}{{AIh{c}}}{AHjGh}}{{{b{{AHh{c}}}}}{{AIh{c}}}AHj}{{}{{AIl{c}}}{AIdGh}}{c{{A`{e}}}{}{}}0000000{{{b{c}}}Ab{}}000{{{b{{AIj{c}}}}{b{dg}}i{AIb{c}}}{{A`{AGb}}}{AIdGh}A@h{{AE`{e}}}{{Hh{}{{Hf{{AGd{{AHn{c}}}}}}}}D`}}{{{b{{AIl{c}}}}{b{dg}}i{AIb{c}}}{{A`{AGb}}}{AIdGh}A@h{{AE`{e}}}{{Hh{}{{Hf{{AGd{{AHn{c}}}}}}}}D`}}9999```{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{{AIn{c}}}}}{{AIn{c}}}{D`AId}}{{{b{{AJ`{c}}}}}{{AJ`{c}}}{D`AHj}}{{{b{{AJb{c}}}}}{{AJb{c}}}{D`AHj}}{{{b{c}}{b{de}}}h{}{}}00{j{{b{c}}}{}}00{j{{b{dc}}}{}}00{jh}00{{{AJ`{c}}}Cf{AIdGh}}{{{AJb{c}}}Cf{AIdGh}}{{{b{{AIn{c}}}}{b{dl}}}{{A`{hn}}}{GhAId}}{{{b{{AJ`{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{{{b{{AJb{c}}}}{b{dl}}}{{A`{hn}}}{GhAHj}}{cc{}}00{{}j}00{ce{}{}}00{{{b{{AHl{c}}}}}{{AJ`{c}}}{AIdGh}}{{{b{{AHl{c}}}}}{{AJ`{c}}}AId}{{{b{{AHl{c}}}}}{{AJb{c}}}{AIdGh}}0{{{AJ`{c}}e}{{A`{AAf}}}{AIdGh}{{Dn{}{{Bj{{A`{AAf}}}}}}}}{{{AJb{c}}e}{{A`{AAf}}}{AIdGh}{{Dn{}{{Bj{{A`{AAf}}}}}}}}{{{b{c}}}e{}{}}00{c{{A`{e}}}{}{}}00000{{{b{c}}}Ab{}}00888{{{AIb{c}}{b{{AHl{c}}}}}{{AJ`{c}}}AId}``````````{{{b{{A@h{}{{AJd{c}}}}}}}{{AJf{eg}}}{}Aj{}}{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{{AJh{ceg}}}}}{{AJh{ceg}}}{D`ADd}{D`Aj}{D`{A@h{e}}}}{{{b{{AJj{ceg}}}}}{{AJj{ceg}}}{D`AEb}{D`Aj}{D`{A@h{e}}}}{{{b{{AJl{c}}}}}{{AJl{c}}}{D`Aj}}{{{b{c}}{b{de}}}h{}{}}00{{{b{dABn}}c}{{A`{hAB`}}}Aj}{{{b{d{AJh{ce{AJl{e}}}}}}e}{{A`{hAB`}}}ADdAj}{{{b{d{AJj{ce{AJl{e}}}}}}e}{{A`{hAB`}}}AEbAj}{{{b{dABn}}}{{A`{hAB`}}}}{{{b{d{AJh{ce{AJl{e}}}}}}}{{A`{hAB`}}}ADdAj}{{{b{d{AJj{ce{AJl{e}}}}}}}{{A`{hAB`}}}AEbAj}{j{{b{c}}}{}}0{{{b{{AJl{c}}}}}bAj}1{j{{b{dc}}}{}}00{jh}00{AJncAEb}{{{AJj{ce{AJl{e}}}}}cAEbAj}{{{b{{AJh{ceg}}}}{b{dl}}}{{A`{hn}}}{GhADd}{GhAj}{Gh{A@h{e}}}}{{{b{{AJj{ceg}}}}{b{dl}}}{{A`{hn}}}{GhAEb}{GhAj}{Gh{A@h{e}}}}{{{b{{AJl{c}}}}{b{dl}}}{{A`{hn}}}{GhAj}}{cc{}}00{{{b{{A@h{}{{AJd{c}}}}}}}{}{}}{{{b{{AJl{c}}}}}{}Aj}{cAK`ADd}{cAJnAEb}{c{{AJh{ce{AJl{e}}}}}ADdAj}{{}j}0{c{{AJj{ce{AJl{e}}}}}AEbAj}1{ce{}{}}00{{{b{c}}}{{A@h{}{{AJd{c}}}}}{}}{{{b{{In{Od}}}}}{{AJl{c}}}Aj}{{{b{dAE`}}}{{A`{cAB`}}}Aj}{{{b{d{AJh{ce{AJl{e}}}}}}}{{A`{eAB`}}}ADdAj}{{{b{dAE`}}}{{A`{AB`}}}}{{{b{d{AJh{ce{AJl{e}}}}}}}{{A`{AB`}}}ADdAj}{{{b{dABn}}}eAj{{A@h{c}}}}{{{b{d{AJh{ce{AJl{e}}}}}}}{{AJl{e}}}ADdAj}{{{b{d{AJj{ce{AJl{e}}}}}}}{{AJl{e}}}AEbAj}{{{b{dABn}}}{{AJf{ce}}}Aj{}}{{{b{c}}}e{}{}}00{c{{A`{e}}}{}{}}00000{{{b{c}}}Ab{}}00==={{{b{dA@j}}c}{{A`{hAB`}}}Aj}{{{b{d{AJj{ce{AJl{e}}}}}}e}{{A`{hAB`}}}AEbAj}{{{b{dA@j}}}{{A`{hAB`}}}}{{{b{d{AJj{ce{AJl{e}}}}}}}{{A`{hAB`}}}AEbAj}","D":"F@n","p":[[1,"reference"],[0,"mut"],[6,"SerdeFormat",0,2141],[1,"unit"],[1,"usize"],[5,"Formatter",2142],[5,"Error",2142],[6,"Result",2143],[5,"TypeId",2144],[17,"ScalarExt"],[17,"Base"],[17,"CurveExt"],[10,"CurveAffine",27,2145],[5,"Coordinates",2145],[5,"CtOption",2146],[10,"WithSmallOrderMulGroup",2147],[10,"Ord",2148],[17,"AffineExt"],[10,"CurveExt",27,2145],[10,"Field",27,2147],[17,"Output"],[10,"Mul",2149],[1,"str"],[10,"Fn",2150],[5,"Box",2151],[5,"Choice",2146],[1,"bool"],[1,"tuple"],[1,"slice"],[10,"Send",2152],[10,"Sync",2152],[10,"Clone",2153],[1,"u64"],[10,"AsRef",2154],[10,"RngCore",2155],[5,"Value",64,2156],[10,"Add",2149],[6,"Assigned",829,2157],[10,"FnOnce",2150],[6,"ErrorFront",829],[5,"Region",64,2158],[5,"Advice",829,2159],[5,"Column",829,2160],[5,"AssignedCell",64,2158],[5,"String",2161],[10,"Into",2154],[10,"FnMut",2150],[5,"Instance",829,2159],[5,"Table",64,2158],[5,"TableColumn",829,2160],[5,"Fixed",829,2159],[17,"Root"],[10,"Layouter",64,2158],[5,"NamespacedLayouter",64,2158],[5,"Cell",64,2158],[5,"RegionIndex",64,2158],[17,"Config"],[17,"Loaded"],[10,"Chip",64,2158],[10,"Debug",2142],[10,"Copy",2152],[10,"Borrow",2162],[5,"Selector",829,2160],[5,"SimpleFloorPlanner",64,2163],[10,"RegionLayouter",2164],[10,"TableLayouter",2165],[17,"Item"],[10,"IntoIterator",2166],[10,"FromIterator",2166],[5,"Challenge",829,2160],[6,"Any",829,2167],[10,"Neg",2149],[6,"Option",2168],[10,"Sub",2149],[5,"Vec",2169],[10,"Assignment",829,2159],[10,"SyncDeps",2164],[10,"Circuit",829,2159],[1,"array"],[5,"V1Pass",293,2170],[5,"V1",293,2170],[5,"SingleChipLayouter",331,2163],[5,"MeasurementPass",354,2170],[5,"AssignmentPass",354,2170],[5,"MockProver",385,2171],[6,"CellValue",385,2171],[10,"FromUniformBytes",2147],[10,"Iterator",2172],[6,"FailureLocation",385,2173],[6,"VerifyFailure",385,2173],[6,"InstanceValue",385,2171],[5,"ConstraintSystem",829,2174],[5,"CircuitLayout",385,2175],[10,"PartialEq",2148],[1,"u32"],[5,"Shift",2176],[5,"DrawingArea",2177],[6,"DrawingAreaErrorKind",2177],[10,"DrawingBackend",2178],[5,"Range",2179],[5,"Poly",567,2180],[5,"Lookup",567,2180],[5,"Permutation",567,2180],[5,"Shuffle",567,2180],[6,"Ordering",2148],[10,"Deserializer",2181],[5,"ModelCircuit",567,2180],[6,"CommitmentScheme",567,2180],[5,"CostOptions",567,2180],[10,"Serializer",2182],[5,"Column",711],[5,"VirtualCell",711,2183],[5,"Gate",711,2183],[5,"Constraint",711,2183],[5,"Region",711,2183],[5,"VirtualCell",2174],[1,"i32"],[5,"HashMap",2184],[10,"Hasher",2185],[6,"Expression",829,2160],[10,"Phase",829,2160],[1,"u8"],[5,"Rotation",1479,2186],[5,"ConstraintSystemMid",829,2167],[5,"VerifyingKey",829,2187],[5,"ProvingKey",829,2187],[10,"ColumnType",829,2159],[5,"FixedQuery",829,2160],[5,"Constraint",2174],[5,"VirtualCells",829,2174],[6,"Error",829,2188],[10,"EncodedChallenge",2053,2189],[10,"TranscriptWrite",2053,2189],[5,"PlonkEngine",2190],[10,"MsmAccel",2191],[5,"AdviceQuery",2160],[5,"InstanceQuery",2160],[8,"Result",2142],[6,"ErrorBack",829],[5,"Constraints",829,2174],[5,"FirstPhase",829,2160],[5,"SecondPhase",829,2160],[5,"ThirdPhase",829,2160],[5,"Error",2192],[5,"ChallengeMid",2167],[5,"ConstraintSystemBack",2193],[10,"SerdeCurveAffine",2141],[5,"Gate",2174],[5,"EvaluationDomain",1479,2194],[10,"Hash",2185],[10,"Transcript",2053,2189],[10,"Params",1552,2195],[5,"Argument",2196],[17,"FloorPlanner"],[17,"Params"],[10,"FloorPlanner",829,2159],[10,"Default",2197],[5,"Argument",2198],[5,"Phase",2199],[5,"PinnedVerificationKey",2187],[8,"Result",2192],[10,"Read",2200],[5,"Argument",2201],[10,"Error",2202],[10,"CommitmentScheme",1552,2195],[10,"Verifier",1552,2195],[10,"VerificationStrategy",1479,2203],[10,"TranscriptRead",2053,2189],[10,"Write",2200],[5,"Coeff",2204],[5,"Polynomial",2204],[5,"ExtendedLagrangeCoeff",2204],[5,"LagrangeCoeff",2204],[5,"PinnedEvaluationDomain",2194],[5,"Blind",1552,2195],[10,"MSM",1552,2195],[10,"ParamsProver",1552,2195],[10,"Prover",1552,2195],[5,"ProverQuery",2205],[17,"MSM"],[10,"ParamsVerifier",1552,2195],[17,"Guard"],[17,"MSMAccumulator"],[10,"Guard",2203],[6,"Error",2204],[5,"VerifierQuery",2205],[5,"ParamsIPA",1622,2206],[5,"MSMIPA",1667,2207],[5,"IPACommitmentScheme",1622,2206],[5,"GuardIPA",1729,2208],[5,"ProverIPA",1697,2209],[5,"VerifierIPA",1697,2210],[5,"Accumulator",1729,2208],[5,"AccumulatorStrategy",1729,2208],[5,"SingleStrategy",1729,2208],[5,"ParamsKZG",1806,2211],[10,"Engine",2212],[5,"ParamsVerifierKZG",1806,2211],[5,"MSMKZG",1879,2213],[5,"KZGCommitmentScheme",1806,2211],[5,"DualMSM",1879,2213],[10,"MultiMillerLoop",2212],[5,"ProverGWC",1928,2214],[5,"ProverSHPLONK",1928,2215],[5,"VerifierGWC",1928,2216],[5,"VerifierSHPLONK",1928,2217],[5,"GuardKZG",1993,2218],[5,"AccumulatorStrategy",1993,2218],[5,"SingleStrategy",1993,2218],[17,"Input"],[5,"ChallengeScalar",2189],[5,"Blake2bRead",2053,2189],[5,"Blake2bWrite",2053,2189],[5,"Challenge255",2053,2189],[10,"TranscriptWriterBuffer",2053,2189],[10,"TranscriptReadBuffer",2053,2189],[15,"InRegion",542],[15,"OutsideRegion",542],[15,"ConstraintNotSatisfied",545],[15,"CellNotAssigned",545],[15,"InstanceCellNotAssigned",545],[15,"Permutation",545],[15,"ConstraintPoisoned",545],[15,"Lookup",545],[15,"Shuffle",545],[15,"NotEnoughRowsAvailable",1477],[15,"NotEnoughRowsAvailable",1478]],"r":[[3,2141],[31,2145],[32,2145],[34,2147],[56,2219],[64,2158],[65,2158],[66,2158],[68,2158],[70,2158],[71,2158],[72,2158],[74,2163],[75,2158],[76,2156],[170,2158],[293,2170],[294,2170],[320,2220],[328,2220],[331,2163],[332,2163],[354,2170],[355,2170],[356,2170],[357,2170],[376,2170],[388,2171],[389,2175],[392,2173],[395,2171],[397,2171],[404,2173],[425,2221],[435,2171],[497,2171],[567,2180],[568,2180],[572,2180],[573,2180],[574,2180],[575,2180],[576,2180],[643,2180],[644,2180],[712,2183],[713,2183],[714,2183],[715,2183],[829,2159],[832,2167],[833,2157],[834,2159],[839,2160],[841,2159],[842,2160],[845,2159],[848,2174],[850,2167],[851,2174],[852,2188],[855,2160],[856,2160],[857,2159],[860,2160],[861,2159],[864,2159],[877,2160],[879,2187],[882,2160],[883,2160],[887,2160],[889,2160],[892,2187],[893,2174],[1010,2222],[1011,2222],[1259,2223],[1260,2223],[1261,2223],[1262,2223],[1448,2224],[1479,2194],[1481,2186],[1482,2203],[1494,2204],[1526,2204],[1528,2204],[1552,2195],[1554,2195],[1557,2195],[1560,2195],[1561,2195],[1563,2195],[1565,2195],[1569,2195],[1618,2225],[1619,2225],[1620,2225],[1621,2225],[1622,2206],[1623,2206],[1624,2206],[1633,2226],[1663,2227],[1667,2207],[1697,2209],[1698,2210],[1729,2208],[1730,2208],[1731,2208],[1732,2208],[1802,2228],[1803,2228],[1804,2228],[1805,2228],[1806,2211],[1807,2211],[1808,2211],[1879,2213],[1880,2213],[1928,2214],[1929,2215],[1930,2216],[1931,2217],[1993,2218],[1994,2218],[1995,2218],[2053,2189],[2054,2189],[2055,2189],[2056,2189],[2058,2189],[2059,2189],[2060,2189],[2061,2189],[2062,2189]],"b":[[77,"impl-Add-for-%26Value%3CV%3E"],[78,"impl-Add%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[79,"impl-Add%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[80,"impl-Add-for-Value%3CV%3E"],[81,"impl-Add%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[82,"impl-Add%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[83,"impl-Add%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[84,"impl-Add%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[85,"impl-Add%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[86,"impl-Add%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[126,"impl-Value%3C%26mut+V%3E"],[127,"impl-Value%3C%26V%3E"],[134,"impl-Value%3C%26mut+V%3E"],[135,"impl-Value%3C%26V%3E"],[218,"impl-Mul%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[219,"impl-Mul%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[220,"impl-Mul%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[221,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[222,"impl-Mul-for-Value%3CV%3E"],[223,"impl-Mul-for-%26Value%3CV%3E"],[224,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[225,"impl-Mul%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[226,"impl-Mul%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[227,"impl-Mul%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[238,"impl-Sub%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[239,"impl-Sub-for-Value%3CV%3E"],[240,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[241,"impl-Sub-for-%26Value%3CV%3E"],[242,"impl-Sub%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[243,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[244,"impl-Sub%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[245,"impl-Sub%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[246,"impl-Sub%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[247,"impl-Sub%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[467,"impl-Debug-for-FailureLocation"],[468,"impl-Display-for-FailureLocation"],[469,"impl-Debug-for-VerifyFailure"],[470,"impl-Display-for-VerifyFailure"],[759,"impl-Display-for-ColumnMid"],[760,"impl-Debug-for-ColumnMid"],[761,"impl-Debug-for-VirtualCell"],[762,"impl-Display-for-VirtualCell"],[763,"impl-Debug-for-Gate"],[764,"impl-Display-for-Gate"],[765,"impl-Debug-for-Constraint"],[766,"impl-Display-for-Constraint"],[767,"impl-Debug-for-Region"],[768,"impl-Display-for-Region"],[771,"impl-From%3CVirtualCell%3E-for-VirtualCell"],[772,"impl-From%3C(ColumnMid,+i32)%3E-for-VirtualCell"],[774,"impl-From%3C(S,+ColumnMid,+i32)%3E-for-VirtualCell"],[779,"impl-From%3C(usize,+%26str,+HashMap%3CColumnMid,+String%3E)%3E-for-Region"],[781,"impl-From%3C(usize,+%26str)%3E-for-Region"],[782,"impl-From%3C(usize,+String)%3E-for-Region"],[783,"impl-From%3C(usize,+String,+HashMap%3CColumnMid,+String%3E)%3E-for-Region"],[895,"impl-Add%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[896,"impl-Add-for-Assigned%3CF%3E"],[897,"impl-Add%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[898,"impl-Add%3CF%3E-for-%26Assigned%3CF%3E"],[899,"impl-Add%3CF%3E-for-Assigned%3CF%3E"],[900,"impl-Add%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[902,"impl-AddAssign-for-Assigned%3CF%3E"],[903,"impl-AddAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1115,"impl-Display-for-Error"],[1116,"impl-Debug-for-Error"],[1119,"impl-Display-for-Error"],[1120,"impl-Debug-for-Error"],[1139,"impl-Debug-for-Error"],[1140,"impl-Display-for-Error"],[1141,"impl-From%3CError%3E-for-Error"],[1143,"impl-From%3CError%3E-for-Error"],[1146,"impl-From%3CInstance%3E-for-Any"],[1148,"impl-From%3CFixed%3E-for-Any"],[1149,"impl-From%3CAdvice%3E-for-Any"],[1154,"impl-From%3C(F,+F)%3E-for-Assigned%3CF%3E"],[1155,"impl-From%3C%26F%3E-for-Assigned%3CF%3E"],[1156,"impl-From%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1158,"impl-From%3CF%3E-for-Assigned%3CF%3E"],[1162,"impl-From%3CColumnMid%3E-for-Column%3CAny%3E"],[1164,"impl-From%3CColumn%3CAdvice%3E%3E-for-Column%3CAny%3E"],[1165,"impl-From%3CColumn%3CInstance%3E%3E-for-Column%3CAny%3E"],[1166,"impl-From%3CColumn%3CFixed%3E%3E-for-Column%3CAny%3E"],[1270,"impl-Mul%3CF%3E-for-Assigned%3CF%3E"],[1271,"impl-Mul-for-Assigned%3CF%3E"],[1272,"impl-Mul%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1273,"impl-Mul%3CF%3E-for-%26Assigned%3CF%3E"],[1274,"impl-Mul-for-Expression%3CF%3E"],[1275,"impl-Mul%3CF%3E-for-Expression%3CF%3E"],[1276,"impl-MulAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1277,"impl-MulAssign-for-Assigned%3CF%3E"],[1278,"impl-Neg-for-Assigned%3CF%3E"],[1279,"impl-Neg-for-%26Assigned%3CF%3E"],[1337,"impl-Sub%3CF%3E-for-Assigned%3CF%3E"],[1338,"impl-Sub%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1339,"impl-Sub%3CF%3E-for-%26Assigned%3CF%3E"],[1340,"impl-Sub-for-Assigned%3CF%3E"],[1341,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1342,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1344,"impl-SubAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1345,"impl-SubAssign-for-Assigned%3CF%3E"],[1383,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CAdvice%3E"],[1384,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CFixed%3E"],[1386,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CInstance%3E"],[1571,"impl-AddAssign%3CF%3E-for-Blind%3CF%3E"],[1572,"impl-AddAssign-for-Blind%3CF%3E"],[1599,"impl-MulAssign%3CF%3E-for-Blind%3CF%3E"],[1600,"impl-MulAssign-for-Blind%3CF%3E"],[1669,"impl-MSM%3CC%3E-for-MSMIPA%3C\'a,+C%3E"],[1670,"impl-MSMIPA%3C\'a,+C%3E"],[1972,"impl-Prover%3C\'params,+KZGCommitmentScheme%3CE%3E%3E-for-ProverSHPLONK%3C\'params,+E%3E"],[1973,"impl-ProverSHPLONK%3C\'a,+E%3E"],[2031,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-AccumulatorStrategy%3CE%3E"],[2032,"impl-AccumulatorStrategy%3CE%3E"],[2033,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-SingleStrategy%3CE%3E"],[2034,"impl-SingleStrategy%3CE%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAFYFtQAGAAEACQADAA4AAQARAAEAFgAAABgAAwBOAAkAYwAAAGUAEAB3AAcAhgAAAIsAEQCeAAgArAAHALYAAAC4AAAAuwAAAL0AAADCAAAAxAAIANsACQDnAAAA6QAAAOsAAADvAAoA+wADAAEBFwAdAQcAKAEOADkBAwA/AQwATgEIAFgBAgBdAQUAZwELAHUBAQB5AQgAmQEAAJwBDQCrAQgAtgESAMoBBwDUAQcA4gEGAPMBAgD7ARcAGQIFAEQCFgBcAhgAdgIGAIYCAACIAgYAngIAAKMCAQCoAh8AzQIVAOQCHgAEAwEABwMBAAoDAAAMAwAADgMDABMDBAAdAyAAgAMIAJUDLQDGAyAA6gMAAPcDAAD7Ay0AKwQWAEcECgBcBBoAeAQBAHsEAAB9BAIAgwQCAIcEAACLBAAAjQQCAJcEAACgBAAAogQBAKcEBwC0BAAAtgQXAOgEAAD0BAEA9wQLAAcFAAAJBQAACwUAAA0FAAARBQIAFQUAAB0FAAAiBQAAJAUCADYFAQA6BQkASAUUAF4FRwCrBRYAzAUIANsFAwDgBQEA5QUAAOoFAQDyBQIA+wUAAAEGAAAHBgkAIwYCACkGAQAsBgEAMgYCADYGAAA4BgAAOgYAADwGAAA/BgIATAYDAFEGAABaBgUAYwYJAG8GAQBzBgEAdgYAAHgGBwCBBgEAiwYLAJgGAACbBgYApAYDAKkGBwCzBgEAtwYKAMYGCwDTBgsA4QYDAOoGAwDyBhEABwcDABIHHAAzBwIAOQcFAEIHAQBFBw4AVwcAAFoHAABcBwYAZAcDAGkHCgB2BwEAfAcBAH8HCQCNBwcAlwcPAKsHAwCzBwIAtwcNAMYHAwDNBxkA6gcCAPAHAADyBwAA9AcQABEICwAeCAEAIQgLAC4IAwA2CAAAOggBAD0IAABCCAAARAgAAEYIAABICAEASwgOAFsIAABdCAAA"}],\ +["p3_frontend",{"t":"PKFPFPPGPPPFFPFPPFGFPGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHHNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNONNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Add","AirBuilderWithPublicValues","CompileParams","Constant","FWrap","FirstRow","LastRow","Location","Location","Mul","Neg","PreprocessingInfo","Public","Public","Query","Query","Sub","SymbolicAirBuilder","SymbolicExpression","SymbolicVariable","Transition","Var","Variable","add","add","add","add","add","add","add","add_assign","add_assign","add_assign","as_base_slice","as_base_slice","as_canonical_biguint","as_canonical_u64","as_slice","as_slice_mut","assert_zero","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","column","compile_circuit_cs","compile_preprocessing","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","disable_zk","div","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from_base","from_base","from_base_fn","from_base_fn","from_base_slice","from_base_slice","from_bool","from_bool","from_canonical_u16","from_canonical_u16","from_canonical_u32","from_canonical_u32","from_canonical_u64","from_canonical_u64","from_canonical_u8","from_canonical_u8","from_canonical_usize","from_canonical_usize","from_f","from_f","from_fn","from_slice","from_slice_mut","from_wrapped_u32","from_wrapped_u32","from_wrapped_u64","from_wrapped_u64","generator","generator","get_public_inputs","hash","index","init","init","init","init","init","init","init","init","init","init","interleave","into","into","into","into","into","into","into","into","into","into","is_first_row","is_last_row","is_next","is_one","is_transition_window","is_zero","is_zero","main","mul","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","mul_assign","neg","neg","neg_one","neg_one","new_public","new_query","one","one","order","partial_cmp","product","product","product","public_values","public_values","serialize","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sum","sum","sum","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","trace_to_wit","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_inverse","two","two","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","zero","zero"],"q":[[0,"p3_frontend"],[304,"p3_frontend::fwrap"],[305,"ff"],[306,"p3_frontend::symbolic_expression"],[307,"p3_frontend::symbolic_variable"],[308,"p3_field::field"],[309,"num_bigint::biguint"],[310,"core::hash"],[311,"core::cmp"],[312,"p3_frontend::symbolic_builder"],[313,"core::convert"],[314,"core::clone"],[315,"halo2_middleware::circuit"],[316,"p3_air::air"],[317,"core::default"],[318,"core::result"],[319,"serde::de"],[320,"core::fmt"],[321,"core::ops::function"],[322,"alloc::vec"],[323,"core::option"],[324,"core::iter::traits::iterator"],[325,"p3_frontend::air"],[326,"serde::ser"],[327,"alloc::string"],[328,"p3_matrix::dense"],[329,"core::any"]],"i":[3,0,0,3,0,18,18,0,3,3,3,0,0,19,0,19,3,0,0,0,18,0,3,1,3,3,3,4,4,4,1,3,3,1,3,1,1,1,1,15,15,1,18,3,4,19,20,21,22,23,15,1,18,3,4,19,20,21,22,23,1,18,3,4,19,20,21,22,23,1,18,3,4,19,20,21,22,23,1,20,0,0,1,3,23,15,1,18,3,4,19,20,21,22,23,15,1,18,3,4,19,20,21,22,23,1,23,1,3,15,1,18,3,4,19,20,21,22,23,1,1,1,18,18,3,3,4,4,19,20,21,22,23,15,1,18,3,3,3,4,19,20,21,22,23,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,1,1,1,3,1,3,1,3,0,1,21,15,1,18,3,4,19,20,21,22,23,1,15,1,18,3,4,19,20,21,22,23,15,15,20,3,15,1,3,15,1,3,3,3,4,4,4,1,3,3,1,3,1,3,4,4,1,3,1,1,1,3,3,49,15,1,1,3,3,3,4,4,4,1,3,3,1,3,3,1,18,3,4,19,20,21,22,23,1,18,3,4,0,15,1,18,3,4,19,20,21,22,23,15,1,18,3,4,19,20,21,22,23,1,1,3,15,1,18,3,4,19,20,21,22,23,15,1,18,3,4,19,20,21,22,23,1,3],"f":"```````````````````````{{{b{c}}{b{c}}}{{b{c}}}d}{{{f{c}}{h{c}}}ej{}}{{{f{c}}c}{{f{c}}}j}{{{f{c}}{f{c}}}{{f{c}}}j}{{{h{c}}{h{c}}}ej{}}{{{h{c}}{f{c}}}ej{}}{{{h{c}}c}ej{}}{{{n{l{b{c}}}}{b{c}}}A`d}{{{n{l{f{c}}}}c}A`j}{{{n{l{f{c}}}}{f{c}}}A`j}{{{n{c}}}{{n{{Ab{e}}}}}{}{}}0{{{n{{b{c}}}}}Ad{AfAhAj}}{{{n{{b{c}}}}}Al{AfAhAj}}{{{n{c}}}{{n{Ab}}}{}}{{{n{lc}}}{{n{lAb}}}{}}{{{n{l{An{c}}}}g}A`j{}{{B`{e}}}}{{{n{c}}}{{n{e}}}{}{}}000000000{{{n{lc}}}{{n{le}}}{}{}}000000000{{{n{{b{c}}}}}{{b{c}}}{Bbd}}{{{n{Bd}}}Bd}{{{n{{f{c}}}}}{{f{c}}}{Bbj}}{{{n{{h{c}}}}}{{h{c}}}{Bbj}}{{{n{Bf}}}Bf}{{{n{Bh}}}Bh}{{{n{Bj}}}Bj}{{{n{Bl}}}Bl}{{{n{Bn}}}Bn}{{{n{c}}{n{le}}}A`{}{}}00000000{{{n{{b{c}}}}{n{{b{c}}}}}C`{Ajd}}`{{{n{e}}{n{Bn}}Cb}{{Cf{{Cd{c}}Bl}}}{AfAh}{{Ch{{An{{b{c}}}}}}}}{{CjCb{n{Bl}}{n{e}}}{{Cl{c}}}{AfAh}{{Ch{{An{{b{c}}}}}}}}{{}{{b{c}}}{Cnd}}{{}{{f{c}}}j}{{}Bn}{Cb{{n{c}}}{}}000000000{Cb{{n{lc}}}{}}000000000{c{{D`{{b{e}}}}}DbAf}`{{{b{c}}{b{c}}}{{b{c}}}d}{{{n{{f{c}}}}}{{f{c}}}j}{CbA`}000000000{{{n{{b{c}}}}{n{{b{c}}}}}Dd{Dfd}}{{{n{{b{c}}}}{n{lDh}}}Djd}{{{n{{b{c}}}}{n{lDh}}}Dj{Dld}}{{{n{Bd}}{n{lDh}}}Dj}0{{{n{{f{c}}}}{n{lDh}}}Djj}{{{n{{f{c}}}}{n{lDh}}}Dj{Dlj}}{{{n{{h{c}}}}{n{lDh}}}Djj}{{{n{{h{c}}}}{n{lDh}}}Dj{Dlj}}{{{n{Bf}}{n{lDh}}}Dj}{{{n{Bh}}{n{lDh}}}Dj}{{{n{Bj}}{n{lDh}}}Dj}{{{n{Bl}}{n{lDh}}}Dj}{{{n{Bn}}{n{lDh}}}Dj}{cc{}}00{c{{f{c}}}j}{{{h{c}}}{{f{c}}}j}222222222{ec{}{{E`{Cb}{{Dn{c}}}}}}0{{{n{{Ab{c}}}}}c{}}0{Dd{{b{c}}}{AfAh}}{Dd{{f{c}}}j}{Eb{{b{c}}}{AfAh}}{Eb{{f{c}}}j}{Cj{{b{c}}}{AfAh}}{Cj{{f{c}}}j}{Al{{b{c}}}{AfAh}}{Al{{f{c}}}j}{Ed{{b{c}}}{AfAh}}{Ed{{f{c}}}j}{Cb{{b{c}}}{AfAh}}{Cb{{f{c}}}j}{c{{b{e}}}{}{AfAh}}{c{{f{e}}}{}j}{ce{{E`{Cb}{{Dn{}}}}}{}}{{{n{Ab}}}{{n{c}}}{}}{{{n{lAb}}}{{n{lc}}}{}}<;:9{{}{{b{c}}}{AfAh}}{{}{{f{c}}}j}{{{n{Bl}}Cb{n{{Ab{{Ef{c}}}}}}}{{Ef{{Ef{c}}}}}d}{{{n{{b{c}}}}{n{le}}}A`{Ahd}Eh}`{{}Cb}000000000{{{n{c}}eCb}{{Cf{ee}}}{}{}}{ce{}{}}000000000{{{n{{An{c}}}}}ej{}}0`{{{n{{f{c}}}}}Ddj}{{{n{{An{c}}}}Cb}ej{}}{{{n{{b{c}}}}}Dd{AfAh}}23{{{b{c}}{b{c}}}{{b{c}}}d}{{{f{c}}{f{c}}}{{f{c}}}j}{{{f{c}}c}{{f{c}}}j}{{{f{c}}{h{c}}}ej{}}{{{h{c}}{f{c}}}ej{}}{{{h{c}}c}ej{}}{{{h{c}}{h{c}}}ej{}}{{{n{l{b{c}}}}{b{c}}}A`d}{{{n{l{f{c}}}}c}A`j}{{{n{l{f{c}}}}{f{c}}}A`j}{{{b{c}}}ed{}}{{{f{c}}}{{f{c}}}j}{{}{{b{c}}}{AfAh}}{{}{{f{c}}}j}{Cb{{h{c}}}j}{{DdCb}{{h{c}}}j}32{{}Ad}{{{n{{b{c}}}}{n{{b{c}}}}}{{Ej{C`}}}{Eld}}{e{{b{c}}}d{{F`{}{{En{{b{c}}}}}}}}{e{{f{c}}}j{{F`{}{{En{{f{c}}}}}}}}{e{{f{c}}}j{{F`{}{{En{c}}}}}}{{{n{Fb}}}{{n{{Ab{c}}}}}{}}{{{n{{An{c}}}}}{{n{{Ab{e}}}}}j{}}{{{n{{b{c}}}}e}D`AfFd}{{{b{c}}{b{c}}}{{b{c}}}d}{{{f{c}}c}{{f{c}}}j}{{{f{c}}{h{c}}}ej{}}{{{f{c}}{f{c}}}{{f{c}}}j}{{{h{c}}c}ej{}}{{{h{c}}{f{c}}}ej{}}{{{h{c}}{h{c}}}ej{}}{{{n{l{b{c}}}}{b{c}}}A`d}{{{n{l{f{c}}}}c}A`j}{{{n{l{f{c}}}}{f{c}}}A`j}?=>{{{n{c}}}e{}{}}00000000{{{n{c}}}Ff{}}000{{Cj{Fh{{b{c}}}}}{{Ef{{Ef{c}}}}}d}{c{{D`{e}}}{}{}}0000000000000000000{{{n{{b{c}}}}}{{Ej{{b{c}}}}}{AfAh}}{{}{{b{c}}}{AfAh}}{{}{{f{c}}}j}{{{n{c}}}Fj{}}000000000{ce{}{}}00000000032","D":"C`","p":[[5,"FWrap",0,304],[10,"Field",305],[6,"SymbolicExpression",0,306],[5,"SymbolicVariable",0,307],[10,"Field",308],[0,"mut"],[1,"reference"],[1,"unit"],[1,"slice"],[5,"BigUint",309],[10,"PrimeField",305],[10,"Hash",310],[10,"Ord",311],[1,"u64"],[5,"SymbolicAirBuilder",0,312],[10,"Into",313],[10,"Clone",314],[6,"Location",0,306],[6,"Var",0,307],[5,"Query",0,307],[5,"Public",0,307],[5,"PreprocessingInfo",0],[5,"CompileParams",0],[6,"Ordering",311],[1,"usize"],[5,"ConstraintSystemMid",315],[1,"tuple"],[10,"Air",316],[1,"u32"],[5,"Preprocessing",315],[10,"Default",317],[6,"Result",318],[10,"Deserializer",319],[1,"bool"],[10,"PartialEq",311],[5,"Formatter",320],[8,"Result",320],[10,"Debug",320],[17,"Output"],[10,"FnMut",321],[1,"u16"],[1,"u8"],[5,"Vec",322],[10,"Hasher",310],[6,"Option",323],[10,"PartialOrd",311],[17,"Item"],[10,"Iterator",324],[10,"AirBuilderWithPublicValues",0,325],[10,"Serializer",326],[5,"String",327],[5,"RowMajorMatrix",328],[5,"TypeId",329]],"r":[[1,325],[4,304],[7,306],[12,307],[14,307],[17,312],[18,306],[19,307],[21,307]],"b":[[24,"impl-Add%3CSymbolicVariable%3CF%3E%3E-for-SymbolicExpression%3CF%3E"],[25,"impl-Add%3CF%3E-for-SymbolicExpression%3CF%3E"],[26,"impl-Add-for-SymbolicExpression%3CF%3E"],[27,"impl-Add-for-SymbolicVariable%3CF%3E"],[28,"impl-Add%3CSymbolicExpression%3CF%3E%3E-for-SymbolicVariable%3CF%3E"],[29,"impl-Add%3CF%3E-for-SymbolicVariable%3CF%3E"],[31,"impl-AddAssign%3CF%3E-for-SymbolicExpression%3CF%3E"],[32,"impl-AddAssign-for-SymbolicExpression%3CF%3E"],[120,"impl-Display-for-FWrap%3CF%3E"],[121,"impl-Debug-for-FWrap%3CF%3E"],[122,"impl-Display-for-Location"],[123,"impl-Debug-for-Location"],[124,"impl-Display-for-SymbolicExpression%3CF%3E"],[125,"impl-Debug-for-SymbolicExpression%3CF%3E"],[126,"impl-Display-for-SymbolicVariable%3CF%3E"],[127,"impl-Debug-for-SymbolicVariable%3CF%3E"],[136,"impl-From%3CF%3E-for-SymbolicExpression%3CF%3E"],[137,"impl-From%3CSymbolicVariable%3CF%3E%3E-for-SymbolicExpression%3CF%3E"],[207,"impl-Mul-for-SymbolicExpression%3CF%3E"],[208,"impl-Mul%3CF%3E-for-SymbolicExpression%3CF%3E"],[209,"impl-Mul%3CSymbolicVariable%3CF%3E%3E-for-SymbolicExpression%3CF%3E"],[210,"impl-Mul%3CSymbolicExpression%3CF%3E%3E-for-SymbolicVariable%3CF%3E"],[211,"impl-Mul%3CF%3E-for-SymbolicVariable%3CF%3E"],[212,"impl-Mul-for-SymbolicVariable%3CF%3E"],[214,"impl-MulAssign%3CF%3E-for-SymbolicExpression%3CF%3E"],[215,"impl-MulAssign-for-SymbolicExpression%3CF%3E"],[227,"impl-Product-for-SymbolicExpression%3CF%3E"],[228,"impl-Product%3CF%3E-for-SymbolicExpression%3CF%3E"],[233,"impl-Sub%3CF%3E-for-SymbolicExpression%3CF%3E"],[234,"impl-Sub%3CSymbolicVariable%3CF%3E%3E-for-SymbolicExpression%3CF%3E"],[235,"impl-Sub-for-SymbolicExpression%3CF%3E"],[236,"impl-Sub%3CF%3E-for-SymbolicVariable%3CF%3E"],[237,"impl-Sub%3CSymbolicExpression%3CF%3E%3E-for-SymbolicVariable%3CF%3E"],[238,"impl-Sub-for-SymbolicVariable%3CF%3E"],[240,"impl-SubAssign%3CF%3E-for-SymbolicExpression%3CF%3E"],[241,"impl-SubAssign-for-SymbolicExpression%3CF%3E"],[243,"impl-Sum%3CF%3E-for-SymbolicExpression%3CF%3E"],[244,"impl-Sum-for-SymbolicExpression%3CF%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABgBBQABABAAFQBwAIkAAQCSACoAxwBpAA=="}]\ ]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); diff --git a/search.desc/halo2_proofs/halo2_proofs-desc-0-.js b/search.desc/halo2_proofs/halo2_proofs-desc-0-.js index a8624a147f..9de181daaf 100644 --- a/search.desc/halo2_proofs/halo2_proofs-desc-0-.js +++ b/search.desc/halo2_proofs/halo2_proofs-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("halo2_proofs", 0, "Legacy halo2 API that wraps the frontend-backend split …\nCurve elements are serialized in compressed form. Field …\nCurve elements are serialized in uncompressed form. Field …\nSerialization is the same as RawBytes, but no checks are …\nThis enum specifies how various types are serialized and …\nThis module provides common utilities, traits and …\nTraits and structs for implementing circuit components.\nTools for developing circuits.\nReturns the argument unchanged.\nCalls U::from(self).\nThis module provides an implementation of a variant of …\nContains utilities for performing arithmetic over …\nThis module contains utilities and traits for dealing with …\nThe affine version of the curve\nThe base field over which this elliptic curve is …\nThe base field over which this elliptic curve is …\nCURVE_ID used for hash-to-curve.\nThis trait is the affine counterpart to Curve and is used …\nThis trait is a common interface for dealing with elements …\nThe projective form of the curve\nThis trait represents an element of a field.\nThe one element of the field, the multiplicative identity.\nThe scalar field of this elliptic curve.\nThe scalar field of this elliptic curve.\nThe zero element of the field, the additive identity.\nReturns the curve constant a.\nReturns the curve constant $a$.\nReturns the curve constant b.\nReturns the curve constant $b$.\nGets the coordinates of this point.\nCubes this element.\nDoubles this element.\nApply the curve endomorphism by multiplying the …\nObtains a point given $(x, y)$, failing if it is not on the\nRequests a hasher that accepts messages and returns …\nComputes the multiplicative inverse of this element, …\nReturns whether or not this element is on the curve; should\nReturns whether or not this element is on the curve; should\nReturns true iff this element is zero.\nReturns true iff this element is zero.\nReturn the Jacobian coordinates of this point.\nObtains a point given Jacobian coordinates $X : Y : Z$, …\nThis utility function will parallelize an operation that …\nExponentiates self by exp, where exp is a little-endian …\nExponentiates self by exp, where exp is a little-endian …\nReturns an element chosen uniformly at random using a …\nReturns the square root of the field element, if it is …\nEquivalent to Self::sqrt_ratio(self, one()).\nComputes:\nSquares this element.\nAn assigned cell.\nA pointer to a cell within a circuit.\nA chip implements a set of instructions that can be used …\nA type that holds the configuration for this chip, and any …\nA layout strategy within a circuit. The layouter is …\nA type that holds any general chip state that needs to be …\nThis is a “namespaced” layouter which borrows a …\nA region of the circuit in which a Chip can assign cells.\nIndex of a region in a layouter\nRepresents the type of the “root” of this layouter, so …\nA simple FloorPlanner that performs minimal optimizations.\nA lookup table in the circuit.\nA value that might exist within a circuit.\nReturns Value::unknown() if the value is Value::unknown(), …\nConverts from &mut Value<V> to Value<&mut V>.\nConverts from &Value<V> to Value<&V>.\nEnforces an assertion on the contained value, if known.\nObtains the inner value for assigning into the circuit.\nAssign an advice column value (witness).\nAssigns a constant value to the column advice at offset …\nAssign the value of the instance column’s cell at …\nAssigns a fixed value to a table cell.\nAssign a fixed value.\nAssign a region of gates to an absolute row number.\nAssign a table region to an absolute row number.\nReturns the cell.\nMaps a Value<&V> to a Value<V> by cloning the contents of …\nMaps a Value<&mut V> to a Value<V> by cloning the contents …\nThe column of this cell.\nThe chip holds its own configuration.\nConstrains a cell to have a constant value.\nConstrains two cells to have the same value.\nConstrains a Cell to equal an instance column’s row …\nMaps a Value<&V> to a Value<V> by copying the contents of …\nMaps a Value<&mut V> to a Value<V> by copying the contents …\nCopies the value to a given advice cell and constrains …\nCubes this field element.\nDoubles this field element.\nEnables a selector at the given offset.\nChecks the contained value for an error condition, if …\nEvaluates this value directly, performing an unbatched …\nEvaluates this assigned cell’s value directly, …\nImplementations of common circuit floor planners.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nTakes each element in the Iterator: if it is …\nQueries the value of the given challenge.\nGets the “root” of this assignment, bypassing the …\nReturns the value of the instance column’s cell at …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the field element corresponding to this value.\nInverts this assigned value (taking the inverse of zero to …\nConstructs a known value.\nProvides access to general chip state loaded at the …\nMaps a Value<V> to Value<W> by applying a function to the …\nAllows the circuit implementor to name/annotate a Column …\nEnters into a namespace.\nExits out of the existing namespace.\nCreates a new (sub)namespace and enters into it.\nIdentifies the region in which this cell resides.\nThe relative offset of this cell within its region.\nSquares this field element.\nReturns the field element corresponding to this value.\nTransposes a Value<[V; LEN]> into a [Value<V>; LEN].\nTransposes a Value<impl IntoIterator<Item = V>> into a …\nConstructs an unwitnessed value.\nUnzips a value containing a tuple of two values.\nReturns the value of the AssignedCell.\nReturns the field element value of the AssignedCell.\nZips self with another Value.\nThe version 1 FloorPlanner provided by halo2.\nA single pass of the V1 layouter.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nA simple FloorPlanner that performs minimal optimizations.\nA Layouter for a single-chip circuit.\nReturns the argument unchanged.\nCalls U::from(self).\nCreates a new single-chip layouter.\nAssigns the circuit.\nMeasures the circuit.\nThe version 1 FloorPlanner provided by halo2.\nA single pass of the V1 layouter.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nA cell that has been assigned a value.\nAssigned instance value\nA cell used in an active gate was not assigned to.\nThe value of a particular cell within the circuit.\nGraphical renderer for circuit layouts.\nA constraint was not satisfied for a particular row.\nA constraint was active on an unusable row, and is likely …\nThe location within the circuit at which a particular …\nA location inside a region.\nAn instance cell used in an active gate was not assigned …\nInstance Value\nA lookup input did not exist in its corresponding table.\nA test prover for debugging circuits.\nA location outside of a region.\nPadding\nA permutation did not preserve the original value of a …\nA unique poisoned cell.\nA shuffle input did not exist in its corresponding map.\nAn unassigned cell.\nThe reasons why a particular circuit is not satisfied.\nReturns the list of Advice Columns used within a …\nReturn the content of an advice column as mutable\nReturn the content of an advice column as assigned by the …\nPanics if the circuit being checked by this MockProver is …\nPanics if the circuit being checked by this MockProver is …\nBuilds a dot graph string representing the given circuit.\nThe cost estimator takes high-level parameters for a …\nReturns the constraint system\nEmits this failure in pretty-printed format to stderr.\nReturns the list of Fixed Columns used within a MockProver …\nReturn the content of a fixed column as assigned by the …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the list of Instance Columns used within a …\nReturn the content of an instance column as mutable\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nMarks cells involved in equality constraints, in red.\nMetadata about circuits.\nRenders the given circuit on the given drawing area.\nRuns a synthetic keygen-and-prove operation on the given …\nReturns the list of Selector Columns used within a …\nDraws red lines between equality-constrained cells.\nSets the visibility of region labels.\nReturns the usable rows\nField value on the instance cell\nReturns Ok(()) if this MockProver is satisfied, or a list …\nReturns Ok(()) if this MockProver is satisfied, or a list …\nSets the view height for this layout, as a number of rows.\nSets the view width for this layout, as a number of …\nThe offset (relative to the start of the region) at which …\nThe region in which the failure occurred.\nThe circuit row on which the failure occurred.\nThe values of the virtual cells used by this constraint.\nThe column in which this cell should be assigned.\nThe column in which this cell should be assigned.\nThe column in which this permutation is not satisfied.\nThe polynomial constraint that is not satisfied.\nThe polynomial constraint that is not satisfied.\nThe index of the active gate.\nThe index of the active gate.\nThe offset (relative to the start of the region) at which …\nThe offset (relative to the start of the region) at which …\nThe location at which this constraint is not satisfied.\nThe location at which the lookup is not satisfied.\nThe location at which the lookup is not satisfied.\nThe location at which the permutation is not satisfied.\nThe index of the lookup that is not satisfied. These …\nThe name of the lookup that is not satisfied.\nThe name of the lookup that is not satisfied.\nThe offset (relative to the start of the region) at which …\nThe region in which this cell should be assigned.\nThe region in which this gate was activated.\nThe absolute row at which this cell should be assigned.\nThe index of the lookup that is not satisfied. These …\nSupported commitment schemes\nOptions to build a circuit specification to measure the …\nInner Product Argument commitment scheme\nKZG with GWC19 multi-open strategy\nKZG with BDFG20 multi-open strategy\nStructure holding the Lookup related data for circuit …\nHigh-level specifications of an abstract circuit.\nNumber of permutation enabled columns\nStructure holding polynomial related data for benchmarks\nStructure holding the Shuffle related data for circuit …\nAn advice column with the given rotations. May be repeated.\nNumber of advice columns.\nNumber of distinct column queries across all gates.\nA fixed column with the given rotations. May be repeated.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGiven a Plonk circuit, this function returns CostOptions\nGiven a Plonk circuit, this function returns a ModelCircuit\nMaximum degree of the custom gates.\nAn instance column with the given rotations. May be …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConvert CostOptions to ModelCircuit. The proof sizè is …\n2^K bound on the number of rows.\nPower-of-2 bound on the number of rows in the circuit.\nA lookup over N columns with max input degree I and max …\nNumber of lookup arguments.\nMaximum degree of the circuit.\nMaximum degree of the constraint system.\nA permutation over N columns. May be repeated.\nEquality constraint enabled columns.\nNumber of distinct sets of points in the multiopening …\nRotations for the given polynomial\nA shuffle over N columns with max input degree I and max …\nNumber of shuffle arguments\nSize of the proof for the circuit\nA column with an index and type\nMetadata about a configured constraint within a circuit.\nMetadata about a configured gate within a circuit.\nMetadata about an assigned region within a circuit.\nA “virtual cell” is a PLONK cell that has been queried …\nThe type of the column.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe index of the column.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nAn advice column\nAn Advice variant\nThis is an advice (witness) column queried at a certain …\nAn enum over the Advice, Fixed, Instance structs\nA value assigned to a cell within a circuit.\nThis trait allows a Circuit to direct some backend to …\nAn error relating to an Assignment.\nBackend error case\nOut of bounds index passed to a backend\nOut of bounds index passed to a backend\nA challenge squeezed from transcript after advice columns …\nThis is a challenge\nThis is a trait that circuits provide implementations for …\nA column with an index and type\nThe instance sets up a copy constraint involving a column …\nThe instance sets up a copy constraint involving a column …\nA column type\nThis is a configuration object that stores things like …\nThis is a constant polynomial\nThis is a description of the circuit environment, such as …\nThe constraint system is not satisfied.\nThis is a description of the circuit environment, such as …\nA set of polynomial constraints with a common selector.\nThis is an error that could occur during proving or …\nThis is an error that could occur during proving.\nThis is an error that could occur during circuit synthesis.\nLow-degree expression representing an identity that must …\nFirst phase\nA fixed column\nA Fixed variant\nThis is a fixed column queried at a certain relative …\nQuery of fixed column at a certain relative location\nA floor planning strategy for a circuit.\nThe floor planner used for this circuit. This is an …\nFrontend error case\nAn instance column\nAn Instance variant\nThis is an instance (external) column queried at a certain …\nInstance provided exceeds number of available rows\nThe provided instances do not match the circuit parameters.\nThis is a negated polynomial\nCircuit synthesis requires global constants, but circuit …\nk is too small for the given circuit.\nk is too small for the given circuit.\nOpening error\nGeneric error not covered by previous cases\nGeneric error not covered by previous cases\nOptional circuit configuration parameters. Requires the …\nPhase of advice column\nThis is the product of two polynomials\nThis is a proving key which allows for the creation of …\nA value stored as a fraction to enable batch inversion.\nThis is a scaled polynomial\nSecond phase\nA selector, representing a fixed boolean value per row of …\nThis is a virtual selector\nThis is the sum of two polynomials\nThis is an error that can occur during synthesis of the …\nA fixed column of a lookup table.\nAn error relating to a lookup table.\nThird phase\nTranscript error\nA value that does not require inversion to evaluate.\nThis is a verifying key which allows for the verification …\nExposes the “virtual cells” that can be queried while …\nThe field element zero.\nAllocate a new advice column at FirstPhase\nAllocate a new advice column in given phase\nReturns phase of advice columns\nContains the phase for each advice column. Should have …\nReturns advice queries\nAllows the developer to include an annotation for an …\nAnnotate a column.\nAnnotate an Instance column.\nAnnotate a Lookup column.\nAssign an advice column value (witness)\nAssign a fixed value\nCompute the number of blinding factors necessary to …\nReturns phase of challenges\nContains the phase for each challenge. Should have same …\nRequests a challenge that is usable after the given phase.\nColumn index\nColumn index\nType of this column.\nAllocate a new complex selector that can appear anywhere …\nApproximate the computational complexity of this …\nThis will compress selectors together depending on their …\nThe circuit is given an opportunity to describe the exact …\nThe circuit is given an opportunity to describe the exact …\nReturns constants\nAssign two cells to have the same value\nCreates a new gate.\nThis creates a proof for the provided circuit when given …\nThis creates a proof for the provided circuit when given …\nCubes this element.\nReturn expression from column at the current row\nCompute the degree of the constraint system (the maximum …\nCompute the degree of this polynomial\nReturns the denominator, if non-trivial.\nDoes not combine selectors and directly replaces them …\nDoubles this element.\nEnable this selector at the given offset within the given …\nEnables this fixed column to be used for global constant …\nEnable the ability to enforce equality over cells in this …\nEnables a selector at the given row.\nCreates a new region and enters into it.\nEvaluates this assigned value directly, performing an …\nEvaluate the polynomial using the provided closures to …\nEvaluate the polynomial lazily using the provided closures …\nExits the current region.\nReturn expression from selector\nReturn Expression\nFills a fixed column starting from the given row with …\nAllocate a new fixed column\nReturns commitments of fixed polynomials\nReturns fixed queries\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReads a verification key from a slice of bytes using …\nReads a proving key from a slice of bytes using Self::read.\nReturns gates\nReturns general column annotations\nQueries the value of the given challenge.\nGet the underlying EvaluationDomain.\nGet the underlying VerifyingKey.\nHashes a verification key into a transcript.\nIdentifier for this expression. Expressions with identical …\nIndex of this column.\nReturns index of this selector\nIndex of this challenge.\nQuery index\nReturns inner column\nAllocate a new instance column\nReturns instance queries\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nInverts this assigned value (taking the inverse of zero to …\nIs this selector “simple”? Simple selectors can only …\nReturns true iff this element is zero.\nGenerate a ProvingKey from a VerifyingKey and an instance …\nGenerate a ProvingKey from an instance of Circuit.\nGenerate a VerifyingKey from an instance of Circuit. By …\nGenerate a VerifyingKey from an instance of Circuit.\nAdd a lookup argument for some input expressions and table …\nAdd a lookup argument for some input expressions and table …\nAllocates a new fixed column that can be used in a lookup …\nReturns lookup arguments\nReturns the minimum necessary rows that need to exist in …\nReturn expression from column at the next row\nConstructs an Error::NotEnoughRowsAvailable.\nConstructs an Error::NotEnoughRowsAvailable.\nReturns number of advice columns\nReturns number of challenges\nReturns number of fixed columns\nReturns number of instance columns\nReturns number of selectors\nReturns the numerator.\nReturns a reference to the parameters that should be used …\nReturns permutation argument\nPhase of this challenge.\nReturns the number of phases\nReturns the list of phases\nObtains a pinned representation of this verification key …\nReads a proving key from a buffer. Does so by reading …\nExits out of the existing namespace.\nReturn expression from column at the previous row\nCreates a new (sub)namespace and enters into it.\nQuery an advice column at a relative position\nQuery an Any column at a relative position\nReturn expression from cell\nReturn expression from column at a relative position\nMake side effects\nQuery a challenge\nQuery a fixed column at a relative position\nQueries the cell of an instance column at a particular …\nQuery an instance column at a relative position\nQuery a selector at the current position.\nReads a verification key from a buffer.\nReads a proving key from a buffer. Does so by reading …\nReturn expression from column at the specified rotation\nRotation of this query\nRotation of this query\nAllocate a new (simple) selector. Simple selectors cannot …\nSets the minimum degree required by the circuit, which can …\nAdd a shuffle argument for some input expressions and …\nReturns shuffle arguments\nSquares this element.\nSquare this expression.\nGiven the provided cs, synthesize the given circuit.\nGiven the provided cs, synthesize the circuit. The …\nWrites a verifying key to a vector of bytes using …\nWrites a proving key to a vector of bytes using Self::write…\nReturns representative of this VerifyingKey in transcripts\nAllocate a new unblinded advice column at FirstPhase\nAllocate a new unblinded advice column in given phase. …\nContains the index of each advice column that is left …\nReturns a boolean indicating whether or not the proof is …\nReads a verification key from a buffer.\nConstructs a set of constraints that are controlled by the …\nReturns a copy of this circuit with no witness values …\nWrites a verifying key to a buffer.\nWrites a proving key to a buffer.\nThe current value of k being used.\nThe current value of k being used.\nThis structure contains precomputed constants and other …\nThe output type of this verification strategy after …\nDescribes the relative rotation of a vector. Negative …\nTrait representing a strategy for verifying Halo 2 proofs.\nObtains a polynomial in coefficient form when given a …\nThis takes us from an n-length coefficient vector into a …\nGeneric commitment scheme structures\nReturns a constant polynomial in the extended Lagrange …\nReturns a constant polynomial in the Lagrange coefficient …\nThe current location in the evaluation domain\nThis divides the polynomial (in the extended domain) by …\nReturns an empty (zero) polynomial in the coefficient basis\nReturns an empty (zero) polynomial in the extended …\nReturns an empty (zero) polynomial in the Lagrange …\nGet the size of the extended domain\nGet the size of the extended domain\nThis takes us from the extended evaluation domain and gets …\nFinalizes the batch and checks its validity.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGet the generator of the extended domain’s …\nGet $\\omega$, the generator of the $2^k$ order …\nGet $\\omega^{-1}$, the inverse of the generator of the …\nGets the quotient polynomial’s degree (as a multiple of …\nCalls U::from(self).\nCalls U::from(self).\nInner product argument commitment scheme\nGet the size of the domain\nKZG commitment scheme\nComputes evaluations (at the point x, where xn = x^n) of …\nObtains a polynomial in Lagrange form when given a vector …\nThis takes us from an n-length vector into the coefficient …\nCreates new verification strategy instance\nThis constructs a new evaluation domain object based on …\nThe next location in the evaluation domain\nObtain a pinned version of this evaluation domain; a …\nThe previous location in the evaluation domain\nObtains an MSM from the verifier strategy and yields back …\nRotate the extended domain polynomial over the original …\nMultiplies a value by some power of $\\omega$, essentially …\nWrapper type around a blinding factor.\nCan commit to instance or not.\nDefines components of a commitment scheme.\nElliptic curve used to commit the application and witnesses\nUnfinalized verification result. This is returned in …\nMultiscalar multiplication engine\nMultiscalar multiplication engine\nAccumulator for compressed verification\nCommon for Verifier and Prover.\nParameters for circuit synthesis and prover parameters.\nConstant prover parameters\nVerifier specific functionality with circuit constraints\nConstant verifier parameters\nCommon multi-open prover interface for various commitment …\nQuery instance or not\nQuery instance or not\nApplication field of this commitment scheme\nCommon multi-open verifier interface for various …\nAdd another multiexp into this one\nAdd arbitrary term (the scalar and the point)\nReturn base points\nPerform multiexp and check that it results in zero\nThis computes a commitment to a polynomial described by …\nThis commits to a polynomial using its evaluations over …\nCreate a multi-opening proof\nCreate a multi-opening proof\nDownsize Params with smaller k.\nGenerates an empty multiscalar multiplication struct using …\nPerform multiexp and return the result\nReturns the argument unchanged.\nCalls U::from(self).\nLogarithmic size of the circuit\nSize of the circuit\nReturns new instance of parameters\nCreates new prover instance\nCreates new verifier instance\nGiven rng creates new blinding scalar\nWrapper for parameter generator\nReads params from a buffer.\nWrapper for parameter reader\nScalars\nScale all scalars in the MSM by some scaling factor\nProcess the proof and return unfinished result named Guard\nWrites params to a buffer.\nThis module contains an implementation of the polynomial …\nMultiscalar multiplication engines\nIPA multi-open scheme This module contains an optimisation …\nStrategies used with KZG scheme\nConcrete IPA commitment scheme\nPublic parameters for IPA commitment scheme\nVerifier parameters\nThis computes a commitment to a polynomial described by …\nThis commits to a polynomial using its evaluations over …\nCreate a polynomial commitment opening proof for the …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nInitializes parameters for the curve, given a random …\nReads params from a buffer.\nChecks to see if the proof represented within transcript …\nWrites params to a buffer.\nA multiscalar multiplication in the polynomial commitment …\nAdd a value to the first entry of g_scalars.\nAdd another multiexp into this one\nAdd another multiexp into this one\nAdd a vector of scalars to g_scalars. This function will …\nAdd to u_scalar\nAdd to w_scalar\nReturns the argument unchanged.\nCalls U::from(self).\nGiven verifier parameters Creates an empty multi scalar …\nIPA multi-open prover\nIPA multi-open verifier\nCreate a multi-opening proof\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nAn accumulator instance consisting of an evaluation claim …\nA verifier that checks multiple proofs in a batch.\nWrapper for verification accumulator\nA verifier that checks single proof\nComputes G = ⟨s, params.g⟩\nFinalizes the batch and checks its validity.\nFinalizes the batch and checks its validity.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe claimed output of the linear-time polycommit opening …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nA vector of challenges u_0, …, u_{k - 1} sampled by the …\nLets caller supply the challenges and obtain an MSM with …\nLets caller supply the purported G point and simply appends\nKZG commitment scheme\nMultiscalar multiplication engines\nKZG multi-open scheme\nStrategies used with KZG scheme\nUmbrella commitment scheme construction for all KZG …\nThese are the public parameters for the polynomial …\nParameters KZG-based proof verification:\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nInitializes parameters for the curve through existing …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReads params from a buffer.\nReads params from a buffer.\nReads params from a buffer.\nInitializes parameters for the curve, draws toxic secret …\nWrites params to a buffer.\nWrites params to a buffer.\nWrites parameters to buffer\nTwo channel MSM accumulator\nA multiscalar multiplication in the polynomial commitment …\nAdd another multiexp into this one\nPerforms final pairing check with given verifier params …\nPrepares all scalars in the MSM to linear combination\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCreate an empty MSM instance\nCreate a new two channel MSM accumulator instance\nScale all scalars in the MSM by some scaling factor\nConcrete KZG prover with GWC variant\nConcrete KZG prover with SHPLONK variant\nConcrete KZG verifier with GWC variant\nConcrete KZG multiopen verifier with SHPLONK variant\nCreate a multi-opening proof\nCreate a multi-opening proof\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nGiven parameters creates new prover instance\nVerify a multi-opening proof\nA verifier that checks multiple proofs in a batch\nWrapper for linear verification accumulator\nA verifier that checks a single proof\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConstructs an empty batch verifier\nConstructs an empty batch verifier\nConstructs and initialized new batch verifier\nWe will replace BLAKE2b with an algebraic hash function in …\nWe will replace BLAKE2b with an algebraic hash function in …\nA 255-bit challenge.\nEncodedChallenge<C> defines a challenge encoding with a …\nThe Input type used to derive the challenge encoding. For …\nGeneric transcript view (from either the prover or verifier…\nTranscript view from the perspective of a verifier that …\nInitializes transcript at verifier side.\nTranscript view from the perspective of a prover that has …\nManages beginning and finishing of transcript pipeline.\nCast an encoded challenge as a typed ChallengeScalar.\nWriting the point to the transcript without writing it to …\nWriting the scalar to the transcript without writing it to …\nConclude the interaction and return the output buffer …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGet a scalar field element from an encoded challenge.\nInitialize a transcript given an input buffer.\nInitialize a transcript given an output buffer.\nInitialize a transcript given an input buffer.\nInitialize a transcript given an output buffer.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nGet an encoded challenge from a given input challenge.\nRead a curve point from the prover.\nRead a curve scalar from the prover.\nSqueeze an encoded verifier challenge from the transcript.\nSqueeze a typed challenge (in the scalar field) from the …\nWrite a curve point to the proof and the transcript.\nWrite a scalar to the proof and the transcript.") \ No newline at end of file +searchState.loadedDescShard("halo2_proofs", 0, "Legacy halo2 API that wraps the frontend-backend split …\nCurve elements are serialized in compressed form. Field …\nCurve elements are serialized in uncompressed form. Field …\nSerialization is the same as RawBytes, but no checks are …\nThis enum specifies how various types are serialized and …\nThis module provides common utilities, traits and …\nTraits and structs for implementing circuit components.\nTools for developing circuits.\nReturns the argument unchanged.\nCalls U::from(self).\nThis module provides an implementation of a variant of …\nContains utilities for performing arithmetic over …\nThis module contains utilities and traits for dealing with …\nThe affine version of the curve\nThe base field over which this elliptic curve is …\nThe base field over which this elliptic curve is …\nCURVE_ID used for hash-to-curve.\nThis trait is the affine counterpart to Curve and is used …\nThis trait is a common interface for dealing with elements …\nThe projective form of the curve\nThis trait represents an element of a field.\nThe one element of the field, the multiplicative identity.\nThe scalar field of this elliptic curve.\nThe scalar field of this elliptic curve.\nThe zero element of the field, the additive identity.\nReturns the curve constant a.\nReturns the curve constant $a$.\nReturns the curve constant b.\nReturns the curve constant $b$.\nGets the coordinates of this point.\nCubes this element.\nDoubles this element.\nApply the curve endomorphism by multiplying the …\nObtains a point given $(x, y)$, failing if it is not on the\nRequests a hasher that accepts messages and returns …\nComputes the multiplicative inverse of this element, …\nReturns whether or not this element is on the curve; should\nReturns whether or not this element is on the curve; should\nReturns true iff this element is zero.\nReturns true iff this element is zero.\nReturn the Jacobian coordinates of this point.\nObtains a point given Jacobian coordinates $X : Y : Z$, …\nThis utility function will parallelize an operation that …\nExponentiates self by exp, where exp is a little-endian …\nExponentiates self by exp, where exp is a little-endian …\nReturns an element chosen uniformly at random using a …\nReturns the square root of the field element, if it is …\nEquivalent to Self::sqrt_ratio(self, one()).\nComputes:\nSquares this element.\nAn assigned cell.\nA pointer to a cell within a circuit.\nA chip implements a set of instructions that can be used …\nA type that holds the configuration for this chip, and any …\nA layout strategy within a circuit. The layouter is …\nA type that holds any general chip state that needs to be …\nThis is a “namespaced” layouter which borrows a …\nA region of the circuit in which a Chip can assign cells.\nIndex of a region in a layouter\nRepresents the type of the “root” of this layouter, so …\nA simple FloorPlanner that performs minimal optimizations.\nA lookup table in the circuit.\nA value that might exist within a circuit.\nReturns Value::unknown() if the value is Value::unknown(), …\nConverts from &mut Value<V> to Value<&mut V>.\nConverts from &Value<V> to Value<&V>.\nEnforces an assertion on the contained value, if known.\nObtains the inner value for assigning into the circuit.\nAssign an advice column value (witness).\nAssigns a constant value to the column advice at offset …\nAssign the value of the instance column’s cell at …\nAssigns a fixed value to a table cell.\nAssign a fixed value.\nAssign a region of gates to an absolute row number.\nAssign a table region to an absolute row number.\nReturns the cell.\nMaps a Value<&mut V> to a Value<V> by cloning the contents …\nMaps a Value<&V> to a Value<V> by cloning the contents of …\nThe column of this cell.\nThe chip holds its own configuration.\nConstrains a cell to have a constant value.\nConstrains two cells to have the same value.\nConstrains a Cell to equal an instance column’s row …\nMaps a Value<&mut V> to a Value<V> by copying the contents …\nMaps a Value<&V> to a Value<V> by copying the contents of …\nCopies the value to a given advice cell and constrains …\nCubes this field element.\nDoubles this field element.\nEnables a selector at the given offset.\nChecks the contained value for an error condition, if …\nEvaluates this value directly, performing an unbatched …\nEvaluates this assigned cell’s value directly, …\nImplementations of common circuit floor planners.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nTakes each element in the Iterator: if it is …\nQueries the value of the given challenge.\nGets the “root” of this assignment, bypassing the …\nReturns the value of the instance column’s cell at …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the field element corresponding to this value.\nInverts this assigned value (taking the inverse of zero to …\nConstructs a known value.\nProvides access to general chip state loaded at the …\nMaps a Value<V> to Value<W> by applying a function to the …\nAllows the circuit implementor to name/annotate a Column …\nEnters into a namespace.\nExits out of the existing namespace.\nCreates a new (sub)namespace and enters into it.\nIdentifies the region in which this cell resides.\nThe relative offset of this cell within its region.\nSquares this field element.\nReturns the field element corresponding to this value.\nTransposes a Value<[V; LEN]> into a [Value<V>; LEN].\nTransposes a Value<impl IntoIterator<Item = V>> into a …\nConstructs an unwitnessed value.\nUnzips a value containing a tuple of two values.\nReturns the value of the AssignedCell.\nReturns the field element value of the AssignedCell.\nZips self with another Value.\nThe version 1 FloorPlanner provided by halo2.\nA single pass of the V1 layouter.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nA simple FloorPlanner that performs minimal optimizations.\nA Layouter for a single-chip circuit.\nReturns the argument unchanged.\nCalls U::from(self).\nCreates a new single-chip layouter.\nAssigns the circuit.\nMeasures the circuit.\nThe version 1 FloorPlanner provided by halo2.\nA single pass of the V1 layouter.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nA cell that has been assigned a value.\nAssigned instance value\nA cell used in an active gate was not assigned to.\nThe value of a particular cell within the circuit.\nGraphical renderer for circuit layouts.\nA constraint was not satisfied for a particular row.\nA constraint was active on an unusable row, and is likely …\nThe location within the circuit at which a particular …\nA location inside a region.\nAn instance cell used in an active gate was not assigned …\nInstance Value\nA lookup input did not exist in its corresponding table.\nA test prover for debugging circuits.\nA location outside of a region.\nPadding\nA permutation did not preserve the original value of a …\nA unique poisoned cell.\nA shuffle input did not exist in its corresponding map.\nAn unassigned cell.\nThe reasons why a particular circuit is not satisfied.\nReturns the list of Advice Columns used within a …\nReturn the content of an advice column as mutable\nReturn the content of an advice column as assigned by the …\nPanics if the circuit being checked by this MockProver is …\nPanics if the circuit being checked by this MockProver is …\nBuilds a dot graph string representing the given circuit.\nThe cost estimator takes high-level parameters for a …\nReturns the constraint system\nEmits this failure in pretty-printed format to stderr.\nReturns the list of Fixed Columns used within a MockProver …\nReturn the content of a fixed column as assigned by the …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the list of Instance Columns used within a …\nReturn the content of an instance column as mutable\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nMarks cells involved in equality constraints, in red.\nMetadata about circuits.\nRenders the given circuit on the given drawing area.\nRuns a synthetic keygen-and-prove operation on the given …\nReturns the list of Selector Columns used within a …\nDraws red lines between equality-constrained cells.\nSets the visibility of region labels.\nReturns the usable rows\nField value on the instance cell\nReturns Ok(()) if this MockProver is satisfied, or a list …\nReturns Ok(()) if this MockProver is satisfied, or a list …\nSets the view height for this layout, as a number of rows.\nSets the view width for this layout, as a number of …\nThe offset (relative to the start of the region) at which …\nThe region in which the failure occurred.\nThe circuit row on which the failure occurred.\nThe values of the virtual cells used by this constraint.\nThe column in which this cell should be assigned.\nThe column in which this cell should be assigned.\nThe column in which this permutation is not satisfied.\nThe polynomial constraint that is not satisfied.\nThe polynomial constraint that is not satisfied.\nThe index of the active gate.\nThe index of the active gate.\nThe offset (relative to the start of the region) at which …\nThe offset (relative to the start of the region) at which …\nThe location at which this constraint is not satisfied.\nThe location at which the lookup is not satisfied.\nThe location at which the lookup is not satisfied.\nThe location at which the permutation is not satisfied.\nThe index of the lookup that is not satisfied. These …\nThe name of the lookup that is not satisfied.\nThe name of the lookup that is not satisfied.\nThe offset (relative to the start of the region) at which …\nThe region in which this cell should be assigned.\nThe region in which this gate was activated.\nThe absolute row at which this cell should be assigned.\nThe index of the lookup that is not satisfied. These …\nSupported commitment schemes\nOptions to build a circuit specification to measure the …\nInner Product Argument commitment scheme\nKZG with GWC19 multi-open strategy\nKZG with BDFG20 multi-open strategy\nStructure holding the Lookup related data for circuit …\nHigh-level specifications of an abstract circuit.\nNumber of permutation enabled columns\nStructure holding polynomial related data for benchmarks\nStructure holding the Shuffle related data for circuit …\nAn advice column with the given rotations. May be repeated.\nNumber of advice columns.\nNumber of distinct column queries across all gates.\nA fixed column with the given rotations. May be repeated.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGiven a Plonk circuit, this function returns CostOptions\nGiven a Plonk circuit, this function returns a ModelCircuit\nMaximum degree of the custom gates.\nAn instance column with the given rotations. May be …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConvert CostOptions to ModelCircuit. The proof sizè is …\n2^K bound on the number of rows.\nPower-of-2 bound on the number of rows in the circuit.\nA lookup over N columns with max input degree I and max …\nNumber of lookup arguments.\nMaximum degree of the circuit.\nMaximum degree of the constraint system.\nA permutation over N columns. May be repeated.\nEquality constraint enabled columns.\nNumber of distinct sets of points in the multiopening …\nRotations for the given polynomial\nA shuffle over N columns with max input degree I and max …\nNumber of shuffle arguments\nSize of the proof for the circuit\nA column with an index and type\nMetadata about a configured constraint within a circuit.\nMetadata about a configured gate within a circuit.\nMetadata about an assigned region within a circuit.\nA “virtual cell” is a PLONK cell that has been queried …\nThe type of the column.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe index of the column.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nAn advice column\nAn Advice variant\nThis is an advice (witness) column queried at a certain …\nAn enum over the Advice, Fixed, Instance structs\nA value assigned to a cell within a circuit.\nThis trait allows a Circuit to direct some backend to …\nAn error relating to an Assignment.\nBackend error case\nOut of bounds index passed to a backend\nOut of bounds index passed to a backend\nA challenge squeezed from transcript after advice columns …\nThis is a challenge\nThis is a trait that circuits provide implementations for …\nA column with an index and type\nThe instance sets up a copy constraint involving a column …\nThe instance sets up a copy constraint involving a column …\nA column type\nThis is a configuration object that stores things like …\nThis is a constant polynomial\nThis is a description of the circuit environment, such as …\nThe constraint system is not satisfied.\nThis is a description of the circuit environment, such as …\nA set of polynomial constraints with a common selector.\nThis is an error that could occur during proving or …\nThis is an error that could occur during proving.\nThis is an error that could occur during circuit synthesis.\nLow-degree expression representing an identity that must …\nFirst phase\nA fixed column\nA Fixed variant\nThis is a fixed column queried at a certain relative …\nQuery of fixed column at a certain relative location\nA floor planning strategy for a circuit.\nThe floor planner used for this circuit. This is an …\nFrontend error case\nAn instance column\nAn Instance variant\nThis is an instance (external) column queried at a certain …\nInstance provided exceeds number of available rows\nThe provided instances do not match the circuit parameters.\nThis is a negated polynomial\nCircuit synthesis requires global constants, but circuit …\nk is too small for the given circuit.\nk is too small for the given circuit.\nOpening error\nGeneric error not covered by previous cases\nGeneric error not covered by previous cases\nOptional circuit configuration parameters. Requires the …\nPhase of advice column\nThis is the product of two polynomials\nThis is a proving key which allows for the creation of …\nA value stored as a fraction to enable batch inversion.\nThis is a scaled polynomial\nSecond phase\nA selector, representing a fixed boolean value per row of …\nThis is a virtual selector\nThis is the sum of two polynomials\nThis is an error that can occur during synthesis of the …\nA fixed column of a lookup table.\nAn error relating to a lookup table.\nThird phase\nTranscript error\nA value that does not require inversion to evaluate.\nThis is a verifying key which allows for the verification …\nExposes the “virtual cells” that can be queried while …\nThe field element zero.\nAllocate a new advice column at FirstPhase\nAllocate a new advice column in given phase\nReturns phase of advice columns\nContains the phase for each advice column. Should have …\nReturns advice queries\nAllows the developer to include an annotation for an …\nAnnotate a column.\nAnnotate an Instance column.\nAnnotate a Lookup column.\nAssign an advice column value (witness)\nAssign a fixed value\nCompute the number of blinding factors necessary to …\nReturns phase of challenges\nContains the phase for each challenge. Should have same …\nRequests a challenge that is usable after the given phase.\nColumn index\nColumn index\nType of this column.\nAllocate a new complex selector that can appear anywhere …\nApproximate the computational complexity of this …\nThis will compress selectors together depending on their …\nThe circuit is given an opportunity to describe the exact …\nThe circuit is given an opportunity to describe the exact …\nReturns constants\nAssign two cells to have the same value\nCreates a new gate.\nThis creates a proof for the provided circuit when given …\nThis creates a proof for the provided circuit when given …\nCubes this element.\nReturn expression from column at the current row\nCompute the degree of the constraint system (the maximum …\nCompute the degree of this polynomial\nReturns the denominator, if non-trivial.\nDoes not combine selectors and directly replaces them …\nDoubles this element.\nEnable this selector at the given offset within the given …\nEnables this fixed column to be used for global constant …\nEnable the ability to enforce equality over cells in this …\nEnables a selector at the given row.\nCreates a new region and enters into it.\nEvaluates this assigned value directly, performing an …\nEvaluate the polynomial using the provided closures to …\nEvaluate the polynomial lazily using the provided closures …\nExits the current region.\nReturn expression from selector\nReturn Expression\nFills a fixed column starting from the given row with …\nAllocate a new fixed column\nReturns commitments of fixed polynomials\nReturns fixed queries\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReads a verification key from a slice of bytes using …\nReads a proving key from a slice of bytes using Self::read.\nReturns gates\nReturns general column annotations\nQueries the value of the given challenge.\nGet the underlying EvaluationDomain.\nGet the underlying VerifyingKey.\nHashes a verification key into a transcript.\nIdentifier for this expression. Expressions with identical …\nIndex of this column.\nReturns index of this selector\nIndex of this challenge.\nQuery index\nReturns inner column\nAllocate a new instance column\nReturns instance queries\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nInverts this assigned value (taking the inverse of zero to …\nIs this selector “simple”? Simple selectors can only …\nReturns true iff this element is zero.\nGenerate a ProvingKey from a VerifyingKey and an instance …\nGenerate a ProvingKey from an instance of Circuit.\nGenerate a VerifyingKey from an instance of Circuit. By …\nGenerate a VerifyingKey from an instance of Circuit.\nAdd a lookup argument for some input expressions and table …\nAdd a lookup argument for some input expressions and table …\nAllocates a new fixed column that can be used in a lookup …\nReturns lookup arguments\nReturns the minimum necessary rows that need to exist in …\nReturn expression from column at the next row\nConstructs an Error::NotEnoughRowsAvailable.\nConstructs an Error::NotEnoughRowsAvailable.\nReturns number of advice columns\nReturns number of challenges\nReturns number of fixed columns\nReturns number of instance columns\nReturns number of selectors\nReturns the numerator.\nReturns a reference to the parameters that should be used …\nReturns permutation argument\nPhase of this challenge.\nReturns the number of phases\nReturns the list of phases\nObtains a pinned representation of this verification key …\nReads a proving key from a buffer. Does so by reading …\nExits out of the existing namespace.\nReturn expression from column at the previous row\nCreates a new (sub)namespace and enters into it.\nQuery an advice column at a relative position\nQuery an Any column at a relative position\nReturn expression from cell\nReturn expression from column at a relative position\nMake side effects\nQuery a challenge\nQuery a fixed column at a relative position\nQueries the cell of an instance column at a particular …\nQuery an instance column at a relative position\nQuery a selector at the current position.\nReads a verification key from a buffer.\nReads a proving key from a buffer. Does so by reading …\nReturn expression from column at the specified rotation\nRotation of this query\nRotation of this query\nAllocate a new (simple) selector. Simple selectors cannot …\nSets the minimum degree required by the circuit, which can …\nAdd a shuffle argument for some input expressions and …\nReturns shuffle arguments\nSquares this element.\nSquare this expression.\nGiven the provided cs, synthesize the given circuit.\nGiven the provided cs, synthesize the circuit. The …\nWrites a verifying key to a vector of bytes using …\nWrites a proving key to a vector of bytes using Self::write…\nReturns representative of this VerifyingKey in transcripts\nAllocate a new unblinded advice column at FirstPhase\nAllocate a new unblinded advice column in given phase. …\nContains the index of each advice column that is left …\nReturns a boolean indicating whether or not the proof is …\nReads a verification key from a buffer.\nConstructs a set of constraints that are controlled by the …\nReturns a copy of this circuit with no witness values …\nWrites a verifying key to a buffer.\nWrites a proving key to a buffer.\nThe current value of k being used.\nThe current value of k being used.\nThis structure contains precomputed constants and other …\nThe output type of this verification strategy after …\nDescribes the relative rotation of a vector. Negative …\nTrait representing a strategy for verifying Halo 2 proofs.\nObtains a polynomial in coefficient form when given a …\nThis takes us from an n-length coefficient vector into a …\nGeneric commitment scheme structures\nReturns a constant polynomial in the extended Lagrange …\nReturns a constant polynomial in the Lagrange coefficient …\nThe current location in the evaluation domain\nThis divides the polynomial (in the extended domain) by …\nReturns an empty (zero) polynomial in the coefficient basis\nReturns an empty (zero) polynomial in the extended …\nReturns an empty (zero) polynomial in the Lagrange …\nGet the size of the extended domain\nGet the size of the extended domain\nThis takes us from the extended evaluation domain and gets …\nFinalizes the batch and checks its validity.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGet the generator of the extended domain’s …\nGet $\\omega$, the generator of the $2^k$ order …\nGet $\\omega^{-1}$, the inverse of the generator of the …\nGets the quotient polynomial’s degree (as a multiple of …\nCalls U::from(self).\nCalls U::from(self).\nInner product argument commitment scheme\nGet the size of the domain\nKZG commitment scheme\nComputes evaluations (at the point x, where xn = x^n) of …\nObtains a polynomial in Lagrange form when given a vector …\nThis takes us from an n-length vector into the coefficient …\nCreates new verification strategy instance\nThis constructs a new evaluation domain object based on …\nThe next location in the evaluation domain\nObtain a pinned version of this evaluation domain; a …\nThe previous location in the evaluation domain\nObtains an MSM from the verifier strategy and yields back …\nRotate the extended domain polynomial over the original …\nMultiplies a value by some power of $\\omega$, essentially …\nWrapper type around a blinding factor.\nCan commit to instance or not.\nDefines components of a commitment scheme.\nElliptic curve used to commit the application and witnesses\nUnfinalized verification result. This is returned in …\nMultiscalar multiplication engine\nMultiscalar multiplication engine\nAccumulator for compressed verification\nCommon for Verifier and Prover.\nParameters for circuit synthesis and prover parameters.\nConstant prover parameters\nVerifier specific functionality with circuit constraints\nConstant verifier parameters\nCommon multi-open prover interface for various commitment …\nQuery instance or not\nQuery instance or not\nApplication field of this commitment scheme\nCommon multi-open verifier interface for various …\nAdd another multiexp into this one\nAdd arbitrary term (the scalar and the point)\nReturn base points\nPerform multiexp and check that it results in zero\nThis computes a commitment to a polynomial described by …\nThis commits to a polynomial using its evaluations over …\nCreate a multi-opening proof\nCreate a multi-opening proof\nDownsize Params with smaller k.\nGenerates an empty multiscalar multiplication struct using …\nPerform multiexp and return the result\nReturns the argument unchanged.\nCalls U::from(self).\nLogarithmic size of the circuit\nSize of the circuit\nReturns new instance of parameters\nCreates new prover instance\nCreates new verifier instance\nGiven rng creates new blinding scalar\nWrapper for parameter generator\nReads params from a buffer.\nWrapper for parameter reader\nScalars\nScale all scalars in the MSM by some scaling factor\nProcess the proof and return unfinished result named Guard\nWrites params to a buffer.\nThis module contains an implementation of the polynomial …\nMultiscalar multiplication engines\nIPA multi-open scheme This module contains an optimisation …\nStrategies used with KZG scheme\nConcrete IPA commitment scheme\nPublic parameters for IPA commitment scheme\nVerifier parameters\nThis computes a commitment to a polynomial described by …\nThis commits to a polynomial using its evaluations over …\nCreate a polynomial commitment opening proof for the …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nInitializes parameters for the curve, given a random …\nReads params from a buffer.\nChecks to see if the proof represented within transcript …\nWrites params to a buffer.\nA multiscalar multiplication in the polynomial commitment …\nAdd a value to the first entry of g_scalars.\nAdd another multiexp into this one\nAdd another multiexp into this one\nAdd a vector of scalars to g_scalars. This function will …\nAdd to u_scalar\nAdd to w_scalar\nReturns the argument unchanged.\nCalls U::from(self).\nGiven verifier parameters Creates an empty multi scalar …\nIPA multi-open prover\nIPA multi-open verifier\nCreate a multi-opening proof\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nAn accumulator instance consisting of an evaluation claim …\nA verifier that checks multiple proofs in a batch.\nWrapper for verification accumulator\nA verifier that checks single proof\nComputes G = ⟨s, params.g⟩\nFinalizes the batch and checks its validity.\nFinalizes the batch and checks its validity.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe claimed output of the linear-time polycommit opening …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nA vector of challenges u_0, …, u_{k - 1} sampled by the …\nLets caller supply the challenges and obtain an MSM with …\nLets caller supply the purported G point and simply appends\nKZG commitment scheme\nMultiscalar multiplication engines\nKZG multi-open scheme\nStrategies used with KZG scheme\nUmbrella commitment scheme construction for all KZG …\nThese are the public parameters for the polynomial …\nParameters KZG-based proof verification:\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nInitializes parameters for the curve through existing …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReads params from a buffer.\nReads params from a buffer.\nReads params from a buffer.\nInitializes parameters for the curve, draws toxic secret …\nWrites params to a buffer.\nWrites params to a buffer.\nWrites parameters to buffer\nTwo channel MSM accumulator\nA multiscalar multiplication in the polynomial commitment …\nAdd another multiexp into this one\nPerforms final pairing check with given verifier params …\nPrepares all scalars in the MSM to linear combination\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCreate an empty MSM instance\nCreate a new two channel MSM accumulator instance\nScale all scalars in the MSM by some scaling factor\nConcrete KZG prover with GWC variant\nConcrete KZG prover with SHPLONK variant\nConcrete KZG verifier with GWC variant\nConcrete KZG multiopen verifier with SHPLONK variant\nCreate a multi-opening proof\nCreate a multi-opening proof\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nGiven parameters creates new prover instance\nVerify a multi-opening proof\nA verifier that checks multiple proofs in a batch\nWrapper for linear verification accumulator\nA verifier that checks a single proof\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConstructs an empty batch verifier\nConstructs an empty batch verifier\nConstructs and initialized new batch verifier\nWe will replace BLAKE2b with an algebraic hash function in …\nWe will replace BLAKE2b with an algebraic hash function in …\nA 255-bit challenge.\nEncodedChallenge<C> defines a challenge encoding with a …\nThe Input type used to derive the challenge encoding. For …\nGeneric transcript view (from either the prover or verifier…\nTranscript view from the perspective of a verifier that …\nInitializes transcript at verifier side.\nTranscript view from the perspective of a prover that has …\nManages beginning and finishing of transcript pipeline.\nCast an encoded challenge as a typed ChallengeScalar.\nWriting the point to the transcript without writing it to …\nWriting the scalar to the transcript without writing it to …\nConclude the interaction and return the output buffer …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGet a scalar field element from an encoded challenge.\nInitialize a transcript given an input buffer.\nInitialize a transcript given an output buffer.\nInitialize a transcript given an input buffer.\nInitialize a transcript given an output buffer.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nGet an encoded challenge from a given input challenge.\nRead a curve point from the prover.\nRead a curve scalar from the prover.\nSqueeze an encoded verifier challenge from the transcript.\nSqueeze a typed challenge (in the scalar field) from the …\nWrite a curve point to the proof and the transcript.\nWrite a scalar to the proof and the transcript.") \ No newline at end of file diff --git a/src/halo2_backend/plonk/circuit.rs.html b/src/halo2_backend/plonk/circuit.rs.html index 609f94546f..c31ca3af9e 100644 --- a/src/halo2_backend/plonk/circuit.rs.html +++ b/src/halo2_backend/plonk/circuit.rs.html @@ -382,6 +382,50 @@ 366 367 368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412
use group::ff::Field;
 use halo2_middleware::circuit::{Any, ChallengeMid, ColumnMid, Gate};
 use halo2_middleware::expression::{Expression, Variable};
@@ -750,4 +794,48 @@
     // (1 - (l_last + l_blind)) (z(\omega X) (s(X) + \gamma) - z(X) (a(X) + \gamma))
     std::cmp::max(2 + shuffle_degree, 2 + input_degree)
 }
+
+#[cfg(test)]
+mod tests {
+    use super::ExpressionBack;
+    use halo2curves::bn256::Fr;
+
+    #[test]
+    fn expressionback_iter_sum() {
+        let exprs: Vec<ExpressionBack<Fr>> = vec![
+            ExpressionBack::Constant(1.into()),
+            ExpressionBack::Constant(2.into()),
+            ExpressionBack::Constant(3.into()),
+        ];
+        let happened: ExpressionBack<Fr> = exprs.into_iter().sum();
+        let expected: ExpressionBack<Fr> = ExpressionBack::Sum(
+            Box::new(ExpressionBack::Sum(
+                Box::new(ExpressionBack::Constant(1.into())),
+                Box::new(ExpressionBack::Constant(2.into())),
+            )),
+            Box::new(ExpressionBack::Constant(3.into())),
+        );
+
+        assert_eq!(happened, expected);
+    }
+
+    #[test]
+    fn expressionback_iter_product() {
+        let exprs: Vec<ExpressionBack<Fr>> = vec![
+            ExpressionBack::Constant(1.into()),
+            ExpressionBack::Constant(2.into()),
+            ExpressionBack::Constant(3.into()),
+        ];
+        let happened: ExpressionBack<Fr> = exprs.into_iter().product();
+        let expected: ExpressionBack<Fr> = ExpressionBack::Product(
+            Box::new(ExpressionBack::Product(
+                Box::new(ExpressionBack::Constant(1.into())),
+                Box::new(ExpressionBack::Constant(2.into())),
+            )),
+            Box::new(ExpressionBack::Constant(3.into())),
+        );
+
+        assert_eq!(happened, expected);
+    }
+}
 

\ No newline at end of file diff --git a/src/halo2_frontend/dev/cost.rs.html b/src/halo2_frontend/dev/cost.rs.html index 3bf4e90b48..be0a3b3dc8 100644 --- a/src/halo2_frontend/dev/cost.rs.html +++ b/src/halo2_frontend/dev/cost.rs.html @@ -574,6 +574,12 @@ 558 559 560 +561 +562 +563 +564 +565 +566
//! Developer tools for investigating the cost of a circuit.
 
 use std::{
@@ -1131,7 +1137,13 @@
                 Ok(())
             }
         }
-        CircuitCost::<Eq, MyCircuit>::measure(K, &MyCircuit).proof_size(1);
+        let cost = CircuitCost::<Eq, MyCircuit>::measure(K, &MyCircuit);
+
+        let marginal_proof_size = cost.marginal_proof_size();
+        assert_eq!(usize::from(marginal_proof_size), 0);
+
+        let proof_size = cost.proof_size(1);
+        assert_eq!(usize::from(proof_size), 608);
     }
 }
 

\ No newline at end of file diff --git a/src/halo2_frontend/dev/failure.rs.html b/src/halo2_frontend/dev/failure.rs.html index b758d0b56c..9f3409d87f 100644 --- a/src/halo2_frontend/dev/failure.rs.html +++ b/src/halo2_frontend/dev/failure.rs.html @@ -892,6 +892,448 @@ 876 877 878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 +1101 +1102 +1103 +1104 +1105 +1106 +1107 +1108 +1109 +1110 +1111 +1112 +1113 +1114 +1115 +1116 +1117 +1118 +1119 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1128 +1129 +1130 +1131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1140 +1141 +1142 +1143 +1144 +1145 +1146 +1147 +1148 +1149 +1150 +1151 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1160 +1161 +1162 +1163 +1164 +1165 +1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176 +1177 +1178 +1179 +1180 +1181 +1182 +1183 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1192 +1193 +1194 +1195 +1196 +1197 +1198 +1199 +1200 +1201 +1202 +1203 +1204 +1205 +1206 +1207 +1208 +1209 +1210 +1211 +1212 +1213 +1214 +1215 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1224 +1225 +1226 +1227 +1228 +1229 +1230 +1231 +1232 +1233 +1234 +1235 +1236 +1237 +1238 +1239 +1240 +1241 +1242 +1243 +1244 +1245 +1246 +1247 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1256 +1257 +1258 +1259 +1260 +1261 +1262 +1263 +1264 +1265 +1266 +1267 +1268 +1269 +1270 +1271 +1272 +1273 +1274 +1275 +1276 +1277 +1278 +1279 +1280 +1281 +1282 +1283 +1284 +1285 +1286 +1287 +1288 +1289 +1290 +1291 +1292 +1293 +1294 +1295 +1296 +1297 +1298 +1299 +1300 +1301 +1302 +1303 +1304 +1305 +1306 +1307 +1308 +1309 +1310 +1311 +1312 +1313 +1314 +1315 +1316 +1317 +1318 +1319 +1320
use std::collections::{BTreeMap, HashSet};
 use std::fmt::{self, Debug};
 
@@ -1770,4 +2212,446 @@
         }
     }
 }
+
+#[cfg(test)]
+mod tests {
+    use halo2_middleware::poly::Rotation;
+    use halo2curves::pasta::Fp;
+
+    use crate::{
+        circuit::{Layouter, SimpleFloorPlanner, Value},
+        plonk::{Advice, Circuit, Error, Fixed, Selector},
+    };
+
+    use super::*;
+
+    #[test]
+    fn test_failure_constraint_not_satisfied() {
+        const K: u32 = 4;
+
+        #[derive(Clone)]
+        struct FaultyCircuitConfig {
+            a: Column<Advice>,
+            b: Column<Advice>,
+            c: Column<Advice>,
+            d: Column<Fixed>,
+            q: Selector,
+        }
+
+        struct FaultyCircuit {}
+
+        impl Circuit<Fp> for FaultyCircuit {
+            type Config = FaultyCircuitConfig;
+            type FloorPlanner = SimpleFloorPlanner;
+            #[cfg(feature = "circuit-params")]
+            type Params = ();
+
+            fn configure(meta: &mut ConstraintSystem<Fp>) -> Self::Config {
+                let a = meta.advice_column();
+                let b = meta.advice_column();
+                let c = meta.advice_column();
+                let d = meta.fixed_column();
+                let q = meta.selector();
+
+                meta.create_gate("Equality check", |cells| {
+                    let a = cells.query_advice(a, Rotation::cur());
+                    let b = cells.query_advice(b, Rotation::cur());
+                    let c = cells.query_advice(c, Rotation::cur());
+                    let d = cells.query_fixed(d, Rotation::cur());
+                    let q = cells.query_selector(q);
+
+                    // If q is enabled, a and b must be assigned to.
+                    vec![q * (a - b) * (c - d)]
+                });
+
+                FaultyCircuitConfig { a, b, c, d, q }
+            }
+
+            fn without_witnesses(&self) -> Self {
+                Self {}
+            }
+
+            fn synthesize(
+                &self,
+                config: Self::Config,
+                mut layouter: impl Layouter<Fp>,
+            ) -> Result<(), Error> {
+                layouter.assign_region(
+                    || "Correct synthesis",
+                    |mut region| {
+                        // Enable the equality gate.
+                        config.q.enable(&mut region, 0)?;
+
+                        // Assign a = 1.
+                        region.assign_advice(|| "a", config.a, 0, || Value::known(Fp::one()))?;
+
+                        // Assign b = 1.
+                        region.assign_advice(|| "b", config.b, 0, || Value::known(Fp::one()))?;
+
+                        // Assign c = 5.
+                        region.assign_advice(
+                            || "c",
+                            config.c,
+                            0,
+                            || Value::known(Fp::from(5u64)),
+                        )?;
+                        // Assign d = 7.
+                        region.assign_fixed(
+                            || "d",
+                            config.d,
+                            0,
+                            || Value::known(Fp::from(7u64)),
+                        )?;
+                        Ok(())
+                    },
+                )?;
+                layouter.assign_region(
+                    || "Wrong synthesis",
+                    |mut region| {
+                        // Enable the equality gate.
+                        config.q.enable(&mut region, 0)?;
+
+                        // Assign a = 1.
+                        region.assign_advice(|| "a", config.a, 0, || Value::known(Fp::one()))?;
+
+                        // Assign b = 0.
+                        region.assign_advice(|| "b", config.b, 0, || Value::known(Fp::zero()))?;
+
+                        // Name Column a
+                        region.name_column(|| "This is Advice!", config.a);
+                        // Name Column b
+                        region.name_column(|| "This is Advice too!", config.b);
+
+                        // Assign c = 5.
+                        region.assign_advice(
+                            || "c",
+                            config.c,
+                            0,
+                            || Value::known(Fp::from(5u64)),
+                        )?;
+                        // Assign d = 7.
+                        region.assign_fixed(
+                            || "d",
+                            config.d,
+                            0,
+                            || Value::known(Fp::from(7u64)),
+                        )?;
+
+                        // Name Column c
+                        region.name_column(|| "Another one!", config.c);
+                        // Name Column d
+                        region.name_column(|| "This is a Fixed!", config.d);
+
+                        // Note that none of the terms cancel eachother. Therefore we will have a constraint that is non satisfied for
+                        // the `Equalty check` gate.
+                        Ok(())
+                    },
+                )
+            }
+        }
+
+        let prover = MockProver::run(K, &FaultyCircuit {}, vec![]).unwrap();
+        let errs = prover.verify().unwrap_err();
+
+        assert_eq!(errs.len(), 1);
+        // debug printing
+        assert_eq!(
+            format!("{:?}", errs[0]),
+            r#####"ConstraintCaseDebug {
+    constraint: Constraint {
+        gate: Gate {
+            index: 0,
+            name: "Equality check",
+        },
+        index: 0,
+        name: "",
+    },
+    location: InRegion {
+        region: Region 1 ('Wrong synthesis'),
+        offset: 0,
+    },
+    cell_values: [
+        (
+            DebugVirtualCell {
+                name: "",
+                column: DebugColumn {
+                    column_type: Advice,
+                    index: 0,
+                    annotation: "This is Advice!",
+                },
+                rotation: 0,
+            },
+            "1",
+        ),
+        (
+            DebugVirtualCell {
+                name: "",
+                column: DebugColumn {
+                    column_type: Advice,
+                    index: 1,
+                    annotation: "This is Advice too!",
+                },
+                rotation: 0,
+            },
+            "0",
+        ),
+        (
+            DebugVirtualCell {
+                name: "",
+                column: DebugColumn {
+                    column_type: Advice,
+                    index: 2,
+                    annotation: "Another one!",
+                },
+                rotation: 0,
+            },
+            "0x5",
+        ),
+        (
+            DebugVirtualCell {
+                name: "",
+                column: DebugColumn {
+                    column_type: Fixed,
+                    index: 0,
+                    annotation: "This is a Fixed!",
+                },
+                rotation: 0,
+            },
+            "0x7",
+        ),
+    ],
+}"#####
+        );
+        // display printing
+        assert_eq!(
+            format!("{}", errs[0]),
+            r#####"Constraint 0 in gate 0 ('Equality check') is not satisfied in Region 1 ('Wrong synthesis') at offset 0
+- Column('Advice', 0 - This is Advice!)@0 = 1
+- Column('Advice', 1 - This is Advice too!)@0 = 0
+- Column('Advice', 2 - Another one!)@0 = 0x5
+- Column('Fixed', 0 - This is a Fixed!)@0 = 0x7
+"#####
+        );
+    }
+
+    #[test]
+    fn test_failure_cell_not_assigned() {
+        const K: u32 = 4;
+
+        #[derive(Clone)]
+        struct FaultyCircuitConfig {
+            a: Column<Advice>,
+            b: Column<Advice>,
+            c: Column<Advice>,
+            d: Column<Fixed>,
+            q: Selector,
+        }
+
+        struct FaultyCircuit {}
+
+        impl Circuit<Fp> for FaultyCircuit {
+            type Config = FaultyCircuitConfig;
+            type FloorPlanner = SimpleFloorPlanner;
+            #[cfg(feature = "circuit-params")]
+            type Params = ();
+
+            fn configure(meta: &mut ConstraintSystem<Fp>) -> Self::Config {
+                let a = meta.advice_column();
+                let b = meta.advice_column();
+                let c = meta.advice_column();
+                let d = meta.fixed_column();
+                let q = meta.selector();
+
+                meta.create_gate("Equality check", |cells| {
+                    let a = cells.query_advice(a, Rotation::cur());
+                    let b = cells.query_advice(b, Rotation::cur());
+                    let c = cells.query_advice(c, Rotation::cur());
+                    let d = cells.query_fixed(d, Rotation::cur());
+                    let q = cells.query_selector(q);
+
+                    // If q is enabled, a and b must be assigned to.
+                    vec![q * (a - b) * (c - d)]
+                });
+
+                FaultyCircuitConfig { a, b, c, d, q }
+            }
+
+            fn without_witnesses(&self) -> Self {
+                Self {}
+            }
+
+            fn synthesize(
+                &self,
+                config: Self::Config,
+                mut layouter: impl Layouter<Fp>,
+            ) -> Result<(), Error> {
+                layouter.assign_region(
+                    || "Correct synthesis",
+                    |mut region| {
+                        // Enable the equality gate.
+                        config.q.enable(&mut region, 0)?;
+
+                        // Assign a = 1.
+                        region.assign_advice(|| "a", config.a, 0, || Value::known(Fp::one()))?;
+
+                        // Assign b = 1.
+                        region.assign_advice(|| "b", config.b, 0, || Value::known(Fp::one()))?;
+
+                        // Assign c = 5.
+                        region.assign_advice(
+                            || "c",
+                            config.c,
+                            0,
+                            || Value::known(Fp::from(5u64)),
+                        )?;
+                        // Assign d = 7.
+                        region.assign_fixed(
+                            || "d",
+                            config.d,
+                            0,
+                            || Value::known(Fp::from(7u64)),
+                        )?;
+                        Ok(())
+                    },
+                )?;
+                layouter.assign_region(
+                    || "Wrong synthesis",
+                    |mut region| {
+                        // Enable the equality gate.
+                        config.q.enable(&mut region, 0)?;
+
+                        // Assign a = 1.
+                        region.assign_advice(|| "a", config.a, 0, || Value::known(Fp::one()))?;
+
+                        // Name Column a
+                        region.name_column(|| "This is Advice!", config.a);
+                        // Name Column b
+                        region.name_column(|| "This is Advice too!", config.b);
+
+                        // Assign c = 5.
+                        region.assign_advice(
+                            || "c",
+                            config.c,
+                            0,
+                            || Value::known(Fp::from(5u64)),
+                        )?;
+                        // Assign d = 7.
+                        region.assign_fixed(
+                            || "d",
+                            config.d,
+                            0,
+                            || Value::known(Fp::from(7u64)),
+                        )?;
+
+                        // Name Column c
+                        region.name_column(|| "Another one!", config.c);
+                        // Name Column d
+                        region.name_column(|| "This is a Fixed!", config.d);
+
+                        // Note that none of the terms cancel eachother. Therefore we will have a constraint that is non satisfied for
+                        // the `Equalty check` gate.
+                        Ok(())
+                    },
+                )
+            }
+        }
+
+        let prover = MockProver::run(K, &FaultyCircuit {}, vec![]).unwrap();
+        let errs = prover.verify().unwrap_err();
+
+        assert_eq!(errs.len(), 2);
+        assert_eq!(
+            format!("{}", errs[0]),
+            r#####"Region 1 ('Wrong synthesis') uses Gate 0 ('Equality check') at offset 1, which requires cell in column Column { index: 1, column_type: Advice } at offset 0 with annotation Some("This is Advice too!") to be assigned."#####
+        );
+    }
+
+    #[test]
+    fn test_failure_instance_cell_not_assigned() {
+        const K: u32 = 4;
+
+        #[derive(Clone)]
+        struct FaultyCircuitConfig {
+            a: Column<Advice>,
+            b: Column<Advice>,
+            c: Column<Advice>,
+            d: Column<Instance>,
+            q: Selector,
+        }
+
+        struct FaultyCircuit {}
+
+        impl Circuit<Fp> for FaultyCircuit {
+            type Config = FaultyCircuitConfig;
+            type FloorPlanner = SimpleFloorPlanner;
+            #[cfg(feature = "circuit-params")]
+            type Params = ();
+
+            fn configure(meta: &mut ConstraintSystem<Fp>) -> Self::Config {
+                let a = meta.advice_column();
+                let b = meta.advice_column();
+                let c = meta.advice_column();
+                let d = meta.instance_column();
+                let q = meta.selector();
+
+                meta.enable_equality(c);
+                meta.enable_equality(d);
+
+                meta.create_gate("Addition check", |cells| {
+                    let a = cells.query_advice(a, Rotation::cur());
+                    let b = cells.query_advice(b, Rotation::cur());
+                    let c = cells.query_advice(c, Rotation::cur());
+                    let q = cells.query_selector(q);
+
+                    vec![q * (a + b - c)]
+                });
+
+                FaultyCircuitConfig { a, b, c, d, q }
+            }
+
+            fn without_witnesses(&self) -> Self {
+                Self {}
+            }
+
+            fn synthesize(
+                &self,
+                config: Self::Config,
+                mut layouter: impl Layouter<Fp>,
+            ) -> Result<(), Error> {
+                layouter.assign_region(
+                    || "Instance value not assigned",
+                    |mut region| {
+                        // Enable the equality gate.
+                        config.q.enable(&mut region, 0)?;
+
+                        // Assign a = 1.
+                        region.assign_advice(|| "a", config.a, 0, || Value::known(Fp::one()))?;
+
+                        // Assign b = 1.
+                        region.assign_advice(|| "b", config.b, 0, || Value::known(Fp::one()))?;
+
+                        // Assign & constraint c = 2.
+                        region.assign_advice_from_instance(|| "c", config.d, 0, config.c, 0)?;
+
+                        Ok(())
+                    },
+                )?;
+                Ok(())
+            }
+        }
+
+        let prover = MockProver::run(K, &FaultyCircuit {}, vec![vec![]]).unwrap();
+        let errs = prover.verify().unwrap_err();
+
+        assert_eq!(errs.len(), 1);
+        assert_eq!(
+            format!("{}", errs[0]),
+            r#####"Constraint 0 in gate 0 ('Addition check') is not satisfied in Region 0 ('Instance value not assigned') at offset 0
+- Column('Advice', 0 - )@0 = 1
+- Column('Advice', 1 - )@0 = 1
+- Column('Advice', 2 - )@0 = 0
+"#####
+        );
+    }
+}
 
\ No newline at end of file diff --git a/src/halo2_frontend/dev/gates.rs.html b/src/halo2_frontend/dev/gates.rs.html index 59e0eead1a..7725f109c9 100644 --- a/src/halo2_frontend/dev/gates.rs.html +++ b/src/halo2_frontend/dev/gates.rs.html @@ -324,6 +324,86 @@ 308 309 310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390
use std::{
     collections::BTreeSet,
     fmt::{self, Write},
@@ -634,4 +714,84 @@
         writeln!(f, "Total multiplications: {}", self.total_multiplications)
     }
 }
+
+#[cfg(test)]
+mod tests {
+    use halo2_middleware::poly::Rotation;
+    use halo2curves::pasta::Fp;
+
+    use crate::{
+        circuit::{Layouter, SimpleFloorPlanner},
+        plonk::{Advice, Column, Error, Fixed, Selector},
+    };
+
+    use super::*;
+
+    #[test]
+    fn test_circuit_gates() {
+        #[allow(unused)]
+        #[derive(Clone)]
+        struct TestCircuitConfig {
+            a: Column<Advice>,
+            b: Column<Advice>,
+            c: Column<Advice>,
+            d: Column<Fixed>,
+            q: Selector,
+        }
+
+        struct TestCircuit {}
+
+        impl Circuit<Fp> for TestCircuit {
+            type Config = TestCircuitConfig;
+            type FloorPlanner = SimpleFloorPlanner;
+            #[cfg(feature = "circuit-params")]
+            type Params = ();
+
+            fn configure(meta: &mut ConstraintSystem<Fp>) -> Self::Config {
+                let a = meta.advice_column();
+                let b = meta.advice_column();
+                let c = meta.advice_column();
+                let d = meta.fixed_column();
+                let q = meta.selector();
+
+                meta.create_gate("Equality check", |cells| {
+                    let a = cells.query_advice(a, Rotation::cur());
+                    let b = cells.query_advice(b, Rotation::cur());
+                    let c = cells.query_advice(c, Rotation::cur());
+                    let d = cells.query_fixed(d, Rotation::cur());
+                    let q = cells.query_selector(q);
+
+                    // If q is enabled, a and b must be assigned to.
+                    vec![q * (a - b) * (c - d)]
+                });
+
+                TestCircuitConfig { a, b, c, d, q }
+            }
+
+            fn without_witnesses(&self) -> Self {
+                Self {}
+            }
+
+            fn synthesize(&self, _: Self::Config, _: impl Layouter<Fp>) -> Result<(), Error> {
+                unreachable!();
+            }
+        }
+
+        let gates = CircuitGates::collect::<Fp, TestCircuit>(
+            #[cfg(feature = "circuit-params")]
+            (),
+        );
+        assert_eq!(
+            format!("{}", gates),
+            r#####"Equality check:
+- (S0 * (A0@0 - A1@0)) * (A2@0 - F0@0)
+Total gates: 1
+Total custom constraint polynomials: 1
+Total negations: 2
+Total additions: 2
+Total multiplications: 2
+"#####
+        )
+    }
+}
 
\ No newline at end of file diff --git a/src/halo2_frontend/dev/tfp.rs.html b/src/halo2_frontend/dev/tfp.rs.html index 417997bbc7..f4e26de19b 100644 --- a/src/halo2_frontend/dev/tfp.rs.html +++ b/src/halo2_frontend/dev/tfp.rs.html @@ -525,6 +525,131 @@ 509 510 511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636
use std::{fmt, marker::PhantomData};
 
 use halo2_middleware::circuit::Any;
@@ -1036,4 +1161,129 @@
         // We exit namespace spans in TracingLayouter.
     }
 }
+
+#[cfg(test)]
+mod tests {
+    use halo2_middleware::poly::Rotation;
+    use halo2curves::pasta::Fp;
+
+    use crate::{circuit::SimpleFloorPlanner, dev::MockProver};
+
+    use super::*;
+
+    #[test]
+    fn test_tracing_floor_planner() {
+        use tracing_capture::{CaptureLayer, SharedStorage};
+        use tracing_subscriber::layer::SubscriberExt;
+
+        const K: u32 = 4;
+
+        #[derive(Clone)]
+        struct TestCircuitConfig {
+            a: Column<Advice>,
+            b: Column<Advice>,
+            c: Column<Advice>,
+            d: Column<Fixed>,
+            q: Selector,
+        }
+
+        struct TestCircuit {}
+
+        impl Circuit<Fp> for TestCircuit {
+            type Config = TestCircuitConfig;
+            type FloorPlanner = TracingFloorPlanner<SimpleFloorPlanner>;
+            #[cfg(feature = "circuit-params")]
+            type Params = ();
+
+            fn configure(meta: &mut ConstraintSystem<Fp>) -> Self::Config {
+                let a = meta.advice_column();
+                let b = meta.advice_column();
+                let c = meta.advice_column();
+                let d = meta.fixed_column();
+                let q = meta.selector();
+
+                meta.create_gate("Equality check", |cells| {
+                    let a = cells.query_advice(a, Rotation::cur());
+                    let b = cells.query_advice(b, Rotation::cur());
+                    let c = cells.query_advice(c, Rotation::cur());
+                    let d = cells.query_fixed(d, Rotation::cur());
+                    let q = cells.query_selector(q);
+
+                    // If q is enabled, a and b must be assigned to.
+                    vec![q * (a - b) * (c - d)]
+                });
+
+                TestCircuitConfig { a, b, c, d, q }
+            }
+
+            fn without_witnesses(&self) -> Self {
+                Self {}
+            }
+
+            fn synthesize(
+                &self,
+                config: Self::Config,
+                mut layouter: impl Layouter<Fp>,
+            ) -> Result<(), Error> {
+                layouter.assign_region(
+                    || "Correct synthesis",
+                    |mut region| {
+                        // Enable the equality gate.
+                        config.q.enable(&mut region, 0)?;
+
+                        // Assign a = 1.
+                        region.assign_advice(|| "a", config.a, 0, || Value::known(Fp::one()))?;
+
+                        // Assign b = 1.
+                        region.assign_advice(|| "b", config.b, 0, || Value::known(Fp::one()))?;
+
+                        // Assign c = 5.
+                        region.assign_advice(
+                            || "c",
+                            config.c,
+                            0,
+                            || Value::known(Fp::from(5u64)),
+                        )?;
+                        // Assign d = 7.
+                        region.assign_fixed(
+                            || "d",
+                            config.d,
+                            0,
+                            || Value::known(Fp::from(7u64)),
+                        )?;
+                        Ok(())
+                    },
+                )?;
+
+                Ok(())
+            }
+        }
+
+        // At the start of your test, enable tracing.
+        //
+        // Following setup of `SharedStorage` and `tracing_subscriber::fmt` is just for this test.
+        // For real tests, you don't need to do this.
+        // Check the example in the doc of [`TracingFloorPlanner`] for details.
+        let subscriber = tracing_subscriber::fmt()
+            .with_max_level(tracing::Level::DEBUG)
+            .with_ansi(false)
+            .without_time()
+            .finish();
+        let storage = SharedStorage::default();
+        let subscriber = subscriber.with(CaptureLayer::new(&storage));
+        tracing::subscriber::set_global_default(subscriber).unwrap();
+
+        // run the prover to check if every step is traced.
+        let prover = MockProver::run(K, &TestCircuit {}, vec![]).unwrap();
+        assert_eq!(prover.verify(), Ok(()));
+
+        // check if all tracing logs are captured
+        let storage = storage.lock();
+        assert_eq!(storage.all_spans().len(), 12);
+        for span in storage.all_spans() {
+            let metadata = span.metadata();
+            assert_eq!(*metadata.level(), tracing::Level::DEBUG);
+        }
+    }
+}
 
\ No newline at end of file diff --git a/src/halo2_middleware/expression.rs.html b/src/halo2_middleware/expression.rs.html index 75d1a01372..ecbbefae1f 100644 --- a/src/halo2_middleware/expression.rs.html +++ b/src/halo2_middleware/expression.rs.html @@ -188,6 +188,51 @@ 172 173 174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219
use core::cmp::max;
 use core::ops::{Add, Mul, Neg, Sub};
 use ff::Field;
@@ -255,7 +300,7 @@
         }
     }
 
-    pub fn write_identifier<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
+    fn write_identifier<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
         match self {
             Expression::Constant(scalar) => write!(writer, "{scalar:?}"),
             Expression::Var(v) => v.write_identifier(writer),
@@ -362,4 +407,49 @@
             .unwrap_or(Expression::Constant(F::ONE))
     }
 }
+
+#[cfg(test)]
+mod tests {
+
+    use crate::circuit::ExpressionMid;
+    use halo2curves::bn256::Fr;
+
+    #[test]
+    fn iter_sum() {
+        let exprs: Vec<ExpressionMid<Fr>> = vec![
+            ExpressionMid::Constant(1.into()),
+            ExpressionMid::Constant(2.into()),
+            ExpressionMid::Constant(3.into()),
+        ];
+        let happened: ExpressionMid<Fr> = exprs.into_iter().sum();
+        let expected: ExpressionMid<Fr> = ExpressionMid::Sum(
+            Box::new(ExpressionMid::Sum(
+                Box::new(ExpressionMid::Constant(1.into())),
+                Box::new(ExpressionMid::Constant(2.into())),
+            )),
+            Box::new(ExpressionMid::Constant(3.into())),
+        );
+
+        assert_eq!(happened, expected);
+    }
+
+    #[test]
+    fn iter_product() {
+        let exprs: Vec<ExpressionMid<Fr>> = vec![
+            ExpressionMid::Constant(1.into()),
+            ExpressionMid::Constant(2.into()),
+            ExpressionMid::Constant(3.into()),
+        ];
+        let happened: ExpressionMid<Fr> = exprs.into_iter().product();
+        let expected: ExpressionMid<Fr> = ExpressionMid::Product(
+            Box::new(ExpressionMid::Product(
+                Box::new(ExpressionMid::Constant(1.into())),
+                Box::new(ExpressionMid::Constant(2.into())),
+            )),
+            Box::new(ExpressionMid::Constant(3.into())),
+        );
+
+        assert_eq!(happened, expected);
+    }
+}
 
\ No newline at end of file diff --git a/trait.impl/core/convert/trait.From.js b/trait.impl/core/convert/trait.From.js index 20fc61c79e..0d34c89896 100644 --- a/trait.impl/core/convert/trait.From.js +++ b/trait.impl/core/convert/trait.From.js @@ -1,6 +1,6 @@ (function() {var implementors = { "halo2_backend":[["impl From<Error> for Error"]], -"halo2_frontend":[["impl From<(usize, &str)> for Region"],["impl From<(usize, &str, HashMap<ColumnMid, String>)> for Region"],["impl From<(usize, String)> for Region"],["impl From<(usize, String, HashMap<ColumnMid, String>)> for Region"],["impl From<(ColumnMid, i32)> for VirtualCell"],["impl From<usize> for RegionIndex"],["impl From<usize> for RegionStart"],["impl From<ColumnMid> for Column<Any>"],["impl From<VirtualCell> for VirtualCell"],["impl From<Challenge> for ChallengeMid"],["impl From<Column<Advice>> for Column<Any>"],["impl From<Column<Fixed>> for Column<Any>"],["impl From<Column<Instance>> for Column<Any>"],["impl From<Column<Any>> for RegionColumn"],["impl From<Column<Any>> for ColumnMid"],["impl From<Selector> for RegionColumn"],["impl From<Advice> for Any"],["impl From<Fixed> for Any"],["impl From<Instance> for Any"],["impl From<ChallengeMid> for Challenge"],["impl<'r, F: Field> From<&'r mut dyn RegionLayouter<F>> for Region<'r, F>"],["impl<'r, F: Field> From<&'r mut dyn TableLayouter<F>> for Table<'r, F>"],["impl<Col: Into<Column<Any>>> From<(Col, Rotation)> for VirtualCell"],["impl<F> From<Expression<F>> for ExpressionMid<F>"],["impl<F: Field> From<&Assigned<F>> for Assigned<F>"],["impl<F: Field> From<Expression<F>> for Constraint<F>"],["impl<F: Field> From<Expression<F>> for Vec<Constraint<F>>"],["impl<F: Field> From<&F> for Assigned<F>"],["impl<F: Field> From<(F, F)> for Assigned<F>"],["impl<F: Field> From<Value<F>> for Value<Assigned<F>>"],["impl<F: Field> From<ConstraintSystem<F>> for ConstraintSystemMid<F>"],["impl<F: Field> From<F> for Assigned<F>"],["impl<F: Field, S: AsRef<str>> From<(S, Expression<F>)> for Constraint<F>"],["impl<G: PrimeGroup> From<MarginalProofSize<G>> for usize"],["impl<G: PrimeGroup> From<ProofSize<G>> for usize"],["impl<S: AsRef<str>> From<(usize, S)> for Gate"],["impl<S: AsRef<str>> From<(Gate, usize, S)> for Constraint"],["impl<S: AsRef<str>> From<(S, ColumnMid, i32)> for VirtualCell"]], +"halo2_frontend":[["impl From<(usize, &str)> for Region"],["impl From<(usize, &str, HashMap<ColumnMid, String>)> for Region"],["impl From<(usize, String)> for Region"],["impl From<(usize, String, HashMap<ColumnMid, String>)> for Region"],["impl From<(ColumnMid, i32)> for VirtualCell"],["impl From<usize> for RegionIndex"],["impl From<usize> for RegionStart"],["impl From<ColumnMid> for Column<Any>"],["impl From<VirtualCell> for VirtualCell"],["impl From<Challenge> for ChallengeMid"],["impl From<Column<Any>> for RegionColumn"],["impl From<Column<Any>> for ColumnMid"],["impl From<Column<Advice>> for Column<Any>"],["impl From<Column<Fixed>> for Column<Any>"],["impl From<Column<Instance>> for Column<Any>"],["impl From<Selector> for RegionColumn"],["impl From<Advice> for Any"],["impl From<Fixed> for Any"],["impl From<Instance> for Any"],["impl From<ChallengeMid> for Challenge"],["impl<'r, F: Field> From<&'r mut dyn RegionLayouter<F>> for Region<'r, F>"],["impl<'r, F: Field> From<&'r mut dyn TableLayouter<F>> for Table<'r, F>"],["impl<Col: Into<Column<Any>>> From<(Col, Rotation)> for VirtualCell"],["impl<F> From<Expression<F>> for ExpressionMid<F>"],["impl<F: Field> From<&Assigned<F>> for Assigned<F>"],["impl<F: Field> From<Expression<F>> for Constraint<F>"],["impl<F: Field> From<Expression<F>> for Vec<Constraint<F>>"],["impl<F: Field> From<&F> for Assigned<F>"],["impl<F: Field> From<(F, F)> for Assigned<F>"],["impl<F: Field> From<Value<F>> for Value<Assigned<F>>"],["impl<F: Field> From<ConstraintSystem<F>> for ConstraintSystemMid<F>"],["impl<F: Field> From<F> for Assigned<F>"],["impl<F: Field, S: AsRef<str>> From<(S, Expression<F>)> for Constraint<F>"],["impl<G: PrimeGroup> From<MarginalProofSize<G>> for usize"],["impl<G: PrimeGroup> From<ProofSize<G>> for usize"],["impl<S: AsRef<str>> From<(usize, S)> for Gate"],["impl<S: AsRef<str>> From<(Gate, usize, S)> for Constraint"],["impl<S: AsRef<str>> From<(S, ColumnMid, i32)> for VirtualCell"]], "halo2_proofs":[["impl From<Error> for Error"],["impl From<Error> for Error"]], "p3_frontend":[["impl<F: Field> From<SymbolicVariable<F>> for SymbolicExpression<F>"],["impl<F: Field> From<F> for SymbolicExpression<F>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/convert/trait.TryFrom.js b/trait.impl/core/convert/trait.TryFrom.js index cd7d4a084c..f5e3229f23 100644 --- a/trait.impl/core/convert/trait.TryFrom.js +++ b/trait.impl/core/convert/trait.TryFrom.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"halo2_frontend":[["impl TryFrom<Column<Any>> for Column<Advice>"],["impl TryFrom<Column<Any>> for Column<Fixed>"],["impl TryFrom<Column<Any>> for Column<Instance>"]] +"halo2_frontend":[["impl TryFrom<Column<Any>> for Column<Advice>"],["impl TryFrom<Column<Any>> for Column<Fixed>"],["impl TryFrom<Column<Any>> for Column<Instance>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.Debug.js b/trait.impl/core/fmt/trait.Debug.js index 3ce9f463f7..546e6b068d 100644 --- a/trait.impl/core/fmt/trait.Debug.js +++ b/trait.impl/core/fmt/trait.Debug.js @@ -1,5 +1,5 @@ (function() {var implementors = { -"halo2_backend":[["impl Debug for SerdeFormat"],["impl Debug for Error"],["impl Debug for Error"],["impl Debug for Coeff"],["impl Debug for ExtendedLagrangeCoeff"],["impl Debug for LagrangeCoeff"],["impl<'a, 'params, Scheme: Debug + CommitmentScheme, P: Debug + Prover<'params, Scheme>, E: Debug + EncodedChallenge<Scheme::Curve>, R: Debug + RngCore, T: Debug + TranscriptWrite<Scheme::Curve, E>, M: Debug + MsmAccel<Scheme::Curve>> Debug for Prover<'a, 'params, Scheme, P, E, R, T, M>
where\n Scheme::Curve: Debug,\n Scheme::ParamsProver: Debug,\n Scheme::Scalar: Debug,
"],["impl<'a, 'params, Scheme: Debug + CommitmentScheme, P: Debug + Prover<'params, Scheme>, E: Debug + EncodedChallenge<Scheme::Curve>, R: Debug + RngCore, T: Debug + TranscriptWrite<Scheme::Curve, E>, M: Debug + MsmAccel<Scheme::Curve>> Debug for ProverSingle<'a, 'params, Scheme, P, E, R, T, M>"],["impl<'a, C: Debug + CurveAffine> Debug for PinnedVerificationKey<'a, C>
where\n C::Scalar: Debug,
"],["impl<'a, E: Debug + Engine> Debug for ProverSHPLONK<'a, E>"],["impl<'a, F: Debug + Field> Debug for PinnedEvaluationDomain<'a, F>"],["impl<'params, C: Debug + CurveAffine> Debug for MSMIPA<'params, C>
where\n C::Scalar: Debug,\n C::Base: Debug,
"],["impl<'params, C: Debug + CurveAffine> Debug for ProverIPA<'params, C>"],["impl<'params, C: Debug + CurveAffine> Debug for AccumulatorStrategy<'params, C>"],["impl<'params, C: Debug + CurveAffine> Debug for GuardIPA<'params, C>
where\n C::Scalar: Debug,
"],["impl<'params, C: Debug + CurveAffine> Debug for SingleStrategy<'params, C>"],["impl<'params, E: Debug + Engine> Debug for ProverGWC<'params, E>"],["impl<C: Debug + CurveAffine> Debug for ProvingKey<C>
where\n C::Scalar: Debug,
"],["impl<C: Debug + CurveAffine> Debug for VerifyingKey<C>
where\n C::Scalar: Debug,
"],["impl<C: Debug + CurveAffine> Debug for BatchVerifier<C>"],["impl<C: Debug + CurveAffine> Debug for IPACommitmentScheme<C>"],["impl<C: Debug + CurveAffine> Debug for ParamsIPA<C>"],["impl<C: Debug + CurveAffine> Debug for VerifierIPA<C>"],["impl<C: Debug + CurveAffine> Debug for Accumulator<C>
where\n C::Scalar: Debug,
"],["impl<C: Debug + CurveAffine> Debug for Challenge255<C>"],["impl<C: Debug + CurveAffine, T: Debug> Debug for ChallengeScalar<C, T>
where\n C::Scalar: Debug,
"],["impl<E: Debug + Engine> Debug for KZGCommitmentScheme<E>"],["impl<E: Debug + Engine> Debug for ParamsKZG<E>
where\n E::G1Affine: Debug,\n E::G2Affine: Debug,
"],["impl<E: Debug + Engine> Debug for ParamsVerifierKZG<E>
where\n E::G2Affine: Debug,
"],["impl<E: Debug + Engine> Debug for DualMSM<E>
where\n E::G1Affine: CurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>,\n E::G1: CurveExt<AffineExt = E::G1Affine>,
"],["impl<E: Debug + Engine> Debug for MSMKZG<E>
where\n E::G1Affine: CurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>,\n E::G1: CurveExt<AffineExt = E::G1Affine> + Debug,\n E::Fr: Debug,
"],["impl<E: Debug + Engine> Debug for VerifierGWC<E>"],["impl<E: Debug + Engine> Debug for VerifierSHPLONK<E>"],["impl<E: Debug + Engine> Debug for AccumulatorStrategy<E>
where\n E::G1Affine: CurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>,\n E::G1: CurveExt<AffineExt = E::G1Affine>,
"],["impl<E: Debug + Engine> Debug for SingleStrategy<E>
where\n E::G1Affine: CurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>,\n E::G1: CurveExt<AffineExt = E::G1Affine>,
"],["impl<E: Debug + MultiMillerLoop> Debug for GuardKZG<E>
where\n E::G1Affine: CurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>,\n E::G1: CurveExt<AffineExt = E::G1Affine>,
"],["impl<F: Debug + Field> Debug for EvaluationDomain<F>"],["impl<F: Debug> Debug for Blind<F>"],["impl<F: Debug, B: Debug> Debug for Polynomial<F, B>"],["impl<R: Debug + Read, C: Debug + CurveAffine, E: Debug + EncodedChallenge<C>> Debug for Blake2bRead<R, C, E>"],["impl<R: Debug + Read, C: Debug + CurveAffine, E: Debug + EncodedChallenge<C>> Debug for Keccak256Read<R, C, E>"],["impl<W: Debug + Write, C: Debug + CurveAffine, E: Debug + EncodedChallenge<C>> Debug for Blake2bWrite<W, C, E>"],["impl<W: Debug + Write, C: Debug + CurveAffine, E: Debug + EncodedChallenge<C>> Debug for Keccak256Write<W, C, E>"]], +"halo2_backend":[["impl Debug for SerdeFormat"],["impl Debug for Error"],["impl Debug for Error"],["impl Debug for Coeff"],["impl Debug for ExtendedLagrangeCoeff"],["impl Debug for LagrangeCoeff"],["impl<'a, 'params, Scheme: Debug + CommitmentScheme, P: Debug + Prover<'params, Scheme>, E: Debug + EncodedChallenge<Scheme::Curve>, R: Debug + RngCore, T: Debug + TranscriptWrite<Scheme::Curve, E>, M: Debug + MsmAccel<Scheme::Curve>> Debug for Prover<'a, 'params, Scheme, P, E, R, T, M>
where\n Scheme::Curve: Debug,\n Scheme::ParamsProver: Debug,\n Scheme::Scalar: Debug,
"],["impl<'a, 'params, Scheme: Debug + CommitmentScheme, P: Debug + Prover<'params, Scheme>, E: Debug + EncodedChallenge<Scheme::Curve>, R: Debug + RngCore, T: Debug + TranscriptWrite<Scheme::Curve, E>, M: Debug + MsmAccel<Scheme::Curve>> Debug for ProverSingle<'a, 'params, Scheme, P, E, R, T, M>"],["impl<'a, C: Debug + CurveAffine> Debug for PinnedVerificationKey<'a, C>
where\n C::Scalar: Debug,
"],["impl<'a, E: Debug + Engine> Debug for ProverSHPLONK<'a, E>"],["impl<'a, F: Debug + Field> Debug for PinnedEvaluationDomain<'a, F>"],["impl<'params, C: Debug + CurveAffine> Debug for MSMIPA<'params, C>
where\n C::Scalar: Debug,\n C::Base: Debug,
"],["impl<'params, C: Debug + CurveAffine> Debug for ProverIPA<'params, C>"],["impl<'params, C: Debug + CurveAffine> Debug for AccumulatorStrategy<'params, C>"],["impl<'params, C: Debug + CurveAffine> Debug for GuardIPA<'params, C>
where\n C::Scalar: Debug,
"],["impl<'params, C: Debug + CurveAffine> Debug for SingleStrategy<'params, C>"],["impl<'params, E: Debug + Engine> Debug for ProverGWC<'params, E>"],["impl<C: Debug + CurveAffine> Debug for ProvingKey<C>
where\n C::Scalar: Debug,
"],["impl<C: Debug + CurveAffine> Debug for VerifyingKey<C>
where\n C::Scalar: Debug,
"],["impl<C: Debug + CurveAffine> Debug for BatchVerifier<C>"],["impl<C: Debug + CurveAffine> Debug for IPACommitmentScheme<C>"],["impl<C: Debug + CurveAffine> Debug for ParamsIPA<C>"],["impl<C: Debug + CurveAffine> Debug for VerifierIPA<C>"],["impl<C: Debug + CurveAffine> Debug for Accumulator<C>
where\n C::Scalar: Debug,
"],["impl<C: Debug + CurveAffine> Debug for Challenge255<C>"],["impl<C: Debug + CurveAffine, T: Debug> Debug for ChallengeScalar<C, T>
where\n C::Scalar: Debug,
"],["impl<E: Debug + Engine> Debug for KZGCommitmentScheme<E>"],["impl<E: Debug + Engine> Debug for ParamsKZG<E>
where\n E::G1Affine: Debug,\n E::G2Affine: Debug,
"],["impl<E: Debug + Engine> Debug for ParamsVerifierKZG<E>
where\n E::G2Affine: Debug,
"],["impl<E: Debug + Engine> Debug for DualMSM<E>
where\n E::G1Affine: CurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>,\n E::G1: CurveExt<AffineExt = E::G1Affine>,
"],["impl<E: Debug + Engine> Debug for MSMKZG<E>
where\n E::G1Affine: CurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>,\n E::G1: CurveExt<AffineExt = E::G1Affine> + Debug,\n E::Fr: Debug,
"],["impl<E: Debug + Engine> Debug for VerifierGWC<E>"],["impl<E: Debug + Engine> Debug for VerifierSHPLONK<E>"],["impl<E: Debug + Engine> Debug for AccumulatorStrategy<E>
where\n E::G1Affine: CurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>,\n E::G1: CurveExt<AffineExt = E::G1Affine>,
"],["impl<E: Debug + Engine> Debug for SingleStrategy<E>
where\n E::G1Affine: CurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>,\n E::G1: CurveExt<AffineExt = E::G1Affine>,
"],["impl<E: Debug + MultiMillerLoop> Debug for GuardKZG<E>
where\n E::G1Affine: CurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>,\n E::G1: CurveExt<AffineExt = E::G1Affine>,
"],["impl<F: Debug + Field> Debug for EvaluationDomain<F>"],["impl<F: Debug> Debug for Blind<F>"],["impl<F: Debug, B: Debug> Debug for Polynomial<F, B>"],["impl<R: Debug + Read, C: Debug + CurveAffine, E: Debug + EncodedChallenge<C>> Debug for Blake2bRead<R, C, E>"],["impl<R: Debug + Read, C: Debug + CurveAffine, E: Debug + EncodedChallenge<C>> Debug for Keccak256Read<R, C, E>"],["impl<W: Debug + Write, C: Debug + CurveAffine, E: Debug + EncodedChallenge<C>> Debug for Blake2bWrite<W, C, E>"],["impl<W: Debug + Write, C: Debug + CurveAffine, E: Debug + EncodedChallenge<C>> Debug for Keccak256Write<W, C, E>"]], "halo2_frontend":[["impl Debug for RegionColumn"],["impl Debug for CommitmentScheme"],["impl Debug for FailureLocation"],["impl Debug for VerifyFailure"],["impl Debug for AssignmentError"],["impl Debug for Error"],["impl Debug for TableError"],["impl Debug for SimpleFloorPlanner"],["impl Debug for MeasurementPass"],["impl Debug for V1"],["impl Debug for RegionShape"],["impl Debug for Cell"],["impl Debug for RegionIndex"],["impl Debug for RegionStart"],["impl Debug for CostOptions"],["impl Debug for Lookup"],["impl Debug for ModelCircuit"],["impl Debug for Permutation"],["impl Debug for Poly"],["impl Debug for Shuffle"],["impl Debug for Constraint"],["impl Debug for Gate"],["impl Debug for Region"],["impl Debug for VirtualCell"],["impl Debug for CircuitGates"],["impl Debug for CircuitLayout"],["impl Debug for VirtualCell"],["impl Debug for Phase"],["impl Debug for AdviceQuery"],["impl Debug for Challenge"],["impl Debug for FirstPhase"],["impl Debug for FixedQuery"],["impl Debug for InstanceQuery"],["impl Debug for SecondPhase"],["impl Debug for Selector"],["impl Debug for TableColumn"],["impl Debug for ThirdPhase"],["impl Debug for Advice"],["impl Debug for Fixed"],["impl Debug for Instance"],["impl Debug for Argument"],["impl<'a, F: Debug + Field> Debug for VirtualCells<'a, F>"],["impl<'a, F: Debug + Field, ConcreteCircuit: Debug + Circuit<F>> Debug for WitnessCalculator<'a, F, ConcreteCircuit>
where\n ConcreteCircuit::Config: Debug,
"],["impl<'a, F: Debug + Field, L: Debug + Layouter<F> + 'a> Debug for NamespacedLayouter<'a, F, L>"],["impl<'a, F: Field, CS: Assignment<F> + 'a> Debug for SingleChipLayouter<'a, F, CS>"],["impl<'p, 'a, F: Debug + Field, CS: Debug + Assignment<F> + 'a> Debug for AssignmentPass<'p, 'a, F, CS>"],["impl<'p, 'a, F: Debug + Field, CS: Debug + Assignment<F> + 'a> Debug for V1Pass<'p, 'a, F, CS>"],["impl<'r, 'a, F: Field, CS: Assignment<F> + 'a> Debug for SimpleTableLayouter<'r, 'a, F, CS>"],["impl<'r, F: Debug + Field> Debug for Region<'r, F>"],["impl<'r, F: Debug + Field> Debug for Table<'r, F>"],["impl<C: Debug + ColumnType> Debug for Column<C>"],["impl<F: Debug + Field> Debug for CellValue<F>"],["impl<F: Debug + Field> Debug for InstanceValue<F>"],["impl<F: Debug + Field> Debug for MockProver<F>"],["impl<F: Debug + Field> Debug for Constraint<F>"],["impl<F: Debug + Field> Debug for ConstraintSystem<F>"],["impl<F: Debug + Field> Debug for Gate<F>"],["impl<F: Debug + Field, C: Debug + Into<Constraint<F>>, Iter: Debug + IntoIterator<Item = C>> Debug for Constraints<F, C, Iter>"],["impl<F: Debug> Debug for Assigned<F>"],["impl<F: Debug> Debug for Expression<F>"],["impl<F: Field> Debug for Argument<F>"],["impl<F: Field> Debug for Argument<F>"],["impl<G: Debug + PrimeGroup> Debug for MarginalProofSize<G>"],["impl<G: Debug + PrimeGroup> Debug for ProofSize<G>"],["impl<G: Debug + PrimeGroup, ConcreteCircuit: Debug + Circuit<G::Scalar>> Debug for CircuitCost<G, ConcreteCircuit>"],["impl<P: Debug + FloorPlanner> Debug for TracingFloorPlanner<P>"],["impl<V: Debug> Debug for Value<V>"],["impl<V: Debug, F: Debug + Field> Debug for AssignedCell<V, F>"]], "halo2_middleware":[["impl Debug for Any"],["impl Debug for VarMid"],["impl Debug for Cell"],["impl Debug for ChallengeMid"],["impl Debug for ColumnMid"],["impl Debug for QueryMid"],["impl Debug for ArgumentMid"],["impl Debug for AssemblyMid"],["impl Debug for Rotation"],["impl<C: Debug + CurveAffine, MsmEngine: Debug + MsmAccel<C>> Debug for PlonkEngine<C, MsmEngine>"],["impl<F: Debug + Field> Debug for CompiledCircuit<F>"],["impl<F: Debug + Field> Debug for ConstraintSystemMid<F>"],["impl<F: Debug + Field> Debug for Preprocessing<F>"],["impl<F: Debug + Field, V: Debug + Variable> Debug for Gate<F, V>"],["impl<F: Debug + Field, V: Debug + Variable> Debug for Argument<F, V>"],["impl<F: Debug + Field, V: Debug + Variable> Debug for Argument<F, V>"],["impl<F: Debug, V: Debug + Variable> Debug for Expression<F, V>"]], "halo2_proofs":[["impl Debug for Error"]], diff --git a/type.impl/halo2_backend/poly/ipa/commitment/struct.ParamsIPA.js b/type.impl/halo2_backend/poly/ipa/commitment/struct.ParamsIPA.js index eaf0240804..f1e5d2bfa2 100644 --- a/type.impl/halo2_backend/poly/ipa/commitment/struct.ParamsIPA.js +++ b/type.impl/halo2_backend/poly/ipa/commitment/struct.ParamsIPA.js @@ -1,3 +1,3 @@ (function() {var type_impls = { -"halo2_backend":[["
source§

impl<C: Clone + CurveAffine> Clone for ParamsIPA<C>

source§

fn clone(&self) -> ParamsIPA<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
","Clone","halo2_backend::poly::ipa::commitment::ParamsVerifierIPA"],["
source§

impl<C: Debug + CurveAffine> Debug for ParamsIPA<C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
","Debug","halo2_backend::poly::ipa::commitment::ParamsVerifierIPA"],["
source§

impl<C: CurveAffine> Params<C> for ParamsIPA<C>

source§

fn commit_lagrange(\n &self,\n engine: &impl MsmAccel<C>,\n poly: &Polynomial<C::Scalar, LagrangeCoeff>,\n r: Blind<C::Scalar>\n) -> C::Curve

This commits to a polynomial using its evaluations over the $2^k$ size\nevaluation domain. The commitment will be blinded by the blinding factor\nr.

\n
source§

fn write<W: Write>(&self, writer: &mut W) -> Result<()>

Writes params to a buffer.

\n
source§

fn read<R: Read>(reader: &mut R) -> Result<Self>

Reads params from a buffer.

\n
source§

fn k(&self) -> u32

Logarithmic size of the circuit
source§

fn n(&self) -> u64

Size of the circuit
source§

fn downsize(&mut self, k: u32)

Downsize Params with smaller k.
","Params","halo2_backend::poly::ipa::commitment::ParamsVerifierIPA"],["
source§

impl<C: CurveAffine> ParamsProver<C> for ParamsIPA<C>

source§

fn new(k: u32) -> Self

Initializes parameters for the curve, given a random oracle to draw\npoints from.

\n
source§

fn commit(\n &self,\n engine: &impl MsmAccel<C>,\n poly: &Polynomial<C::Scalar, Coeff>,\n r: Blind<C::Scalar>\n) -> C::Curve

This computes a commitment to a polynomial described by the provided\nslice of coefficients. The commitment will be blinded by the blinding\nfactor r.

\n
","ParamsProver","halo2_backend::poly::ipa::commitment::ParamsVerifierIPA"],["
source§

impl<'params, C: CurveAffine> ParamsVerifier<'params, C> for ParamsIPA<C>

§

type MSM = MSMIPA<'params, C>

Multiscalar multiplication engine
source§

const COMMIT_INSTANCE: bool = true

Can commit to instance or not.
source§

fn empty_msm(&self) -> MSMIPA<'_, C>

Generates an empty multiscalar multiplication struct using the\nappropriate params.
","ParamsVerifier<'params, C>","halo2_backend::poly::ipa::commitment::ParamsVerifierIPA"]] +"halo2_backend":[["
source§

impl<C: Clone + CurveAffine> Clone for ParamsIPA<C>

source§

fn clone(&self) -> ParamsIPA<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
","Clone","halo2_backend::poly::ipa::commitment::ParamsVerifierIPA"],["
source§

impl<C: Debug + CurveAffine> Debug for ParamsIPA<C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
","Debug","halo2_backend::poly::ipa::commitment::ParamsVerifierIPA"],["
source§

impl<C: CurveAffine> Params<C> for ParamsIPA<C>

source§

fn commit_lagrange(\n &self,\n engine: &impl MsmAccel<C>,\n poly: &Polynomial<C::Scalar, LagrangeCoeff>,\n r: Blind<C::Scalar>\n) -> C::Curve

This commits to a polynomial using its evaluations over the $2^k$ size\nevaluation domain. The commitment will be blinded by the blinding factor\nr.

\n
source§

fn write<W: Write>(&self, writer: &mut W) -> Result<()>

Writes params to a buffer.

\n
source§

fn read<R: Read>(reader: &mut R) -> Result<Self>

Reads params from a buffer.

\n
source§

fn k(&self) -> u32

Logarithmic size of the circuit
source§

fn n(&self) -> u64

Size of the circuit
source§

fn downsize(&mut self, k: u32)

Downsize Params with smaller k.
","Params","halo2_backend::poly::ipa::commitment::ParamsVerifierIPA"],["
source§

impl<C: CurveAffine> ParamsProver<C> for ParamsIPA<C>

source§

fn new(k: u32) -> Self

Initializes parameters for the curve, given a random oracle to draw\npoints from.

\n
source§

fn commit(\n &self,\n engine: &impl MsmAccel<C>,\n poly: &Polynomial<C::Scalar, Coeff>,\n r: Blind<C::Scalar>\n) -> C::Curve

This computes a commitment to a polynomial described by the provided\nslice of coefficients. The commitment will be blinded by the blinding\nfactor r.

\n
","ParamsProver","halo2_backend::poly::ipa::commitment::ParamsVerifierIPA"],["
source§

impl<'params, C: CurveAffine> ParamsVerifier<'params, C> for ParamsIPA<C>

§

type MSM = MSMIPA<'params, C>

Multiscalar multiplication engine
source§

const COMMIT_INSTANCE: bool = true

Can commit to instance or not.
source§

fn empty_msm(&self) -> MSMIPA<'_, C>

Generates an empty multiscalar multiplication struct using the\nappropriate params.
","ParamsVerifier<'params, C>","halo2_backend::poly::ipa::commitment::ParamsVerifierIPA"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/type.impl/halo2_middleware/expression/enum.Expression.js b/type.impl/halo2_middleware/expression/enum.Expression.js index 7ad5fac5ee..7e9320cb35 100644 --- a/type.impl/halo2_middleware/expression/enum.Expression.js +++ b/type.impl/halo2_middleware/expression/enum.Expression.js @@ -1,3 +1,3 @@ (function() {var type_impls = { -"halo2_middleware":[["
source§

impl<F: Field, V: Variable> Add for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Expression<F, V>) -> Expression<F, V>

Performs the + operation. Read more
","Add","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Clone, V: Clone + Variable> Clone for Expression<F, V>

source§

fn clone(&self) -> Expression<F, V>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
","Clone","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Debug, V: Debug + Variable> Debug for Expression<F, V>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
","Debug","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Expression<F, V>

source

pub fn evaluate<T>(\n &self,\n constant: &impl Fn(F) -> T,\n var: &impl Fn(V) -> T,\n negated: &impl Fn(T) -> T,\n sum: &impl Fn(T, T) -> T,\n product: &impl Fn(T, T) -> T\n) -> T

Evaluate the polynomial using the provided closures to perform the\noperations.

\n
source

pub fn write_identifier<W: Write>(&self, writer: &mut W) -> Result<()>

source

pub fn identifier(&self) -> String

Identifier for this expression. Expressions with identical identifiers\ndo the same calculation (but the expressions don’t need to be exactly equal\nin how they are composed e.g. 1 + 2 and 2 + 1 can have the same identifier).

\n
source

pub fn degree(&self) -> usize

Compute the degree of this polynomial

\n
source

pub fn complexity(&self) -> usize

Approximate the computational complexity of this expression.

\n
",0,"halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Mul<F> for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Expression<F, V>

Performs the * operation. Read more
","Mul","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Mul for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Expression<F, V>) -> Expression<F, V>

Performs the * operation. Read more
","Mul","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Neg for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
","Neg","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: PartialEq, V: PartialEq + Variable> PartialEq for Expression<F, V>

source§

fn eq(&self, other: &Expression<F, V>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Product for Expression<F, V>

source§

fn product<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by\nmultiplying the items.
","Product","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Sub for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Expression<F, V>) -> Expression<F, V>

Performs the - operation. Read more
","Sub","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Sum for Expression<F, V>

source§

fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by\n“summing up” the items.
","Sum","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Eq, V: Eq + Variable> Eq for Expression<F, V>

","Eq","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F, V: Variable> StructuralPartialEq for Expression<F, V>

","StructuralPartialEq","halo2_middleware::circuit::ExpressionMid"]] +"halo2_middleware":[["
source§

impl<F: Field, V: Variable> Add for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the + operator.
source§

fn add(self, rhs: Expression<F, V>) -> Expression<F, V>

Performs the + operation. Read more
","Add","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Clone, V: Clone + Variable> Clone for Expression<F, V>

source§

fn clone(&self) -> Expression<F, V>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
","Clone","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Debug, V: Debug + Variable> Debug for Expression<F, V>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
","Debug","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Expression<F, V>

source

pub fn evaluate<T>(\n &self,\n constant: &impl Fn(F) -> T,\n var: &impl Fn(V) -> T,\n negated: &impl Fn(T) -> T,\n sum: &impl Fn(T, T) -> T,\n product: &impl Fn(T, T) -> T\n) -> T

Evaluate the polynomial using the provided closures to perform the\noperations.

\n
source

pub fn identifier(&self) -> String

Identifier for this expression. Expressions with identical identifiers\ndo the same calculation (but the expressions don’t need to be exactly equal\nin how they are composed e.g. 1 + 2 and 2 + 1 can have the same identifier).

\n
source

pub fn degree(&self) -> usize

Compute the degree of this polynomial

\n
source

pub fn complexity(&self) -> usize

Approximate the computational complexity of this expression.

\n
",0,"halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Mul<F> for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: F) -> Expression<F, V>

Performs the * operation. Read more
","Mul","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Mul for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Expression<F, V>) -> Expression<F, V>

Performs the * operation. Read more
","Mul","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Neg for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
","Neg","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: PartialEq, V: PartialEq + Variable> PartialEq for Expression<F, V>

source§

fn eq(&self, other: &Expression<F, V>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Product for Expression<F, V>

source§

fn product<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by\nmultiplying the items.
","Product","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Sub for Expression<F, V>

§

type Output = Expression<F, V>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Expression<F, V>) -> Expression<F, V>

Performs the - operation. Read more
","Sub","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Field, V: Variable> Sum for Expression<F, V>

source§

fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by\n“summing up” the items.
","Sum","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F: Eq, V: Eq + Variable> Eq for Expression<F, V>

","Eq","halo2_middleware::circuit::ExpressionMid"],["
source§

impl<F, V: Variable> StructuralPartialEq for Expression<F, V>

","StructuralPartialEq","halo2_middleware::circuit::ExpressionMid"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file