From c2d92920dee76c9b3bb014010df73e571c6b7dcc Mon Sep 17 00:00:00 2001 From: CPerezz Date: Fri, 10 Nov 2023 07:02:12 +0000 Subject: [PATCH] deploy: 324c88608dd517a9d61c628f3e367f3b933ff725 --- halo2/all.html | 2 +- halo2/index.html | 2 +- halo2_gadgets/all.html | 2 +- .../constant.FIXED_BASE_WINDOW_SIZE.html | 2 +- .../ecc/chip/constants/constant.H.html | 2 +- .../chip/constants/constant.NUM_WINDOWS.html | 2 +- .../constants/constant.NUM_WINDOWS_SHORT.html | 2 +- .../constants/fn.compute_lagrange_coeffs.html | 2 +- .../ecc/chip/constants/fn.find_zs_and_us.html | 2 +- .../constants/fn.test_lagrange_coeffs.html | 2 +- .../ecc/chip/constants/fn.test_zs_and_us.html | 2 +- halo2_gadgets/ecc/chip/constants/index.html | 2 +- .../ecc/chip/enum.BaseFieldElem.html | 4 +- halo2_gadgets/ecc/chip/enum.FullScalar.html | 4 +- halo2_gadgets/ecc/chip/enum.ScalarVar.html | 8 +- halo2_gadgets/ecc/chip/enum.ShortScalar.html | 4 +- halo2_gadgets/ecc/chip/index.html | 2 +- halo2_gadgets/ecc/chip/struct.EccChip.html | 98 ++-- halo2_gadgets/ecc/chip/struct.EccConfig.html | 8 +- halo2_gadgets/ecc/chip/struct.EccPoint.html | 10 +- .../ecc/chip/struct.EccScalarFixed.html | 4 +- .../ecc/chip/struct.EccScalarFixedShort.html | 4 +- .../ecc/chip/struct.NonIdentityEccPoint.html | 10 +- halo2_gadgets/ecc/chip/trait.FixedPoint.html | 2 +- .../ecc/chip/trait.FixedScalarKind.html | 2 +- halo2_gadgets/ecc/index.html | 2 +- halo2_gadgets/ecc/struct.FixedPoint.html | 8 +- .../ecc/struct.FixedPointBaseField.html | 8 +- halo2_gadgets/ecc/struct.FixedPointShort.html | 8 +- .../ecc/struct.NonIdentityPoint.html | 26 +- halo2_gadgets/ecc/struct.Point.html | 18 +- halo2_gadgets/ecc/struct.ScalarFixed.html | 10 +- .../ecc/struct.ScalarFixedShort.html | 8 +- halo2_gadgets/ecc/struct.ScalarVar.html | 14 +- halo2_gadgets/ecc/struct.X.html | 4 +- .../trait.BaseFitsInScalarInstructions.html | 10 +- halo2_gadgets/ecc/trait.EccInstructions.html | 118 ++--- halo2_gadgets/ecc/trait.FixedPoints.html | 2 +- halo2_gadgets/index.html | 2 +- halo2_gadgets/poseidon/enum.PaddedWord.html | 8 +- halo2_gadgets/poseidon/index.html | 2 +- .../primitives/fn.generate_constants.html | 2 +- halo2_gadgets/poseidon/primitives/index.html | 2 +- .../poseidon/primitives/struct.Absorbing.html | 4 +- .../primitives/struct.ConstantLength.html | 4 +- .../poseidon/primitives/struct.Hash.html | 4 +- .../primitives/struct.P128Pow5T3.html | 4 +- .../poseidon/primitives/struct.Squeezing.html | 4 +- .../poseidon/primitives/trait.Domain.html | 2 +- .../poseidon/primitives/trait.Spec.html | 2 +- .../poseidon/primitives/trait.SpongeMode.html | 2 +- .../poseidon/primitives/type.Mds.html | 2 +- halo2_gadgets/poseidon/struct.Hash.html | 14 +- halo2_gadgets/poseidon/struct.Pow5Chip.html | 34 +- halo2_gadgets/poseidon/struct.Pow5Config.html | 4 +- halo2_gadgets/poseidon/struct.Sponge.html | 20 +- halo2_gadgets/poseidon/struct.StateWord.html | 6 +- halo2_gadgets/poseidon/struct.Word.html | 4 +- .../poseidon/trait.PoseidonInstructions.html | 16 +- .../trait.PoseidonSpongeInstructions.html | 18 +- halo2_gadgets/sha256/constant.BLOCK_SIZE.html | 2 +- halo2_gadgets/sha256/index.html | 2 +- halo2_gadgets/sha256/struct.BlockWord.html | 8 +- halo2_gadgets/sha256/struct.Sha256.html | 18 +- halo2_gadgets/sha256/struct.Sha256Digest.html | 4 +- halo2_gadgets/sha256/struct.Table16Chip.html | 38 +- .../sha256/struct.Table16Config.html | 4 +- .../sha256/trait.Sha256Instructions.html | 36 +- halo2_gadgets/sinsemilla/chip/index.html | 2 +- .../chip/struct.SinsemillaChip.html | 46 +- .../chip/struct.SinsemillaConfig.html | 4 +- halo2_gadgets/sinsemilla/index.html | 2 +- .../sinsemilla/merkle/chip/index.html | 2 +- .../merkle/chip/struct.MerkleChip.html | 48 +- .../merkle/chip/struct.MerkleConfig.html | 4 +- .../constant.MERKLE_CRH_PERSONALIZATION.html | 2 +- halo2_gadgets/sinsemilla/merkle/index.html | 2 +- .../sinsemilla/merkle/struct.MerklePath.html | 12 +- .../merkle/trait.MerkleInstructions.html | 12 +- .../sinsemilla/primitives/constant.C.html | 2 +- .../primitives/constant.INV_TWO_POW_K.html | 2 +- .../sinsemilla/primitives/constant.K.html | 2 +- .../constant.Q_PERSONALIZATION.html | 2 +- .../primitives/constant.SINSEMILLA_S.html | 2 +- .../constant.S_PERSONALIZATION.html | 2 +- .../sinsemilla/primitives/index.html | 2 +- .../primitives/struct.CommitDomain.html | 4 +- .../primitives/struct.HashDomain.html | 4 +- .../sinsemilla/struct.CommitDomain.html | 12 +- .../sinsemilla/struct.HashDomain.html | 12 +- halo2_gadgets/sinsemilla/struct.Message.html | 4 +- .../sinsemilla/struct.MessagePiece.html | 16 +- .../sinsemilla/trait.CommitDomains.html | 2 +- .../sinsemilla/trait.HashDomains.html | 2 +- .../trait.SinsemillaInstructions.html | 24 +- halo2_gadgets/utilities/cond_swap/index.html | 2 +- .../cond_swap/struct.CondSwapChip.html | 34 +- .../cond_swap/struct.CondSwapConfig.html | 4 +- .../cond_swap/trait.CondSwapInstructions.html | 18 +- .../decompose_running_sum/index.html | 2 +- .../struct.RunningSum.html | 438 +++++++++--------- .../struct.RunningSumConfig.html | 22 +- .../utilities/fn.bitrange_subset.html | 2 +- halo2_gadgets/utilities/fn.bool_check.html | 4 +- .../utilities/fn.decompose_word.html | 2 +- halo2_gadgets/utilities/fn.i2lebsp.html | 2 +- halo2_gadgets/utilities/fn.lebs2ip.html | 2 +- halo2_gadgets/utilities/fn.range_check.html | 6 +- halo2_gadgets/utilities/fn.ternary.html | 10 +- halo2_gadgets/utilities/index.html | 2 +- .../utilities/lookup_range_check/index.html | 2 +- .../struct.LookupRangeCheckConfig.html | 36 +- .../lookup_range_check/struct.RunningSum.html | 438 +++++++++--------- .../utilities/struct.RangeConstrained.html | 18 +- halo2_gadgets/utilities/trait.FieldValue.html | 8 +- .../trait.UtilitiesInstructions.html | 22 +- halo2_gadgets/utilities/trait.Var.html | 14 +- halo2_proofs/all.html | 2 +- halo2_proofs/arithmetic/fn.best_fft.html | 2 +- halo2_proofs/arithmetic/fn.best_multiexp.html | 2 +- .../arithmetic/fn.compute_inner_product.html | 2 +- .../arithmetic/fn.eval_polynomial.html | 2 +- halo2_proofs/arithmetic/fn.g_to_lagrange.html | 2 +- halo2_proofs/arithmetic/fn.kate_division.html | 2 +- .../arithmetic/fn.lagrange_interpolate.html | 2 +- halo2_proofs/arithmetic/fn.parallelize.html | 2 +- .../fn.recursive_butterfly_arithmetic.html | 2 +- .../arithmetic/fn.small_multiexp.html | 2 +- halo2_proofs/arithmetic/index.html | 2 +- .../arithmetic/trait.CurveAffine.html | 2 +- halo2_proofs/arithmetic/trait.CurveExt.html | 6 +- halo2_proofs/arithmetic/trait.FftGroup.html | 2 +- halo2_proofs/arithmetic/trait.Field.html | 12 +- halo2_proofs/circuit/floor_planner/index.html | 2 +- .../circuit/floor_planner/struct.V1.html | 2 +- .../circuit/floor_planner/struct.V1Pass.html | 2 +- halo2_proofs/circuit/index.html | 2 +- .../circuit/layouter/enum.RegionColumn.html | 2 +- halo2_proofs/circuit/layouter/index.html | 2 +- .../circuit/layouter/struct.RegionShape.html | 2 +- .../layouter/trait.RegionLayouter.html | 2 +- .../circuit/layouter/trait.SyncDeps.html | 2 +- .../circuit/layouter/trait.TableLayouter.html | 2 +- halo2_proofs/circuit/struct.AssignedCell.html | 2 +- halo2_proofs/circuit/struct.Cell.html | 2 +- .../circuit/struct.NamespacedLayouter.html | 2 +- halo2_proofs/circuit/struct.Region.html | 2 +- halo2_proofs/circuit/struct.RegionIndex.html | 2 +- halo2_proofs/circuit/struct.RegionStart.html | 2 +- .../circuit/struct.SimpleFloorPlanner.html | 2 +- .../circuit/struct.SimpleTableLayouter.html | 2 +- halo2_proofs/circuit/struct.Table.html | 2 +- halo2_proofs/circuit/struct.Value.html | 38 +- halo2_proofs/circuit/trait.Chip.html | 2 +- halo2_proofs/circuit/trait.Layouter.html | 2 +- halo2_proofs/circuit/trait.TableLayouter.html | 2 +- halo2_proofs/dev/cost/index.html | 2 +- halo2_proofs/dev/cost/struct.CircuitCost.html | 2 +- .../dev/cost/struct.MarginalProofSize.html | 2 +- halo2_proofs/dev/cost/struct.ProofSize.html | 2 +- halo2_proofs/dev/enum.CellValue.html | 2 +- halo2_proofs/dev/enum.FailureLocation.html | 4 +- halo2_proofs/dev/enum.VerifyFailure.html | 2 +- halo2_proofs/dev/fn.circuit_dot_graph.html | 2 +- halo2_proofs/dev/index.html | 2 +- halo2_proofs/dev/metadata/index.html | 2 +- halo2_proofs/dev/metadata/struct.Column.html | 4 +- .../dev/metadata/struct.Constraint.html | 4 +- halo2_proofs/dev/metadata/struct.Gate.html | 4 +- halo2_proofs/dev/metadata/struct.Region.html | 6 +- .../dev/metadata/struct.VirtualCell.html | 4 +- halo2_proofs/dev/struct.CircuitGates.html | 2 +- halo2_proofs/dev/struct.CircuitLayout.html | 2 +- halo2_proofs/dev/struct.MockProver.html | 2 +- .../dev/struct.TracingFloorPlanner.html | 2 +- halo2_proofs/enum.SerdeFormat.html | 2 +- halo2_proofs/index.html | 2 +- halo2_proofs/plonk/enum.Any.html | 4 +- halo2_proofs/plonk/enum.Assigned.html | 6 +- halo2_proofs/plonk/enum.Error.html | 2 +- halo2_proofs/plonk/enum.Expression.html | 6 +- halo2_proofs/plonk/enum.TableError.html | 2 +- halo2_proofs/plonk/fn.create_proof.html | 2 +- halo2_proofs/plonk/fn.keygen_pk.html | 2 +- halo2_proofs/plonk/fn.keygen_vk.html | 2 +- halo2_proofs/plonk/fn.keygen_vk_custom.html | 2 +- halo2_proofs/plonk/fn.verify_proof.html | 2 +- halo2_proofs/plonk/index.html | 2 +- halo2_proofs/plonk/permutation/index.html | 2 +- .../plonk/permutation/struct.Argument.html | 2 +- .../plonk/permutation/struct.Assembly.html | 2 +- .../permutation/struct.VerifyingKey.html | 2 +- halo2_proofs/plonk/struct.Advice.html | 2 +- halo2_proofs/plonk/struct.AdviceQuery.html | 2 +- halo2_proofs/plonk/struct.BatchVerifier.html | 2 +- halo2_proofs/plonk/struct.Challenge.html | 2 +- halo2_proofs/plonk/struct.Column.html | 6 +- halo2_proofs/plonk/struct.Constraint.html | 2 +- .../plonk/struct.ConstraintSystem.html | 90 ++-- halo2_proofs/plonk/struct.Constraints.html | 2 +- halo2_proofs/plonk/struct.FirstPhase.html | 2 +- halo2_proofs/plonk/struct.Fixed.html | 2 +- halo2_proofs/plonk/struct.FixedQuery.html | 2 +- halo2_proofs/plonk/struct.Gate.html | 2 +- halo2_proofs/plonk/struct.Instance.html | 2 +- halo2_proofs/plonk/struct.InstanceQuery.html | 2 +- .../plonk/struct.PinnedConstraintSystem.html | 4 +- .../plonk/struct.PinnedVerificationKey.html | 2 +- halo2_proofs/plonk/struct.ProvingKey.html | 2 +- halo2_proofs/plonk/struct.SecondPhase.html | 2 +- halo2_proofs/plonk/struct.Selector.html | 2 +- halo2_proofs/plonk/struct.TableColumn.html | 2 +- halo2_proofs/plonk/struct.ThirdPhase.html | 2 +- halo2_proofs/plonk/struct.VerifyingKey.html | 2 +- halo2_proofs/plonk/struct.VirtualCell.html | 2 +- halo2_proofs/plonk/struct.VirtualCells.html | 18 +- halo2_proofs/plonk/trait.Assignment.html | 2 +- halo2_proofs/plonk/trait.Circuit.html | 2 +- halo2_proofs/plonk/trait.ColumnType.html | 2 +- halo2_proofs/plonk/trait.FloorPlanner.html | 2 +- halo2_proofs/plonk/trait.Phase.html | 2 +- halo2_proofs/poly/commitment/index.html | 2 +- .../poly/commitment/struct.Blind.html | 4 +- .../commitment/trait.CommitmentScheme.html | 2 +- halo2_proofs/poly/commitment/trait.MSM.html | 2 +- .../poly/commitment/trait.Params.html | 2 +- .../poly/commitment/trait.ParamsProver.html | 2 +- .../poly/commitment/trait.ParamsVerifier.html | 2 +- .../poly/commitment/trait.Prover.html | 2 +- .../poly/commitment/trait.Verifier.html | 2 +- halo2_proofs/poly/enum.Error.html | 2 +- halo2_proofs/poly/index.html | 2 +- .../poly/ipa/commitment/fn.create_proof.html | 2 +- .../poly/ipa/commitment/fn.verify_proof.html | 2 +- halo2_proofs/poly/ipa/commitment/index.html | 2 +- .../struct.IPACommitmentScheme.html | 12 +- .../poly/ipa/commitment/struct.ParamsIPA.html | 2 +- .../commitment/type.ParamsVerifierIPA.html | 2 +- halo2_proofs/poly/ipa/index.html | 2 +- halo2_proofs/poly/ipa/msm/index.html | 2 +- halo2_proofs/poly/ipa/msm/struct.MSMIPA.html | 2 +- halo2_proofs/poly/ipa/multiopen/index.html | 2 +- .../poly/ipa/multiopen/struct.ProverIPA.html | 2 +- .../ipa/multiopen/struct.VerifierIPA.html | 12 +- halo2_proofs/poly/ipa/strategy/index.html | 2 +- .../poly/ipa/strategy/struct.Accumulator.html | 2 +- .../strategy/struct.AccumulatorStrategy.html | 2 +- .../poly/ipa/strategy/struct.GuardIPA.html | 2 +- .../ipa/strategy/struct.SingleStrategy.html | 2 +- halo2_proofs/poly/kzg/commitment/index.html | 2 +- .../struct.KZGCommitmentScheme.html | 28 +- .../poly/kzg/commitment/struct.ParamsKZG.html | 2 +- .../commitment/type.ParamsVerifierKZG.html | 2 +- halo2_proofs/poly/kzg/index.html | 2 +- halo2_proofs/poly/kzg/msm/index.html | 2 +- halo2_proofs/poly/kzg/msm/struct.DualMSM.html | 2 +- halo2_proofs/poly/kzg/msm/struct.MSMKZG.html | 2 +- halo2_proofs/poly/kzg/multiopen/index.html | 2 +- .../poly/kzg/multiopen/struct.ProverGWC.html | 2 +- .../kzg/multiopen/struct.ProverSHPLONK.html | 2 +- .../kzg/multiopen/struct.VerifierGWC.html | 2 +- .../kzg/multiopen/struct.VerifierSHPLONK.html | 2 +- halo2_proofs/poly/kzg/strategy/index.html | 2 +- .../strategy/struct.AccumulatorStrategy.html | 2 +- .../poly/kzg/strategy/struct.GuardKZG.html | 2 +- .../kzg/strategy/struct.SingleStrategy.html | 2 +- halo2_proofs/poly/struct.Coeff.html | 2 +- .../poly/struct.EvaluationDomain.html | 2 +- .../poly/struct.ExtendedLagrangeCoeff.html | 2 +- halo2_proofs/poly/struct.LagrangeCoeff.html | 2 +- .../poly/struct.PinnedEvaluationDomain.html | 2 +- halo2_proofs/poly/struct.Polynomial.html | 434 ++++++++--------- halo2_proofs/poly/struct.ProverQuery.html | 2 +- halo2_proofs/poly/struct.Rotation.html | 2 +- halo2_proofs/poly/struct.VerifierQuery.html | 2 +- halo2_proofs/poly/trait.Basis.html | 2 +- halo2_proofs/poly/trait.Guard.html | 2 +- .../poly/trait.VerificationStrategy.html | 2 +- halo2_proofs/transcript/index.html | 2 +- .../transcript/struct.Blake2bRead.html | 2 +- .../transcript/struct.Blake2bWrite.html | 2 +- .../transcript/struct.Challenge255.html | 58 +-- .../transcript/struct.ChallengeScalar.html | 2 +- .../transcript/struct.Keccak256Read.html | 2 +- .../transcript/struct.Keccak256Write.html | 2 +- .../transcript/trait.EncodedChallenge.html | 2 +- halo2_proofs/transcript/trait.Transcript.html | 2 +- .../transcript/trait.TranscriptRead.html | 2 +- .../trait.TranscriptReadBuffer.html | 2 +- .../transcript/trait.TranscriptWrite.html | 2 +- .../trait.TranscriptWriterBuffer.html | 2 +- help.html | 4 +- search-index.js | 4 +- settings.html | 4 +- src/halo2/lib.rs.html | 2 +- src/halo2_gadgets/ecc.rs.html | 2 +- src/halo2_gadgets/ecc/chip.rs.html | 2 +- src/halo2_gadgets/ecc/chip/add.rs.html | 2 +- .../ecc/chip/add_incomplete.rs.html | 2 +- src/halo2_gadgets/ecc/chip/constants.rs.html | 2 +- src/halo2_gadgets/ecc/chip/mul.rs.html | 2 +- .../ecc/chip/mul/complete.rs.html | 2 +- .../ecc/chip/mul/incomplete.rs.html | 2 +- .../ecc/chip/mul/overflow.rs.html | 2 +- src/halo2_gadgets/ecc/chip/mul_fixed.rs.html | 2 +- .../chip/mul_fixed/base_field_elem.rs.html | 2 +- .../ecc/chip/mul_fixed/full_width.rs.html | 2 +- .../ecc/chip/mul_fixed/short.rs.html | 2 +- .../ecc/chip/witness_point.rs.html | 2 +- src/halo2_gadgets/lib.rs.html | 2 +- src/halo2_gadgets/poseidon.rs.html | 2 +- src/halo2_gadgets/poseidon/pow5.rs.html | 2 +- src/halo2_gadgets/poseidon/primitives.rs.html | 2 +- .../poseidon/primitives/fp.rs.html | 2 +- .../poseidon/primitives/fq.rs.html | 2 +- .../poseidon/primitives/grain.rs.html | 2 +- .../poseidon/primitives/mds.rs.html | 2 +- .../poseidon/primitives/p128pow5t3.rs.html | 2 +- src/halo2_gadgets/sha256.rs.html | 2 +- src/halo2_gadgets/sha256/table16.rs.html | 2 +- .../sha256/table16/compression.rs.html | 2 +- .../compression/compression_gates.rs.html | 2 +- .../compression/compression_util.rs.html | 2 +- .../compression/subregion_digest.rs.html | 2 +- .../compression/subregion_initial.rs.html | 2 +- .../compression/subregion_main.rs.html | 2 +- .../sha256/table16/gates.rs.html | 2 +- .../sha256/table16/message_schedule.rs.html | 2 +- .../message_schedule/schedule_gates.rs.html | 2 +- .../message_schedule/schedule_util.rs.html | 2 +- .../message_schedule/subregion1.rs.html | 2 +- .../message_schedule/subregion2.rs.html | 2 +- .../message_schedule/subregion3.rs.html | 2 +- .../sha256/table16/spread_table.rs.html | 2 +- src/halo2_gadgets/sha256/table16/util.rs.html | 2 +- src/halo2_gadgets/sinsemilla.rs.html | 2 +- src/halo2_gadgets/sinsemilla/chip.rs.html | 2 +- .../sinsemilla/chip/generator_table.rs.html | 2 +- .../sinsemilla/chip/hash_to_point.rs.html | 2 +- src/halo2_gadgets/sinsemilla/merkle.rs.html | 2 +- .../sinsemilla/merkle/chip.rs.html | 2 +- src/halo2_gadgets/sinsemilla/message.rs.html | 2 +- .../sinsemilla/primitives.rs.html | 2 +- .../sinsemilla/primitives/addition.rs.html | 2 +- .../primitives/sinsemilla_s.rs.html | 2 +- src/halo2_gadgets/utilities.rs.html | 2 +- src/halo2_gadgets/utilities/cond_swap.rs.html | 2 +- .../utilities/decompose_running_sum.rs.html | 2 +- .../utilities/lookup_range_check.rs.html | 2 +- src/halo2_proofs/arithmetic.rs.html | 2 +- src/halo2_proofs/circuit.rs.html | 2 +- .../circuit/floor_planner.rs.html | 2 +- .../circuit/floor_planner/single_pass.rs.html | 2 +- .../circuit/floor_planner/v1.rs.html | 2 +- .../circuit/floor_planner/v1/strategy.rs.html | 2 +- src/halo2_proofs/circuit/layouter.rs.html | 2 +- .../circuit/table_layouter.rs.html | 2 +- src/halo2_proofs/circuit/value.rs.html | 2 +- src/halo2_proofs/dev.rs.html | 2 +- src/halo2_proofs/dev/cost.rs.html | 2 +- src/halo2_proofs/dev/failure.rs.html | 2 +- src/halo2_proofs/dev/failure/emitter.rs.html | 2 +- src/halo2_proofs/dev/gates.rs.html | 2 +- src/halo2_proofs/dev/graph.rs.html | 2 +- src/halo2_proofs/dev/graph/layout.rs.html | 2 +- src/halo2_proofs/dev/metadata.rs.html | 2 +- src/halo2_proofs/dev/tfp.rs.html | 2 +- src/halo2_proofs/dev/util.rs.html | 2 +- src/halo2_proofs/helpers.rs.html | 2 +- src/halo2_proofs/lib.rs.html | 2 +- src/halo2_proofs/multicore.rs.html | 2 +- src/halo2_proofs/plonk.rs.html | 2 +- src/halo2_proofs/plonk/assigned.rs.html | 2 +- src/halo2_proofs/plonk/circuit.rs.html | 40 +- .../plonk/circuit/compress_selectors.rs.html | 2 +- src/halo2_proofs/plonk/error.rs.html | 2 +- src/halo2_proofs/plonk/evaluation.rs.html | 2 +- src/halo2_proofs/plonk/keygen.rs.html | 2 +- src/halo2_proofs/plonk/lookup.rs.html | 2 +- src/halo2_proofs/plonk/lookup/prover.rs.html | 2 +- .../plonk/lookup/verifier.rs.html | 2 +- src/halo2_proofs/plonk/permutation.rs.html | 2 +- .../plonk/permutation/keygen.rs.html | 2 +- .../plonk/permutation/prover.rs.html | 2 +- .../plonk/permutation/verifier.rs.html | 2 +- src/halo2_proofs/plonk/prover.rs.html | 2 +- src/halo2_proofs/plonk/shuffle.rs.html | 2 +- src/halo2_proofs/plonk/shuffle/prover.rs.html | 2 +- .../plonk/shuffle/verifier.rs.html | 2 +- src/halo2_proofs/plonk/vanishing.rs.html | 2 +- .../plonk/vanishing/prover.rs.html | 2 +- .../plonk/vanishing/verifier.rs.html | 2 +- src/halo2_proofs/plonk/verifier.rs.html | 2 +- src/halo2_proofs/plonk/verifier/batch.rs.html | 2 +- src/halo2_proofs/poly.rs.html | 2 +- src/halo2_proofs/poly/commitment.rs.html | 2 +- src/halo2_proofs/poly/domain.rs.html | 2 +- src/halo2_proofs/poly/ipa/commitment.rs.html | 2 +- .../poly/ipa/commitment/prover.rs.html | 2 +- .../poly/ipa/commitment/verifier.rs.html | 2 +- src/halo2_proofs/poly/ipa/mod.rs.html | 2 +- src/halo2_proofs/poly/ipa/msm.rs.html | 2 +- src/halo2_proofs/poly/ipa/multiopen.rs.html | 2 +- .../poly/ipa/multiopen/prover.rs.html | 2 +- .../poly/ipa/multiopen/verifier.rs.html | 2 +- src/halo2_proofs/poly/ipa/strategy.rs.html | 2 +- src/halo2_proofs/poly/kzg/commitment.rs.html | 2 +- src/halo2_proofs/poly/kzg/mod.rs.html | 2 +- src/halo2_proofs/poly/kzg/msm.rs.html | 2 +- src/halo2_proofs/poly/kzg/multiopen.rs.html | 2 +- .../poly/kzg/multiopen/gwc.rs.html | 2 +- .../poly/kzg/multiopen/gwc/prover.rs.html | 2 +- .../poly/kzg/multiopen/gwc/verifier.rs.html | 2 +- .../poly/kzg/multiopen/shplonk.rs.html | 2 +- .../poly/kzg/multiopen/shplonk/prover.rs.html | 2 +- .../kzg/multiopen/shplonk/verifier.rs.html | 2 +- src/halo2_proofs/poly/kzg/strategy.rs.html | 2 +- src/halo2_proofs/poly/query.rs.html | 2 +- src/halo2_proofs/poly/strategy.rs.html | 2 +- src/halo2_proofs/transcript.rs.html | 2 +- trait.impl/core/clone/trait.Clone.js | 4 +- trait.impl/core/cmp/trait.Eq.js | 4 +- trait.impl/core/cmp/trait.Ord.js | 2 +- trait.impl/core/cmp/trait.PartialEq.js | 4 +- trait.impl/core/cmp/trait.PartialOrd.js | 2 +- trait.impl/core/convert/trait.From.js | 4 +- trait.impl/core/convert/trait.TryFrom.js | 2 +- trait.impl/core/default/trait.Default.js | 2 +- trait.impl/core/fmt/trait.Debug.js | 4 +- trait.impl/core/fmt/trait.Display.js | 2 +- trait.impl/core/hash/trait.Hash.js | 2 +- trait.impl/core/marker/trait.Copy.js | 4 +- trait.impl/core/marker/trait.StructuralEq.js | 4 +- .../core/marker/trait.StructuralPartialEq.js | 4 +- trait.impl/core/ops/arith/trait.Add.js | 2 +- trait.impl/core/ops/arith/trait.AddAssign.js | 2 +- trait.impl/core/ops/arith/trait.Mul.js | 2 +- trait.impl/core/ops/arith/trait.MulAssign.js | 2 +- trait.impl/core/ops/arith/trait.Neg.js | 2 +- trait.impl/core/ops/arith/trait.Sub.js | 2 +- trait.impl/core/ops/arith/trait.SubAssign.js | 2 +- trait.impl/core/ops/deref/trait.Deref.js | 2 +- trait.impl/core/ops/index/trait.IndexMut.js | 2 +- trait.impl/halo2_proofs/circuit/trait.Chip.js | 2 +- .../poly/ipa/commitment/struct.ParamsIPA.js | 2 +- .../poly/kzg/commitment/struct.ParamsKZG.js | 2 +- type.impl/std/primitive.array.js | 2 +- 447 files changed, 1745 insertions(+), 1705 deletions(-) diff --git a/halo2/all.html b/halo2/all.html index 434fc426fc..a8928bd49b 100644 --- a/halo2/all.html +++ b/halo2/all.html @@ -1,4 +1,4 @@ -List of all items in this crate +List of all items in this crate +halo2 - Rust +List of all items in this crate +FIXED_BASE_WINDOW_SIZE in halo2_gadgets::ecc::chip::constants - Rust +H in halo2_gadgets::ecc::chip::constants - Rust +NUM_WINDOWS in halo2_gadgets::ecc::chip::constants - Rust +NUM_WINDOWS_SHORT in halo2_gadgets::ecc::chip::constants - Rust +compute_lagrange_coeffs in halo2_gadgets::ecc::chip::constants - Rust +find_zs_and_us in halo2_gadgets::ecc::chip::constants - Rust +test_lagrange_coeffs in halo2_gadgets::ecc::chip::constants - Rust +test_zs_and_us in halo2_gadgets::ecc::chip::constants - Rust +halo2_gadgets::ecc::chip::constants - Rust +BaseFieldElem in halo2_gadgets::ecc::chip - Rust +FullScalar in halo2_gadgets::ecc::chip - Rust +ScalarVar in halo2_gadgets::ecc::chip - Rust
pub enum ScalarVar {
-    BaseFieldElem(AssignedCell<Base, Base>),
+    BaseFieldElem(AssignedCell<Base, Base>),
     FullWidth,
 }
Expand description

An enumeration of the possible types of scalars used in variable-base multiplication.

-

Variants§

§

BaseFieldElem(AssignedCell<Base, Base>)

An element of the elliptic curve’s base field, that is used as a scalar +

Variants§

§

BaseFieldElem(AssignedCell<Base, Base>)

An element of the elliptic curve’s base field, that is used as a scalar in variable-base scalar mul.

It is not true in general that a scalar field element fits in a curve’s base field, and in particular it is untrue for the Pallas curve, whose @@ -124,5 +124,5 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/ecc/chip/enum.ShortScalar.html b/halo2_gadgets/ecc/chip/enum.ShortScalar.html index 5da20158e7..792a5430f9 100644 --- a/halo2_gadgets/ecc/chip/enum.ShortScalar.html +++ b/halo2_gadgets/ecc/chip/enum.ShortScalar.html @@ -1,4 +1,4 @@ -ShortScalar in halo2_gadgets::ecc::chip - Rust +ShortScalar in halo2_gadgets::ecc::chip - Rust +halo2_gadgets::ecc::chip - Rust +EccChip in halo2_gadgets::ecc::chip - Rust

Struct halo2_gadgets::ecc::chip::EccChip

source ·
pub struct EccChip<FixedPoints: FixedPoints<Affine>> { /* private fields */ }
Expand description

An EccInstructions chip that uses 10 advice columns.

-

Implementations§

source§

impl<FixedPoints: FixedPoints<Affine>> EccChip<FixedPoints>

source

pub fn construct(config: <Self as Chip<Base>>::Config) -> Self

Reconstructs this chip from the given config.

+

Implementations§

source§

impl<FixedPoints: FixedPoints<Affine>> EccChip<FixedPoints>

source

pub fn construct(config: <Self as Chip<Base>>::Config) -> Self

Reconstructs this chip from the given config.

source

pub fn configure( - meta: &mut ConstraintSystem<Base>, - advices: [Column<Advice>; 10], - lagrange_coeffs: [Column<Fixed>; 8], + meta: &mut ConstraintSystem<Base>, + advices: [Column<Advice>; 10], + lagrange_coeffs: [Column<Fixed>; 8], range_check: LookupRangeCheckConfig<Base, { sinsemilla::K }> -) -> <Self as Chip<Base>>::Config

Side effects
+) -> <Self as Chip<Base>>::Config
Side effects

All columns in advices will be equality-enabled.

Trait Implementations§

source§

impl<Fixed: FixedPoints<Affine>> BaseFitsInScalarInstructions<EpAffine> for EccChip<Fixed>where <Fixed as FixedPoints<Affine>>::Base: FixedPoint<Affine, FixedScalarKind = BaseFieldElem>, <Fixed as FixedPoints<Affine>>::FullScalar: FixedPoint<Affine, FixedScalarKind = FullScalar>, <Fixed as FixedPoints<Affine>>::ShortScalar: FixedPoint<Affine, FixedScalarKind = ShortScalar>,

source§

fn scalar_var_from_base( &self, - _layouter: &mut impl Layouter<Base>, + _layouter: &mut impl Layouter<Base>, base: &Self::Var -) -> Result<Self::ScalarVar, Error>

Converts a base field element that exists as a variable in the circuit -into a scalar to be used in variable-base scalar multiplication.
source§

impl<FixedPoints: FixedPoints<Affine>> Chip<Fp> for EccChip<FixedPoints>

§

type Config = EccConfig<FixedPoints>

A type that holds the configuration for this chip, and any other state it may need -during circuit synthesis, that can be derived during Circuit::configure.
§

type Loaded = ()

A type that holds any general chip state that needs to be loaded at the start of -Circuit::synthesize. This might simply be () for some chips.
source§

fn config(&self) -> &Self::Config

The chip holds its own configuration.
source§

fn loaded(&self) -> &Self::Loaded

Provides access to general chip state loaded at the beginning of circuit -synthesis. Read more
source§

impl<FixedPoints: Clone + FixedPoints<Affine>> Clone for EccChip<FixedPoints>

source§

fn clone(&self) -> EccChip<FixedPoints>

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<FixedPoints: Debug + FixedPoints<Affine>> Debug for EccChip<FixedPoints>

source§

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

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

impl<Fixed: FixedPoints<Affine>> EccInstructions<EpAffine> for EccChip<Fixed>where +) -> Result<Self::ScalarVar, Error>

Converts a base field element that exists as a variable in the circuit +into a scalar to be used in variable-base scalar multiplication.
source§

impl<FixedPoints: FixedPoints<Affine>> Chip<Fp> for EccChip<FixedPoints>

§

type Config = EccConfig<FixedPoints>

A type that holds the configuration for this chip, and any other state it may need +during circuit synthesis, that can be derived during Circuit::configure.
§

type Loaded = ()

A type that holds any general chip state that needs to be loaded at the start of +Circuit::synthesize. This might simply be () for some chips.
source§

fn config(&self) -> &Self::Config

The chip holds its own configuration.
source§

fn loaded(&self) -> &Self::Loaded

Provides access to general chip state loaded at the beginning of circuit +synthesis. Read more
source§

impl<FixedPoints: Clone + FixedPoints<Affine>> Clone for EccChip<FixedPoints>

source§

fn clone(&self) -> EccChip<FixedPoints>

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<FixedPoints: Debug + FixedPoints<Affine>> Debug for EccChip<FixedPoints>

source§

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

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

impl<Fixed: FixedPoints<Affine>> EccInstructions<EpAffine> for EccChip<Fixed>where <Fixed as FixedPoints<Affine>>::Base: FixedPoint<Affine, FixedScalarKind = BaseFieldElem>, <Fixed as FixedPoints<Affine>>::FullScalar: FixedPoint<Affine, FixedScalarKind = FullScalar>, <Fixed as FixedPoints<Affine>>::ShortScalar: FixedPoint<Affine, FixedScalarKind = ShortScalar>,

§

type ScalarFixed = EccScalarFixed

Variable representing a full-width element of the elliptic curve’s scalar field, to be used for fixed-base scalar mul.
§

type ScalarFixedShort = EccScalarFixedShort

Variable representing a signed short element of the elliptic curve’s -scalar field, to be used for fixed-base scalar mul. Read more
§

type ScalarVar = ScalarVar

Variable representing a scalar used in variable-base scalar mul. Read more
§

type Point = EccPoint

Variable representing an elliptic curve point.
§

type NonIdentityPoint = NonIdentityEccPoint

Variable representing a non-identity elliptic curve point.
§

type X = AssignedCell<Fp, Fp>

Variable representing the affine short Weierstrass x-coordinate of an +scalar field, to be used for fixed-base scalar mul. Read more
§

type ScalarVar = ScalarVar

Variable representing a scalar used in variable-base scalar mul. Read more
§

type Point = EccPoint

Variable representing an elliptic curve point.
§

type NonIdentityPoint = NonIdentityEccPoint

Variable representing a non-identity elliptic curve point.
§

type X = AssignedCell<Fp, Fp>

Variable representing the affine short Weierstrass x-coordinate of an elliptic curve point.
§

type FixedPoints = Fixed

Enumeration of the set of fixed bases to be used in scalar mul. TODO: When associated consts can be used as const generics, introduce Self::NUM_WINDOWS, Self::NUM_WINDOWS_BASE_FIELD, Self::NUM_WINDOWS_SHORT and use them to differentiate FixedPoints types.
source§

fn constrain_equal( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, a: &Self::Point, b: &Self::Point -) -> Result<(), Error>

Constrains point a to be equal in value to point b.
source§

fn witness_point( +) -> Result<(), Error>

Constrains point a to be equal in value to point b.
source§

fn witness_point( &self, - layouter: &mut impl Layouter<Base>, - value: Value<Affine> -) -> Result<Self::Point, Error>

Witnesses the given point as a private input to the circuit. + layouter: &mut impl Layouter<Base>, + value: Value<Affine> +) -> Result<Self::Point, Error>
Witnesses the given point as a private input to the circuit. This allows the point to be the identity, mapped to (0, 0) in affine coordinates.
source§

fn witness_point_non_id( &self, - layouter: &mut impl Layouter<Base>, - value: Value<Affine> -) -> Result<Self::NonIdentityPoint, Error>

Witnesses the given point as a private input to the circuit. + layouter: &mut impl Layouter<Base>, + value: Value<Affine> +) -> Result<Self::NonIdentityPoint, Error>
Witnesses the given point as a private input to the circuit. This returns an error if the point is the identity.
source§

fn witness_scalar_var( &self, - _layouter: &mut impl Layouter<Base>, - _value: Value<Scalar> -) -> Result<Self::ScalarVar, Error>

Witnesses a full-width scalar to be used in variable-base multiplication.
source§

fn witness_scalar_fixed( + _layouter: &mut impl Layouter<Base>, + _value: Value<Scalar> +) -> Result<Self::ScalarVar, Error>

Witnesses a full-width scalar to be used in variable-base multiplication.
source§

fn witness_scalar_fixed( &self, - _layouter: &mut impl Layouter<Base>, - value: Value<Scalar> -) -> Result<Self::ScalarFixed, Error>

Witnesses a full-width scalar to be used in fixed-base multiplication.
source§

fn scalar_fixed_from_signed_short( + _layouter: &mut impl Layouter<Base>, + value: Value<Scalar> +) -> Result<Self::ScalarFixed, Error>

Witnesses a full-width scalar to be used in fixed-base multiplication.
source§

fn scalar_fixed_from_signed_short( &self, - _layouter: &mut impl Layouter<Base>, - (magnitude, sign): (AssignedCell<Base, Base>, AssignedCell<Base, Base>) -) -> Result<Self::ScalarFixedShort, Error>

Converts a magnitude and sign that exists as variables in the circuit into a + _layouter: &mut impl Layouter<Base>, + (magnitude, sign): (AssignedCell<Base, Base>, AssignedCell<Base, Base>) +) -> Result<Self::ScalarFixedShort, Error>
Converts a magnitude and sign that exists as variables in the circuit into a signed short scalar to be used in fixed-base scalar multiplication.
source§

fn extract_p<Point: Into<Self::Point> + Clone>(point: &Point) -> Self::X

Extracts the x-coordinate of a point.
source§

fn add_incomplete( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, a: &Self::NonIdentityPoint, b: &Self::NonIdentityPoint -) -> Result<Self::NonIdentityPoint, Error>

Performs incomplete point addition, returning a + b. Read more
source§

fn add<A: Into<Self::Point> + Clone, B: Into<Self::Point> + Clone>( +) -> Result<Self::NonIdentityPoint, Error>

Performs incomplete point addition, returning a + b. Read more
source§

fn add<A: Into<Self::Point> + Clone, B: Into<Self::Point> + Clone>( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, a: &A, b: &B -) -> Result<Self::Point, Error>

Performs complete point addition, returning a + b.
source§

fn mul( +) -> Result<Self::Point, Error>

Performs complete point addition, returning a + b.
source§

fn mul( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, scalar: &Self::ScalarVar, base: &Self::NonIdentityPoint -) -> Result<(Self::Point, Self::ScalarVar), Error>

Performs variable-base scalar multiplication, returning [scalar] base.
source§

fn mul_fixed( +) -> Result<(Self::Point, Self::ScalarVar), Error>

Performs variable-base scalar multiplication, returning [scalar] base.
source§

fn mul_fixed( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, scalar: &Self::ScalarFixed, base: &<Self::FixedPoints as FixedPoints<Affine>>::FullScalar -) -> Result<(Self::Point, Self::ScalarFixed), Error>

Performs fixed-base scalar multiplication using a full-width scalar, returning [scalar] base.
source§

fn mul_fixed_short( +) -> Result<(Self::Point, Self::ScalarFixed), Error>

Performs fixed-base scalar multiplication using a full-width scalar, returning [scalar] base.
source§

fn mul_fixed_short( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, scalar: &Self::ScalarFixedShort, base: &<Self::FixedPoints as FixedPoints<Affine>>::ShortScalar -) -> Result<(Self::Point, Self::ScalarFixedShort), Error>

Performs fixed-base scalar multiplication using a short signed scalar, returning +) -> Result<(Self::Point, Self::ScalarFixedShort), Error>
Performs fixed-base scalar multiplication using a short signed scalar, returning [scalar] base.
source§

fn mul_fixed_base_field_elem( &self, - layouter: &mut impl Layouter<Base>, - base_field_elem: AssignedCell<Base, Base>, + layouter: &mut impl Layouter<Base>, + base_field_elem: AssignedCell<Base, Base>, base: &<Self::FixedPoints as FixedPoints<Affine>>::Base -) -> Result<Self::Point, Error>

Performs fixed-base scalar multiplication using a base field element as the scalar. +) -> Result<Self::Point, Error>
Performs fixed-base scalar multiplication using a base field element as the scalar. In the current implementation, this base field element must be output from another instruction.
source§

impl<FixedPoints: PartialEq + FixedPoints<Affine>> PartialEq for EccChip<FixedPoints>

source§

fn eq(&self, other: &EccChip<FixedPoints>) -> 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<Fixed: FixedPoints<Affine>> UtilitiesInstructions<Fp> for EccChip<Fixed>

§

type Var = AssignedCell<Fp, Fp>

Variable in the circuit.
source§

fn load_private( +sufficient, and should not be overridden without very good reason.

source§

impl<Fixed: FixedPoints<Affine>> UtilitiesInstructions<Fp> for EccChip<Fixed>

§

type Var = AssignedCell<Fp, Fp>

Variable in the circuit.
source§

fn load_private( &self, - layouter: impl Layouter<F>, - column: Column<Advice>, - value: Value<F> -) -> Result<Self::Var, Error>

Load a variable.
source§

impl<FixedPoints: Eq + FixedPoints<Affine>> Eq for EccChip<FixedPoints>

source§

impl<FixedPoints: FixedPoints<Affine>> StructuralEq for EccChip<FixedPoints>

source§

impl<FixedPoints: FixedPoints<Affine>> StructuralPartialEq for EccChip<FixedPoints>

Auto Trait Implementations§

§

impl<FixedPoints> RefUnwindSafe for EccChip<FixedPoints>where + layouter: impl Layouter<F>, + column: Column<Advice>, + value: Value<F> +) -> Result<Self::Var, Error>

Load a variable.
source§

impl<FixedPoints: Eq + FixedPoints<Affine>> Eq for EccChip<FixedPoints>

source§

impl<FixedPoints: FixedPoints<Affine>> StructuralEq for EccChip<FixedPoints>

source§

impl<FixedPoints: FixedPoints<Affine>> StructuralPartialEq for EccChip<FixedPoints>

Auto Trait Implementations§

§

impl<FixedPoints> RefUnwindSafe for EccChip<FixedPoints>where FixedPoints: RefUnwindSafe,

§

impl<FixedPoints> Send for EccChip<FixedPoints>where FixedPoints: Send,

§

impl<FixedPoints> Sync for EccChip<FixedPoints>where FixedPoints: Sync,

§

impl<FixedPoints> Unpin for EccChip<FixedPoints>where @@ -212,5 +212,5 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/ecc/chip/struct.EccConfig.html b/halo2_gadgets/ecc/chip/struct.EccConfig.html index fe62cc34e9..9017537b6e 100644 --- a/halo2_gadgets/ecc/chip/struct.EccConfig.html +++ b/halo2_gadgets/ecc/chip/struct.EccConfig.html @@ -1,4 +1,4 @@ -EccConfig in halo2_gadgets::ecc::chip - Rust +EccConfig in halo2_gadgets::ecc::chip - Rust
pub struct EccConfig<FixedPoints: FixedPoints<Affine>> {
-    pub advices: [Column<Advice>; 10],
+    pub advices: [Column<Advice>; 10],
     pub lookup_config: LookupRangeCheckConfig<Base, { sinsemilla::K }>,
     /* private fields */
 }
Expand description

Configuration for EccChip.

-

Fields§

§advices: [Column<Advice>; 10]

Advice columns needed by instructions in the ECC chip.

+

Fields§

§advices: [Column<Advice>; 10]

Advice columns needed by instructions in the ECC chip.

§lookup_config: LookupRangeCheckConfig<Base, { sinsemilla::K }>

Lookup range check using 10-bit lookup table

Trait Implementations§

source§

impl<FixedPoints: Clone + FixedPoints<Affine>> Clone for EccConfig<FixedPoints>

source§

fn clone(&self) -> EccConfig<FixedPoints>

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<FixedPoints: Debug + FixedPoints<Affine>> Debug for EccConfig<FixedPoints>

source§

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

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

impl<FixedPoints: PartialEq + FixedPoints<Affine>> PartialEq for EccConfig<FixedPoints>

source§

fn eq(&self, other: &EccConfig<FixedPoints>) -> 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 @@ -123,5 +123,5 @@ V: MultiLane<T>,
§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/ecc/chip/struct.EccPoint.html b/halo2_gadgets/ecc/chip/struct.EccPoint.html index 6e0d09cfc7..893d4ad24f 100644 --- a/halo2_gadgets/ecc/chip/struct.EccPoint.html +++ b/halo2_gadgets/ecc/chip/struct.EccPoint.html @@ -1,4 +1,4 @@ -EccPoint in halo2_gadgets::ecc::chip - Rust +EccPoint in halo2_gadgets::ecc::chip - Rust +EccScalarFixed in halo2_gadgets::ecc::chip - Rust +EccScalarFixedShort in halo2_gadgets::ecc::chip - Rust +NonIdentityEccPoint in halo2_gadgets::ecc::chip - Rust
pub struct NonIdentityEccPoint { /* private fields */ }
Expand description

A non-identity point represented in affine (x, y) coordinates. Each coordinate is assigned to a cell.

-

Implementations§

source§

impl NonIdentityEccPoint

source

pub fn point(&self) -> Value<Affine>

Returns the value of this curve point, if known.

-
source

pub fn x(&self) -> AssignedCell<Base, Base>

The cell containing the affine short-Weierstrass x-coordinate.

-
source

pub fn y(&self) -> AssignedCell<Base, Base>

The cell containing the affine short-Weierstrass y-coordinate.

+

Implementations§

source§

impl NonIdentityEccPoint

source

pub fn point(&self) -> Value<Affine>

Returns the value of this curve point, if known.

+
source

pub fn x(&self) -> AssignedCell<Base, Base>

The cell containing the affine short-Weierstrass x-coordinate.

+
source

pub fn y(&self) -> AssignedCell<Base, Base>

The cell containing the affine short-Weierstrass y-coordinate.

Trait Implementations§

source§

impl Clone for NonIdentityEccPoint

source§

fn clone(&self) -> NonIdentityEccPoint

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 NonIdentityEccPoint

source§

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

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

impl From<NonIdentityEccPoint> for EccPoint

source§

fn from(non_id_point: NonIdentityEccPoint) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere @@ -114,5 +114,5 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/ecc/chip/trait.FixedPoint.html b/halo2_gadgets/ecc/chip/trait.FixedPoint.html index 043bc330ce..442cb69999 100644 --- a/halo2_gadgets/ecc/chip/trait.FixedPoint.html +++ b/halo2_gadgets/ecc/chip/trait.FixedPoint.html @@ -1,4 +1,4 @@ -FixedPoint in halo2_gadgets::ecc::chip - Rust +FixedPoint in halo2_gadgets::ecc::chip - Rust +FixedScalarKind in halo2_gadgets::ecc::chip - Rust +halo2_gadgets::ecc - Rust +FixedPoint in halo2_gadgets::ecc - Rust +FixedPointBaseField in halo2_gadgets::ecc - Rust +FixedPointShort in halo2_gadgets::ecc - Rust +NonIdentityPoint in halo2_gadgets::ecc - Rust +Point in halo2_gadgets::ecc - Rust +ScalarFixed in halo2_gadgets::ecc - Rust +ScalarFixedShort in halo2_gadgets::ecc - Rust +ScalarVar in halo2_gadgets::ecc - Rust +X in halo2_gadgets::ecc - Rust +BaseFitsInScalarInstructions in halo2_gadgets::ecc - Rust +EccInstructions in halo2_gadgets::ecc - Rust -
pub trait EccInstructions<C: CurveAffine>: Chip<C::Base> + UtilitiesInstructions<C::Base> + Clone + Debug + Eq {
+
pub trait EccInstructions<C: CurveAffine>: Chip<C::Base> + UtilitiesInstructions<C::Base> + Clone + Debug + Eq {
     type ScalarVar: Clone + Debug;
     type ScalarFixed: Clone + Debug;
     type ScalarFixedShort: Clone + Debug;
@@ -25,72 +25,72 @@
 
Show 13 methods // Required methods fn constrain_equal( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, a: &Self::Point, b: &Self::Point - ) -> Result<(), Error>; + ) -> Result<(), Error>; fn witness_point( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C> - ) -> Result<Self::Point, Error>; + layouter: &mut impl Layouter<C::Base>, + value: Value<C> + ) -> Result<Self::Point, Error>; fn witness_point_non_id( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C> - ) -> Result<Self::NonIdentityPoint, Error>; + layouter: &mut impl Layouter<C::Base>, + value: Value<C> + ) -> Result<Self::NonIdentityPoint, Error>; fn witness_scalar_var( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C::Scalar> - ) -> Result<Self::ScalarVar, Error>; + layouter: &mut impl Layouter<C::Base>, + value: Value<C::Scalar> + ) -> Result<Self::ScalarVar, Error>; fn witness_scalar_fixed( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C::Scalar> - ) -> Result<Self::ScalarFixed, Error>; + layouter: &mut impl Layouter<C::Base>, + value: Value<C::Scalar> + ) -> Result<Self::ScalarFixed, Error>; fn scalar_fixed_from_signed_short( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, magnitude_sign: (Self::Var, Self::Var) - ) -> Result<Self::ScalarFixedShort, Error>; + ) -> Result<Self::ScalarFixedShort, Error>; fn extract_p<Point: Into<Self::Point> + Clone>(point: &Point) -> Self::X; fn add_incomplete( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, a: &Self::NonIdentityPoint, b: &Self::NonIdentityPoint - ) -> Result<Self::NonIdentityPoint, Error>; + ) -> Result<Self::NonIdentityPoint, Error>; fn add<A: Into<Self::Point> + Clone, B: Into<Self::Point> + Clone>( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, a: &A, b: &B - ) -> Result<Self::Point, Error>; + ) -> Result<Self::Point, Error>; fn mul( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, scalar: &Self::ScalarVar, base: &Self::NonIdentityPoint - ) -> Result<(Self::Point, Self::ScalarVar), Error>; + ) -> Result<(Self::Point, Self::ScalarVar), Error>; fn mul_fixed( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, scalar: &Self::ScalarFixed, base: &<Self::FixedPoints as FixedPoints<C>>::FullScalar - ) -> Result<(Self::Point, Self::ScalarFixed), Error>; + ) -> Result<(Self::Point, Self::ScalarFixed), Error>; fn mul_fixed_short( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, scalar: &Self::ScalarFixedShort, base: &<Self::FixedPoints as FixedPoints<C>>::ShortScalar - ) -> Result<(Self::Point, Self::ScalarFixedShort), Error>; + ) -> Result<(Self::Point, Self::ScalarFixedShort), Error>; fn mul_fixed_base_field_elem( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, base_field_elem: Self::Var, base: &<Self::FixedPoints as FixedPoints<C>>::Base - ) -> Result<Self::Point, Error>; + ) -> Result<Self::Point, Error>;
}
Expand description

The set of circuit instructions required to use the ECC gadgets.

Required Associated Types§

source

type ScalarVar: Clone + Debug

Variable representing a scalar used in variable-base scalar mul.

This type is treated as a full-width scalar. However, if Self implements @@ -111,81 +111,81 @@ and use them to differentiate FixedPoints types.

Required Methods§

source

fn constrain_equal( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, a: &Self::Point, b: &Self::Point -) -> Result<(), Error>

Constrains point a to be equal in value to point b.

+) -> Result<(), Error>

Constrains point a to be equal in value to point b.

source

fn witness_point( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C> -) -> Result<Self::Point, Error>

Witnesses the given point as a private input to the circuit. + layouter: &mut impl Layouter<C::Base>, + value: Value<C> +) -> Result<Self::Point, Error>

Witnesses the given point as a private input to the circuit. This allows the point to be the identity, mapped to (0, 0) in affine coordinates.

source

fn witness_point_non_id( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C> -) -> Result<Self::NonIdentityPoint, Error>

Witnesses the given point as a private input to the circuit. + layouter: &mut impl Layouter<C::Base>, + value: Value<C> +) -> Result<Self::NonIdentityPoint, Error>

Witnesses the given point as a private input to the circuit. This returns an error if the point is the identity.

source

fn witness_scalar_var( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C::Scalar> -) -> Result<Self::ScalarVar, Error>

Witnesses a full-width scalar to be used in variable-base multiplication.

+ layouter: &mut impl Layouter<C::Base>, + value: Value<C::Scalar> +) -> Result<Self::ScalarVar, Error>

Witnesses a full-width scalar to be used in variable-base multiplication.

source

fn witness_scalar_fixed( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C::Scalar> -) -> Result<Self::ScalarFixed, Error>

Witnesses a full-width scalar to be used in fixed-base multiplication.

+ layouter: &mut impl Layouter<C::Base>, + value: Value<C::Scalar> +) -> Result<Self::ScalarFixed, Error>

Witnesses a full-width scalar to be used in fixed-base multiplication.

source

fn scalar_fixed_from_signed_short( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, magnitude_sign: (Self::Var, Self::Var) -) -> Result<Self::ScalarFixedShort, Error>

Converts a magnitude and sign that exists as variables in the circuit into a +) -> Result<Self::ScalarFixedShort, Error>

Converts a magnitude and sign that exists as variables in the circuit into a signed short scalar to be used in fixed-base scalar multiplication.

source

fn extract_p<Point: Into<Self::Point> + Clone>(point: &Point) -> Self::X

Extracts the x-coordinate of a point.

source

fn add_incomplete( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, a: &Self::NonIdentityPoint, b: &Self::NonIdentityPoint -) -> Result<Self::NonIdentityPoint, Error>

Performs incomplete point addition, returning a + b.

+) -> Result<Self::NonIdentityPoint, Error>

Performs incomplete point addition, returning a + b.

This returns an error in exceptional cases.

source

fn add<A: Into<Self::Point> + Clone, B: Into<Self::Point> + Clone>( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, a: &A, b: &B -) -> Result<Self::Point, Error>

Performs complete point addition, returning a + b.

+) -> Result<Self::Point, Error>

Performs complete point addition, returning a + b.

source

fn mul( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, scalar: &Self::ScalarVar, base: &Self::NonIdentityPoint -) -> Result<(Self::Point, Self::ScalarVar), Error>

Performs variable-base scalar multiplication, returning [scalar] base.

+) -> Result<(Self::Point, Self::ScalarVar), Error>

Performs variable-base scalar multiplication, returning [scalar] base.

source

fn mul_fixed( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, scalar: &Self::ScalarFixed, base: &<Self::FixedPoints as FixedPoints<C>>::FullScalar -) -> Result<(Self::Point, Self::ScalarFixed), Error>

Performs fixed-base scalar multiplication using a full-width scalar, returning [scalar] base.

+) -> Result<(Self::Point, Self::ScalarFixed), Error>

Performs fixed-base scalar multiplication using a full-width scalar, returning [scalar] base.

source

fn mul_fixed_short( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, scalar: &Self::ScalarFixedShort, base: &<Self::FixedPoints as FixedPoints<C>>::ShortScalar -) -> Result<(Self::Point, Self::ScalarFixedShort), Error>

Performs fixed-base scalar multiplication using a short signed scalar, returning +) -> Result<(Self::Point, Self::ScalarFixedShort), Error>

Performs fixed-base scalar multiplication using a short signed scalar, returning [scalar] base.

source

fn mul_fixed_base_field_elem( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, base_field_elem: Self::Var, base: &<Self::FixedPoints as FixedPoints<C>>::Base -) -> Result<Self::Point, Error>

Performs fixed-base scalar multiplication using a base field element as the scalar. +) -> Result<Self::Point, Error>

Performs fixed-base scalar multiplication using a base field element as the scalar. In the current implementation, this base field element must be output from another instruction.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<Fixed: FixedPoints<Affine>> EccInstructions<EpAffine> for EccChip<Fixed>where <Fixed as FixedPoints<Affine>>::Base: FixedPoint<Affine, FixedScalarKind = BaseFieldElem>, <Fixed as FixedPoints<Affine>>::FullScalar: FixedPoint<Affine, FixedScalarKind = FullScalar>, - <Fixed as FixedPoints<Affine>>::ShortScalar: FixedPoint<Affine, FixedScalarKind = ShortScalar>,

\ No newline at end of file + <Fixed as FixedPoints<Affine>>::ShortScalar: FixedPoint<Affine, FixedScalarKind = ShortScalar>, \ No newline at end of file diff --git a/halo2_gadgets/ecc/trait.FixedPoints.html b/halo2_gadgets/ecc/trait.FixedPoints.html index 9b97f758f1..de7a9414f8 100644 --- a/halo2_gadgets/ecc/trait.FixedPoints.html +++ b/halo2_gadgets/ecc/trait.FixedPoints.html @@ -1,4 +1,4 @@ -FixedPoints in halo2_gadgets::ecc - Rust +FixedPoints in halo2_gadgets::ecc - Rust +halo2_gadgets - Rust +PaddedWord in halo2_gadgets::poseidon - Rust
pub enum PaddedWord<F: Field> {
-    Message(AssignedCell<F, F>),
+    Message(AssignedCell<F, F>),
     Padding(F),
 }
Expand description

A word from the padded input to a Poseidon sponge.

-

Variants§

§

Message(AssignedCell<F, F>)

A message word provided by the prover.

+

Variants§

§

Message(AssignedCell<F, F>)

A message word provided by the prover.

§

Padding(F)

A padding word, that will be fixed in the circuit parameters.

Trait Implementations§

source§

impl<F: Clone + Field> Clone for PaddedWord<F>

source§

fn clone(&self) -> PaddedWord<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 PaddedWord<F>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<F> RefUnwindSafe for PaddedWord<F>where F: RefUnwindSafe,

§

impl<F> Send for PaddedWord<F>

§

impl<F> Sync for PaddedWord<F>

§

impl<F> Unpin for PaddedWord<F>where @@ -118,5 +118,5 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/poseidon/index.html b/halo2_gadgets/poseidon/index.html index 6c6e9ae6b3..9ac5370424 100644 --- a/halo2_gadgets/poseidon/index.html +++ b/halo2_gadgets/poseidon/index.html @@ -1,4 +1,4 @@ -halo2_gadgets::poseidon - Rust +halo2_gadgets::poseidon - Rust +generate_constants in halo2_gadgets::poseidon::primitives - Rust +halo2_gadgets::poseidon::primitives - Rust +Absorbing in halo2_gadgets::poseidon::primitives - Rust +ConstantLength in halo2_gadgets::poseidon::primitives - Rust +Hash in halo2_gadgets::poseidon::primitives - Rust +P128Pow5T3 in halo2_gadgets::poseidon::primitives - Rust +Squeezing in halo2_gadgets::poseidon::primitives - Rust +Domain in halo2_gadgets::poseidon::primitives - Rust +Spec in halo2_gadgets::poseidon::primitives - Rust +SpongeMode in halo2_gadgets::poseidon::primitives - Rust +Mds in halo2_gadgets::poseidon::primitives - Rust +Hash in halo2_gadgets::poseidon - Rust +Pow5Chip in halo2_gadgets::poseidon - Rust +Pow5Config in halo2_gadgets::poseidon - Rust +Sponge in halo2_gadgets::poseidon - Rust +StateWord in halo2_gadgets::poseidon - Rust
pub struct StateWord<F: Field>(/* private fields */);
Expand description

A word in the Poseidon state.

-

Trait Implementations§

source§

impl<F: Clone + Field> Clone for StateWord<F>

source§

fn clone(&self) -> StateWord<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 StateWord<F>

source§

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

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

impl<F: Field> From<AssignedCell<F, F>> for StateWord<F>

source§

fn from(cell_value: AssignedCell<F, F>) -> StateWord<F>

Converts to this type from the input type.
source§

impl<F: Field> From<StateWord<F>> for AssignedCell<F, F>

source§

fn from(state_word: StateWord<F>) -> AssignedCell<F, F>

Converts to this type from the input type.
source§

impl<F: Field> Var<F> for StateWord<F>

source§

fn cell(&self) -> Cell

The cell at which this variable was allocated.
source§

fn value(&self) -> Value<F>

The value allocated to this variable.

Auto Trait Implementations§

§

impl<F> RefUnwindSafe for StateWord<F>where +

Trait Implementations§

source§

impl<F: Clone + Field> Clone for StateWord<F>

source§

fn clone(&self) -> StateWord<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 StateWord<F>

source§

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

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

impl<F: Field> From<AssignedCell<F, F>> for StateWord<F>

source§

fn from(cell_value: AssignedCell<F, F>) -> StateWord<F>

Converts to this type from the input type.
source§

impl<F: Field> From<StateWord<F>> for AssignedCell<F, F>

source§

fn from(state_word: StateWord<F>) -> AssignedCell<F, F>

Converts to this type from the input type.
source§

impl<F: Field> Var<F> for StateWord<F>

source§

fn cell(&self) -> Cell

The cell at which this variable was allocated.
source§

fn value(&self) -> Value<F>

The value allocated to this variable.

Auto Trait Implementations§

§

impl<F> RefUnwindSafe for StateWord<F>where F: RefUnwindSafe,

§

impl<F> Send for StateWord<F>

§

impl<F> Sync for StateWord<F>

§

impl<F> Unpin for StateWord<F>where F: Unpin,

§

impl<F> UnwindSafe for StateWord<F>where F: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere @@ -113,5 +113,5 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/poseidon/struct.Word.html b/halo2_gadgets/poseidon/struct.Word.html index e154ab3af5..12dc0fc602 100644 --- a/halo2_gadgets/poseidon/struct.Word.html +++ b/halo2_gadgets/poseidon/struct.Word.html @@ -1,4 +1,4 @@ -Word in halo2_gadgets::poseidon - Rust +Word in halo2_gadgets::poseidon - Rust +PoseidonInstructions in halo2_gadgets::poseidon - Rust -
pub trait PoseidonInstructions<F: Field, S: Spec<F, T, RATE>, const T: usize, const RATE: usize>: Chip<F> {
-    type Word: Clone + Debug + From<AssignedCell<F, F>> + Into<AssignedCell<F, F>>;
+
pub trait PoseidonInstructions<F: Field, S: Spec<F, T, RATE>, const T: usize, const RATE: usize>: Chip<F> {
+    type Word: Clone + Debug + From<AssignedCell<F, F>> + Into<AssignedCell<F, F>>;
 
     // Required method
     fn permute(
         &self,
-        layouter: &mut impl Layouter<F>,
+        layouter: &mut impl Layouter<F>,
         initial_state: &[Self::Word; T]
-    ) -> Result<[Self::Word; T], Error>;
+    ) -> Result<[Self::Word; T], Error>;
 }
Expand description

The set of circuit instructions required to use the Poseidon permutation.

-

Required Associated Types§

source

type Word: Clone + Debug + From<AssignedCell<F, F>> + Into<AssignedCell<F, F>>

Variable representing the word over which the Poseidon permutation operates.

+

Required Associated Types§

source

type Word: Clone + Debug + From<AssignedCell<F, F>> + Into<AssignedCell<F, F>>

Variable representing the word over which the Poseidon permutation operates.

Required Methods§

source

fn permute( &self, - layouter: &mut impl Layouter<F>, + layouter: &mut impl Layouter<F>, initial_state: &[Self::Word; T] -) -> Result<[Self::Word; T], Error>

Applies the Poseidon permutation to the given state.

+) -> Result<[Self::Word; T], Error>

Applies the Poseidon permutation to the given state.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<F: Field, S: Spec<F, WIDTH, RATE>, const WIDTH: usize, const RATE: usize> PoseidonInstructions<F, S, WIDTH, RATE> for Pow5Chip<F, WIDTH, RATE>

§

type Word = StateWord<F>

\ No newline at end of file diff --git a/halo2_gadgets/poseidon/trait.PoseidonSpongeInstructions.html b/halo2_gadgets/poseidon/trait.PoseidonSpongeInstructions.html index df0c7eb5c9..e97281d418 100644 --- a/halo2_gadgets/poseidon/trait.PoseidonSpongeInstructions.html +++ b/halo2_gadgets/poseidon/trait.PoseidonSpongeInstructions.html @@ -1,4 +1,4 @@ -PoseidonSpongeInstructions in halo2_gadgets::poseidon - Rust +PoseidonSpongeInstructions in halo2_gadgets::poseidon - Rust \ No newline at end of file diff --git a/halo2_gadgets/sha256/constant.BLOCK_SIZE.html b/halo2_gadgets/sha256/constant.BLOCK_SIZE.html index 6e8e4207f9..73285ff133 100644 --- a/halo2_gadgets/sha256/constant.BLOCK_SIZE.html +++ b/halo2_gadgets/sha256/constant.BLOCK_SIZE.html @@ -1,4 +1,4 @@ -BLOCK_SIZE in halo2_gadgets::sha256 - Rust +BLOCK_SIZE in halo2_gadgets::sha256 - Rust +halo2_gadgets::sha256 - Rust +BlockWord in halo2_gadgets::sha256 - Rust -
pub struct BlockWord(pub Value<u32>);
Available on crate feature unstable only.
Expand description

A word in a Table16 message block.

-

Tuple Fields§

§0: Value<u32>

Trait Implementations§

source§

impl Clone for BlockWord

source§

fn clone(&self) -> BlockWord

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 BlockWord

source§

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

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

impl Default for BlockWord

source§

fn default() -> BlockWord

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

impl Copy for BlockWord

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere +
pub struct BlockWord(pub Value<u32>);
Available on crate feature unstable only.
Expand description

A word in a Table16 message block.

+

Tuple Fields§

§0: Value<u32>

Trait Implementations§

source§

impl Clone for BlockWord

source§

fn clone(&self) -> BlockWord

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 BlockWord

source§

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

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

impl Default for BlockWord

source§

fn default() -> BlockWord

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

impl Copy for BlockWord

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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) -> Twhere @@ -110,5 +110,5 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/sha256/struct.Sha256.html b/halo2_gadgets/sha256/struct.Sha256.html index 8cd76b82b3..a7ffc43a0a 100644 --- a/halo2_gadgets/sha256/struct.Sha256.html +++ b/halo2_gadgets/sha256/struct.Sha256.html @@ -1,4 +1,4 @@ -Sha256 in halo2_gadgets::sha256 - Rust +Sha256 in halo2_gadgets::sha256 - Rust
pub struct Sha256<F: Field, CS: Sha256Instructions<F>> { /* private fields */ }
Available on crate feature unstable only.
Expand description

A gadget that constrains a SHA-256 invocation. It supports input at a granularity of 32 bits.

-

Implementations§

source§

impl<F: Field, Sha256Chip: Sha256Instructions<F>> Sha256<F, Sha256Chip>

source

pub fn new(chip: Sha256Chip, layouter: impl Layouter<F>) -> Result<Self, Error>

Create a new hasher instance.

+

Implementations§

source§

impl<F: Field, Sha256Chip: Sha256Instructions<F>> Sha256<F, Sha256Chip>

source

pub fn new(chip: Sha256Chip, layouter: impl Layouter<F>) -> Result<Self, Error>

Create a new hasher instance.

source

pub fn update( &mut self, - layouter: impl Layouter<F>, + layouter: impl Layouter<F>, data: &[Sha256Chip::BlockWord] -) -> Result<(), Error>

Digest data, updating the internal state.

+) -> Result<(), Error>

Digest data, updating the internal state.

source

pub fn finalize( self, - layouter: impl Layouter<F> -) -> Result<Sha256Digest<Sha256Chip::BlockWord>, Error>

Retrieve result and consume hasher instance.

+ layouter: impl Layouter<F> +) -> Result<Sha256Digest<Sha256Chip::BlockWord>, Error>

Retrieve result and consume hasher instance.

source

pub fn digest( chip: Sha256Chip, - layouter: impl Layouter<F>, + layouter: impl Layouter<F>, data: &[Sha256Chip::BlockWord] -) -> Result<Sha256Digest<Sha256Chip::BlockWord>, Error>

Convenience function to compute hash of the data. It will handle hasher creation, +) -> Result<Sha256Digest<Sha256Chip::BlockWord>, Error>

Convenience function to compute hash of the data. It will handle hasher creation, data feeding and finalization.

Trait Implementations§

source§

impl<F: Debug + Field, CS: Debug + Sha256Instructions<F>> Debug for Sha256<F, CS>where CS::State: Debug, @@ -143,5 +143,5 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/sha256/struct.Sha256Digest.html b/halo2_gadgets/sha256/struct.Sha256Digest.html index ad26484f0a..2bad9be6dd 100644 --- a/halo2_gadgets/sha256/struct.Sha256Digest.html +++ b/halo2_gadgets/sha256/struct.Sha256Digest.html @@ -1,4 +1,4 @@ -Sha256Digest in halo2_gadgets::sha256 - Rust +Sha256Digest in halo2_gadgets::sha256 - Rust +Table16Chip in halo2_gadgets::sha256 - Rust
pub struct Table16Chip { /* private fields */ }
Available on crate feature unstable only.
Expand description

A chip that implements SHA-256 with a maximum lookup table size of $2^16$.

-

Implementations§

source§

impl Table16Chip

source

pub fn construct(config: <Self as Chip<Base>>::Config) -> Self

Reconstructs this chip from the given config.

+

Implementations§

source§

impl Table16Chip

source

pub fn construct(config: <Self as Chip<Base>>::Config) -> Self

Reconstructs this chip from the given config.

source

pub fn configure( - meta: &mut ConstraintSystem<Base> -) -> <Self as Chip<Base>>::Config

Configures a circuit to include this chip.

+ meta: &mut ConstraintSystem<Base> +) -> <Self as Chip<Base>>::Config

Configures a circuit to include this chip.

source

pub fn load( config: Table16Config, - layouter: &mut impl Layouter<Base> -) -> Result<(), Error>

Loads the lookup table required by this chip into the circuit.

-

Trait Implementations§

source§

impl Chip<Fp> for Table16Chip

§

type Config = Table16Config

A type that holds the configuration for this chip, and any other state it may need -during circuit synthesis, that can be derived during Circuit::configure.
§

type Loaded = ()

A type that holds any general chip state that needs to be loaded at the start of -Circuit::synthesize. This might simply be () for some chips.
source§

fn config(&self) -> &Self::Config

The chip holds its own configuration.
source§

fn loaded(&self) -> &Self::Loaded

Provides access to general chip state loaded at the beginning of circuit -synthesis. Read more
source§

impl Clone for Table16Chip

source§

fn clone(&self) -> Table16Chip

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 Table16Chip

source§

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

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

impl Sha256Instructions<Fp> for Table16Chip

§

type State = State

Variable representing the SHA-256 internal state.
§

type BlockWord = BlockWord

Variable representing a 32-bit word of the input block to the SHA-256 compression + layouter: &mut impl Layouter<Base> +) -> Result<(), Error>

Loads the lookup table required by this chip into the circuit.

+

Trait Implementations§

source§

impl Chip<Fp> for Table16Chip

§

type Config = Table16Config

A type that holds the configuration for this chip, and any other state it may need +during circuit synthesis, that can be derived during Circuit::configure.
§

type Loaded = ()

A type that holds any general chip state that needs to be loaded at the start of +Circuit::synthesize. This might simply be () for some chips.
source§

fn config(&self) -> &Self::Config

The chip holds its own configuration.
source§

fn loaded(&self) -> &Self::Loaded

Provides access to general chip state loaded at the beginning of circuit +synthesis. Read more
source§

impl Clone for Table16Chip

source§

fn clone(&self) -> Table16Chip

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 Table16Chip

source§

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

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

impl Sha256Instructions<Fp> for Table16Chip

§

type State = State

Variable representing the SHA-256 internal state.
§

type BlockWord = BlockWord

Variable representing a 32-bit word of the input block to the SHA-256 compression function.
source§

fn initialization_vector( &self, - layouter: &mut impl Layouter<Base> -) -> Result<State, Error>

Places the SHA-256 IV in the circuit, returning the initial state variable.
source§

fn initialization( + layouter: &mut impl Layouter<Base> +) -> Result<State, Error>

Places the SHA-256 IV in the circuit, returning the initial state variable.
source§

fn initialization( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, init_state: &Self::State -) -> Result<Self::State, Error>

Creates an initial state from the output state of a previous block
source§

fn compress( +) -> Result<Self::State, Error>

Creates an initial state from the output state of a previous block
source§

fn compress( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, initialized_state: &Self::State, input: [Self::BlockWord; 16] -) -> Result<Self::State, Error>

Starting from the given initialized state, processes a block of input and returns the +) -> Result<Self::State, Error>
Starting from the given initialized state, processes a block of input and returns the final state.
source§

fn digest( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, state: &Self::State -) -> Result<[Self::BlockWord; 8], Error>

Converts the given state into a message digest.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere +) -> Result<[Self::BlockWord; 8], Error>

Converts the given state into a message digest.

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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) -> Twhere @@ -139,5 +139,5 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/sha256/struct.Table16Config.html b/halo2_gadgets/sha256/struct.Table16Config.html index 1f84633d80..dbd57017cc 100644 --- a/halo2_gadgets/sha256/struct.Table16Config.html +++ b/halo2_gadgets/sha256/struct.Table16Config.html @@ -1,4 +1,4 @@ -Table16Config in halo2_gadgets::sha256 - Rust +Table16Config in halo2_gadgets::sha256 - Rust +Sha256Instructions in halo2_gadgets::sha256 - Rust -
pub trait Sha256Instructions<F: Field>: Chip<F> {
+
pub trait Sha256Instructions<F: Field>: Chip<F> {
     type State: Clone + Debug;
     type BlockWord: Copy + Debug + Default;
 
     // Required methods
     fn initialization_vector(
         &self,
-        layouter: &mut impl Layouter<F>
-    ) -> Result<Self::State, Error>;
+        layouter: &mut impl Layouter<F>
+    ) -> Result<Self::State, Error>;
     fn initialization(
         &self,
-        layouter: &mut impl Layouter<F>,
+        layouter: &mut impl Layouter<F>,
         init_state: &Self::State
-    ) -> Result<Self::State, Error>;
+    ) -> Result<Self::State, Error>;
     fn compress(
         &self,
-        layouter: &mut impl Layouter<F>,
+        layouter: &mut impl Layouter<F>,
         initialized_state: &Self::State,
         input: [Self::BlockWord; 16]
-    ) -> Result<Self::State, Error>;
+    ) -> Result<Self::State, Error>;
     fn digest(
         &self,
-        layouter: &mut impl Layouter<F>,
+        layouter: &mut impl Layouter<F>,
         state: &Self::State
-    ) -> Result<[Self::BlockWord; 8], Error>;
+    ) -> Result<[Self::BlockWord; 8], Error>;
 }
Available on crate feature unstable only.
Expand description

The set of circuit instructions required to use the Sha256 gadget.

Required Associated Types§

source

type State: Clone + Debug

Variable representing the SHA-256 internal state.

source

type BlockWord: Copy + Debug + Default

Variable representing a 32-bit word of the input block to the SHA-256 compression function.

Required Methods§

source

fn initialization_vector( &self, - layouter: &mut impl Layouter<F> -) -> Result<Self::State, Error>

Places the SHA-256 IV in the circuit, returning the initial state variable.

+ layouter: &mut impl Layouter<F> +) -> Result<Self::State, Error>

Places the SHA-256 IV in the circuit, returning the initial state variable.

source

fn initialization( &self, - layouter: &mut impl Layouter<F>, + layouter: &mut impl Layouter<F>, init_state: &Self::State -) -> Result<Self::State, Error>

Creates an initial state from the output state of a previous block

+) -> Result<Self::State, Error>

Creates an initial state from the output state of a previous block

source

fn compress( &self, - layouter: &mut impl Layouter<F>, + layouter: &mut impl Layouter<F>, initialized_state: &Self::State, input: [Self::BlockWord; 16] -) -> Result<Self::State, Error>

Starting from the given initialized state, processes a block of input and returns the +) -> Result<Self::State, Error>

Starting from the given initialized state, processes a block of input and returns the final state.

source

fn digest( &self, - layouter: &mut impl Layouter<F>, + layouter: &mut impl Layouter<F>, state: &Self::State -) -> Result<[Self::BlockWord; 8], Error>

Converts the given state into a message digest.

+) -> Result<[Self::BlockWord; 8], Error>

Converts the given state into a message digest.

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/halo2_gadgets/sinsemilla/chip/index.html b/halo2_gadgets/sinsemilla/chip/index.html index 99d4efa73d..f61f3d6254 100644 --- a/halo2_gadgets/sinsemilla/chip/index.html +++ b/halo2_gadgets/sinsemilla/chip/index.html @@ -1,4 +1,4 @@ -halo2_gadgets::sinsemilla::chip - Rust +halo2_gadgets::sinsemilla::chip - Rust +SinsemillaChip in halo2_gadgets::sinsemilla::chip - Rust +SinsemillaConfig in halo2_gadgets::sinsemilla::chip - Rust +halo2_gadgets::sinsemilla - Rust +halo2_gadgets::sinsemilla::merkle::chip - Rust +MerkleChip in halo2_gadgets::sinsemilla::merkle::chip - Rust +MerkleConfig in halo2_gadgets::sinsemilla::merkle::chip - Rust +MERKLE_CRH_PERSONALIZATION in halo2_gadgets::sinsemilla::merkle - Rust +halo2_gadgets::sinsemilla::merkle - Rust +MerklePath in halo2_gadgets::sinsemilla::merkle - Rust +MerkleInstructions in halo2_gadgets::sinsemilla::merkle - Rust -
pub trait MerkleInstructions<C: CurveAffine, const PATH_LENGTH: usize, const K: usize, const MAX_WORDS: usize>: SinsemillaInstructions<C, K, MAX_WORDS> + CondSwapInstructions<C::Base> + UtilitiesInstructions<C::Base> + Chip<C::Base> {
+
pub trait MerkleInstructions<C: CurveAffine, const PATH_LENGTH: usize, const K: usize, const MAX_WORDS: usize>: SinsemillaInstructions<C, K, MAX_WORDS> + CondSwapInstructions<C::Base> + UtilitiesInstructions<C::Base> + Chip<C::Base> {
     // Required method
     fn hash_layer(
         &self,
-        layouter: impl Layouter<C::Base>,
+        layouter: impl Layouter<C::Base>,
         Q: C,
         l: usize,
         left: Self::Var,
         right: Self::Var
-    ) -> Result<Self::Var, Error>;
+    ) -> Result<Self::Var, Error>;
 }
Expand description

Instructions to check the validity of a Merkle path of a given PATH_LENGTH. The hash function used is a Sinsemilla instance with K-bit words. The hash function can process MAX_WORDS words.

Required Methods§

source

fn hash_layer( &self, - layouter: impl Layouter<C::Base>, + layouter: impl Layouter<C::Base>, Q: C, l: usize, left: Self::Var, right: Self::Var -) -> Result<Self::Var, Error>

Compute MerkleCRH for a given layer. The hash that computes the root +) -> Result<Self::Var, Error>

Compute MerkleCRH for a given layer. The hash that computes the root is at layer 0, and the hashes that are applied to two leaves are at layer MERKLE_DEPTH - 1 = layer 31.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<Hash, Commit, F, const MERKLE_DEPTH: usize> MerkleInstructions<EpAffine, MERKLE_DEPTH, { sinsemilla::K }, { sinsemilla::C }> for MerkleChip<Hash, Commit, F>where diff --git a/halo2_gadgets/sinsemilla/primitives/constant.C.html b/halo2_gadgets/sinsemilla/primitives/constant.C.html index 6fc3e8c55f..573f350562 100644 --- a/halo2_gadgets/sinsemilla/primitives/constant.C.html +++ b/halo2_gadgets/sinsemilla/primitives/constant.C.html @@ -1,4 +1,4 @@ -C in halo2_gadgets::sinsemilla::primitives - Rust +C in halo2_gadgets::sinsemilla::primitives - Rust +INV_TWO_POW_K in halo2_gadgets::sinsemilla::primitives - Rust +K in halo2_gadgets::sinsemilla::primitives - Rust +Q_PERSONALIZATION in halo2_gadgets::sinsemilla::primitives - Rust +SINSEMILLA_S in halo2_gadgets::sinsemilla::primitives - Rust +S_PERSONALIZATION in halo2_gadgets::sinsemilla::primitives - Rust +halo2_gadgets::sinsemilla::primitives - Rust +CommitDomain in halo2_gadgets::sinsemilla::primitives - Rust +HashDomain in halo2_gadgets::sinsemilla::primitives - Rust +CommitDomain in halo2_gadgets::sinsemilla - Rust +HashDomain in halo2_gadgets::sinsemilla - Rust +Message in halo2_gadgets::sinsemilla - Rust +MessagePiece in halo2_gadgets::sinsemilla - Rust +CommitDomains in halo2_gadgets::sinsemilla - Rust +HashDomains in halo2_gadgets::sinsemilla - Rust +SinsemillaInstructions in halo2_gadgets::sinsemilla - Rust

\ No newline at end of file diff --git a/halo2_gadgets/utilities/cond_swap/index.html b/halo2_gadgets/utilities/cond_swap/index.html index 92d193d7da..679dc4e30d 100644 --- a/halo2_gadgets/utilities/cond_swap/index.html +++ b/halo2_gadgets/utilities/cond_swap/index.html @@ -1,4 +1,4 @@ -halo2_gadgets::utilities::cond_swap - Rust +halo2_gadgets::utilities::cond_swap - Rust +CondSwapChip in halo2_gadgets::utilities::cond_swap - Rust
pub struct CondSwapChip<F> { /* private fields */ }
Expand description

A chip implementing a conditional swap.

Implementations§

source§

impl<F: PrimeField> CondSwapChip<F>

source

pub fn configure( - meta: &mut ConstraintSystem<F>, - advices: [Column<Advice>; 5] + meta: &mut ConstraintSystem<F>, + advices: [Column<Advice>; 5] ) -> CondSwapConfig

Configures this chip for use in a circuit.

Side-effects

advices[0] will be equality-enabled.

source

pub fn construct(config: CondSwapConfig) -> Self

Constructs a CondSwapChip given a CondSwapConfig.

-

Trait Implementations§

source§

impl<F: Field> Chip<F> for CondSwapChip<F>

§

type Config = CondSwapConfig

A type that holds the configuration for this chip, and any other state it may need -during circuit synthesis, that can be derived during Circuit::configure.
§

type Loaded = ()

A type that holds any general chip state that needs to be loaded at the start of -Circuit::synthesize. This might simply be () for some chips.
source§

fn config(&self) -> &Self::Config

The chip holds its own configuration.
source§

fn loaded(&self) -> &Self::Loaded

Provides access to general chip state loaded at the beginning of circuit -synthesis. Read more
source§

impl<F: Clone> Clone for CondSwapChip<F>

source§

fn clone(&self) -> CondSwapChip<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: PrimeField> CondSwapInstructions<F> for CondSwapChip<F>

Trait Implementations§

source§

impl<F: Field> Chip<F> for CondSwapChip<F>

§

type Config = CondSwapConfig

A type that holds the configuration for this chip, and any other state it may need +during circuit synthesis, that can be derived during Circuit::configure.
§

type Loaded = ()

A type that holds any general chip state that needs to be loaded at the start of +Circuit::synthesize. This might simply be () for some chips.
source§

fn config(&self) -> &Self::Config

The chip holds its own configuration.
source§

fn loaded(&self) -> &Self::Loaded

Provides access to general chip state loaded at the beginning of circuit +synthesis. Read more
source§

impl<F: Clone> Clone for CondSwapChip<F>

source§

fn clone(&self) -> CondSwapChip<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: PrimeField> CondSwapInstructions<F> for CondSwapChip<F>

source§

fn swap( &self, - layouter: impl Layouter<F>, - pair: (Self::Var, Value<F>), - swap: Value<bool> -) -> Result<(Self::Var, Self::Var), Error>

Given an input pair (a,b) and a swap boolean flag, returns -(b,a) if swap is set, else (a,b) if swap is not set. Read more
source§

impl<F: Debug> Debug for CondSwapChip<F>

source§

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

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

impl<F: Field> UtilitiesInstructions<F> for CondSwapChip<F>

§

type Var = AssignedCell<F, F>

Variable in the circuit.
source§

fn load_private( + layouter: impl Layouter<F>, + pair: (Self::Var, Value<F>), + swap: Value<bool> +) -> Result<(Self::Var, Self::Var), Error>

Given an input pair (a,b) and a swap boolean flag, returns +(b,a) if swap is set, else (a,b) if swap is not set. Read more
source§

impl<F: Debug> Debug for CondSwapChip<F>

source§

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

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

impl<F: Field> UtilitiesInstructions<F> for CondSwapChip<F>

§

type Var = AssignedCell<F, F>

Variable in the circuit.
source§

fn load_private( &self, - layouter: impl Layouter<F>, - column: Column<Advice>, - value: Value<F> -) -> Result<Self::Var, Error>

Load a variable.

Auto Trait Implementations§

§

impl<F> RefUnwindSafe for CondSwapChip<F>where + layouter: impl Layouter<F>, + column: Column<Advice>, + value: Value<F> +) -> Result<Self::Var, Error>

Load a variable.

Auto Trait Implementations§

§

impl<F> RefUnwindSafe for CondSwapChip<F>where F: RefUnwindSafe,

§

impl<F> Send for CondSwapChip<F>where F: Send,

§

impl<F> Sync for CondSwapChip<F>where F: Sync,

§

impl<F> Unpin for CondSwapChip<F>where @@ -136,5 +136,5 @@
Side-effects
V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/utilities/cond_swap/struct.CondSwapConfig.html b/halo2_gadgets/utilities/cond_swap/struct.CondSwapConfig.html index be920afc54..080d6a9ea2 100644 --- a/halo2_gadgets/utilities/cond_swap/struct.CondSwapConfig.html +++ b/halo2_gadgets/utilities/cond_swap/struct.CondSwapConfig.html @@ -1,4 +1,4 @@ -CondSwapConfig in halo2_gadgets::utilities::cond_swap - Rust +CondSwapConfig in halo2_gadgets::utilities::cond_swap - Rust +CondSwapInstructions in halo2_gadgets::utilities::cond_swap - Rust +halo2_gadgets::utilities::decompose_running_sum - Rust +RunningSum in halo2_gadgets::utilities::decompose_running_sum - Rust
pub struct RunningSum<F: PrimeFieldBits>(/* private fields */);
Expand description

The running sum $[z_0, …, z_W]$. If created in strict mode, $z_W = 0$.

-

Methods from Deref<Target = Vec<AssignedCell<F, F>>>§

1.0.0 · source

pub fn capacity(&self) -> usize

Returns the total number of elements the vector can hold without +

Methods from Deref<Target = Vec<AssignedCell<F, F>>>§

1.0.0 · source

pub fn capacity(&self) -> usize

Returns the total number of elements the vector can hold without reallocating.

Examples
let mut vec: Vec<i32> = Vec::with_capacity(10);
@@ -76,94 +76,15 @@ 
Examples
v.push(1); assert!(!v.is_empty());
-

Methods from Deref<Target = [T]>§

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 f32::total_cmp.

-
Current implementation
-

This uses the same sorting algorithm as sort_unstable_by.

-
Examples
-
#![feature(sort_floats)]
-let mut v = [2.6, -5e-8, f32::NAN, 8.29, f32::INFINITY, -1.0, 0.0, -f32::INFINITY, -0.0];
-
-v.sort_floats();
-let sorted = [-f32::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f32::INFINITY, f32::NAN];
-assert_eq!(&v[..8], &sorted[..8]);
-assert!(v[8].is_nan());
-
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.

-
Current implementation
-

This uses the same sorting algorithm as sort_unstable_by.

-
Examples
-
#![feature(sort_floats)]
-let mut v = [2.6, -5e-8, f64::NAN, 8.29, f64::INFINITY, -1.0, 0.0, -f64::INFINITY, -0.0];
-
-v.sort_floats();
-let sorted = [-f64::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f64::INFINITY, f64::NAN];
-assert_eq!(&v[..8], &sorted[..8]);
-assert!(v[8].is_nan());
-
1.23.0 · source

pub fn is_ascii(&self) -> bool

Checks if all bytes in this slice are within the ASCII range.

-
source

pub fn as_ascii(&self) -> Option<&[AsciiChar]>

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

If this slice is_ascii, returns it as a slice of -ASCII characters, otherwise returns None.

-
source

pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar]

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

Converts this slice of bytes into a slice of ASCII characters, -without checking whether they’re valid.

-
Safety
-

Every byte in the slice must be in 0..=127, or else this is UB.

-
1.23.0 · source

pub fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool

Checks that two slices are an ASCII case-insensitive match.

-

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), -but without allocating and copying temporaries.

-
1.23.0 · source

pub fn make_ascii_uppercase(&mut self)

Converts this slice to its ASCII upper case equivalent in-place.

-

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

-

To return a new uppercased value without modifying the existing one, use -to_ascii_uppercase.

-
1.23.0 · source

pub fn make_ascii_lowercase(&mut self)

Converts this slice to its ASCII lower case equivalent in-place.

-

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

-

To return a new lowercased value without modifying the existing one, use -to_ascii_lowercase.

-
1.60.0 · source

pub fn escape_ascii(&self) -> EscapeAscii<'_>

Returns an iterator that produces an escaped version of this slice, -treating it as an ASCII string.

-
Examples
-

-let s = b"0\t\r\n'\"\\\x9d";
-let escaped = s.escape_ascii().to_string();
-assert_eq!(escaped, "0\\t\\r\\n\\'\\\"\\\\\\x9d");
-
source

pub fn trim_ascii_start(&self) -> &[u8]

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

Returns a byte slice with leading ASCII whitespace bytes removed.

-

‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

-
Examples
-
#![feature(byte_slice_trim_ascii)]
-
-assert_eq!(b" \t hello world\n".trim_ascii_start(), b"hello world\n");
-assert_eq!(b"  ".trim_ascii_start(), b"");
-assert_eq!(b"".trim_ascii_start(), b"");
-
source

pub fn trim_ascii_end(&self) -> &[u8]

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

Returns a byte slice with trailing ASCII whitespace bytes removed.

-

‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

-
Examples
-
#![feature(byte_slice_trim_ascii)]
-
-assert_eq!(b"\r hello world\n ".trim_ascii_end(), b"\r hello world");
-assert_eq!(b"  ".trim_ascii_end(), b"");
-assert_eq!(b"".trim_ascii_end(), b"");
-
source

pub fn trim_ascii(&self) -> &[u8]

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

Returns a byte slice with leading and trailing ASCII whitespace bytes -removed.

-

‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

-
Examples
-
#![feature(byte_slice_trim_ascii)]
-
-assert_eq!(b"\r hello world\n ".trim_ascii(), b"hello world");
-assert_eq!(b"  ".trim_ascii(), b"");
-assert_eq!(b"".trim_ascii(), b"");
+

Methods from Deref<Target = [T]>§

source

pub fn as_str(&self) -> &str

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

Views this slice of ASCII characters as a UTF-8 str.

+
source

pub fn as_bytes(&self) -> &[u8]

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

Views this slice of ASCII characters as a slice of u8 bytes.

source

pub fn flatten(&self) -> &[T]

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

Takes a &[[T; N]], and flattens it to a &[T].

Panics

This panics if the length of the resulting slice would overflow a usize.

This is only possible when flattening a slice of arrays of zero-sized types, and thus tends to be irrelevant in practice. If size_of::<T>() > 0, this will never panic.

-
Examples
+
Examples
#![feature(slice_flatten)]
 
 assert_eq!([[1, 2, 3], [4, 5, 6]].flatten(), &[1, 2, 3, 4, 5, 6]);
@@ -184,7 +105,7 @@ 
Panics

This is only possible when flattening a slice of arrays of zero-sized types, and thus tends to be irrelevant in practice. If size_of::<T>() > 0, this will never panic.

-
Examples
+
Examples
#![feature(slice_flatten)]
 
 fn add_5_to_all(slice: &mut [i32]) {
@@ -196,23 +117,36 @@ 
Examples
let mut array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; add_5_to_all(array.flatten_mut()); assert_eq!(array, [[6, 7, 8], [9, 10, 11], [12, 13, 14]]);
+
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 f32::total_cmp.

+
Current implementation
+

This uses the same sorting algorithm as sort_unstable_by.

+
Examples
+
#![feature(sort_floats)]
+let mut v = [2.6, -5e-8, f32::NAN, 8.29, f32::INFINITY, -1.0, 0.0, -f32::INFINITY, -0.0];
+
+v.sort_floats();
+let sorted = [-f32::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f32::INFINITY, f32::NAN];
+assert_eq!(&v[..8], &sorted[..8]);
+assert!(v[8].is_nan());
1.0.0 · source

pub fn len(&self) -> usize

Returns the number of elements in the slice.

-
Examples
+
Examples
let a = [1, 2, 3];
 assert_eq!(a.len(), 3);
1.0.0 · source

pub fn is_empty(&self) -> bool

Returns true if the slice has a length of 0.

-
Examples
+
Examples
let a = [1, 2, 3];
 assert!(!a.is_empty());
1.0.0 · source

pub fn first(&self) -> Option<&T>

Returns the first element of the slice, or None if it is empty.

-
Examples
+
Examples
let v = [10, 40, 30];
 assert_eq!(Some(&10), v.first());
 
 let w: &[i32] = &[];
 assert_eq!(None, w.first());
1.0.0 · source

pub fn first_mut(&mut self) -> Option<&mut T>

Returns a mutable pointer to the first element of the slice, or None if it is empty.

-
Examples
+
Examples
let x = &mut [0, 1, 2];
 
 if let Some(first) = x.first_mut() {
@@ -220,7 +154,7 @@ 
Examples
} assert_eq!(x, &[5, 1, 2]);
1.5.0 · source

pub fn split_first(&self) -> Option<(&T, &[T])>

Returns the first and all the rest of the elements of the slice, or None if it is empty.

-
Examples
+
Examples
let x = &[0, 1, 2];
 
 if let Some((first, elements)) = x.split_first() {
@@ -228,7 +162,7 @@ 
Examples
assert_eq!(elements, &[1, 2]); }
1.5.0 · source

pub fn split_first_mut(&mut self) -> Option<(&mut T, &mut [T])>

Returns the first and all the rest of the elements of the slice, or None if it is empty.

-
Examples
+
Examples
let x = &mut [0, 1, 2];
 
 if let Some((first, elements)) = x.split_first_mut() {
@@ -238,7 +172,7 @@ 
Examples
} assert_eq!(x, &[3, 4, 5]);
1.5.0 · source

pub fn split_last(&self) -> Option<(&T, &[T])>

Returns the last and all the rest of the elements of the slice, or None if it is empty.

-
Examples
+
Examples
let x = &[0, 1, 2];
 
 if let Some((last, elements)) = x.split_last() {
@@ -246,7 +180,7 @@ 
Examples
assert_eq!(elements, &[0, 1]); }
1.5.0 · source

pub fn split_last_mut(&mut self) -> Option<(&mut T, &mut [T])>

Returns the last and all the rest of the elements of the slice, or None if it is empty.

-
Examples
+
Examples
let x = &mut [0, 1, 2];
 
 if let Some((last, elements)) = x.split_last_mut() {
@@ -256,14 +190,14 @@ 
Examples
} assert_eq!(x, &[4, 5, 3]);
1.0.0 · source

pub fn last(&self) -> Option<&T>

Returns the last element of the slice, or None if it is empty.

-
Examples
+
Examples
let v = [10, 40, 30];
 assert_eq!(Some(&30), v.last());
 
 let w: &[i32] = &[];
 assert_eq!(None, w.last());
1.0.0 · source

pub fn last_mut(&mut self) -> Option<&mut T>

Returns a mutable pointer to the last item in the slice.

-
Examples
+
Examples
let x = &mut [0, 1, 2];
 
 if let Some(last) = x.last_mut() {
@@ -271,7 +205,7 @@ 
Examples
} assert_eq!(x, &[0, 1, 10]);
source

pub fn first_chunk<const N: usize>(&self) -> Option<&[T; N]>

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

Returns the first N elements of the slice, or None if it has fewer than N elements.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let u = [10, 40, 30];
@@ -284,7 +218,7 @@ 
Examples
assert_eq!(Some(&[]), w.first_chunk::<0>());
source

pub fn first_chunk_mut<const N: usize>(&mut self) -> Option<&mut [T; N]>

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

Returns a mutable reference to the first N elements of the slice, or None if it has fewer than N elements.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let x = &mut [0, 1, 2];
@@ -296,7 +230,7 @@ 
Examples
assert_eq!(x, &[5, 4, 2]);
source

pub fn split_first_chunk<const N: usize>(&self) -> Option<(&[T; N], &[T])>

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

Returns the first N elements of the slice and the remainder, or None if it has fewer than N elements.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let x = &[0, 1, 2];
@@ -309,7 +243,7 @@ 
Examples
&mut self ) -> Option<(&mut [T; N], &mut [T])>
🔬This is a nightly-only experimental API. (slice_first_last_chunk)

Returns a mutable reference to the first N elements of the slice and the remainder, or None if it has fewer than N elements.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let x = &mut [0, 1, 2];
@@ -322,7 +256,7 @@ 
Examples
assert_eq!(x, &[3, 4, 5]);
source

pub fn split_last_chunk<const N: usize>(&self) -> Option<(&[T; N], &[T])>

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

Returns the last N elements of the slice and the remainder, or None if it has fewer than N elements.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let x = &[0, 1, 2];
@@ -334,7 +268,7 @@ 
Examples
source

pub fn split_last_chunk_mut<const N: usize>( &mut self ) -> Option<(&mut [T; N], &mut [T])>

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

Returns the last and all the rest of the elements of the slice, or None if it is empty.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let x = &mut [0, 1, 2];
@@ -346,7 +280,7 @@ 
Examples
} assert_eq!(x, &[5, 3, 4]);
source

pub fn last_chunk<const N: usize>(&self) -> Option<&[T; N]>

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

Returns the last element of the slice, or None if it is empty.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let u = [10, 40, 30];
@@ -358,7 +292,7 @@ 
Examples
let w: &[i32] = &[]; assert_eq!(Some(&[]), w.last_chunk::<0>());
source

pub fn last_chunk_mut<const N: usize>(&mut self) -> Option<&mut [T; N]>

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

Returns a mutable pointer to the last item in the slice.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let x = &mut [0, 1, 2];
@@ -377,7 +311,7 @@ 
Examples
  • If given a range, returns the subslice corresponding to that range, or None if out of bounds.
  • -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert_eq!(Some(&40), v.get(1));
     assert_eq!(Some(&[10, 40][..]), v.get(0..2));
    @@ -389,7 +323,7 @@ 
    Examples
    ) -> Option<&mut <I as SliceIndex<[T]>>::Output>where I: SliceIndex<[T]>,

    Returns a mutable reference to an element or subslice depending on the type of index (see get) or None if the index is out of bounds.

    -
    Examples
    +
    Examples
    let x = &mut [0, 1, 2];
     
     if let Some(elem) = x.get_mut(1) {
    @@ -403,10 +337,10 @@ 
    Examples
    I: SliceIndex<[T]>,

    Returns a reference to an element or subslice, without doing bounds checking.

    For a safe alternative see get.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used.

    -
    Examples
    +
    Examples
    let x = &[1, 2, 4];
     
     unsafe {
    @@ -419,10 +353,10 @@ 
    Examples
    I: SliceIndex<[T]>,

    Returns a mutable reference to an element or subslice, without doing bounds checking.

    For a safe alternative see get_mut.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used.

    -
    Examples
    +
    Examples
    let x = &mut [1, 2, 4];
     
     unsafe {
    @@ -438,7 +372,7 @@ 
    Examples
    derived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

    Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid.

    -
    Examples
    +
    Examples
    let x = &[1, 2, 4];
     let x_ptr = x.as_ptr();
     
    @@ -452,7 +386,7 @@ 
    Examples
    function returns, or else it will end up pointing to garbage.

    Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid.

    -
    Examples
    +
    Examples
    let x = &mut [1, 2, 4];
     let x_ptr = x.as_mut_ptr();
     
    @@ -502,7 +436,7 @@ 
    Arguments
    Panics

    Panics if a or b are out of bounds.

    -
    Examples
    +
    Examples
    let mut v = ["a", "b", "c", "d", "e"];
     v.swap(2, 4);
     assert!(v == ["a", "b", "e", "d", "c"]);
    @@ -513,10 +447,10 @@
    Arguments
  • a - The index of the first element
  • b - The index of the second element
  • -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior. The caller has to ensure that a < self.len() and b < self.len().

    -
    Examples
    +
    Examples
    #![feature(slice_swap_unchecked)]
     
     let mut v = ["a", "b", "c", "d"];
    @@ -524,13 +458,13 @@ 
    Examples
    unsafe { v.swap_unchecked(1, 3) }; assert!(v == ["a", "d", "c", "b"]);
    1.0.0 · source

    pub fn reverse(&mut self)

    Reverses the order of elements in the slice, in place.

    -
    Examples
    +
    Examples
    let mut v = [1, 2, 3];
     v.reverse();
     assert!(v == [3, 2, 1]);
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, T>

    Returns an iterator over the slice.

    The iterator yields all items from start to end.

    -
    Examples
    +
    Examples
    let x = &[1, 2, 4];
     let mut iterator = x.iter();
     
    @@ -540,7 +474,7 @@ 
    Examples
    assert_eq!(iterator.next(), None);
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, T>

    Returns an iterator that allows modifying each value.

    The iterator yields all items from start to end.

    -
    Examples
    +
    Examples
    let x = &mut [1, 2, 4];
     for elem in x.iter_mut() {
         *elem += 2;
    @@ -551,7 +485,7 @@ 
    Examples
    size, the iterator returns no values.

    Panics

    Panics if size is 0.

    -
    Examples
    +
    Examples
    let slice = ['r', 'u', 's', 't'];
     let mut iter = slice.windows(2);
     assert_eq!(iter.next().unwrap(), &['r', 'u']);
    @@ -586,7 +520,7 @@ 
    Examples
    slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.chunks(2);
     assert_eq!(iter.next().unwrap(), &['l', 'o']);
    @@ -602,7 +536,7 @@ 
    Examples
    the end of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -624,7 +558,7 @@ 
    Examples
    chunk, and rchunks_exact for the same iterator but starting at the end of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.chunks_exact(2);
     assert_eq!(iter.next().unwrap(), &['l', 'o']);
    @@ -643,7 +577,7 @@ 
    Examples
    the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -656,13 +590,13 @@ 
    Examples
    assert_eq!(v, &[1, 1, 2, 2, 0]);
    source

    pub unsafe fn as_chunks_unchecked<const N: usize>(&self) -> &[[T; N]]

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

    Splits the slice into a slice of N-element arrays, assuming that there’s no remainder.

    -
    Safety
    +
    Safety

    This may only be called when

    • The slice splits exactly into N-element chunks (aka self.len() % N == 0).
    • N != 0.
    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice: &[char] = &['l', 'o', 'r', 'e', 'm', '!'];
     let chunks: &[[char; 1]] =
    @@ -683,7 +617,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice = ['l', 'o', 'r', 'e', 'm'];
     let (chunks, remainder) = slice.as_chunks();
    @@ -704,7 +638,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice = ['l', 'o', 'r', 'e', 'm'];
     let (remainder, chunks) = slice.as_rchunks();
    @@ -719,7 +653,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(array_chunks)]
     let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.array_chunks();
    @@ -731,13 +665,13 @@ 
    Examples
    &mut self ) -> &mut [[T; N]]
    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, assuming that there’s no remainder.

    -
    Safety
    +
    Safety

    This may only be called when

    • The slice splits exactly into N-element chunks (aka self.len() % N == 0).
    • N != 0.
    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice: &mut [char] = &mut ['l', 'o', 'r', 'e', 'm', '!'];
     let chunks: &mut [[char; 1]] =
    @@ -760,7 +694,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
    @@ -778,7 +712,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
    @@ -799,7 +733,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(array_chunks)]
     let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
    @@ -816,7 +750,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(array_windows)]
     let slice = [0, 1, 2, 3];
     let mut iter = slice.array_windows();
    @@ -833,7 +767,7 @@ 
    Examples
    of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.rchunks(2);
     assert_eq!(iter.next().unwrap(), &['e', 'm']);
    @@ -849,7 +783,7 @@ 
    Examples
    beginning of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -872,7 +806,7 @@ 
    Examples
    slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.rchunks_exact(2);
     assert_eq!(iter.next().unwrap(), &['e', 'm']);
    @@ -891,7 +825,7 @@ 
    Examples
    of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -908,7 +842,7 @@ 
    Examples

    The predicate is called on two elements following themselves, it means the predicate is called on slice[0] and slice[1] then on slice[1] and slice[2] and so on.

    -
    Examples
    +
    Examples
    #![feature(slice_group_by)]
     
     let slice = &[1, 1, 1, 3, 3, 2, 2, 2];
    @@ -937,7 +871,7 @@ 
    Examples

    The predicate is called on two elements following themselves, it means the predicate is called on slice[0] and slice[1] then on slice[1] and slice[2] and so on.

    -
    Examples
    +
    Examples
    #![feature(slice_group_by)]
     
     let slice = &mut [1, 1, 1, 3, 3, 2, 2, 2];
    @@ -966,7 +900,7 @@ 
    Examples
    indices from [mid, len) (excluding the index len itself).

    Panics

    Panics if mid > len.

    -
    Examples
    +
    Examples
    let v = [1, 2, 3, 4, 5, 6];
     
     {
    @@ -992,7 +926,7 @@ 
    Examples
    indices from [mid, len) (excluding the index len itself).

    Panics

    Panics if mid > len.

    -
    Examples
    +
    Examples
    let mut v = [1, 0, 3, 0, 5, 6];
     let (left, right) = v.split_at_mut(2);
     assert_eq!(left, [1, 0]);
    @@ -1005,11 +939,11 @@ 
    Examples
    the index mid itself) and the second will contain all indices from [mid, len) (excluding the index len itself).

    For a safe alternative see split_at.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used. The caller has to ensure that 0 <= mid <= self.len().

    -
    Examples
    +
    Examples
    #![feature(slice_split_at_unchecked)]
     
     let v = [1, 2, 3, 4, 5, 6];
    @@ -1039,11 +973,11 @@ 
    Examples
    the index mid itself) and the second will contain all indices from [mid, len) (excluding the index len itself).

    For a safe alternative see split_at_mut.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used. The caller has to ensure that 0 <= mid <= self.len().

    -
    Examples
    +
    Examples
    #![feature(slice_split_at_unchecked)]
     
     let mut v = [1, 0, 3, 0, 5, 6];
    @@ -1062,7 +996,7 @@ 
    Examples
    indices from [N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let v = &[1, 2, 3, 4, 5, 6][..];
    @@ -1090,7 +1024,7 @@ 
    Examples
    indices from [N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let mut v = &mut [1, 0, 3, 0, 5, 6][..];
    @@ -1107,7 +1041,7 @@ 
    Examples
    indices from [len - N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let v = &[1, 2, 3, 4, 5, 6][..];
    @@ -1136,7 +1070,7 @@ 
    Examples
    indices from [len - N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let mut v = &mut [1, 0, 3, 0, 5, 6][..];
    @@ -1149,7 +1083,7 @@ 
    Examples
    1.0.0 · source

    pub fn split<F>(&self, pred: F) -> Split<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let slice = [10, 40, 33, 20];
     let mut iter = slice.split(|num| num % 3 == 0);
     
    @@ -1180,7 +1114,7 @@ 
    Examples
    1.0.0 · source

    pub fn split_mut<F>(&mut self, pred: F) -> SplitMut<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let mut v = [10, 40, 30, 20, 60, 50];
     
     for group in v.split_mut(|num| *num % 3 == 0) {
    @@ -1191,7 +1125,7 @@ 
    Examples
    F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred. The matched element is contained in the end of the previous subslice as a terminator.

    -
    Examples
    +
    Examples
    let slice = [10, 40, 33, 20];
     let mut iter = slice.split_inclusive(|num| num % 3 == 0);
     
    @@ -1212,7 +1146,7 @@ 
    Examples
    F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred. The matched element is contained in the previous subslice as a terminator.

    -
    Examples
    +
    Examples
    let mut v = [10, 40, 30, 20, 60, 50];
     
     for group in v.split_inclusive_mut(|num| *num % 3 == 0) {
    @@ -1224,7 +1158,7 @@ 
    Examples
    F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let slice = [11, 22, 33, 0, 44, 55];
     let mut iter = slice.rsplit(|num| *num == 0);
     
    @@ -1245,7 +1179,7 @@ 
    Examples
    F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let mut v = [100, 400, 300, 200, 600, 500];
     
     let mut count = 0;
    @@ -1260,7 +1194,7 @@ 
    Examples
    not contained in the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples

    Print the slice split once by numbers divisible by 3 (i.e., [10, 40], [20, 60, 50]):

    @@ -1275,7 +1209,7 @@
    Examples
    not contained in the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples
    let mut v = [10, 40, 30, 20, 60, 50];
     
     for group in v.splitn_mut(2, |num| *num % 3 == 0) {
    @@ -1289,7 +1223,7 @@ 
    Examples
    the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples

    Print the slice split once, starting from the end, by numbers divisible by 3 (i.e., [50], [10, 40, 30, 20]):

    @@ -1305,7 +1239,7 @@
    Examples
    the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples
    let mut s = [10, 40, 30, 20, 60, 50];
     
     for group in s.rsplitn_mut(2, |num| *num % 3 == 0) {
    @@ -1318,7 +1252,7 @@ 
    Examples

    If any matching elements are resent in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns None.

    -
    Examples
    +
    Examples
    #![feature(slice_split_once)]
     let s = [1, 2, 3, 2, 4];
     assert_eq!(s.split_once(|&x| x == 2), Some((
    @@ -1332,7 +1266,7 @@ 
    Examples

    If any matching elements are resent in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns None.

    -
    Examples
    +
    Examples
    #![feature(slice_split_once)]
     let s = [1, 2, 3, 2, 4];
     assert_eq!(s.rsplit_once(|&x| x == 2), Some((
    @@ -1344,7 +1278,7 @@ 
    Examples
    T: PartialEq,

    Returns true if the slice contains an element with the given value.

    This operation is O(n).

    Note that if you have a sorted slice, binary_search may be faster.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert!(v.contains(&30));
     assert!(!v.contains(&50));
    @@ -1357,7 +1291,7 @@
    Examples
    assert!(!v.iter().any(|e| e == "hi"));
    1.0.0 · source

    pub fn starts_with(&self, needle: &[T]) -> boolwhere T: PartialEq,

    Returns true if needle is a prefix of the slice.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert!(v.starts_with(&[10]));
     assert!(v.starts_with(&[10, 40]));
    @@ -1371,7 +1305,7 @@ 
    Examples
    assert!(v.starts_with(&[]));
    1.0.0 · source

    pub fn ends_with(&self, needle: &[T]) -> boolwhere T: PartialEq,

    Returns true if needle is a suffix of the slice.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert!(v.ends_with(&[30]));
     assert!(v.ends_with(&[40, 30]));
    @@ -1389,7 +1323,7 @@ 
    Examples

    If the slice starts with prefix, returns the subslice after the prefix, wrapped in Some. If prefix is empty, simply returns the original slice.

    If the slice does not start with prefix, returns None.

    -
    Examples
    +
    Examples
    let v = &[10, 40, 30];
     assert_eq!(v.strip_prefix(&[10]), Some(&[40, 30][..]));
     assert_eq!(v.strip_prefix(&[10, 40]), Some(&[30][..]));
    @@ -1405,7 +1339,7 @@ 
    Examples

    If the slice ends with suffix, returns the subslice before the suffix, wrapped in Some. If suffix is empty, simply returns the original slice.

    If the slice does not end with suffix, returns None.

    -
    Examples
    +
    Examples
    let v = &[10, 40, 30];
     assert_eq!(v.strip_suffix(&[30]), Some(&[10, 40][..]));
     assert_eq!(v.strip_suffix(&[40, 30]), Some(&[10][..]));
    @@ -1423,7 +1357,7 @@ 
    Examples
    the index where a matching element could be inserted while maintaining sorted order.

    See also binary_search_by, binary_search_by_key, and partition_point.

    -
    Examples
    +
    Examples

    Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in [1, 4].

    @@ -1480,7 +1414,7 @@
    Examples
    the index where a matching element could be inserted while maintaining sorted order.

    See also binary_search, binary_search_by_key, and partition_point.

    -
    Examples
    +
    Examples

    Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in [1, 4].

    @@ -1515,7 +1449,7 @@
    Examples
    the index where a matching element could be inserted while maintaining sorted order.

    See also binary_search, binary_search_by, and partition_point.

    -
    Examples
    +
    Examples

    Looks up a series of four elements in a slice of pairs sorted by their second elements. The first is found, with a uniquely determined position; the second and third are not found; the @@ -1534,7 +1468,7 @@

    Examples
    T: Ord,

    Sorts the slice, but might not preserve the order of equal elements.

    This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not allocate), and O(n * log(n)) worst-case.

    -
    Current implementation
    +
    Current implementation

    The current algorithm is based on pattern-defeating quicksort by Orson Peters, which combines the fast average case of randomized quicksort with the fast worst case of heapsort, while achieving linear time on slices with certain patterns. It uses some @@ -1542,7 +1476,7 @@

    Current im deterministic behavior.

    It is typically faster than stable sorting, except in a few special cases, e.g., when the slice consists of several concatenated sorted sequences.

    -
    Examples
    +
    Examples
    let mut v = [-5, 4, 1, -3, 2];
     
     v.sort_unstable();
    @@ -1565,7 +1499,7 @@ 
    Examples
    let mut floats = [5f64, 4.0, 1.0, 3.0, 2.0];
     floats.sort_unstable_by(|a, b| a.partial_cmp(b).unwrap());
     assert_eq!(floats, [1.0, 2.0, 3.0, 4.0, 5.0]);
    -
    Current implementation
    +
    Current implementation

    The current algorithm is based on pattern-defeating quicksort by Orson Peters, which combines the fast average case of randomized quicksort with the fast worst case of heapsort, while achieving linear time on slices with certain patterns. It uses some @@ -1573,7 +1507,7 @@

    Current im deterministic behavior.

    It is typically faster than stable sorting, except in a few special cases, e.g., when the slice consists of several concatenated sorted sequences.

    -
    Examples
    +
    Examples
    let mut v = [5, 4, 1, 3, 2];
     v.sort_unstable_by(|a, b| a.cmp(b));
     assert!(v == [1, 2, 3, 4, 5]);
    @@ -1588,7 +1522,7 @@ 
    Examples

    This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not allocate), and O(m * n * log(n)) worst-case, where the key function is O(m).

    -
    Current implementation
    +
    Current implementation

    The current algorithm is based on pattern-defeating quicksort by Orson Peters, which combines the fast average case of randomized quicksort with the fast worst case of heapsort, while achieving linear time on slices with certain patterns. It uses some @@ -1597,7 +1531,7 @@

    Current im

    Due to its key calling strategy, sort_unstable_by_key is likely to be slower than sort_by_cached_key in cases where the key function is expensive.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     v.sort_unstable_by_key(|k| k.abs());
    @@ -1616,13 +1550,13 @@ 
    Examples
    the subslice prior to index, the element at index, and the subslice after index; accordingly, the values in those two subslices will respectively all be less-than-or-equal-to and greater-than-or-equal-to the value of the element at index.

    -
    Current implementation
    +
    Current implementation

    The current algorithm is an introselect implementation based on Pattern Defeating Quicksort, which is also the basis for sort_unstable. The fallback algorithm is Median of Medians using Tukey’s Ninther for pivot selection, which guarantees linear runtime for all inputs.

    Panics

    Panics when index >= len(), meaning it always panics on empty slices.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     // Find the median
    @@ -1651,13 +1585,13 @@ 
    Examples
    index, the element at index, and the subslice after index; accordingly, the values in those two subslices will respectively all be less-than-or-equal-to and greater-than-or-equal-to the value of the element at index.

    -
    Current implementation
    +
    Current implementation

    The current algorithm is an introselect implementation based on Pattern Defeating Quicksort, which is also the basis for sort_unstable. The fallback algorithm is Median of Medians using Tukey’s Ninther for pivot selection, which guarantees linear runtime for all inputs.

    Panics

    Panics when index >= len(), meaning it always panics on empty slices.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     // Find the median as if the slice were sorted in descending order.
    @@ -1687,13 +1621,13 @@ 
    Examples
    index, the element at index, and the subslice after index; accordingly, the values in those two subslices will respectively all be less-than-or-equal-to and greater-than-or-equal-to the value of the element at index.

    -
    Current implementation
    +
    Current implementation

    The current algorithm is an introselect implementation based on Pattern Defeating Quicksort, which is also the basis for sort_unstable. The fallback algorithm is Median of Medians using Tukey’s Ninther for pivot selection, which guarantees linear runtime for all inputs.

    Panics

    Panics when index >= len(), meaning it always panics on empty slices.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     // Return the median as if the array were sorted according to absolute value.
    @@ -1711,7 +1645,7 @@ 
    Examples

    Returns two slices. The first contains no consecutive repeated elements. The second contains all the duplicates in no specified order.

    If the slice is sorted, the first returned slice contains no duplicates.

    -
    Examples
    +
    Examples
    #![feature(slice_partition_dedup)]
     
     let mut slice = [1, 2, 2, 3, 3, 2, 1, 1];
    @@ -1730,7 +1664,7 @@ 
    Examples
    from their order in the slice, so if same_bucket(a, b) returns true, a is moved at the end of the slice.

    If the slice is sorted, the first returned slice contains no duplicates.

    -
    Examples
    +
    Examples
    #![feature(slice_partition_dedup)]
     
     let mut slice = ["foo", "Foo", "BAZ", "Bar", "bar", "baz", "BAZ"];
    @@ -1746,7 +1680,7 @@ 
    Examples

    Returns two slices. The first contains no consecutive repeated elements. The second contains all the duplicates in no specified order.

    If the slice is sorted, the first returned slice contains no duplicates.

    -
    Examples
    +
    Examples
    #![feature(slice_partition_dedup)]
     
     let mut slice = [10, 20, 21, 30, 30, 20, 11, 13];
    @@ -1765,7 +1699,7 @@ 
    Panics
    rotation.

    Complexity

    Takes linear (in self.len()) time.

    -
    Examples
    +
    Examples
    let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];
     a.rotate_left(2);
     assert_eq!(a, ['c', 'd', 'e', 'f', 'a', 'b']);
    @@ -1784,7 +1718,7 @@
    Panics
    rotation.

    Complexity

    Takes linear (in self.len()) time.

    -
    Examples
    +
    Examples
    let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];
     a.rotate_right(2);
     assert_eq!(a, ['e', 'f', 'a', 'b', 'c', 'd']);
    @@ -1795,7 +1729,7 @@
    Examples
    assert_eq!(a, ['a', 'e', 'b', 'c', 'd', 'f']);
    1.50.0 · source

    pub fn fill(&mut self, value: T)where T: Clone,

    Fills self with elements by cloning value.

    -
    Examples
    +
    Examples
    let mut buf = vec![0; 10];
     buf.fill(1);
     assert_eq!(buf, vec![1; 10]);
    @@ -1805,7 +1739,7 @@
    Examples
    Clone a given value, use fill. If you want to use the Default trait to generate values, you can pass Default::default as the argument.

    -
    Examples
    +
    Examples
    let mut buf = vec![1; 10];
     buf.fill_with(Default::default);
     assert_eq!(buf, vec![0; 10]);
    @@ -1814,7 +1748,7 @@
    Examples

    The length of src must be the same as self.

    Panics

    This function will panic if the two slices have different lengths.

    -
    Examples
    +
    Examples

    Cloning two elements from a slice into another:

    let src = [1, 2, 3, 4];
    @@ -1852,7 +1786,7 @@ 
    Examples

    If T does not implement Copy, use clone_from_slice.

    Panics

    This function will panic if the two slices have different lengths.

    -
    Examples
    +
    Examples

    Copying two elements from a slice into another:

    let src = [1, 2, 3, 4];
    @@ -1895,7 +1829,7 @@ 
    Examples
    Panics

    This function will panic if either range exceeds the end of the slice, or if the end of src is before the start.

    -
    Examples
    +
    Examples

    Copying four bytes within a slice:

    let mut bytes = *b"Hello, World!";
    @@ -1945,10 +1879,10 @@ 
    Example
    in a default (debug or release) execution will return a maximal middle part.

    This method has no purpose when either input element T or output element U are zero-sized and will return the original slice without splitting anything.

    -
    Safety
    +
    Safety

    This method is essentially a transmute with respect to the elements in the returned middle slice, so all the usual caveats pertaining to transmute::<T, U> also apply here.

    -
    Examples
    +
    Examples

    Basic usage:

    unsafe {
    @@ -1968,10 +1902,10 @@ 
    Examples
    in a default (debug or release) execution will return a maximal middle part.

    This method has no purpose when either input element T or output element U are zero-sized and will return the original slice without splitting anything.

    -
    Safety
    +
    Safety

    This method is essentially a transmute with respect to the elements in the returned middle slice, so all the usual caveats pertaining to transmute::<T, U> also apply here.

    -
    Examples
    +
    Examples

    Basic usage:

    unsafe {
    @@ -2004,7 +1938,7 @@ 
    Panics
    supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like LANES == 3.

    -
    Examples
    +
    Examples
    #![feature(portable_simd)]
     use core::simd::SimdFloat;
     
    @@ -2066,7 +2000,7 @@ 
    Panics

    Note that if Self::Item is only PartialOrd, but not Ord, the above definition implies that this function returns false if any two consecutive items are not comparable.

    -
    Examples
    +
    Examples
    #![feature(is_sorted)]
     let empty: [i32; 0] = [];
     
    @@ -2086,7 +2020,7 @@ 
    Examples

    Instead of comparing the slice’s elements directly, this function compares the keys of the elements, as determined by f. Apart from that, it’s equivalent to is_sorted; see its documentation for more information.

    -
    Examples
    +
    Examples
    #![feature(is_sorted)]
     
     assert!(["c", "bb", "aaa"].is_sorted_by_key(|s| s.len()));
    @@ -2102,7 +2036,7 @@ 
    Examples

    If this slice is not partitioned, the returned result is unspecified and meaningless, as this method performs a kind of binary search.

    See also binary_search, binary_search_by, and binary_search_by_key.

    -
    Examples
    +
    Examples
    let v = [1, 2, 3, 3, 5, 6, 7];
     let i = v.partition_point(|&x| x < 5);
     
    @@ -2131,7 +2065,7 @@ 
    Examples
    range is out of bounds.

    Note that this method only accepts one-sided ranges such as 2.. or ..6, but not 2..6.

    -
    Examples
    +
    Examples

    Taking the first three elements of a slice:

    #![feature(slice_take)]
    @@ -2168,7 +2102,7 @@ 
    Examples
    range is out of bounds.

    Note that this method only accepts one-sided ranges such as 2.. or ..6, but not 2..6.

    -
    Examples
    +
    Examples

    Taking the first three elements of a slice:

    #![feature(slice_take)]
    @@ -2201,7 +2135,7 @@ 
    Examples
    source

    pub fn take_first<'a>(self: &mut &'a [T]) -> Option<&'a T>

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

    Removes the first element of the slice and returns a reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &[_] = &['a', 'b', 'c'];
    @@ -2212,7 +2146,7 @@ 
    Examples
    source

    pub fn take_first_mut<'a>(self: &mut &'a mut [T]) -> Option<&'a mut T>

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

    Removes the first element of the slice and returns a mutable reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &mut [_] = &mut ['a', 'b', 'c'];
    @@ -2224,7 +2158,7 @@ 
    Examples
    source

    pub fn take_last<'a>(self: &mut &'a [T]) -> Option<&'a T>

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

    Removes the last element of the slice and returns a reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &[_] = &['a', 'b', 'c'];
    @@ -2235,7 +2169,7 @@ 
    Examples
    source

    pub fn take_last_mut<'a>(self: &mut &'a mut [T]) -> Option<&'a mut T>

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

    Removes the last element of the slice and returns a mutable reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &mut [_] = &mut ['a', 'b', 'c'];
    @@ -2249,10 +2183,10 @@ 
    Examples
    indices: [usize; N] ) -> [&mut T; N]
    🔬This is a nightly-only experimental API. (get_many_mut)

    Returns mutable references to many indices at once, without doing any checks.

    For a safe alternative see get_many_mut.

    -
    Safety
    +
    Safety

    Calling this method with overlapping or out-of-bounds indices is undefined behavior even if the resulting references are not used.

    -
    Examples
    +
    Examples
    #![feature(get_many_mut)]
     
     let x = &mut [1, 2, 4];
    @@ -2269,7 +2203,7 @@ 
    Examples
    ) -> Result<[&mut T; N], GetManyMutError<N>>
    🔬This is a nightly-only experimental API. (get_many_mut)

    Returns mutable references to many indices at once.

    Returns an error if any index is out-of-bounds, or if the same index was passed more than once.

    -
    Examples
    +
    Examples
    #![feature(get_many_mut)]
     
     let v = &mut [1, 2, 3];
    @@ -2278,18 +2212,74 @@ 
    Examples
    *b = 612; } assert_eq!(v, &[413, 2, 612]);
    -
    source

    pub fn as_str(&self) -> &str

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

    Views this slice of ASCII characters as a UTF-8 str.

    -
    source

    pub fn as_bytes(&self) -> &[u8]

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

    Views this slice of ASCII characters as a slice of u8 bytes.

    -
    1.23.0 · source

    pub fn to_ascii_uppercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte -is mapped to its ASCII upper case equivalent.

    +
    1.23.0 · source

    pub fn is_ascii(&self) -> bool

    Checks if all bytes in this slice are within the ASCII range.

    +
    source

    pub fn as_ascii(&self) -> Option<&[AsciiChar]>

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

    If this slice is_ascii, returns it as a slice of +ASCII characters, otherwise returns None.

    +
    source

    pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar]

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

    Converts this slice of bytes into a slice of ASCII characters, +without checking whether they’re valid.

    +
    Safety
    +

    Every byte in the slice must be in 0..=127, or else this is UB.

    +
    1.23.0 · source

    pub fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool

    Checks that two slices are an ASCII case-insensitive match.

    +

    Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

    +
    1.23.0 · source

    pub fn make_ascii_uppercase(&mut self)

    Converts this slice to its ASCII upper case equivalent in-place.

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

    -

    To uppercase the value in-place, use make_ascii_uppercase.

    -
    1.23.0 · source

    pub fn to_ascii_lowercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte -is mapped to its ASCII lower case equivalent.

    +

    To return a new uppercased value without modifying the existing one, use +to_ascii_uppercase.

    +
    1.23.0 · source

    pub fn make_ascii_lowercase(&mut self)

    Converts this slice to its ASCII lower case equivalent in-place.

    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.

    +

    To return a new lowercased value without modifying the existing one, use +to_ascii_lowercase.

    +
    1.60.0 · source

    pub fn escape_ascii(&self) -> EscapeAscii<'_>

    Returns an iterator that produces an escaped version of this slice, +treating it as an ASCII string.

    +
    Examples
    +
    
    +let s = b"0\t\r\n'\"\\\x9d";
    +let escaped = s.escape_ascii().to_string();
    +assert_eq!(escaped, "0\\t\\r\\n\\'\\\"\\\\\\x9d");
    +
    source

    pub fn trim_ascii_start(&self) -> &[u8]

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

    Returns a byte slice with leading ASCII whitespace bytes removed.

    +

    ‘Whitespace’ refers to the definition used by +u8::is_ascii_whitespace.

    +
    Examples
    +
    #![feature(byte_slice_trim_ascii)]
    +
    +assert_eq!(b" \t hello world\n".trim_ascii_start(), b"hello world\n");
    +assert_eq!(b"  ".trim_ascii_start(), b"");
    +assert_eq!(b"".trim_ascii_start(), b"");
    +
    source

    pub fn trim_ascii_end(&self) -> &[u8]

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

    Returns a byte slice with trailing ASCII whitespace bytes removed.

    +

    ‘Whitespace’ refers to the definition used by +u8::is_ascii_whitespace.

    +
    Examples
    +
    #![feature(byte_slice_trim_ascii)]
    +
    +assert_eq!(b"\r hello world\n ".trim_ascii_end(), b"\r hello world");
    +assert_eq!(b"  ".trim_ascii_end(), b"");
    +assert_eq!(b"".trim_ascii_end(), b"");
    +
    source

    pub fn trim_ascii(&self) -> &[u8]

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

    Returns a byte slice with leading and trailing ASCII whitespace bytes +removed.

    +

    ‘Whitespace’ refers to the definition used by +u8::is_ascii_whitespace.

    +
    Examples
    +
    #![feature(byte_slice_trim_ascii)]
    +
    +assert_eq!(b"\r hello world\n ".trim_ascii(), b"hello world");
    +assert_eq!(b"  ".trim_ascii(), b"");
    +assert_eq!(b"".trim_ascii(), b"");
    +
    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.

    +
    Current implementation
    +

    This uses the same sorting algorithm as sort_unstable_by.

    +
    Examples
    +
    #![feature(sort_floats)]
    +let mut v = [2.6, -5e-8, f64::NAN, 8.29, f64::INFINITY, -1.0, 0.0, -f64::INFINITY, -0.0];
    +
    +v.sort_floats();
    +let sorted = [-f64::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f64::INFINITY, f64::NAN];
    +assert_eq!(&v[..8], &sorted[..8]);
    +assert!(v[8].is_nan());
    1.0.0 · source

    pub fn sort(&mut self)where T: Ord,

    Sorts the slice.

    This sort is stable (i.e., does not reorder equal elements) and O(n * log(n)) worst-case.

    @@ -2444,7 +2434,17 @@
    Examples
    Examples
    assert_eq!(["hello", "world"].connect(" "), "hello world");
     assert_eq!([[1, 2], [3, 4]].connect(&0), [1, 2, 0, 3, 4]);
    -

    Trait Implementations§

    source§

    impl<F: Debug + PrimeFieldBits> Debug for RunningSum<F>

    source§

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

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

    impl<F: PrimeFieldBits> Deref for RunningSum<F>

    §

    type Target = Vec<AssignedCell<F, F>>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Vec<AssignedCell<F, F>>

    Dereferences the value.

    Auto Trait Implementations§

    §

    impl<F> RefUnwindSafe for RunningSum<F>where +

    1.23.0 · source

    pub fn to_ascii_uppercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte +is mapped to its ASCII upper case equivalent.

    +

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

    +

    To uppercase the value in-place, use make_ascii_uppercase.

    +
    1.23.0 · source

    pub fn to_ascii_lowercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte +is mapped to its ASCII lower case equivalent.

    +

    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<F: Debug + PrimeFieldBits> Debug for RunningSum<F>

    source§

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

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

    impl<F: PrimeFieldBits> Deref for RunningSum<F>

    §

    type Target = Vec<AssignedCell<F, F>>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Vec<AssignedCell<F, F>>

    Dereferences the value.

    Auto Trait Implementations§

    §

    impl<F> RefUnwindSafe for RunningSum<F>where F: RefUnwindSafe,

    §

    impl<F> Send for RunningSum<F>

    §

    impl<F> Sync for RunningSum<F>

    §

    impl<F> Unpin for RunningSum<F>where F: Unpin,

    §

    impl<F> UnwindSafe for RunningSum<F>where F: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere @@ -2542,5 +2542,5 @@
    Examples
    V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    source§

    impl<T> SyncDeps for Twhere - T: Send + Sync,

    \ No newline at end of file +[WithDispatch] wrapper. Read more
    §

    impl<T> SyncDeps for Twhere + T: Send + Sync,

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/decompose_running_sum/struct.RunningSumConfig.html b/halo2_gadgets/utilities/decompose_running_sum/struct.RunningSumConfig.html index 6caa42b85a..2fec3ed2d5 100644 --- a/halo2_gadgets/utilities/decompose_running_sum/struct.RunningSumConfig.html +++ b/halo2_gadgets/utilities/decompose_running_sum/struct.RunningSumConfig.html @@ -1,4 +1,4 @@ -RunningSumConfig in halo2_gadgets::utilities::decompose_running_sum - Rust +RunningSumConfig in halo2_gadgets::utilities::decompose_running_sum - Rust
    pub struct RunningSumConfig<F: PrimeFieldBits, const WINDOW_NUM_BITS: usize> { /* private fields */ }
    Expand description

    Configuration that provides methods for running sum decomposition.

    Implementations§

    source§

    impl<F: PrimeFieldBits, const WINDOW_NUM_BITS: usize> RunningSumConfig<F, WINDOW_NUM_BITS>

    source

    pub fn configure( - meta: &mut ConstraintSystem<F>, - q_range_check: Selector, - z: Column<Advice> + meta: &mut ConstraintSystem<F>, + q_range_check: Selector, + z: Column<Advice> ) -> Self

    perm MUST include the advice column z.

    Panics

    Panics if WINDOW_NUM_BITS > 3.

    @@ -25,24 +25,24 @@
    Side-effects

    z will be equality-enabled.

    source

    pub fn witness_decompose( &self, - region: &mut Region<'_, F>, + region: &mut Region<'_, F>, offset: usize, - alpha: Value<F>, + alpha: Value<F>, strict: bool, word_num_bits: usize, num_windows: usize -) -> Result<RunningSum<F>, Error>

    Decompose a field element alpha that is witnessed in this helper.

    +) -> Result<RunningSum<F>, Error>

    Decompose a field element alpha that is witnessed in this helper.

    strict = true constrains the final running sum to be zero, i.e. constrains alpha to be within WINDOW_NUM_BITS * num_windows bits.

    source

    pub fn copy_decompose( &self, - region: &mut Region<'_, F>, + region: &mut Region<'_, F>, offset: usize, - alpha: AssignedCell<F, F>, + alpha: AssignedCell<F, F>, strict: bool, word_num_bits: usize, num_windows: usize -) -> Result<RunningSum<F>, Error>

    Decompose an existing variable alpha that is copied into this helper.

    +) -> Result<RunningSum<F>, Error>

    Decompose an existing variable alpha that is copied into this helper.

    strict = true constrains the final running sum to be zero, i.e. constrains alpha to be within WINDOW_NUM_BITS * num_windows bits.

    Trait Implementations§

    source§

    impl<F: Clone + PrimeFieldBits, const WINDOW_NUM_BITS: usize> Clone for RunningSumConfig<F, WINDOW_NUM_BITS>

    source§

    fn clone(&self) -> RunningSumConfig<F, WINDOW_NUM_BITS>

    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 + PrimeFieldBits, const WINDOW_NUM_BITS: usize> Debug for RunningSumConfig<F, WINDOW_NUM_BITS>

    source§

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

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

    impl<F: PartialEq + PrimeFieldBits, const WINDOW_NUM_BITS: usize> PartialEq for RunningSumConfig<F, WINDOW_NUM_BITS>

    source§

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

    This method tests for self and other values to be equal, and is used @@ -146,5 +146,5 @@
    Side-effects
    V: MultiLane<T>,
    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    source§

    impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

    §

    impl<T> SyncDeps for Twhere T: Send + Sync,

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/fn.bitrange_subset.html b/halo2_gadgets/utilities/fn.bitrange_subset.html index 441e8c1e51..85745ebe48 100644 --- a/halo2_gadgets/utilities/fn.bitrange_subset.html +++ b/halo2_gadgets/utilities/fn.bitrange_subset.html @@ -1,4 +1,4 @@ -bitrange_subset in halo2_gadgets::utilities - Rust +bitrange_subset in halo2_gadgets::utilities - Rust +bool_check in halo2_gadgets::utilities - Rust -
    pub fn bool_check<F: PrimeField>(value: Expression<F>) -> Expression<F>
    Expand description

    Checks that an expression is either 1 or 0.

    +
    pub fn bool_check<F: PrimeField>(value: Expression<F>) -> Expression<F>
    Expand description

    Checks that an expression is either 1 or 0.

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/fn.decompose_word.html b/halo2_gadgets/utilities/fn.decompose_word.html index 8c38222e67..e9190886d9 100644 --- a/halo2_gadgets/utilities/fn.decompose_word.html +++ b/halo2_gadgets/utilities/fn.decompose_word.html @@ -1,4 +1,4 @@ -decompose_word in halo2_gadgets::utilities - Rust +decompose_word in halo2_gadgets::utilities - Rust +i2lebsp in halo2_gadgets::utilities - Rust +lebs2ip in halo2_gadgets::utilities - Rust +range_check in halo2_gadgets::utilities - Rust
    pub fn range_check<F: PrimeField>(
    -    word: Expression<F>,
    +    word: Expression<F>,
         range: usize
    -) -> Expression<F>
    Expand description

    Check that an expression is in the small range [0..range), +) -> Expression<F>

    Expand description

    Check that an expression is in the small range [0..range), i.e. 0 ≤ word < range.

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/fn.ternary.html b/halo2_gadgets/utilities/fn.ternary.html index 393b6e7107..30867d083c 100644 --- a/halo2_gadgets/utilities/fn.ternary.html +++ b/halo2_gadgets/utilities/fn.ternary.html @@ -1,4 +1,4 @@ -ternary in halo2_gadgets::utilities - Rust +ternary in halo2_gadgets::utilities - Rust
    pub fn ternary<F: Field>(
    -    a: Expression<F>,
    -    b: Expression<F>,
    -    c: Expression<F>
    -) -> Expression<F>
    Expand description

    If a then b, else c. Returns (a * b) + (1 - a) * c.

    + a: Expression<F>, + b: Expression<F>, + c: Expression<F> +) -> Expression<F>
    Expand description

    If a then b, else c. Returns (a * b) + (1 - a) * c.

    a must be a boolean-constrained expression.

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/index.html b/halo2_gadgets/utilities/index.html index a57fa78882..85d5a2527c 100644 --- a/halo2_gadgets/utilities/index.html +++ b/halo2_gadgets/utilities/index.html @@ -1,4 +1,4 @@ -halo2_gadgets::utilities - Rust +halo2_gadgets::utilities - Rust +halo2_gadgets::utilities::lookup_range_check - Rust +LookupRangeCheckConfig in halo2_gadgets::utilities::lookup_range_check - Rust
    pub struct LookupRangeCheckConfig<F: PrimeFieldBits, const K: usize> { /* private fields */ }
    Expand description

    Configuration that provides methods for a lookup range check.

    Implementations§

    source§

    impl<F: PrimeFieldBits, const K: usize> LookupRangeCheckConfig<F, K>

    source

    pub fn configure( - meta: &mut ConstraintSystem<F>, - running_sum: Column<Advice>, - table_idx: TableColumn + meta: &mut ConstraintSystem<F>, + running_sum: Column<Advice>, + table_idx: TableColumn ) -> Self

    The running_sum advice column breaks the field element into K-bit words. It is used to construct the input expression to the lookup argument.

    @@ -28,34 +28,34 @@
    Side-effects

    Both the running_sum and constants columns will be equality-enabled.

    source

    pub fn copy_check( &self, - layouter: impl Layouter<F>, - element: AssignedCell<F, F>, + layouter: impl Layouter<F>, + element: AssignedCell<F, F>, num_words: usize, strict: bool -) -> Result<RunningSum<F>, Error>

    Range check on an existing cell that is copied into this helper.

    +) -> Result<RunningSum<F>, Error>

    Range check on an existing cell that is copied into this helper.

    Returns an error if element is not in a column that was passed to -ConstraintSystem::enable_equality during circuit configuration.

    +[ConstraintSystem::enable_equality] during circuit configuration.

    source

    pub fn witness_check( &self, - layouter: impl Layouter<F>, - value: Value<F>, + layouter: impl Layouter<F>, + value: Value<F>, num_words: usize, strict: bool -) -> Result<RunningSum<F>, Error>

    Range check on a value that is witnessed in this helper.

    +) -> Result<RunningSum<F>, Error>

    Range check on a value that is witnessed in this helper.

    source

    pub fn copy_short_check( &self, - layouter: impl Layouter<F>, - element: AssignedCell<F, F>, + layouter: impl Layouter<F>, + element: AssignedCell<F, F>, num_bits: usize -) -> Result<(), Error>

    Short range check on an existing cell that is copied into this helper.

    +) -> Result<(), Error>

    Short range check on an existing cell that is copied into this helper.

    Panics

    Panics if NUM_BITS is equal to or larger than K.

    source

    pub fn witness_short_check( &self, - layouter: impl Layouter<F>, - element: Value<F>, + layouter: impl Layouter<F>, + element: Value<F>, num_bits: usize -) -> Result<AssignedCell<F, F>, Error>

    Short range check on value that is witnessed in this helper.

    +) -> Result<AssignedCell<F, F>, Error>

    Short range check on value that is witnessed in this helper.

    Panics

    Panics if num_bits is larger than K.

    Trait Implementations§

    source§

    impl<F: Clone + PrimeFieldBits, const K: usize> Clone for LookupRangeCheckConfig<F, K>

    source§

    fn clone(&self) -> LookupRangeCheckConfig<F, K>

    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 + PrimeFieldBits, const K: usize> Debug for LookupRangeCheckConfig<F, K>

    source§

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

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

    impl<F: PartialEq + PrimeFieldBits, const K: usize> PartialEq for LookupRangeCheckConfig<F, K>

    source§

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

    This method tests for self and other values to be equal, and is used @@ -159,5 +159,5 @@
    Panics
    V: MultiLane<T>,
    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    source§

    impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

    §

    impl<T> SyncDeps for Twhere T: Send + Sync,

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/lookup_range_check/struct.RunningSum.html b/halo2_gadgets/utilities/lookup_range_check/struct.RunningSum.html index a64caa84ba..128e3e6ee3 100644 --- a/halo2_gadgets/utilities/lookup_range_check/struct.RunningSum.html +++ b/halo2_gadgets/utilities/lookup_range_check/struct.RunningSum.html @@ -1,4 +1,4 @@ -RunningSum in halo2_gadgets::utilities::lookup_range_check - Rust +RunningSum in halo2_gadgets::utilities::lookup_range_check - Rust
    pub struct RunningSum<F: PrimeFieldBits>(/* private fields */);
    Expand description

    The running sum $[z_0, …, z_W]$. If created in strict mode, $z_W = 0$.

    -

    Methods from Deref<Target = Vec<AssignedCell<F, F>>>§

    1.0.0 · source

    pub fn capacity(&self) -> usize

    Returns the total number of elements the vector can hold without +

    Methods from Deref<Target = Vec<AssignedCell<F, F>>>§

    1.0.0 · source

    pub fn capacity(&self) -> usize

    Returns the total number of elements the vector can hold without reallocating.

    Examples
    let mut vec: Vec<i32> = Vec::with_capacity(10);
    @@ -76,94 +76,15 @@ 
    Examples
    v.push(1); assert!(!v.is_empty());
    -

    Methods from Deref<Target = [T]>§

    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 f32::total_cmp.

    -
    Current implementation
    -

    This uses the same sorting algorithm as sort_unstable_by.

    -
    Examples
    -
    #![feature(sort_floats)]
    -let mut v = [2.6, -5e-8, f32::NAN, 8.29, f32::INFINITY, -1.0, 0.0, -f32::INFINITY, -0.0];
    -
    -v.sort_floats();
    -let sorted = [-f32::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f32::INFINITY, f32::NAN];
    -assert_eq!(&v[..8], &sorted[..8]);
    -assert!(v[8].is_nan());
    -
    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.

    -
    Current implementation
    -

    This uses the same sorting algorithm as sort_unstable_by.

    -
    Examples
    -
    #![feature(sort_floats)]
    -let mut v = [2.6, -5e-8, f64::NAN, 8.29, f64::INFINITY, -1.0, 0.0, -f64::INFINITY, -0.0];
    -
    -v.sort_floats();
    -let sorted = [-f64::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f64::INFINITY, f64::NAN];
    -assert_eq!(&v[..8], &sorted[..8]);
    -assert!(v[8].is_nan());
    -
    1.23.0 · source

    pub fn is_ascii(&self) -> bool

    Checks if all bytes in this slice are within the ASCII range.

    -
    source

    pub fn as_ascii(&self) -> Option<&[AsciiChar]>

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

    If this slice is_ascii, returns it as a slice of -ASCII characters, otherwise returns None.

    -
    source

    pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar]

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

    Converts this slice of bytes into a slice of ASCII characters, -without checking whether they’re valid.

    -
    Safety
    -

    Every byte in the slice must be in 0..=127, or else this is UB.

    -
    1.23.0 · source

    pub fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool

    Checks that two slices are an ASCII case-insensitive match.

    -

    Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), -but without allocating and copying temporaries.

    -
    1.23.0 · source

    pub fn make_ascii_uppercase(&mut self)

    Converts this slice to its ASCII upper case equivalent in-place.

    -

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

    -

    To return a new uppercased value without modifying the existing one, use -to_ascii_uppercase.

    -
    1.23.0 · source

    pub fn make_ascii_lowercase(&mut self)

    Converts this slice to its ASCII lower case equivalent in-place.

    -

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

    -

    To return a new lowercased value without modifying the existing one, use -to_ascii_lowercase.

    -
    1.60.0 · source

    pub fn escape_ascii(&self) -> EscapeAscii<'_>

    Returns an iterator that produces an escaped version of this slice, -treating it as an ASCII string.

    -
    Examples
    -
    
    -let s = b"0\t\r\n'\"\\\x9d";
    -let escaped = s.escape_ascii().to_string();
    -assert_eq!(escaped, "0\\t\\r\\n\\'\\\"\\\\\\x9d");
    -
    source

    pub fn trim_ascii_start(&self) -> &[u8]

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

    Returns a byte slice with leading ASCII whitespace bytes removed.

    -

    ‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

    -
    Examples
    -
    #![feature(byte_slice_trim_ascii)]
    -
    -assert_eq!(b" \t hello world\n".trim_ascii_start(), b"hello world\n");
    -assert_eq!(b"  ".trim_ascii_start(), b"");
    -assert_eq!(b"".trim_ascii_start(), b"");
    -
    source

    pub fn trim_ascii_end(&self) -> &[u8]

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

    Returns a byte slice with trailing ASCII whitespace bytes removed.

    -

    ‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

    -
    Examples
    -
    #![feature(byte_slice_trim_ascii)]
    -
    -assert_eq!(b"\r hello world\n ".trim_ascii_end(), b"\r hello world");
    -assert_eq!(b"  ".trim_ascii_end(), b"");
    -assert_eq!(b"".trim_ascii_end(), b"");
    -
    source

    pub fn trim_ascii(&self) -> &[u8]

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

    Returns a byte slice with leading and trailing ASCII whitespace bytes -removed.

    -

    ‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

    -
    Examples
    -
    #![feature(byte_slice_trim_ascii)]
    -
    -assert_eq!(b"\r hello world\n ".trim_ascii(), b"hello world");
    -assert_eq!(b"  ".trim_ascii(), b"");
    -assert_eq!(b"".trim_ascii(), b"");
    +

    Methods from Deref<Target = [T]>§

    source

    pub fn as_str(&self) -> &str

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

    Views this slice of ASCII characters as a UTF-8 str.

    +
    source

    pub fn as_bytes(&self) -> &[u8]

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

    Views this slice of ASCII characters as a slice of u8 bytes.

    source

    pub fn flatten(&self) -> &[T]

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

    Takes a &[[T; N]], and flattens it to a &[T].

    Panics

    This panics if the length of the resulting slice would overflow a usize.

    This is only possible when flattening a slice of arrays of zero-sized types, and thus tends to be irrelevant in practice. If size_of::<T>() > 0, this will never panic.

    -
    Examples
    +
    Examples
    #![feature(slice_flatten)]
     
     assert_eq!([[1, 2, 3], [4, 5, 6]].flatten(), &[1, 2, 3, 4, 5, 6]);
    @@ -184,7 +105,7 @@ 
    Panics

    This is only possible when flattening a slice of arrays of zero-sized types, and thus tends to be irrelevant in practice. If size_of::<T>() > 0, this will never panic.

    -
    Examples
    +
    Examples
    #![feature(slice_flatten)]
     
     fn add_5_to_all(slice: &mut [i32]) {
    @@ -196,23 +117,36 @@ 
    Examples
    let mut array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; add_5_to_all(array.flatten_mut()); assert_eq!(array, [[6, 7, 8], [9, 10, 11], [12, 13, 14]]);
    +
    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 f32::total_cmp.

    +
    Current implementation
    +

    This uses the same sorting algorithm as sort_unstable_by.

    +
    Examples
    +
    #![feature(sort_floats)]
    +let mut v = [2.6, -5e-8, f32::NAN, 8.29, f32::INFINITY, -1.0, 0.0, -f32::INFINITY, -0.0];
    +
    +v.sort_floats();
    +let sorted = [-f32::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f32::INFINITY, f32::NAN];
    +assert_eq!(&v[..8], &sorted[..8]);
    +assert!(v[8].is_nan());
    1.0.0 · source

    pub fn len(&self) -> usize

    Returns the number of elements in the slice.

    -
    Examples
    +
    Examples
    let a = [1, 2, 3];
     assert_eq!(a.len(), 3);
    1.0.0 · source

    pub fn is_empty(&self) -> bool

    Returns true if the slice has a length of 0.

    -
    Examples
    +
    Examples
    let a = [1, 2, 3];
     assert!(!a.is_empty());
    1.0.0 · source

    pub fn first(&self) -> Option<&T>

    Returns the first element of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert_eq!(Some(&10), v.first());
     
     let w: &[i32] = &[];
     assert_eq!(None, w.first());
    1.0.0 · source

    pub fn first_mut(&mut self) -> Option<&mut T>

    Returns a mutable pointer to the first element of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let x = &mut [0, 1, 2];
     
     if let Some(first) = x.first_mut() {
    @@ -220,7 +154,7 @@ 
    Examples
    } assert_eq!(x, &[5, 1, 2]);
    1.5.0 · source

    pub fn split_first(&self) -> Option<(&T, &[T])>

    Returns the first and all the rest of the elements of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let x = &[0, 1, 2];
     
     if let Some((first, elements)) = x.split_first() {
    @@ -228,7 +162,7 @@ 
    Examples
    assert_eq!(elements, &[1, 2]); }
    1.5.0 · source

    pub fn split_first_mut(&mut self) -> Option<(&mut T, &mut [T])>

    Returns the first and all the rest of the elements of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let x = &mut [0, 1, 2];
     
     if let Some((first, elements)) = x.split_first_mut() {
    @@ -238,7 +172,7 @@ 
    Examples
    } assert_eq!(x, &[3, 4, 5]);
    1.5.0 · source

    pub fn split_last(&self) -> Option<(&T, &[T])>

    Returns the last and all the rest of the elements of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let x = &[0, 1, 2];
     
     if let Some((last, elements)) = x.split_last() {
    @@ -246,7 +180,7 @@ 
    Examples
    assert_eq!(elements, &[0, 1]); }
    1.5.0 · source

    pub fn split_last_mut(&mut self) -> Option<(&mut T, &mut [T])>

    Returns the last and all the rest of the elements of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let x = &mut [0, 1, 2];
     
     if let Some((last, elements)) = x.split_last_mut() {
    @@ -256,14 +190,14 @@ 
    Examples
    } assert_eq!(x, &[4, 5, 3]);
    1.0.0 · source

    pub fn last(&self) -> Option<&T>

    Returns the last element of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert_eq!(Some(&30), v.last());
     
     let w: &[i32] = &[];
     assert_eq!(None, w.last());
    1.0.0 · source

    pub fn last_mut(&mut self) -> Option<&mut T>

    Returns a mutable pointer to the last item in the slice.

    -
    Examples
    +
    Examples
    let x = &mut [0, 1, 2];
     
     if let Some(last) = x.last_mut() {
    @@ -271,7 +205,7 @@ 
    Examples
    } assert_eq!(x, &[0, 1, 10]);
    source

    pub fn first_chunk<const N: usize>(&self) -> Option<&[T; N]>

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

    Returns the first N elements of the slice, or None if it has fewer than N elements.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let u = [10, 40, 30];
    @@ -284,7 +218,7 @@ 
    Examples
    assert_eq!(Some(&[]), w.first_chunk::<0>());
    source

    pub fn first_chunk_mut<const N: usize>(&mut self) -> Option<&mut [T; N]>

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

    Returns a mutable reference to the first N elements of the slice, or None if it has fewer than N elements.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let x = &mut [0, 1, 2];
    @@ -296,7 +230,7 @@ 
    Examples
    assert_eq!(x, &[5, 4, 2]);
    source

    pub fn split_first_chunk<const N: usize>(&self) -> Option<(&[T; N], &[T])>

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

    Returns the first N elements of the slice and the remainder, or None if it has fewer than N elements.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let x = &[0, 1, 2];
    @@ -309,7 +243,7 @@ 
    Examples
    &mut self ) -> Option<(&mut [T; N], &mut [T])>
    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns a mutable reference to the first N elements of the slice and the remainder, or None if it has fewer than N elements.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let x = &mut [0, 1, 2];
    @@ -322,7 +256,7 @@ 
    Examples
    assert_eq!(x, &[3, 4, 5]);
    source

    pub fn split_last_chunk<const N: usize>(&self) -> Option<(&[T; N], &[T])>

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

    Returns the last N elements of the slice and the remainder, or None if it has fewer than N elements.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let x = &[0, 1, 2];
    @@ -334,7 +268,7 @@ 
    Examples
    source

    pub fn split_last_chunk_mut<const N: usize>( &mut self ) -> Option<(&mut [T; N], &mut [T])>

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

    Returns the last and all the rest of the elements of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let x = &mut [0, 1, 2];
    @@ -346,7 +280,7 @@ 
    Examples
    } assert_eq!(x, &[5, 3, 4]);
    source

    pub fn last_chunk<const N: usize>(&self) -> Option<&[T; N]>

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

    Returns the last element of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let u = [10, 40, 30];
    @@ -358,7 +292,7 @@ 
    Examples
    let w: &[i32] = &[]; assert_eq!(Some(&[]), w.last_chunk::<0>());
    source

    pub fn last_chunk_mut<const N: usize>(&mut self) -> Option<&mut [T; N]>

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

    Returns a mutable pointer to the last item in the slice.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let x = &mut [0, 1, 2];
    @@ -377,7 +311,7 @@ 
    Examples
  • If given a range, returns the subslice corresponding to that range, or None if out of bounds.
  • -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert_eq!(Some(&40), v.get(1));
     assert_eq!(Some(&[10, 40][..]), v.get(0..2));
    @@ -389,7 +323,7 @@ 
    Examples
    ) -> Option<&mut <I as SliceIndex<[T]>>::Output>where I: SliceIndex<[T]>,

    Returns a mutable reference to an element or subslice depending on the type of index (see get) or None if the index is out of bounds.

    -
    Examples
    +
    Examples
    let x = &mut [0, 1, 2];
     
     if let Some(elem) = x.get_mut(1) {
    @@ -403,10 +337,10 @@ 
    Examples
    I: SliceIndex<[T]>,

    Returns a reference to an element or subslice, without doing bounds checking.

    For a safe alternative see get.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used.

    -
    Examples
    +
    Examples
    let x = &[1, 2, 4];
     
     unsafe {
    @@ -419,10 +353,10 @@ 
    Examples
    I: SliceIndex<[T]>,

    Returns a mutable reference to an element or subslice, without doing bounds checking.

    For a safe alternative see get_mut.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used.

    -
    Examples
    +
    Examples
    let x = &mut [1, 2, 4];
     
     unsafe {
    @@ -438,7 +372,7 @@ 
    Examples
    derived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

    Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid.

    -
    Examples
    +
    Examples
    let x = &[1, 2, 4];
     let x_ptr = x.as_ptr();
     
    @@ -452,7 +386,7 @@ 
    Examples
    function returns, or else it will end up pointing to garbage.

    Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid.

    -
    Examples
    +
    Examples
    let x = &mut [1, 2, 4];
     let x_ptr = x.as_mut_ptr();
     
    @@ -502,7 +436,7 @@ 
    Arguments
    Panics

    Panics if a or b are out of bounds.

    -
    Examples
    +
    Examples
    let mut v = ["a", "b", "c", "d", "e"];
     v.swap(2, 4);
     assert!(v == ["a", "b", "e", "d", "c"]);
    @@ -513,10 +447,10 @@
    Arguments
  • a - The index of the first element
  • b - The index of the second element
  • -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior. The caller has to ensure that a < self.len() and b < self.len().

    -
    Examples
    +
    Examples
    #![feature(slice_swap_unchecked)]
     
     let mut v = ["a", "b", "c", "d"];
    @@ -524,13 +458,13 @@ 
    Examples
    unsafe { v.swap_unchecked(1, 3) }; assert!(v == ["a", "d", "c", "b"]);
    1.0.0 · source

    pub fn reverse(&mut self)

    Reverses the order of elements in the slice, in place.

    -
    Examples
    +
    Examples
    let mut v = [1, 2, 3];
     v.reverse();
     assert!(v == [3, 2, 1]);
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, T>

    Returns an iterator over the slice.

    The iterator yields all items from start to end.

    -
    Examples
    +
    Examples
    let x = &[1, 2, 4];
     let mut iterator = x.iter();
     
    @@ -540,7 +474,7 @@ 
    Examples
    assert_eq!(iterator.next(), None);
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, T>

    Returns an iterator that allows modifying each value.

    The iterator yields all items from start to end.

    -
    Examples
    +
    Examples
    let x = &mut [1, 2, 4];
     for elem in x.iter_mut() {
         *elem += 2;
    @@ -551,7 +485,7 @@ 
    Examples
    size, the iterator returns no values.

    Panics

    Panics if size is 0.

    -
    Examples
    +
    Examples
    let slice = ['r', 'u', 's', 't'];
     let mut iter = slice.windows(2);
     assert_eq!(iter.next().unwrap(), &['r', 'u']);
    @@ -586,7 +520,7 @@ 
    Examples
    slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.chunks(2);
     assert_eq!(iter.next().unwrap(), &['l', 'o']);
    @@ -602,7 +536,7 @@ 
    Examples
    the end of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -624,7 +558,7 @@ 
    Examples
    chunk, and rchunks_exact for the same iterator but starting at the end of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.chunks_exact(2);
     assert_eq!(iter.next().unwrap(), &['l', 'o']);
    @@ -643,7 +577,7 @@ 
    Examples
    the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -656,13 +590,13 @@ 
    Examples
    assert_eq!(v, &[1, 1, 2, 2, 0]);
    source

    pub unsafe fn as_chunks_unchecked<const N: usize>(&self) -> &[[T; N]]

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

    Splits the slice into a slice of N-element arrays, assuming that there’s no remainder.

    -
    Safety
    +
    Safety

    This may only be called when

    • The slice splits exactly into N-element chunks (aka self.len() % N == 0).
    • N != 0.
    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice: &[char] = &['l', 'o', 'r', 'e', 'm', '!'];
     let chunks: &[[char; 1]] =
    @@ -683,7 +617,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice = ['l', 'o', 'r', 'e', 'm'];
     let (chunks, remainder) = slice.as_chunks();
    @@ -704,7 +638,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice = ['l', 'o', 'r', 'e', 'm'];
     let (remainder, chunks) = slice.as_rchunks();
    @@ -719,7 +653,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(array_chunks)]
     let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.array_chunks();
    @@ -731,13 +665,13 @@ 
    Examples
    &mut self ) -> &mut [[T; N]]
    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, assuming that there’s no remainder.

    -
    Safety
    +
    Safety

    This may only be called when

    • The slice splits exactly into N-element chunks (aka self.len() % N == 0).
    • N != 0.
    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice: &mut [char] = &mut ['l', 'o', 'r', 'e', 'm', '!'];
     let chunks: &mut [[char; 1]] =
    @@ -760,7 +694,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
    @@ -778,7 +712,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
    @@ -799,7 +733,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(array_chunks)]
     let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
    @@ -816,7 +750,7 @@ 
    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(array_windows)]
     let slice = [0, 1, 2, 3];
     let mut iter = slice.array_windows();
    @@ -833,7 +767,7 @@ 
    Examples
    of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.rchunks(2);
     assert_eq!(iter.next().unwrap(), &['e', 'm']);
    @@ -849,7 +783,7 @@ 
    Examples
    beginning of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -872,7 +806,7 @@ 
    Examples
    slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.rchunks_exact(2);
     assert_eq!(iter.next().unwrap(), &['e', 'm']);
    @@ -891,7 +825,7 @@ 
    Examples
    of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -908,7 +842,7 @@ 
    Examples

    The predicate is called on two elements following themselves, it means the predicate is called on slice[0] and slice[1] then on slice[1] and slice[2] and so on.

    -
    Examples
    +
    Examples
    #![feature(slice_group_by)]
     
     let slice = &[1, 1, 1, 3, 3, 2, 2, 2];
    @@ -937,7 +871,7 @@ 
    Examples

    The predicate is called on two elements following themselves, it means the predicate is called on slice[0] and slice[1] then on slice[1] and slice[2] and so on.

    -
    Examples
    +
    Examples
    #![feature(slice_group_by)]
     
     let slice = &mut [1, 1, 1, 3, 3, 2, 2, 2];
    @@ -966,7 +900,7 @@ 
    Examples
    indices from [mid, len) (excluding the index len itself).

    Panics

    Panics if mid > len.

    -
    Examples
    +
    Examples
    let v = [1, 2, 3, 4, 5, 6];
     
     {
    @@ -992,7 +926,7 @@ 
    Examples
    indices from [mid, len) (excluding the index len itself).

    Panics

    Panics if mid > len.

    -
    Examples
    +
    Examples
    let mut v = [1, 0, 3, 0, 5, 6];
     let (left, right) = v.split_at_mut(2);
     assert_eq!(left, [1, 0]);
    @@ -1005,11 +939,11 @@ 
    Examples
    the index mid itself) and the second will contain all indices from [mid, len) (excluding the index len itself).

    For a safe alternative see split_at.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used. The caller has to ensure that 0 <= mid <= self.len().

    -
    Examples
    +
    Examples
    #![feature(slice_split_at_unchecked)]
     
     let v = [1, 2, 3, 4, 5, 6];
    @@ -1039,11 +973,11 @@ 
    Examples
    the index mid itself) and the second will contain all indices from [mid, len) (excluding the index len itself).

    For a safe alternative see split_at_mut.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used. The caller has to ensure that 0 <= mid <= self.len().

    -
    Examples
    +
    Examples
    #![feature(slice_split_at_unchecked)]
     
     let mut v = [1, 0, 3, 0, 5, 6];
    @@ -1062,7 +996,7 @@ 
    Examples
    indices from [N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let v = &[1, 2, 3, 4, 5, 6][..];
    @@ -1090,7 +1024,7 @@ 
    Examples
    indices from [N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let mut v = &mut [1, 0, 3, 0, 5, 6][..];
    @@ -1107,7 +1041,7 @@ 
    Examples
    indices from [len - N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let v = &[1, 2, 3, 4, 5, 6][..];
    @@ -1136,7 +1070,7 @@ 
    Examples
    indices from [len - N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let mut v = &mut [1, 0, 3, 0, 5, 6][..];
    @@ -1149,7 +1083,7 @@ 
    Examples
    1.0.0 · source

    pub fn split<F>(&self, pred: F) -> Split<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let slice = [10, 40, 33, 20];
     let mut iter = slice.split(|num| num % 3 == 0);
     
    @@ -1180,7 +1114,7 @@ 
    Examples
    1.0.0 · source

    pub fn split_mut<F>(&mut self, pred: F) -> SplitMut<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let mut v = [10, 40, 30, 20, 60, 50];
     
     for group in v.split_mut(|num| *num % 3 == 0) {
    @@ -1191,7 +1125,7 @@ 
    Examples
    F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred. The matched element is contained in the end of the previous subslice as a terminator.

    -
    Examples
    +
    Examples
    let slice = [10, 40, 33, 20];
     let mut iter = slice.split_inclusive(|num| num % 3 == 0);
     
    @@ -1212,7 +1146,7 @@ 
    Examples
    F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred. The matched element is contained in the previous subslice as a terminator.

    -
    Examples
    +
    Examples
    let mut v = [10, 40, 30, 20, 60, 50];
     
     for group in v.split_inclusive_mut(|num| *num % 3 == 0) {
    @@ -1224,7 +1158,7 @@ 
    Examples
    F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let slice = [11, 22, 33, 0, 44, 55];
     let mut iter = slice.rsplit(|num| *num == 0);
     
    @@ -1245,7 +1179,7 @@ 
    Examples
    F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let mut v = [100, 400, 300, 200, 600, 500];
     
     let mut count = 0;
    @@ -1260,7 +1194,7 @@ 
    Examples
    not contained in the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples

    Print the slice split once by numbers divisible by 3 (i.e., [10, 40], [20, 60, 50]):

    @@ -1275,7 +1209,7 @@
    Examples
    not contained in the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples
    let mut v = [10, 40, 30, 20, 60, 50];
     
     for group in v.splitn_mut(2, |num| *num % 3 == 0) {
    @@ -1289,7 +1223,7 @@ 
    Examples
    the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples

    Print the slice split once, starting from the end, by numbers divisible by 3 (i.e., [50], [10, 40, 30, 20]):

    @@ -1305,7 +1239,7 @@
    Examples
    the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples
    let mut s = [10, 40, 30, 20, 60, 50];
     
     for group in s.rsplitn_mut(2, |num| *num % 3 == 0) {
    @@ -1318,7 +1252,7 @@ 
    Examples

    If any matching elements are resent in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns None.

    -
    Examples
    +
    Examples
    #![feature(slice_split_once)]
     let s = [1, 2, 3, 2, 4];
     assert_eq!(s.split_once(|&x| x == 2), Some((
    @@ -1332,7 +1266,7 @@ 
    Examples

    If any matching elements are resent in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns None.

    -
    Examples
    +
    Examples
    #![feature(slice_split_once)]
     let s = [1, 2, 3, 2, 4];
     assert_eq!(s.rsplit_once(|&x| x == 2), Some((
    @@ -1344,7 +1278,7 @@ 
    Examples
    T: PartialEq,

    Returns true if the slice contains an element with the given value.

    This operation is O(n).

    Note that if you have a sorted slice, binary_search may be faster.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert!(v.contains(&30));
     assert!(!v.contains(&50));
    @@ -1357,7 +1291,7 @@
    Examples
    assert!(!v.iter().any(|e| e == "hi"));
    1.0.0 · source

    pub fn starts_with(&self, needle: &[T]) -> boolwhere T: PartialEq,

    Returns true if needle is a prefix of the slice.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert!(v.starts_with(&[10]));
     assert!(v.starts_with(&[10, 40]));
    @@ -1371,7 +1305,7 @@ 
    Examples
    assert!(v.starts_with(&[]));
    1.0.0 · source

    pub fn ends_with(&self, needle: &[T]) -> boolwhere T: PartialEq,

    Returns true if needle is a suffix of the slice.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert!(v.ends_with(&[30]));
     assert!(v.ends_with(&[40, 30]));
    @@ -1389,7 +1323,7 @@ 
    Examples

    If the slice starts with prefix, returns the subslice after the prefix, wrapped in Some. If prefix is empty, simply returns the original slice.

    If the slice does not start with prefix, returns None.

    -
    Examples
    +
    Examples
    let v = &[10, 40, 30];
     assert_eq!(v.strip_prefix(&[10]), Some(&[40, 30][..]));
     assert_eq!(v.strip_prefix(&[10, 40]), Some(&[30][..]));
    @@ -1405,7 +1339,7 @@ 
    Examples

    If the slice ends with suffix, returns the subslice before the suffix, wrapped in Some. If suffix is empty, simply returns the original slice.

    If the slice does not end with suffix, returns None.

    -
    Examples
    +
    Examples
    let v = &[10, 40, 30];
     assert_eq!(v.strip_suffix(&[30]), Some(&[10, 40][..]));
     assert_eq!(v.strip_suffix(&[40, 30]), Some(&[10][..]));
    @@ -1423,7 +1357,7 @@ 
    Examples
    the index where a matching element could be inserted while maintaining sorted order.

    See also binary_search_by, binary_search_by_key, and partition_point.

    -
    Examples
    +
    Examples

    Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in [1, 4].

    @@ -1480,7 +1414,7 @@
    Examples
    the index where a matching element could be inserted while maintaining sorted order.

    See also binary_search, binary_search_by_key, and partition_point.

    -
    Examples
    +
    Examples

    Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in [1, 4].

    @@ -1515,7 +1449,7 @@
    Examples
    the index where a matching element could be inserted while maintaining sorted order.

    See also binary_search, binary_search_by, and partition_point.

    -
    Examples
    +
    Examples

    Looks up a series of four elements in a slice of pairs sorted by their second elements. The first is found, with a uniquely determined position; the second and third are not found; the @@ -1534,7 +1468,7 @@

    Examples
    T: Ord,

    Sorts the slice, but might not preserve the order of equal elements.

    This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not allocate), and O(n * log(n)) worst-case.

    -
    Current implementation
    +
    Current implementation

    The current algorithm is based on pattern-defeating quicksort by Orson Peters, which combines the fast average case of randomized quicksort with the fast worst case of heapsort, while achieving linear time on slices with certain patterns. It uses some @@ -1542,7 +1476,7 @@

    Current im deterministic behavior.

    It is typically faster than stable sorting, except in a few special cases, e.g., when the slice consists of several concatenated sorted sequences.

    -
    Examples
    +
    Examples
    let mut v = [-5, 4, 1, -3, 2];
     
     v.sort_unstable();
    @@ -1565,7 +1499,7 @@ 
    Examples
    let mut floats = [5f64, 4.0, 1.0, 3.0, 2.0];
     floats.sort_unstable_by(|a, b| a.partial_cmp(b).unwrap());
     assert_eq!(floats, [1.0, 2.0, 3.0, 4.0, 5.0]);
    -
    Current implementation
    +
    Current implementation

    The current algorithm is based on pattern-defeating quicksort by Orson Peters, which combines the fast average case of randomized quicksort with the fast worst case of heapsort, while achieving linear time on slices with certain patterns. It uses some @@ -1573,7 +1507,7 @@

    Current im deterministic behavior.

    It is typically faster than stable sorting, except in a few special cases, e.g., when the slice consists of several concatenated sorted sequences.

    -
    Examples
    +
    Examples
    let mut v = [5, 4, 1, 3, 2];
     v.sort_unstable_by(|a, b| a.cmp(b));
     assert!(v == [1, 2, 3, 4, 5]);
    @@ -1588,7 +1522,7 @@ 
    Examples

    This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not allocate), and O(m * n * log(n)) worst-case, where the key function is O(m).

    -
    Current implementation
    +
    Current implementation

    The current algorithm is based on pattern-defeating quicksort by Orson Peters, which combines the fast average case of randomized quicksort with the fast worst case of heapsort, while achieving linear time on slices with certain patterns. It uses some @@ -1597,7 +1531,7 @@

    Current im

    Due to its key calling strategy, sort_unstable_by_key is likely to be slower than sort_by_cached_key in cases where the key function is expensive.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     v.sort_unstable_by_key(|k| k.abs());
    @@ -1616,13 +1550,13 @@ 
    Examples
    the subslice prior to index, the element at index, and the subslice after index; accordingly, the values in those two subslices will respectively all be less-than-or-equal-to and greater-than-or-equal-to the value of the element at index.

    -
    Current implementation
    +
    Current implementation

    The current algorithm is an introselect implementation based on Pattern Defeating Quicksort, which is also the basis for sort_unstable. The fallback algorithm is Median of Medians using Tukey’s Ninther for pivot selection, which guarantees linear runtime for all inputs.

    Panics

    Panics when index >= len(), meaning it always panics on empty slices.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     // Find the median
    @@ -1651,13 +1585,13 @@ 
    Examples
    index, the element at index, and the subslice after index; accordingly, the values in those two subslices will respectively all be less-than-or-equal-to and greater-than-or-equal-to the value of the element at index.

    -
    Current implementation
    +
    Current implementation

    The current algorithm is an introselect implementation based on Pattern Defeating Quicksort, which is also the basis for sort_unstable. The fallback algorithm is Median of Medians using Tukey’s Ninther for pivot selection, which guarantees linear runtime for all inputs.

    Panics

    Panics when index >= len(), meaning it always panics on empty slices.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     // Find the median as if the slice were sorted in descending order.
    @@ -1687,13 +1621,13 @@ 
    Examples
    index, the element at index, and the subslice after index; accordingly, the values in those two subslices will respectively all be less-than-or-equal-to and greater-than-or-equal-to the value of the element at index.

    -
    Current implementation
    +
    Current implementation

    The current algorithm is an introselect implementation based on Pattern Defeating Quicksort, which is also the basis for sort_unstable. The fallback algorithm is Median of Medians using Tukey’s Ninther for pivot selection, which guarantees linear runtime for all inputs.

    Panics

    Panics when index >= len(), meaning it always panics on empty slices.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     // Return the median as if the array were sorted according to absolute value.
    @@ -1711,7 +1645,7 @@ 
    Examples

    Returns two slices. The first contains no consecutive repeated elements. The second contains all the duplicates in no specified order.

    If the slice is sorted, the first returned slice contains no duplicates.

    -
    Examples
    +
    Examples
    #![feature(slice_partition_dedup)]
     
     let mut slice = [1, 2, 2, 3, 3, 2, 1, 1];
    @@ -1730,7 +1664,7 @@ 
    Examples
    from their order in the slice, so if same_bucket(a, b) returns true, a is moved at the end of the slice.

    If the slice is sorted, the first returned slice contains no duplicates.

    -
    Examples
    +
    Examples
    #![feature(slice_partition_dedup)]
     
     let mut slice = ["foo", "Foo", "BAZ", "Bar", "bar", "baz", "BAZ"];
    @@ -1746,7 +1680,7 @@ 
    Examples

    Returns two slices. The first contains no consecutive repeated elements. The second contains all the duplicates in no specified order.

    If the slice is sorted, the first returned slice contains no duplicates.

    -
    Examples
    +
    Examples
    #![feature(slice_partition_dedup)]
     
     let mut slice = [10, 20, 21, 30, 30, 20, 11, 13];
    @@ -1765,7 +1699,7 @@ 
    Panics
    rotation.

    Complexity

    Takes linear (in self.len()) time.

    -
    Examples
    +
    Examples
    let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];
     a.rotate_left(2);
     assert_eq!(a, ['c', 'd', 'e', 'f', 'a', 'b']);
    @@ -1784,7 +1718,7 @@
    Panics
    rotation.

    Complexity

    Takes linear (in self.len()) time.

    -
    Examples
    +
    Examples
    let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];
     a.rotate_right(2);
     assert_eq!(a, ['e', 'f', 'a', 'b', 'c', 'd']);
    @@ -1795,7 +1729,7 @@
    Examples
    assert_eq!(a, ['a', 'e', 'b', 'c', 'd', 'f']);
    1.50.0 · source

    pub fn fill(&mut self, value: T)where T: Clone,

    Fills self with elements by cloning value.

    -
    Examples
    +
    Examples
    let mut buf = vec![0; 10];
     buf.fill(1);
     assert_eq!(buf, vec![1; 10]);
    @@ -1805,7 +1739,7 @@
    Examples
    Clone a given value, use fill. If you want to use the Default trait to generate values, you can pass Default::default as the argument.

    -
    Examples
    +
    Examples
    let mut buf = vec![1; 10];
     buf.fill_with(Default::default);
     assert_eq!(buf, vec![0; 10]);
    @@ -1814,7 +1748,7 @@
    Examples

    The length of src must be the same as self.

    Panics

    This function will panic if the two slices have different lengths.

    -
    Examples
    +
    Examples

    Cloning two elements from a slice into another:

    let src = [1, 2, 3, 4];
    @@ -1852,7 +1786,7 @@ 
    Examples

    If T does not implement Copy, use clone_from_slice.

    Panics

    This function will panic if the two slices have different lengths.

    -
    Examples
    +
    Examples

    Copying two elements from a slice into another:

    let src = [1, 2, 3, 4];
    @@ -1895,7 +1829,7 @@ 
    Examples
    Panics

    This function will panic if either range exceeds the end of the slice, or if the end of src is before the start.

    -
    Examples
    +
    Examples

    Copying four bytes within a slice:

    let mut bytes = *b"Hello, World!";
    @@ -1945,10 +1879,10 @@ 
    Example
    in a default (debug or release) execution will return a maximal middle part.

    This method has no purpose when either input element T or output element U are zero-sized and will return the original slice without splitting anything.

    -
    Safety
    +
    Safety

    This method is essentially a transmute with respect to the elements in the returned middle slice, so all the usual caveats pertaining to transmute::<T, U> also apply here.

    -
    Examples
    +
    Examples

    Basic usage:

    unsafe {
    @@ -1968,10 +1902,10 @@ 
    Examples
    in a default (debug or release) execution will return a maximal middle part.

    This method has no purpose when either input element T or output element U are zero-sized and will return the original slice without splitting anything.

    -
    Safety
    +
    Safety

    This method is essentially a transmute with respect to the elements in the returned middle slice, so all the usual caveats pertaining to transmute::<T, U> also apply here.

    -
    Examples
    +
    Examples

    Basic usage:

    unsafe {
    @@ -2004,7 +1938,7 @@ 
    Panics
    supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like LANES == 3.

    -
    Examples
    +
    Examples
    #![feature(portable_simd)]
     use core::simd::SimdFloat;
     
    @@ -2066,7 +2000,7 @@ 
    Panics

    Note that if Self::Item is only PartialOrd, but not Ord, the above definition implies that this function returns false if any two consecutive items are not comparable.

    -
    Examples
    +
    Examples
    #![feature(is_sorted)]
     let empty: [i32; 0] = [];
     
    @@ -2086,7 +2020,7 @@ 
    Examples

    Instead of comparing the slice’s elements directly, this function compares the keys of the elements, as determined by f. Apart from that, it’s equivalent to is_sorted; see its documentation for more information.

    -
    Examples
    +
    Examples
    #![feature(is_sorted)]
     
     assert!(["c", "bb", "aaa"].is_sorted_by_key(|s| s.len()));
    @@ -2102,7 +2036,7 @@ 
    Examples

    If this slice is not partitioned, the returned result is unspecified and meaningless, as this method performs a kind of binary search.

    See also binary_search, binary_search_by, and binary_search_by_key.

    -
    Examples
    +
    Examples
    let v = [1, 2, 3, 3, 5, 6, 7];
     let i = v.partition_point(|&x| x < 5);
     
    @@ -2131,7 +2065,7 @@ 
    Examples
    range is out of bounds.

    Note that this method only accepts one-sided ranges such as 2.. or ..6, but not 2..6.

    -
    Examples
    +
    Examples

    Taking the first three elements of a slice:

    #![feature(slice_take)]
    @@ -2168,7 +2102,7 @@ 
    Examples
    range is out of bounds.

    Note that this method only accepts one-sided ranges such as 2.. or ..6, but not 2..6.

    -
    Examples
    +
    Examples

    Taking the first three elements of a slice:

    #![feature(slice_take)]
    @@ -2201,7 +2135,7 @@ 
    Examples
    source

    pub fn take_first<'a>(self: &mut &'a [T]) -> Option<&'a T>

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

    Removes the first element of the slice and returns a reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &[_] = &['a', 'b', 'c'];
    @@ -2212,7 +2146,7 @@ 
    Examples
    source

    pub fn take_first_mut<'a>(self: &mut &'a mut [T]) -> Option<&'a mut T>

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

    Removes the first element of the slice and returns a mutable reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &mut [_] = &mut ['a', 'b', 'c'];
    @@ -2224,7 +2158,7 @@ 
    Examples
    source

    pub fn take_last<'a>(self: &mut &'a [T]) -> Option<&'a T>

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

    Removes the last element of the slice and returns a reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &[_] = &['a', 'b', 'c'];
    @@ -2235,7 +2169,7 @@ 
    Examples
    source

    pub fn take_last_mut<'a>(self: &mut &'a mut [T]) -> Option<&'a mut T>

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

    Removes the last element of the slice and returns a mutable reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &mut [_] = &mut ['a', 'b', 'c'];
    @@ -2249,10 +2183,10 @@ 
    Examples
    indices: [usize; N] ) -> [&mut T; N]
    🔬This is a nightly-only experimental API. (get_many_mut)

    Returns mutable references to many indices at once, without doing any checks.

    For a safe alternative see get_many_mut.

    -
    Safety
    +
    Safety

    Calling this method with overlapping or out-of-bounds indices is undefined behavior even if the resulting references are not used.

    -
    Examples
    +
    Examples
    #![feature(get_many_mut)]
     
     let x = &mut [1, 2, 4];
    @@ -2269,7 +2203,7 @@ 
    Examples
    ) -> Result<[&mut T; N], GetManyMutError<N>>
    🔬This is a nightly-only experimental API. (get_many_mut)

    Returns mutable references to many indices at once.

    Returns an error if any index is out-of-bounds, or if the same index was passed more than once.

    -
    Examples
    +
    Examples
    #![feature(get_many_mut)]
     
     let v = &mut [1, 2, 3];
    @@ -2278,18 +2212,74 @@ 
    Examples
    *b = 612; } assert_eq!(v, &[413, 2, 612]);
    -
    source

    pub fn as_str(&self) -> &str

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

    Views this slice of ASCII characters as a UTF-8 str.

    -
    source

    pub fn as_bytes(&self) -> &[u8]

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

    Views this slice of ASCII characters as a slice of u8 bytes.

    -
    1.23.0 · source

    pub fn to_ascii_uppercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte -is mapped to its ASCII upper case equivalent.

    +
    1.23.0 · source

    pub fn is_ascii(&self) -> bool

    Checks if all bytes in this slice are within the ASCII range.

    +
    source

    pub fn as_ascii(&self) -> Option<&[AsciiChar]>

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

    If this slice is_ascii, returns it as a slice of +ASCII characters, otherwise returns None.

    +
    source

    pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar]

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

    Converts this slice of bytes into a slice of ASCII characters, +without checking whether they’re valid.

    +
    Safety
    +

    Every byte in the slice must be in 0..=127, or else this is UB.

    +
    1.23.0 · source

    pub fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool

    Checks that two slices are an ASCII case-insensitive match.

    +

    Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

    +
    1.23.0 · source

    pub fn make_ascii_uppercase(&mut self)

    Converts this slice to its ASCII upper case equivalent in-place.

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

    -

    To uppercase the value in-place, use make_ascii_uppercase.

    -
    1.23.0 · source

    pub fn to_ascii_lowercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte -is mapped to its ASCII lower case equivalent.

    +

    To return a new uppercased value without modifying the existing one, use +to_ascii_uppercase.

    +
    1.23.0 · source

    pub fn make_ascii_lowercase(&mut self)

    Converts this slice to its ASCII lower case equivalent in-place.

    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.

    +

    To return a new lowercased value without modifying the existing one, use +to_ascii_lowercase.

    +
    1.60.0 · source

    pub fn escape_ascii(&self) -> EscapeAscii<'_>

    Returns an iterator that produces an escaped version of this slice, +treating it as an ASCII string.

    +
    Examples
    +
    
    +let s = b"0\t\r\n'\"\\\x9d";
    +let escaped = s.escape_ascii().to_string();
    +assert_eq!(escaped, "0\\t\\r\\n\\'\\\"\\\\\\x9d");
    +
    source

    pub fn trim_ascii_start(&self) -> &[u8]

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

    Returns a byte slice with leading ASCII whitespace bytes removed.

    +

    ‘Whitespace’ refers to the definition used by +u8::is_ascii_whitespace.

    +
    Examples
    +
    #![feature(byte_slice_trim_ascii)]
    +
    +assert_eq!(b" \t hello world\n".trim_ascii_start(), b"hello world\n");
    +assert_eq!(b"  ".trim_ascii_start(), b"");
    +assert_eq!(b"".trim_ascii_start(), b"");
    +
    source

    pub fn trim_ascii_end(&self) -> &[u8]

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

    Returns a byte slice with trailing ASCII whitespace bytes removed.

    +

    ‘Whitespace’ refers to the definition used by +u8::is_ascii_whitespace.

    +
    Examples
    +
    #![feature(byte_slice_trim_ascii)]
    +
    +assert_eq!(b"\r hello world\n ".trim_ascii_end(), b"\r hello world");
    +assert_eq!(b"  ".trim_ascii_end(), b"");
    +assert_eq!(b"".trim_ascii_end(), b"");
    +
    source

    pub fn trim_ascii(&self) -> &[u8]

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

    Returns a byte slice with leading and trailing ASCII whitespace bytes +removed.

    +

    ‘Whitespace’ refers to the definition used by +u8::is_ascii_whitespace.

    +
    Examples
    +
    #![feature(byte_slice_trim_ascii)]
    +
    +assert_eq!(b"\r hello world\n ".trim_ascii(), b"hello world");
    +assert_eq!(b"  ".trim_ascii(), b"");
    +assert_eq!(b"".trim_ascii(), b"");
    +
    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.

    +
    Current implementation
    +

    This uses the same sorting algorithm as sort_unstable_by.

    +
    Examples
    +
    #![feature(sort_floats)]
    +let mut v = [2.6, -5e-8, f64::NAN, 8.29, f64::INFINITY, -1.0, 0.0, -f64::INFINITY, -0.0];
    +
    +v.sort_floats();
    +let sorted = [-f64::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f64::INFINITY, f64::NAN];
    +assert_eq!(&v[..8], &sorted[..8]);
    +assert!(v[8].is_nan());
    1.0.0 · source

    pub fn sort(&mut self)where T: Ord,

    Sorts the slice.

    This sort is stable (i.e., does not reorder equal elements) and O(n * log(n)) worst-case.

    @@ -2444,7 +2434,17 @@
    Examples
    Examples
    assert_eq!(["hello", "world"].connect(" "), "hello world");
     assert_eq!([[1, 2], [3, 4]].connect(&0), [1, 2, 0, 3, 4]);
    -

    Trait Implementations§

    source§

    impl<F: Debug + PrimeFieldBits> Debug for RunningSum<F>

    source§

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

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

    impl<F: PrimeFieldBits> Deref for RunningSum<F>

    §

    type Target = Vec<AssignedCell<F, F>>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Vec<AssignedCell<F, F>>

    Dereferences the value.

    Auto Trait Implementations§

    §

    impl<F> RefUnwindSafe for RunningSum<F>where +

    1.23.0 · source

    pub fn to_ascii_uppercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte +is mapped to its ASCII upper case equivalent.

    +

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

    +

    To uppercase the value in-place, use make_ascii_uppercase.

    +
    1.23.0 · source

    pub fn to_ascii_lowercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte +is mapped to its ASCII lower case equivalent.

    +

    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<F: Debug + PrimeFieldBits> Debug for RunningSum<F>

    source§

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

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

    impl<F: PrimeFieldBits> Deref for RunningSum<F>

    §

    type Target = Vec<AssignedCell<F, F>>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Vec<AssignedCell<F, F>>

    Dereferences the value.

    Auto Trait Implementations§

    §

    impl<F> RefUnwindSafe for RunningSum<F>where F: RefUnwindSafe,

    §

    impl<F> Send for RunningSum<F>

    §

    impl<F> Sync for RunningSum<F>

    §

    impl<F> Unpin for RunningSum<F>where F: Unpin,

    §

    impl<F> UnwindSafe for RunningSum<F>where F: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere @@ -2542,5 +2542,5 @@
    Examples
    V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    source§

    impl<T> SyncDeps for Twhere - T: Send + Sync,

    \ No newline at end of file +[WithDispatch] wrapper. Read more
    §

    impl<T> SyncDeps for Twhere + T: Send + Sync,

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/struct.RangeConstrained.html b/halo2_gadgets/utilities/struct.RangeConstrained.html index 03486a92e8..c5ad7e8ee2 100644 --- a/halo2_gadgets/utilities/struct.RangeConstrained.html +++ b/halo2_gadgets/utilities/struct.RangeConstrained.html @@ -1,4 +1,4 @@ -RangeConstrained in halo2_gadgets::utilities - Rust +RangeConstrained in halo2_gadgets::utilities - Rust
    pub struct RangeConstrained<F: Field, T: FieldValue<F>> { /* private fields */ }
    Expand description

    A type representing a range-constrained field element.

    -

    Implementations§

    source§

    impl<F: PrimeFieldBits> RangeConstrained<F, AssignedCell<F, F>>

    source

    pub fn witness_short<const K: usize>( +

    Implementations§

    source§

    impl<F: PrimeFieldBits> RangeConstrained<F, AssignedCell<F, F>>

    source

    pub fn witness_short<const K: usize>( lookup_config: &LookupRangeCheckConfig<F, K>, - layouter: impl Layouter<F>, - value: Value<&F>, + layouter: impl Layouter<F>, + value: Value<&F>, bitrange: Range<usize> -) -> Result<Self, Error>

    Witnesses a subset of the bits in value and constrains them to be the correct +) -> Result<Self, Error>

    Witnesses a subset of the bits in value and constrains them to be the correct number of bits.

    Panics

    Panics if bitrange.len() >= K.

    source§

    impl<F: Field, T: FieldValue<F>> RangeConstrained<F, T>

    source

    pub fn inner(&self) -> &T

    Returns the range-constrained inner type.

    source

    pub fn num_bits(&self) -> usize

    Returns the number of bits to which this cell is constrained.

    -
    source§

    impl<F: PrimeFieldBits> RangeConstrained<F, Value<F>>

    source

    pub fn bitrange_of(value: Value<&F>, bitrange: Range<usize>) -> Self

    Constructs a RangeConstrained<Value<F>> as a bitrange of the given value.

    -
    source§

    impl<F: Field> RangeConstrained<F, AssignedCell<F, F>>

    source

    pub fn unsound_unchecked(cell: AssignedCell<F, F>, num_bits: usize) -> Self

    Constructs a RangeConstrained<AssignedCell<F, F>> without verifying that the +

    source§

    impl<F: PrimeFieldBits> RangeConstrained<F, Value<F>>

    source

    pub fn bitrange_of(value: Value<&F>, bitrange: Range<usize>) -> Self

    Constructs a RangeConstrained<Value<F>> as a bitrange of the given value.

    +
    source§

    impl<F: Field> RangeConstrained<F, AssignedCell<F, F>>

    source

    pub fn unsound_unchecked(cell: AssignedCell<F, F>, num_bits: usize) -> Self

    Constructs a RangeConstrained<AssignedCell<F, F>> without verifying that the cell is correctly range constrained.

    This API only exists to ease with integrating this type into existing circuits, and will likely be removed in future.

    -
    source

    pub fn value(&self) -> RangeConstrained<F, Value<F>>

    Extracts the range-constrained value from this range-constrained cell.

    +
    source

    pub fn value(&self) -> RangeConstrained<F, Value<F>>

    Extracts the range-constrained value from this range-constrained cell.

    Trait Implementations§

    source§

    impl<F: Clone + Field, T: Clone + FieldValue<F>> Clone for RangeConstrained<F, T>

    source§

    fn clone(&self) -> RangeConstrained<F, T>

    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, T: Debug + FieldValue<F>> Debug for RangeConstrained<F, T>

    source§

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

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

    impl<F: Copy + Field, T: Copy + FieldValue<F>> Copy for RangeConstrained<F, T>

    Auto Trait Implementations§

    §

    impl<F, T> RefUnwindSafe for RangeConstrained<F, T>where F: RefUnwindSafe, T: RefUnwindSafe,

    §

    impl<F, T> Send for RangeConstrained<F, T>where @@ -135,5 +135,5 @@
    Panics
    V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    source§

    impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

    §

    impl<T> SyncDeps for Twhere T: Send + Sync,

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/trait.FieldValue.html b/halo2_gadgets/utilities/trait.FieldValue.html index 1f5e1e3691..08ff481a73 100644 --- a/halo2_gadgets/utilities/trait.FieldValue.html +++ b/halo2_gadgets/utilities/trait.FieldValue.html @@ -1,4 +1,4 @@ -FieldValue in halo2_gadgets::utilities - Rust +FieldValue in halo2_gadgets::utilities - Rust
    pub trait FieldValue<F: Field> {
         // Required method
    -    fn value(&self) -> Value<&F>;
    +    fn value(&self) -> Value<&F>;
     }
    Expand description

    A type that has a value at either keygen or proving time.

    -

    Required Methods§

    source

    fn value(&self) -> Value<&F>

    Returns the value of this type.

    -

    Implementations on Foreign Types§

    source§

    impl<F: Field> FieldValue<F> for AssignedCell<F, F>

    source§

    fn value(&self) -> Value<&F>

    source§

    impl<F: Field> FieldValue<F> for Value<F>

    source§

    fn value(&self) -> Value<&F>

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn value(&self) -> Value<&F>

    Returns the value of this type.

    +

    Implementations on Foreign Types§

    source§

    impl<F: Field> FieldValue<F> for AssignedCell<F, F>

    source§

    fn value(&self) -> Value<&F>

    source§

    impl<F: Field> FieldValue<F> for Value<F>

    source§

    fn value(&self) -> Value<&F>

    Implementors§

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/trait.UtilitiesInstructions.html b/halo2_gadgets/utilities/trait.UtilitiesInstructions.html index 8eda7ed6c0..839c164198 100644 --- a/halo2_gadgets/utilities/trait.UtilitiesInstructions.html +++ b/halo2_gadgets/utilities/trait.UtilitiesInstructions.html @@ -1,4 +1,4 @@ -UtilitiesInstructions in halo2_gadgets::utilities - Rust +UtilitiesInstructions in halo2_gadgets::utilities - Rust \ No newline at end of file + Commit: CommitDomains<Affine, F, Hash>,
    §

    type Var = AssignedCell<Fp, Fp>

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/trait.Var.html b/halo2_gadgets/utilities/trait.Var.html index 223a72ef01..756e9b4377 100644 --- a/halo2_gadgets/utilities/trait.Var.html +++ b/halo2_gadgets/utilities/trait.Var.html @@ -1,4 +1,4 @@ -Var in halo2_gadgets::utilities - Rust +Var in halo2_gadgets::utilities - Rust -
    pub trait Var<F: Field>: Clone + Debug + From<AssignedCell<F, F>> {
    +
    pub trait Var<F: Field>: Clone + Debug + From<AssignedCell<F, F>> {
         // Required methods
    -    fn cell(&self) -> Cell;
    -    fn value(&self) -> Value<F>;
    +    fn cell(&self) -> Cell;
    +    fn value(&self) -> Value<F>;
     }
    Expand description

    Trait for a variable in the circuit.

    -

    Required Methods§

    source

    fn cell(&self) -> Cell

    The cell at which this variable was allocated.

    -
    source

    fn value(&self) -> Value<F>

    The value allocated to this variable.

    -

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl<F: Field> Var<F> for AssignedCell<F, F>

    source§

    fn cell(&self) -> Cell

    source§

    fn value(&self) -> Value<F>

    Implementors§

    source§

    impl<F: Field> Var<F> for StateWord<F>

    \ No newline at end of file +

    Required Methods§

    source

    fn cell(&self) -> Cell

    The cell at which this variable was allocated.

    +
    source

    fn value(&self) -> Value<F>

    The value allocated to this variable.

    +

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl<F: Field> Var<F> for AssignedCell<F, F>

    source§

    fn cell(&self) -> Cell

    source§

    fn value(&self) -> Value<F>

    Implementors§

    source§

    impl<F: Field> Var<F> for StateWord<F>

    \ No newline at end of file diff --git a/halo2_proofs/all.html b/halo2_proofs/all.html index aba687edb6..3d26434517 100644 --- a/halo2_proofs/all.html +++ b/halo2_proofs/all.html @@ -1,4 +1,4 @@ -List of all items in this crate +List of all items in this crate +best_fft in halo2_proofs::arithmetic - Rust +best_multiexp in halo2_proofs::arithmetic - Rust +compute_inner_product in halo2_proofs::arithmetic - Rust +eval_polynomial in halo2_proofs::arithmetic - Rust +g_to_lagrange in halo2_proofs::arithmetic - Rust +kate_division in halo2_proofs::arithmetic - Rust +lagrange_interpolate in halo2_proofs::arithmetic - Rust +parallelize in halo2_proofs::arithmetic - Rust +recursive_butterfly_arithmetic in halo2_proofs::arithmetic - Rust +small_multiexp in halo2_proofs::arithmetic - Rust +halo2_proofs::arithmetic - Rust +CurveAffine in halo2_proofs::arithmetic - Rust +CurveExt in halo2_proofs::arithmetic - Rust +FftGroup in halo2_proofs::arithmetic - Rust +Field in halo2_proofs::arithmetic - Rust +halo2_proofs::circuit::floor_planner - Rust +V1 in halo2_proofs::circuit::floor_planner - Rust +V1Pass in halo2_proofs::circuit::floor_planner - Rust +halo2_proofs::circuit - Rust +RegionColumn in halo2_proofs::circuit::layouter - Rust +halo2_proofs::circuit::layouter - Rust +RegionShape in halo2_proofs::circuit::layouter - Rust +RegionLayouter in halo2_proofs::circuit::layouter - Rust +SyncDeps in halo2_proofs::circuit::layouter - Rust +TableLayouter in halo2_proofs::circuit::layouter - Rust +AssignedCell in halo2_proofs::circuit - Rust +Cell in halo2_proofs::circuit - Rust +NamespacedLayouter in halo2_proofs::circuit - Rust +Region in halo2_proofs::circuit - Rust +RegionIndex in halo2_proofs::circuit - Rust +RegionStart in halo2_proofs::circuit - Rust +SimpleFloorPlanner in halo2_proofs::circuit - Rust +SimpleTableLayouter in halo2_proofs::circuit - Rust +Table in halo2_proofs::circuit - Rust +Value in halo2_proofs::circuit - Rust +Chip in halo2_proofs::circuit - Rust +Layouter in halo2_proofs::circuit - Rust +TableLayouter in halo2_proofs::circuit - Rust +halo2_proofs::dev::cost - Rust +CircuitCost in halo2_proofs::dev::cost - Rust +MarginalProofSize in halo2_proofs::dev::cost - Rust +ProofSize in halo2_proofs::dev::cost - Rust +CellValue in halo2_proofs::dev - Rust +FailureLocation in halo2_proofs::dev - Rust +VerifyFailure in halo2_proofs::dev - Rust +circuit_dot_graph in halo2_proofs::dev - Rust +halo2_proofs::dev - Rust +halo2_proofs::dev::metadata - Rust +Column in halo2_proofs::dev::metadata - Rust +Constraint in halo2_proofs::dev::metadata - Rust
    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 StructuralEq for Constraint

    source§

    impl StructuralPartialEq for Constraint

    Auto Trait Implementations§

    Blanket Implementations§

    source§

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

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere diff --git a/halo2_proofs/dev/metadata/struct.Gate.html b/halo2_proofs/dev/metadata/struct.Gate.html index 8a87fce831..657e503c63 100644 --- a/halo2_proofs/dev/metadata/struct.Gate.html +++ b/halo2_proofs/dev/metadata/struct.Gate.html @@ -1,4 +1,4 @@ -Gate in halo2_proofs::dev::metadata - Rust +Gate in halo2_proofs::dev::metadata - Rust

    Struct halo2_proofs::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 StructuralEq for Gate

    source§

    impl StructuralPartialEq for Gate

    Auto Trait Implementations§

    §

    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 Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere diff --git a/halo2_proofs/dev/metadata/struct.Region.html b/halo2_proofs/dev/metadata/struct.Region.html index 73d5e8e57f..61a3144bc1 100644 --- a/halo2_proofs/dev/metadata/struct.Region.html +++ b/halo2_proofs/dev/metadata/struct.Region.html @@ -1,4 +1,4 @@ -Region in halo2_proofs::dev::metadata - Rust +Region in halo2_proofs::dev::metadata - Rust
    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<Column, 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<Column, 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<Column, 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<Column, 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_proofs/dev/metadata/struct.VirtualCell.html b/halo2_proofs/dev/metadata/struct.VirtualCell.html index 4e4d596a0b..1d19d4668a 100644 --- a/halo2_proofs/dev/metadata/struct.VirtualCell.html +++ b/halo2_proofs/dev/metadata/struct.VirtualCell.html @@ -1,4 +1,4 @@ -VirtualCell in halo2_proofs::dev::metadata - Rust +VirtualCell in halo2_proofs::dev::metadata - Rust
    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 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<(Column, 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, Column, 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) -> Selfwhere +

    Trait Implementations§

    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<(Column, 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, Column, 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) -> Selfwhere Self: Sized,

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

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

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

    fn clamp(self, min: Self, max: Self) -> Selfwhere 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_proofs/dev/struct.CircuitGates.html b/halo2_proofs/dev/struct.CircuitGates.html index 4876555564..56b3d4dd84 100644 --- a/halo2_proofs/dev/struct.CircuitGates.html +++ b/halo2_proofs/dev/struct.CircuitGates.html @@ -1,4 +1,4 @@ -CircuitGates in halo2_proofs::dev - Rust +CircuitGates in halo2_proofs::dev - Rust +CircuitLayout in halo2_proofs::dev - Rust +MockProver in halo2_proofs::dev - Rust +TracingFloorPlanner in halo2_proofs::dev - Rust +SerdeFormat in halo2_proofs - Rust +halo2_proofs - Rust +Any in halo2_proofs::plonk - Rust +Assigned in halo2_proofs::plonk - Rust +Error in halo2_proofs::plonk - Rust +Expression in halo2_proofs::plonk - Rust +TableError in halo2_proofs::plonk - Rust +create_proof in halo2_proofs::plonk - Rust +keygen_pk in halo2_proofs::plonk - Rust +keygen_vk in halo2_proofs::plonk - Rust +keygen_vk_custom in halo2_proofs::plonk - Rust +verify_proof in halo2_proofs::plonk - Rust +halo2_proofs::plonk - Rust +halo2_proofs::plonk::permutation - Rust +Argument in halo2_proofs::plonk::permutation - Rust +Assembly in halo2_proofs::plonk::permutation - Rust +VerifyingKey in halo2_proofs::plonk::permutation - Rust +Advice in halo2_proofs::plonk - Rust +AdviceQuery in halo2_proofs::plonk - Rust +BatchVerifier in halo2_proofs::plonk - Rust +Challenge in halo2_proofs::plonk - Rust +Column in halo2_proofs::plonk - Rust +Constraint in halo2_proofs::plonk - Rust +ConstraintSystem in halo2_proofs::plonk - Rust
    pub struct ConstraintSystem<F: Field> { /* private fields */ }
    Expand description

    This is a description of the circuit environment, such as the gate, column and permutation arrangements.

    -

    Implementations§

    source§

    impl<F: Field> ConstraintSystem<F>

    source

    pub fn pinned(&self) -> PinnedConstraintSystem<'_, F>

    Obtain a pinned version of this constraint system; a structure with the +

    Implementations§

    source§

    impl<F: Field> ConstraintSystem<F>

    source

    pub fn pinned(&self) -> PinnedConstraintSystem<'_, F>

    Obtain a pinned version of this constraint system; a structure with the minimal parameters needed to determine the rest of the constraint system.

    -
    source

    pub fn enable_constant(&mut self, column: Column<Fixed>)

    Enables this fixed column to be used for global constant assignments.

    +
    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 lookup<S: AsRef<str>>( +

    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, table_map: impl FnOnce(&mut VirtualCells<'_, F>) -> Vec<(Expression<F>, TableColumn)> ) -> usize

    Add a lookup argument for some input expressions and table columns.

    table_map returns a map between input expressions and the table columns they need to match.

    -
    source

    pub fn lookup_any<S: AsRef<str>>( +

    source

    pub fn lookup_any<S: AsRef<str>>( &mut self, name: S, table_map: impl FnOnce(&mut VirtualCells<'_, F>) -> Vec<(Expression<F>, Expression<F>)> ) -> usize

    Add a lookup argument for some input expressions and table expressions.

    table_map returns a map between input expressions and the table expressions they need to match.

    -
    source

    pub fn shuffle<S: AsRef<str>>( +

    source

    pub fn shuffle<S: AsRef<str>>( &mut self, 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 set_minimum_degree(&mut self, degree: usize)

    Sets the minimum degree required by the circuit, which can be set to a +

    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>>( +

    source

    pub fn create_gate<C: Into<Constraint<F>>, Iter: IntoIterator<Item = C>, S: AsRef<str>>( &mut self, name: S, constraints: impl FnOnce(&mut VirtualCells<'_, F>) -> Iter @@ -52,7 +52,7 @@

    Side-effects
    Panics

    A gate is required to contain polynomial constraints. This method will panic if constraints returns an empty iterator.

    -
    source

    pub fn compress_selectors( +

    source

    pub fn compress_selectors( self, selectors: Vec<Vec<bool>> ) -> (Self, Vec<Vec<F>>)

    This will compress selectors together depending on their provided @@ -61,62 +61,66 @@

    Panics
    polynomials for those columns. Finally, an internal map is updated to find which fixed column corresponds with a given Selector.

    Do not call this twice. Yes, this should be a builder pattern instead.

    -
    source

    pub fn directly_convert_selectors_to_fixed( +

    source

    pub fn directly_convert_selectors_to_fixed( self, selectors: Vec<Vec<bool>> ) -> (Self, Vec<Vec<F>>)

    Does not combine selectors and directly replaces them everywhere with fixed columns.

    -
    source

    pub fn selector(&mut self) -> Selector

    Allocate a new (simple) selector. Simple selectors cannot be added to +

    source

    pub fn selector(&mut self) -> Selector

    Allocate a new (simple) selector. Simple selectors cannot be added to expressions nor multiplied by other expressions containing simple selectors. Also, simple selectors may not appear in lookup argument inputs.

    -
    source

    pub fn complex_selector(&mut self) -> Selector

    Allocate a new complex selector that can appear anywhere +

    source

    pub fn complex_selector(&mut self) -> Selector

    Allocate a new complex selector that can appear anywhere within expressions.

    -
    source

    pub fn lookup_table_column(&mut self) -> TableColumn

    Allocates a new fixed column that can be used in a lookup table.

    -
    source

    pub fn annotate_lookup_column<A, AR>( +

    source

    pub fn lookup_table_column(&mut self) -> TableColumn

    Allocates a new fixed column that can be used in a lookup table.

    +
    source

    pub fn annotate_lookup_column<A, AR>( &mut self, column: TableColumn, annotation: A )where A: Fn() -> AR, AR: Into<String>,

    Annotate a Lookup column.

    -
    source

    pub fn annotate_lookup_any_column<A, AR, T>(&mut self, column: T, annotation: A)where +

    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.

    -
    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

    -
    source

    pub fn unblinded_advice_column_in<P: Phase>( +

    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

    +
    source

    pub fn unblinded_advice_column_in<P: Phase>( &mut self, phase: P ) -> Column<Advice>

    Allocate a new unblinded advice column in given phase. This allows for the generation of deterministic commitments to advice columns which can be used to split large circuits into smaller ones, whose proofs can then be “joined” together by their common witness commitments.

    -
    source

    pub fn advice_column_in<P: Phase>(&mut self, phase: P) -> Column<Advice>

    Allocate a new advice column in given phase

    -
    source

    pub fn instance_column(&mut self) -> Column<Instance>

    Allocate a new instance column

    -
    source

    pub fn challenge_usable_after<P: Phase>(&mut self, phase: P) -> Challenge

    Requests a challenge that is usable after the given phase.

    -
    source

    pub fn degree(&self) -> usize

    Compute the degree of the constraint system (the maximum degree of all +

    source

    pub fn advice_column_in<P: Phase>(&mut self, phase: P) -> Column<Advice>

    Allocate a new advice column in given phase

    +
    Panics
    +

    It panics if previous phase before the given one doesn’t have advice column allocated.

    +
    source

    pub fn instance_column(&mut self) -> Column<Instance>

    Allocate a new instance column

    +
    source

    pub fn challenge_usable_after<P: Phase>(&mut self, phase: P) -> Challenge

    Requests a challenge that is usable after the given phase.

    +
    Panics
    +

    It panics if the given phase doesn’t have advice column allocated.

    +
    source

    pub fn degree(&self) -> usize

    Compute the degree of the constraint system (the maximum degree of all constraints).

    -
    source

    pub fn blinding_factors(&self) -> usize

    Compute the number of blinding factors necessary to perfectly blind +

    source

    pub fn blinding_factors(&self) -> usize

    Compute the number of blinding factors necessary to perfectly blind each of the prover’s witness polynomials.

    -
    source

    pub fn minimum_rows(&self) -> usize

    Returns the minimum necessary rows that need to exist in order to +

    source

    pub fn minimum_rows(&self) -> usize

    Returns the minimum necessary rows that need to exist in order to account for e.g. blinding factors.

    -
    source

    pub fn num_fixed_columns(&self) -> usize

    Returns number of fixed columns

    -
    source

    pub fn num_advice_columns(&self) -> usize

    Returns number of advice columns

    -
    source

    pub fn num_instance_columns(&self) -> usize

    Returns number of instance columns

    -
    source

    pub fn num_selectors(&self) -> usize

    Returns number of selectors

    -
    source

    pub fn num_challenges(&self) -> usize

    Returns number of challenges

    -
    source

    pub fn advice_column_phase(&self) -> Vec<u8>

    Returns phase of advice columns

    -
    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<Column, 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 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

    Auto Trait Implementations§

    §

    impl<F> RefUnwindSafe for ConstraintSystem<F>where +

    source

    pub fn num_fixed_columns(&self) -> usize

    Returns number of fixed columns

    +
    source

    pub fn num_advice_columns(&self) -> usize

    Returns number of advice columns

    +
    source

    pub fn num_instance_columns(&self) -> usize

    Returns number of instance columns

    +
    source

    pub fn num_selectors(&self) -> usize

    Returns number of selectors

    +
    source

    pub fn num_challenges(&self) -> usize

    Returns number of challenges

    +
    source

    pub fn advice_column_phase(&self) -> Vec<u8>

    Returns phase of advice columns

    +
    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<Column, 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 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

    Auto Trait Implementations§

    §

    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 Twhere diff --git a/halo2_proofs/plonk/struct.Constraints.html b/halo2_proofs/plonk/struct.Constraints.html index b76f087129..910e80f4f7 100644 --- a/halo2_proofs/plonk/struct.Constraints.html +++ b/halo2_proofs/plonk/struct.Constraints.html @@ -1,4 +1,4 @@ -Constraints in halo2_proofs::plonk - Rust +Constraints in halo2_proofs::plonk - Rust +FirstPhase in halo2_proofs::plonk - Rust +Fixed in halo2_proofs::plonk - Rust +FixedQuery in halo2_proofs::plonk - Rust +Gate in halo2_proofs::plonk - Rust +Instance in halo2_proofs::plonk - Rust +InstanceQuery in halo2_proofs::plonk - Rust +PinnedConstraintSystem in halo2_proofs::plonk - Rust
    pub struct PinnedConstraintSystem<'a, F: Field> { /* private fields */ }
    Expand description

    Represents the minimal parameters that determine a ConstraintSystem.

    -

    Trait Implementations§

    source§

    impl<'a, F: Field> Debug for PinnedConstraintSystem<'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> RefUnwindSafe for PinnedConstraintSystem<'a, F>where +

    Trait Implementations§

    source§

    impl<'a, F: Field> Debug for PinnedConstraintSystem<'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> RefUnwindSafe for PinnedConstraintSystem<'a, F>where F: RefUnwindSafe,

    §

    impl<'a, F> Send for PinnedConstraintSystem<'a, F>

    §

    impl<'a, F> Sync for PinnedConstraintSystem<'a, F>

    §

    impl<'a, F> Unpin for PinnedConstraintSystem<'a, F>

    §

    impl<'a, F> UnwindSafe for PinnedConstraintSystem<'a, F>where F: RefUnwindSafe,

    Blanket Implementations§

    source§

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

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere diff --git a/halo2_proofs/plonk/struct.PinnedVerificationKey.html b/halo2_proofs/plonk/struct.PinnedVerificationKey.html index 9f2f0248ab..b0a0612f15 100644 --- a/halo2_proofs/plonk/struct.PinnedVerificationKey.html +++ b/halo2_proofs/plonk/struct.PinnedVerificationKey.html @@ -1,4 +1,4 @@ -PinnedVerificationKey in halo2_proofs::plonk - Rust +PinnedVerificationKey in halo2_proofs::plonk - Rust +ProvingKey in halo2_proofs::plonk - Rust +SecondPhase in halo2_proofs::plonk - Rust +Selector in halo2_proofs::plonk - Rust +TableColumn in halo2_proofs::plonk - Rust +ThirdPhase in halo2_proofs::plonk - Rust +VerifyingKey in halo2_proofs::plonk - Rust +VirtualCell in halo2_proofs::plonk - Rust +VirtualCells in halo2_proofs::plonk - Rust -
    pub struct VirtualCells<'a, F: Field> { /* private fields */ }
    Expand description

    Exposes the “virtual cells” that can be queried while creating a custom gate or lookup +

    pub struct VirtualCells<'a, F: Field> { /* private fields */ }
    Expand description

    Exposes the “virtual cells” that can be queried while creating a custom gate or lookup table.

    -

    Implementations§

    source§

    impl<'a, F: Field> VirtualCells<'a, F>

    source

    pub fn query_selector(&mut self, selector: Selector) -> Expression<F>

    Query a selector at the current position.

    -
    source

    pub fn query_fixed( +

    Implementations§

    source§

    impl<'a, F: Field> VirtualCells<'a, F>

    source

    pub fn query_selector(&mut self, selector: Selector) -> Expression<F>

    Query a selector at the current position.

    +
    source

    pub fn query_fixed( &mut self, column: Column<Fixed>, at: Rotation ) -> Expression<F>

    Query a fixed column at a relative position

    -
    source

    pub fn query_advice( +

    source

    pub fn query_advice( &mut self, column: Column<Advice>, at: Rotation ) -> Expression<F>

    Query an advice column at a relative position

    -
    source

    pub fn query_instance( +

    source

    pub fn query_instance( &mut self, column: Column<Instance>, 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 ) -> 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> RefUnwindSafe for VirtualCells<'a, F>where +

    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> RefUnwindSafe for VirtualCells<'a, F>where F: RefUnwindSafe,

    §

    impl<'a, F> Send for VirtualCells<'a, F>

    §

    impl<'a, F> Sync for VirtualCells<'a, F>

    §

    impl<'a, F> Unpin for VirtualCells<'a, F>

    §

    impl<'a, F> !UnwindSafe for VirtualCells<'a, F>

    Blanket Implementations§

    source§

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

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

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

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere diff --git a/halo2_proofs/plonk/trait.Assignment.html b/halo2_proofs/plonk/trait.Assignment.html index 726faae375..19866b0f00 100644 --- a/halo2_proofs/plonk/trait.Assignment.html +++ b/halo2_proofs/plonk/trait.Assignment.html @@ -1,4 +1,4 @@ -Assignment in halo2_proofs::plonk - Rust +Assignment in halo2_proofs::plonk - Rust +Circuit in halo2_proofs::plonk - Rust +ColumnType in halo2_proofs::plonk - Rust +FloorPlanner in halo2_proofs::plonk - Rust +Phase in halo2_proofs::plonk - Rust +halo2_proofs::poly::commitment - Rust +Blind in halo2_proofs::poly::commitment - Rust
    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> StructuralEq for Blind<F>

    source§

    impl<F> StructuralPartialEq for Blind<F>

    Auto Trait Implementations§

    §

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

    §

    impl<F> Send for Blind<F>where diff --git a/halo2_proofs/poly/commitment/trait.CommitmentScheme.html b/halo2_proofs/poly/commitment/trait.CommitmentScheme.html index 1bf34dcb04..7f0c95d6d6 100644 --- a/halo2_proofs/poly/commitment/trait.CommitmentScheme.html +++ b/halo2_proofs/poly/commitment/trait.CommitmentScheme.html @@ -1,4 +1,4 @@ -CommitmentScheme in halo2_proofs::poly::commitment - Rust +CommitmentScheme in halo2_proofs::poly::commitment - Rust +MSM in halo2_proofs::poly::commitment - Rust +Params in halo2_proofs::poly::commitment - Rust +ParamsProver in halo2_proofs::poly::commitment - Rust +ParamsVerifier in halo2_proofs::poly::commitment - Rust +Prover in halo2_proofs::poly::commitment - Rust +Verifier in halo2_proofs::poly::commitment - Rust +Error in halo2_proofs::poly - Rust +halo2_proofs::poly - Rust +create_proof in halo2_proofs::poly::ipa::commitment - Rust +verify_proof in halo2_proofs::poly::ipa::commitment - Rust +halo2_proofs::poly::ipa::commitment - Rust +IPACommitmentScheme in halo2_proofs::poly::ipa::commitment - Rust +ParamsIPA in halo2_proofs::poly::ipa::commitment - Rust +ParamsVerifierIPA in halo2_proofs::poly::ipa::commitment - Rust +halo2_proofs::poly::ipa - Rust +halo2_proofs::poly::ipa::msm - Rust +MSMIPA in halo2_proofs::poly::ipa::msm - Rust +halo2_proofs::poly::ipa::multiopen - Rust +ProverIPA in halo2_proofs::poly::ipa::multiopen - Rust +VerifierIPA in halo2_proofs::poly::ipa::multiopen - Rust
    pub struct VerifierIPA<'params, C: CurveAffine> { /* private fields */ }
    Expand description

    IPA multi-open verifier

    -

    Trait Implementations§

    source§

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

    source§

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

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

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

    source§

    fn finalize(self) -> bool

    Finalizes the batch and checks its validity.

    +

    Trait Implementations§

    source§

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

    source§

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

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

    impl<'params, C: CurveAffine> VerificationStrategy<'params, IPACommitmentScheme<C>, VerifierIPA<'params, C>> for AccumulatorStrategy<'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 = AccumulatorStrategy<'params, C>

    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 = AccumulatorStrategy<'params, C>

    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> VerificationStrategy<'params, IPACommitmentScheme<C>, VerifierIPA<'params, C>> for SingleStrategy<'params, C>

    source§

    fn finalize(self) -> bool

    Finalizes the batch and checks its validity.

    +output.
    source§

    impl<'params, C: CurveAffine> VerificationStrategy<'params, IPACommitmentScheme<C>, VerifierIPA<'params, 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<'params, C>

    §

    type Guard = GuardIPA<'params, C>

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

    type MSMAccumulator = MSMIPA<'params, C>

    Accumulator fot comressed verification
    source§

    const QUERY_INSTANCE: bool = true

    Query instance or not
    source§

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

    Creates new verifier instance
    source§

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

    §

    type MSMAccumulator = MSMIPA<'params, C>

    Accumulator fot comressed verification
    source§

    const QUERY_INSTANCE: bool = true

    Query instance or not
    source§

    fn new(params: &'params ParamsVerifierIPA<C>) -> 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_proofs/poly/ipa/strategy/index.html b/halo2_proofs/poly/ipa/strategy/index.html index bf2cce6b73..2b889f6e53 100644 --- a/halo2_proofs/poly/ipa/strategy/index.html +++ b/halo2_proofs/poly/ipa/strategy/index.html @@ -1,4 +1,4 @@ -halo2_proofs::poly::ipa::strategy - Rust +halo2_proofs::poly::ipa::strategy - Rust +Accumulator in halo2_proofs::poly::ipa::strategy - Rust +AccumulatorStrategy in halo2_proofs::poly::ipa::strategy - Rust +GuardIPA in halo2_proofs::poly::ipa::strategy - Rust +SingleStrategy in halo2_proofs::poly::ipa::strategy - Rust +halo2_proofs::poly::kzg::commitment - Rust +KZGCommitmentScheme in halo2_proofs::poly::kzg::commitment - Rust +ParamsKZG in halo2_proofs::poly::kzg::commitment - Rust +ParamsVerifierKZG in halo2_proofs::poly::kzg::commitment - Rust +halo2_proofs::poly::kzg - Rust +halo2_proofs::poly::kzg::msm - Rust +DualMSM in halo2_proofs::poly::kzg::msm - Rust +MSMKZG in halo2_proofs::poly::kzg::msm - Rust +halo2_proofs::poly::kzg::multiopen - Rust +ProverGWC in halo2_proofs::poly::kzg::multiopen - Rust +ProverSHPLONK in halo2_proofs::poly::kzg::multiopen - Rust +VerifierGWC in halo2_proofs::poly::kzg::multiopen - Rust +VerifierSHPLONK in halo2_proofs::poly::kzg::multiopen - Rust +halo2_proofs::poly::kzg::strategy - Rust +AccumulatorStrategy in halo2_proofs::poly::kzg::strategy - Rust +GuardKZG in halo2_proofs::poly::kzg::strategy - Rust +SingleStrategy in halo2_proofs::poly::kzg::strategy - Rust +Coeff in halo2_proofs::poly - Rust +EvaluationDomain in halo2_proofs::poly - Rust +ExtendedLagrangeCoeff in halo2_proofs::poly - Rust +LagrangeCoeff in halo2_proofs::poly - Rust +PinnedEvaluationDomain in halo2_proofs::poly - Rust +Polynomial in halo2_proofs::poly - Rust

    \ No newline at end of file + T: Send + Sync, \ No newline at end of file diff --git a/halo2_proofs/poly/struct.ProverQuery.html b/halo2_proofs/poly/struct.ProverQuery.html index 8db689a28f..0124aafa49 100644 --- a/halo2_proofs/poly/struct.ProverQuery.html +++ b/halo2_proofs/poly/struct.ProverQuery.html @@ -1,4 +1,4 @@ -ProverQuery in halo2_proofs::poly - Rust +ProverQuery in halo2_proofs::poly - Rust +Rotation in halo2_proofs::poly - Rust +VerifierQuery in halo2_proofs::poly - Rust +Basis in halo2_proofs::poly - Rust +Guard in halo2_proofs::poly - Rust +VerificationStrategy in halo2_proofs::poly - Rust +halo2_proofs::transcript - Rust +Blake2bRead in halo2_proofs::transcript - Rust +Blake2bWrite in halo2_proofs::transcript - Rust +Challenge255 in halo2_proofs::transcript - Rust
    pub struct Challenge255<C: CurveAffine>(/* private fields */);
    Expand description

    A 255-bit challenge.

    -

    Methods from Deref<Target = [u8; 32]>§

    source

    pub fn as_ascii(&self) -> Option<&[AsciiChar; N]>

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

    Converts this array of bytes into a array of ASCII characters, -or returns None if any of the characters is non-ASCII.

    -
    Examples
    -
    #![feature(ascii_char)]
    -#![feature(const_option)]
    -
    -const HEX_DIGITS: [std::ascii::Char; 16] =
    -    *b"0123456789abcdef".as_ascii().unwrap();
    -
    -assert_eq!(HEX_DIGITS[1].as_str(), "1");
    -assert_eq!(HEX_DIGITS[10].as_str(), "a");
    -
    source

    pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar; N]

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

    Converts this array of bytes into a array of ASCII characters, -without checking whether they’re valid.

    -
    Safety
    -

    Every byte in the array must be in 0..=127, or else this is UB.

    -
    1.57.0 · source

    pub fn as_slice(&self) -> &[T]

    Returns a slice containing the entire array. Equivalent to &s[..].

    +

    Methods from Deref<Target = [u8; 32]>§

    1.57.0 · source

    pub fn as_slice(&self) -> &[T]

    Returns a slice containing the entire array. Equivalent to &s[..].

    source

    pub fn each_ref(&self) -> [&T; N]

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

    Borrows each element and returns an array of references with the same size as self.

    Example
    @@ -56,7 +41,7 @@
    Example
    indices from [M, N) (excluding the index N itself).

    Panics

    Panics if M > N.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let v = [1, 2, 3, 4, 5, 6];
    @@ -84,7 +69,7 @@ 
    Examples
    indices from [N - M, N) (excluding the index N itself).

    Panics

    Panics if M > N.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let v = [1, 2, 3, 4, 5, 6];
    @@ -106,33 +91,48 @@ 
    Examples
    assert_eq!(left, &[]); assert_eq!(right, &[1, 2, 3, 4, 5, 6]); }
    +
    source

    pub fn as_ascii(&self) -> Option<&[AsciiChar; N]>

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

    Converts this array of bytes into a array of ASCII characters, +or returns None if any of the characters is non-ASCII.

    +
    Examples
    +
    #![feature(ascii_char)]
    +#![feature(const_option)]
    +
    +const HEX_DIGITS: [std::ascii::Char; 16] =
    +    *b"0123456789abcdef".as_ascii().unwrap();
    +
    +assert_eq!(HEX_DIGITS[1].as_str(), "1");
    +assert_eq!(HEX_DIGITS[10].as_str(), "a");
    +
    source

    pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar; N]

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

    Converts this array of bytes into a array of ASCII characters, +without checking whether they’re valid.

    +
    Safety
    +

    Every byte in the array must be in 0..=127, or else this is UB.

    Trait Implementations§

    source§

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

    source§

    fn clone(&self) -> Challenge255<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 Challenge255<C>

    source§

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

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

    impl<C: CurveAffine> Deref for Challenge255<C>

    §

    type Target = [u8; 32]

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<C: CurveAffine> EncodedChallenge<C> for Challenge255<C>where C::Scalar: FromUniformBytes<64>,

    §

    type Input = [u8; 64]

    The Input type used to derive the challenge encoding. For example, an input from the Poseidon hash would be a base field element; an input from the Blake2b hash would be a [u8; 64].
    source§

    fn new(challenge_input: &[u8; 64]) -> Self

    Get an encoded challenge from a given input challenge.
    source§

    fn get_scalar(&self) -> C::Scalar

    Get a scalar field element from an encoded challenge.
    source§

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

    Cast an encoded challenge as a typed ChallengeScalar.
    source§

    impl<R: Read, C: CurveAffine> Transcript<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 Blake2bWrite<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<W: Write, C: CurveAffine> Transcript<C, Challenge255<C>> for Blake2bWrite<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> 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<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> 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_proofs/transcript/struct.ChallengeScalar.html b/halo2_proofs/transcript/struct.ChallengeScalar.html index d800475062..5bdbd9a035 100644 --- a/halo2_proofs/transcript/struct.ChallengeScalar.html +++ b/halo2_proofs/transcript/struct.ChallengeScalar.html @@ -1,4 +1,4 @@ -ChallengeScalar in halo2_proofs::transcript - Rust +ChallengeScalar in halo2_proofs::transcript - Rust +Keccak256Read in halo2_proofs::transcript - Rust +Keccak256Write in halo2_proofs::transcript - Rust +EncodedChallenge in halo2_proofs::transcript - Rust +Transcript in halo2_proofs::transcript - Rust +TranscriptRead in halo2_proofs::transcript - Rust +TranscriptReadBuffer in halo2_proofs::transcript - Rust +TranscriptWrite in halo2_proofs::transcript - Rust +TranscriptWriterBuffer in halo2_proofs::transcript - Rust +Help -

    Rustdoc help

    Back
    \ No newline at end of file +

    Rustdoc help

    Back
    \ No newline at end of file diff --git a/search-index.js b/search-index.js index 435ebcf2f2..557d406078 100644 --- a/search-index.js +++ b/search-index.js @@ -1,7 +1,7 @@ var searchIndex = JSON.parse('{\ "halo2":{"doc":"halo2","t":"","n":[],"q":[],"d":[],"i":[],"f":[],"c":[],"p":[],"b":[]},\ -"halo2_gadgets":{"doc":"This crate provides various common gadgets and chips for …","t":"AAAAAQIIDDDIQQDQDQDQDQDQQDQKLLKLLLLLLLLLLLLLLLLLLLALLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLKKKLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKENDDDDDIIQENSDEELLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLKRRRRFFFFDNENIIDDDDDQLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLKLLLLLLLLLLLKLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDIDGDQIIDLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLFLLLLLLLKLLLLLLKLKLKLLKLLKLLLLLLLLLLLLLLLLLLLLLLLLLRDQDDIQDDLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLKLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLQDIQQDIQDQDQQKQIQLLLLLLLLALLLLLLLLLLLLLLLLLKLLLLLLLLLLLLKKLLLLLLLLLLALLAKLLLLLLLLLLLLLLLLLLLKDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLRIDLLLALLLLLLLLKLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLRDDRRLLRLRRLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDIIQLFFLLKLLAAFLLLLLFLLLFLALFFLLLLLKKLLLDDILLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["ecc","poseidon","sha256","sinsemilla","utilities","Base","BaseFitsInScalarInstructions","EccInstructions","FixedPoint","FixedPointBaseField","FixedPointShort","FixedPoints","FixedPoints","FullScalar","NonIdentityPoint","NonIdentityPoint","Point","Point","ScalarFixed","ScalarFixed","ScalarFixedShort","ScalarFixedShort","ScalarVar","ScalarVar","ShortScalar","X","X","add","add","add","add_incomplete","add_incomplete","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","chip","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","constrain_equal","constrain_equal","constrain_equal","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","extract_p","extract_p","extract_p","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from_base","from_inner","from_inner","from_inner","from_inner","from_inner","from_inner","init","init","init","init","init","init","init","init","init","inner","inner","inner","into","into","into","into","into","into","into","into","into","mul","mul","mul","mul","mul","mul_fixed","mul_fixed_base_field_elem","mul_fixed_short","new","new","new","new","new","scalar_fixed_from_signed_short","scalar_var_from_base","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_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","witness_point","witness_point_non_id","witness_scalar_fixed","witness_scalar_var","BaseFieldElem","BaseFieldElem","EccChip","EccConfig","EccPoint","EccScalarFixed","EccScalarFixedShort","FixedPoint","FixedScalarKind","FixedScalarKind","FullScalar","FullWidth","NUM_WINDOWS","NonIdentityEccPoint","ScalarVar","ShortScalar","add","add_incomplete","advices","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_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","config","configure","constants","constrain_equal","construct","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","extract_p","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","generator","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","lagrange_coeffs","loaded","lookup_config","mul","mul_fixed","mul_fixed_base_field_elem","mul_fixed_short","point","point","scalar_fixed_from_signed_short","scalar_var_from_base","to_owned","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_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","u","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","witness_point","witness_point_non_id","witness_scalar_fixed","witness_scalar_var","x","x","y","y","z","FIXED_BASE_WINDOW_SIZE","H","NUM_WINDOWS","NUM_WINDOWS_SHORT","compute_lagrange_coeffs","find_zs_and_us","test_lagrange_coeffs","test_zs_and_us","Hash","Message","PaddedWord","Padding","PoseidonInstructions","PoseidonSpongeInstructions","Pow5Chip","Pow5Config","Sponge","StateWord","Word","Word","absorb","add_input","add_input","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cell","clone","clone","clone","clone_into","clone_into","clone_into","config","configure","construct","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","finish_absorbing","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_inner","get_output","get_output","hash","init","init","init","init","init","init","init","init","initial_state","initial_state","inner","into","into","into","into","into","into","into","loaded","new","permute","permute","primitives","squeeze","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","value","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Absorbing","ConstantLength","Domain","Hash","Mds","P128Pow5T3","Padding","Spec","SpongeMode","Squeezing","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","constants","constants","constants","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","full_rounds","full_rounds","full_rounds","generate_constants","hash","init","init","init","init","init","init","initial_capacity_element","initial_capacity_element","into","into","into","into","into","name","name","padding","padding","partial_rounds","partial_rounds","partial_rounds","sbox","sbox","sbox","secure_mds","secure_mds","secure_mds","to_owned","to_owned","to_owned","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","BLOCK_SIZE","BlockWord","BlockWord","Sha256","Sha256Digest","Sha256Instructions","State","Table16Chip","Table16Config","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","compress","compress","config","configure","construct","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","digest","digest","digest","drop","drop","drop","drop","drop","finalize","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","init","init","init","init","init","initialization","initialization","initialization_vector","initialization_vector","into","into","into","into","into","load","loaded","new","to_owned","to_owned","to_owned","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","update","vzip","vzip","vzip","vzip","vzip","CellValue","CommitDomain","CommitDomains","CommitDomains","FixedPoints","HashDomain","HashDomains","HashDomains","Message","Message","MessagePiece","MessagePiece","NonIdentityPoint","Q","RunningSum","SinsemillaInstructions","X","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chip","clone","clone","clone_into","clone_into","commit","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","extract","fmt","fmt","fmt","fmt","from","from","from","from","from_field_elem","from_pieces","from_subpieces","hash","hash_domain","hash_to_point","hash_to_point","init","init","init","init","inner","into","into","into","into","merkle","new","new","primitives","r","short_commit","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","vzip","vzip","vzip","vzip","witness_message_piece","SinsemillaChip","SinsemillaConfig","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","config","configure","construct","deref","deref","deref_mut","deref_mut","drop","drop","eq","eq","extract","fmt","fmt","from","from","hash_to_point","init","init","into","into","load","loaded","lookup_config","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_message_piece","MERKLE_CRH_PERSONALIZATION","MerkleInstructions","MerklePath","borrow","borrow_mut","calculate_root","chip","clone","clone_into","construct","deref","deref_mut","drop","fmt","from","hash_layer","init","into","to_owned","try_from","try_into","type_id","vzip","MerkleChip","MerkleConfig","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","config","configure","construct","deref","deref","deref_mut","deref_mut","drop","drop","eq","eq","extract","fmt","fmt","from","from","hash_layer","hash_to_point","init","init","into","into","loaded","swap","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_message_piece","C","CommitDomain","HashDomain","INV_TWO_POW_K","K","Q","Q","Q_PERSONALIZATION","R","SINSEMILLA_S","S_PERSONALIZATION","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","commit","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","hash","hash_to_point","init","init","into","into","new","new","short_commit","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","FieldValue","RangeConstrained","UtilitiesInstructions","Var","Var","bitrange_of","bitrange_subset","bool_check","borrow","borrow_mut","cell","clone","clone_into","cond_swap","decompose_running_sum","decompose_word","deref","deref_mut","drop","fmt","from","i2lebsp","init","inner","into","lebs2ip","load_private","lookup_range_check","num_bits","range_check","ternary","to_owned","try_from","try_into","type_id","unsound_unchecked","value","value","value","vzip","witness_short","CondSwapChip","CondSwapConfig","CondSwapInstructions","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","config","configure","construct","deref","deref","deref_mut","deref_mut","drop","drop","eq","fmt","fmt","from","from","init","init","into","into","loaded","swap","swap","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","RunningSum","RunningSumConfig","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","configure","copy_decompose","deref","deref","deref","deref_mut","deref_mut","drop","drop","eq","fmt","fmt","from","from","init","init","into","into","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_decompose","LookupRangeCheckConfig","RunningSum","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","configure","copy_check","copy_short_check","deref","deref","deref","deref_mut","deref_mut","drop","drop","eq","fmt","fmt","from","from","init","init","into","into","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_check","witness_short_check"],"q":[[0,"halo2_gadgets"],[5,"halo2_gadgets::ecc"],[201,"halo2_gadgets::ecc::chip"],[402,"halo2_gadgets::ecc::chip::constants"],[410,"halo2_gadgets::poseidon"],[546,"halo2_gadgets::poseidon::primitives"],[654,"halo2_gadgets::sha256"],[755,"halo2_gadgets::sinsemilla"],[848,"halo2_gadgets::sinsemilla::chip"],[893,"halo2_gadgets::sinsemilla::merkle"],[916,"halo2_gadgets::sinsemilla::merkle::chip"],[961,"halo2_gadgets::sinsemilla::primitives"],[1007,"halo2_gadgets::utilities"],[1048,"halo2_gadgets::utilities::cond_swap"],[1090,"halo2_gadgets::utilities::decompose_running_sum"],[1126,"halo2_gadgets::utilities::lookup_range_check"],[1164,"halo2_proofs::plonk::error"],[1165,"core::result"],[1166,"halo2_proofs::circuit"],[1167,"core::convert"],[1168,"core::clone"],[1169,"pasta_curves::arithmetic::curves"],[1170,"core::fmt"],[1171,"core::cmp"],[1172,"core::fmt"],[1173,"core::any"],[1174,"pasta_curves::pallas"],[1175,"pasta_curves::pallas"],[1176,"halo2_proofs::plonk::circuit"],[1177,"halo2_proofs::circuit"],[1178,"ff"],[1179,"halo2_proofs::circuit"],[1180,"ff"],[1181,"core::iter::traits::collect"],[1182,"halo2_proofs::plonk::circuit"],[1183,"core::iter::traits::iterator"],[1184,"core::ops::range"],[1185,"ff"]],"d":["Elliptic curve operations.","The Poseidon algebraic hash function.","The SHA-256 hash function.","The Sinsemilla hash function.","Utility gadgets.","Fixed points that can be multiplied by base field elements.","Instructions that can be implemented for a curve whose …","The set of circuit instructions required to use the ECC …","Precomputed multiples of a fixed point, for full-width …","Precomputed multiples of a fixed point, that can be …","Precomputed multiples of a fixed point, for short signed …","Defines the fixed points for a given instantiation of the …","Enumeration of the set of fixed bases to be used in scalar …","Fixed points that can be used with full-width scalar …","A point on a specific elliptic curve that is guaranteed to …","Variable representing a non-identity elliptic curve point.","A point on a specific elliptic curve.","Variable representing an elliptic curve point.","An integer representing an element of the scalar field for …","Variable representing a full-width element of the elliptic …","A signed short (64-bit) integer represented as an element …","Variable representing a signed short element of the …","An integer representing an element of the scalar field for …","Variable representing a scalar used in variable-base …","Fixed points that can be used with short scalar …","The affine short Weierstrass x-coordinate of a point on a …","Variable representing the affine short Weierstrass …","Performs complete point addition, returning a + b.","Returns self + other using complete addition.","Returns self + other using complete addition.","Performs incomplete point addition, returning a + b.","Returns self + other using incomplete addition. The …","","","","","","","","","","","","","","","","","","","Chip implementations for the ECC gadgets.","","","","","","","","","","","Constrains point a to be equal in value to point b.","Constrains this point to be equal in value to another …","Constrains this point to be equal in value to another …","","","","","","","","","","","","","","","","","","","","","","","","","","","","Extracts the x-coordinate of a point.","Extracts the x-coordinate of a point.","Extracts the x-coordinate of a point.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Constructs a scalar from an existing base-field element.","Wraps the given point (obtained directly from an …","Wraps the given point (obtained directly from an …","Wraps the given x-coordinate (obtained directly from an …","Wraps the given fixed base (obtained directly from an …","Wraps the given fixed base (obtained directly from an …","Wraps the given fixed base (obtained directly from an …","","","","","","","","","","Returns the inner point.","Returns the inner point.","Returns the inner x-coordinate.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Performs variable-base scalar multiplication, returning …","Returns [by] self.","Returns [by] self.","Returns [by] self.","Returns [by] self.","Performs fixed-base scalar multiplication using a …","Performs fixed-base scalar multiplication using a base …","Performs fixed-base scalar multiplication using a short …","Witnesses the given full-width scalar.","Witnesses the given full-width scalar.","Converts the given signed short scalar.","Constructs a new point with the given value.","Constructs a new point with the given value.","Converts a magnitude and sign that exists as variables in …","Converts a base field element that exists as a variable in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Witnesses the given point as a private input to the …","Witnesses the given point as a private input to the …","Witnesses a full-width scalar to be used in fixed-base …","Witnesses a full-width scalar to be used in variable-base …","Type marker representing a base field element being used …","An element of the elliptic curve’s base field, that is …","An EccInstructions chip that uses 10 advice columns.","Configuration for EccChip.","A curve point represented in affine (x, y) coordinates, or …","A full-width scalar used for fixed-base scalar …","A signed short scalar used for fixed-base scalar …","Returns information about a fixed point that is required …","A trait representing the kind of scalar used with a …","The kind of scalar that this fixed point can be multiplied …","Type marker representing a full-width scalar for use in …","A full-width scalar. This is unimplemented for …","The number of windows that this scalar kind requires.","A non-identity point represented in affine (x, y) …","An enumeration of the possible types of scalars used in …","Type marker representing a signed 64-bit scalar for use in …","","","Advice columns needed by instructions in the ECC chip.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Side effects","Constants required for the ECC chip.","","Reconstructs this chip from the given config.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the generator for this fixed point.","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the Lagrange coefficients for this fixed point.","","Lookup range check using 10-bit lookup table","","","","","Returns the value of this curve point, if known.","Returns the value of this curve point, if known.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the $u$ values for this fixed point.","","","","","","","","","","","","","","","The cell containing the affine short-Weierstrass …","The cell containing the affine short-Weierstrass …","The cell containing the affine short-Weierstrass …","The cell containing the affine short-Weierstrass …","Returns the $z$ value for this fixed point.","Window size for fixed-base scalar multiplication","$2^{FIXED_BASE_WINDOW_SIZE}$","Number of windows for a full-width scalar","Number of windows for a short signed scalar","For each window, we interpolate the $x$-coordinate. Here, …","For each window, $z$ is a field element such that for each …","Test that Lagrange interpolation coefficients reproduce …","Test that the z-values and u-values satisfy the conditions:","A Poseidon hash function, built around a sponge.","A message word provided by the prover.","A word from the padded input to a Poseidon sponge.","A padding word, that will be fixed in the circuit …","The set of circuit instructions required to use the …","The set of circuit instructions required to use the Sponge …","A Poseidon chip using an $x^5$ S-Box.","Configuration for a Pow5Chip.","A Poseidon sponge.","A word in the Poseidon state.","A word over which the Poseidon permutation operates.","Variable representing the word over which the Poseidon …","Absorbs an element into the sponge.","Adds the given input to the state.","","","","","","","","","","","","","","","","","","","","","","","","Configures this chip for use in a circuit.","Construct a Pow5Chip.","","","","","","","","","","","","","","","","","","","","","","Transitions the sponge into its squeezing state.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Construct a Word gadget from the inner word.","Extracts sponge output from the given state.","","Hashes the given input.","","","","","","","","Initializes a new hasher.","Returns the initial empty state for the given domain.","","The word contained in this gadget.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Constructs a new duplex sponge for the given Poseidon …","Applies the Poseidon permutation to the given state.","","The Poseidon algebraic hash function.","Squeezes an element from the sponge.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The absorbing state of the Sponge.","A Poseidon hash function used with constant input length.","A domain in which a Poseidon hash function is being used.","A Poseidon hash function, built around a sponge.","The type used to hold the MDS matrix and its inverse.","Poseidon-128 using the $x^5$ S-box, with a width of 3 …","Iterator that outputs padding field elements.","A specification for a Poseidon permutation.","The state of the Sponge.","The squeezing state of the Sponge.","","","","","","","","","","","","","","","","","Generates (round_constants, mds, mds^-1) corresponding to …","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","The number of full rounds for this specification.","","","Generates (round_constants, mds, mds^-1) corresponding to …","Hashes the given input.","","","","","Initializes a new hasher.","","The initial capacity element, encoding this domain.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","The name of this domain, for debug formatting purposes.","","Returns the padding to be appended to the input.","","The number of partial rounds for this specification.","","","The S-box for this specification.","","","Side-loaded index of the first correct and secure MDS that …","","","","","","","","","","","","","","","","","","","","","","","","","","The size of a SHA-256 block, in 32-bit words.","A word in a Table16 message block.","Variable representing a 32-bit word of the input block to …","A gadget that constrains a SHA-256 invocation. It supports …","The output of a SHA-256 circuit invocation.","The set of circuit instructions required to use the Sha256 …","Variable representing the SHA-256 internal state.","A chip that implements SHA-256 with a maximum lookup table …","Configuration for a Table16Chip.","","","","","","","","","","","","","","","","","Starting from the given initialized state, processes a …","","","Configures a circuit to include this chip.","Reconstructs this chip from the given config.","","","","","","","","","","","","Converts the given state into a message digest.","","Convenience function to compute hash of the data. It will …","","","","","","Retrieve result and consume hasher instance.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Creates an initial state from the output state of a …","","Places the SHA-256 IV in the circuit, returning the …","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Loads the lookup table required by this chip into the …","","Create a new hasher instance.","","","","","","","","","","","","","","","","","","","Digest data, updating the internal state.","","","","","","A variable in the circuit.","Gadget representing a domain in which …","Trait allowing circuit’s Sinsemilla CommitDomains to be …","CommitDomains used in this instruction.","A type enumerating the fixed points used in CommitDomains.","A domain in which $\\\\mathsf{SinsemillaHashToPoint}$ and …","Trait allowing circuit’s Sinsemilla HashDomains to be …","HashDomains used in this instruction.","A message to be hashed.","A message composed of Self::MessagePieces.","A message piece with a bitlength of some multiple of K.","A piece in a message containing a number of K-bit words. A …","A point output of Self::hash_to_point.","Returns the Q constant for this domain.","A cumulative sum z is used to decompose a Sinsemilla …","The set of circuit instructions required to use the …","The x-coordinate of a point output of Self::hash_to_point.","","","","","","","","","Chip implementations for the Sinsemilla gadgets.","","","","","$\\\\mathsf{SinsemillaCommit}$ from § 5.4.8.4.","","","","","","","","","","","","","Extracts the x-coordinate of the output of a Sinsemilla …","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Constructs a MessagePiece from a field element.","Constructs a message from a vector of MessagePieces.","Constructs a MessagePiece by concatenating a sequence of …","$\\\\mathsf{SinsemillaHash}$ from § 5.4.1.9.","Returns the HashDomain contained in this CommitDomain","Hashes a message to an ECC curve point. This returns both …","$\\\\mathsf{SinsemillaHashToPoint}$ from § 5.4.1.9.","","","","","Returns the inner MessagePiece contained in this gadget.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Gadgets for implementing a Merkle tree with Sinsemilla.","Constructs a new HashDomain for the given domain.","Constructs a new CommitDomain for the given domain.","Implementation of Sinsemilla outside the circuit.","Returns the fixed point corresponding to the R constant …","$\\\\mathsf{SinsemillaShortCommit}$ from § 5.4.8.4.","","","","","","","","","","","","","","","","","","","Witness a message piece given a field element. Returns a …","A chip that implements 10-bit Sinsemilla using a lookup …","Configuration for the Sinsemilla hash chip","","","","","","","","","","Side-effects","Reconstructs this chip from the given config.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Loads the lookup table required by this chip into the …","","Returns the lookup range check config used in this config.","","","","","","","","","","","","SWU hash-to-curve personalization for the Merkle CRH …","Instructions to check the validity of a Merkle path of a …","Gadget representing a Merkle path that proves a leaf …","","","Calculates the root of the tree containing the given leaf …","Chip implementing a Merkle hash using Sinsemilla as the …","","","Constructs a MerklePath.","","","","","Returns the argument unchanged.","Compute MerkleCRH for a given layer. The hash that …","","Calls U::from(self).","","","","","","Chip implementing MerkleInstructions.","Configuration for the MerkleChip implementation.","","","","","","","","","","Configures the MerkleChip.","Constructs a MerkleChip given a MerkleConfig.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","The largest integer such that $2^c \\\\leq (r_P - 1) / 2$, …","A domain in which $\\\\mathsf{SinsemillaCommit}$ and …","A domain in which $\\\\mathsf{SinsemillaHashToPoint}$ and …","$\\\\frac{1}{2^K}$","Number of bits of each message piece in …","Returns the Sinsemilla $Q$ constant for this domain.","Returns the Sinsemilla $Q$ constant for this domain.","SWU hash-to-curve personalization for Sinsemilla $Q$ …","Returns the Sinsemilla $R$ constant for this domain.","The precomputed bases for the Sinsemilla hash function.","SWU hash-to-curve personalization for Sinsemilla $S$ …","","","","","","","$\\\\mathsf{SinsemillaCommit}$ from § 5.4.8.4.","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","$\\\\mathsf{SinsemillaHash}$ from § 5.4.1.9.","$\\\\mathsf{SinsemillaHashToPoint}$ from § 5.4.1.9.","","","Calls U::from(self).","Calls U::from(self).","Constructs a new HashDomain with a specific prefix string.","Constructs a new CommitDomain with a specific prefix …","$\\\\mathsf{SinsemillaShortCommit}$ from § 5.4.8.4.","","","","","","","","","","A type that has a value at either keygen or proving time.","A type representing a range-constrained field element.","Trait for utilities used across circuits.","Trait for a variable in the circuit.","Variable in the circuit.","Constructs a RangeConstrained<Value<F>> as a bitrange of …","Takes a specified subsequence of the little-endian bit …","Checks that an expression is either 1 or 0.","","","The cell at which this variable was allocated.","","","Gadget and chip for a conditional swap utility.","Decomposes an $n$-bit field element $\\\\alpha$ into $W$ …","Decompose a word alpha into window_num_bits bits …","","","","","Returns the argument unchanged.","The sequence of bits representing a u64 in little-endian …","","Returns the range-constrained inner type.","Calls U::from(self).","The u64 integer represented by an L-bit little-endian …","Load a variable.","Make use of a K-bit lookup table to decompose a field …","Returns the number of bits to which this cell is …","Check that an expression is in the small range [0..range), …","If a then b, else c. Returns (a * b) + (1 - a) * c.","","","","","Constructs a RangeConstrained<AssignedCell<F, F>> without …","Returns the value of this type.","The value allocated to this variable.","Extracts the range-constrained value from this …","","Witnesses a subset of the bits in value and constrains …","A chip implementing a conditional swap.","Configuration for the CondSwapChip.","Instructions for a conditional swap gadget.","","","","","","","","","","Configures this chip for use in a circuit.","Constructs a CondSwapChip given a CondSwapConfig.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","Given an input pair (a,b) and a swap boolean flag, returns …","","","","","","","","","","","","The running sum $[z_0, …, z_W]$. If created in strict …","Configuration that provides methods for running sum …","","","","","","","perm MUST include the advice column z.","Decompose an existing variable alpha that is copied into …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","Decompose a field element alpha that is witnessed in this …","Configuration that provides methods for a lookup range …","The running sum $[z_0, …, z_W]$. If created in strict …","","","","","","","The running_sum advice column breaks the field element …","Range check on an existing cell that is copied into this …","Short range check on an existing cell that is copied into …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","Range check on a value that is witnessed in this helper.","Short range check on value that is witnessed in this …"],"i":[0,0,0,0,0,28,0,0,0,0,0,0,9,28,0,9,0,9,0,9,0,9,0,9,28,0,9,9,6,7,9,6,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,0,6,7,12,13,14,6,7,12,13,14,9,6,7,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,9,6,7,18,21,22,6,7,17,12,13,14,18,21,22,6,7,7,17,12,13,14,18,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,6,7,17,18,21,22,6,7,17,12,13,14,9,6,12,13,14,9,9,9,18,21,22,6,7,9,23,6,7,12,13,14,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,9,9,9,9,0,35,0,0,0,0,0,0,0,119,0,35,120,0,0,0,26,26,32,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,30,31,32,26,33,34,35,30,31,32,26,33,34,35,26,26,0,26,26,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,32,26,26,30,31,32,44,45,46,26,33,34,35,30,30,31,32,44,45,46,26,33,34,35,119,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,119,26,32,26,26,26,26,30,31,26,26,30,31,32,26,33,34,35,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,119,30,31,32,44,45,46,26,33,34,35,26,26,26,26,30,31,30,31,119,0,0,0,0,0,0,0,0,0,54,0,54,0,0,0,0,0,0,0,67,56,60,61,64,61,62,54,66,56,69,64,61,62,54,66,56,69,62,64,62,54,64,62,54,61,61,61,64,61,62,54,66,56,69,64,61,62,54,66,56,69,64,61,62,54,66,56,69,56,64,61,62,54,66,56,69,64,61,62,62,54,66,56,69,66,60,61,69,64,61,62,54,66,56,69,69,60,61,66,64,61,62,54,66,56,69,61,56,67,61,0,56,64,62,54,64,61,62,54,66,56,69,64,61,62,54,66,56,69,64,61,62,54,66,56,69,62,64,61,62,54,66,56,69,0,0,0,0,0,0,59,0,0,0,75,55,65,70,72,75,55,65,70,72,55,70,72,55,70,72,58,75,75,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,58,75,75,0,72,75,55,65,70,72,72,59,70,75,55,65,70,72,59,70,59,70,58,75,75,58,75,75,58,75,75,55,70,72,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,0,0,83,0,0,0,83,0,0,79,80,81,82,84,79,80,81,82,84,79,80,81,79,80,81,83,81,81,81,81,79,79,80,81,82,84,79,80,81,82,84,83,81,84,79,80,81,82,84,84,79,80,81,82,84,79,80,81,82,84,79,80,81,82,84,83,81,83,81,79,80,81,82,84,81,81,84,79,80,81,79,80,81,82,84,79,80,81,82,84,79,80,81,82,84,84,79,80,81,82,84,86,0,0,86,86,0,0,86,0,86,0,86,86,92,86,0,86,85,87,89,88,85,87,89,88,0,85,87,85,87,88,85,87,89,88,85,87,89,88,85,87,89,88,86,85,87,89,88,85,87,89,88,87,85,87,89,93,86,89,85,87,89,88,87,85,87,89,88,0,89,88,0,93,88,85,87,85,87,89,88,85,87,89,88,85,87,89,88,85,87,89,88,86,0,0,91,94,91,94,91,94,91,94,94,94,94,91,94,91,94,91,94,91,94,94,91,94,91,94,94,91,94,91,94,94,94,91,91,94,91,94,91,94,91,94,91,94,94,0,0,0,96,96,96,0,96,96,96,96,96,96,96,96,97,96,96,96,96,96,96,96,0,0,99,100,99,100,99,100,99,100,100,100,100,99,100,99,100,99,100,99,100,100,99,100,99,100,100,100,99,100,99,100,100,100,99,100,99,100,99,100,99,100,99,100,100,0,0,0,0,0,101,103,0,103,0,0,101,103,101,103,101,101,103,101,103,101,103,101,103,101,103,101,103,101,101,101,103,101,103,101,103,103,101,101,103,101,103,101,103,101,103,0,0,0,0,121,108,0,0,108,108,122,108,108,0,0,0,108,108,108,108,108,0,108,108,108,0,121,0,108,0,0,108,108,108,108,108,111,122,108,108,108,0,0,0,112,113,112,113,112,113,112,113,112,112,112,112,113,112,113,112,113,113,112,113,112,113,112,113,112,113,112,123,112,112,113,112,113,112,113,112,113,112,113,0,0,117,114,117,114,114,114,114,114,117,117,114,117,114,117,114,114,117,114,117,114,117,114,117,114,114,117,114,117,114,117,114,117,114,114,0,0,118,41,118,41,41,41,41,41,41,118,118,41,118,41,118,41,41,118,41,118,41,118,41,118,41,41,118,41,118,41,118,41,118,41,41,41],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,-2,-3,-4],[[2,[1]]],[],3,[4,5],[4,5]],[[[6,[-1,-2]],-3,-4],[[2,[[7,[-1,-2]],1]]],8,[[9,[-1]]],3,[[4,[[7,[-1,-2]]]],5]],[[[7,[-1,-2]],-3,-4],[[2,[[7,[-1,-2]],1]]],8,[[9,[-1]],5,10,11],3,[[4,[[7,[-1,-2]]]],5]],[[-1,-2],[[2,[1]]],[],3],[[[6,[-1,-2]],-3,[6,[-1,-2]]],[[2,[[6,[-1,-2]],1]]],8,[[9,[-1]]],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[6,[-1,-2]]],[[6,[-1,-2]]],[5,8],[5,[9,[-1]]]],[[[7,[-1,-2]]],[[7,[-1,-2]]],[5,8],[5,[9,[-1]],5,10,11]],[[[12,[-1,-2]]],[[12,[-1,-2]]],[5,8],[5,[9,[-1]]]],[[[13,[-1,-2]]],[[13,[-1,-2]]],[5,8],[5,[9,[-1]]]],[[[14,[-1,-2]]],[[14,[-1,-2]]],[5,8],[5,[9,[-1]]]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],[[2,[15,1]]],[],3],[[[6,[-1,-2]],-3,-4],[[2,[15,1]]],8,[[9,[-1]]],3,[[4,[[7,[-1,-2]]]],5]],[[[7,[-1,-2]],-3,-4],[[2,[15,1]]],8,[[9,[-1]],5,10,11],3,[[4,[[7,[-1,-2]]]],5]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[-1,[],[4,5]],[[[6,[-1,-2]]],[[17,[-1,-2]]],8,[[9,[-1]]]],[[[7,[-1,-2]]],[[17,[-1,-2]]],8,[[9,[-1]],5,10,11]],[[[18,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[21,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[22,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[6,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[7,[-1,-2]],19],20,[10,8],[10,[9,[-1]],5,10,11]],[[[17,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[12,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[13,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[14,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[6,[-1,-2]]],[[7,[-1,-2]]],8,[[9,[-1]],5,10,11]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-2,-3],[[2,[[18,[-1,-2]],1]]],8,[[23,[-1]]],3],[-2,[[6,[-1,-2]]],8,[[9,[-1]]]],[-2,[[7,[-1,-2]]],8,[[9,[-1]],5,10,11]],[-2,[[17,[-1,-2]]],8,[[9,[-1]]]],[-2,[[12,[-1,-2]]],8,[[9,[-1]]]],[-2,[[13,[-1,-2]]],8,[[9,[-1]]]],[-2,[[14,[-1,-2]]],8,[[9,[-1]]]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[[6,[-1,-2]]],[],8,[[9,[-1]]]],[[[7,[-1,-2]]],[],8,[[9,[-1]],5,10,11]],[[[17,[-1,-2]]],[],8,[[9,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2],[[2,[15,1]]],[],3],[[[6,[-1,-2]],-3,[18,[-1,-2]]],[[2,[[15,[[7,[-1,-2]],[18,[-1,-2]]]],1]]],8,[[9,[-1]]],3],[[[12,[-1,-2]],-3,[21,[-1,-2]]],[[2,[[15,[[7,[-1,-2]],[21,[-1,-2]]]],1]]],8,[[9,[-1]]],3],[[[13,[-1,-2]],-3],[[2,[[7,[-1,-2]],1]]],8,[[9,[-1]]],3],[[[14,[-1,-2]],-3,[22,[-1,-2]]],[[2,[[15,[[7,[-1,-2]],[22,[-1,-2]]]],1]]],8,[[9,[-1]]],3],[[-1,-2],[[2,[15,1]]],[],3],[[-1,-2],[[2,[1]]],[],3],[[-1,-2],[[2,[15,1]]],[],3],[[-2,-3,24],[[2,[[18,[-1,-2]],1]]],8,[[9,[-1]]],3],[[-2,-3,24],[[2,[[21,[-1,-2]],1]]],8,[[9,[-1]]],3],[[-2,-3,15],[[2,[[22,[-1,-2]],1]]],8,[[9,[-1]]],3],[[-2,-3,[24,[-1]]],[[2,[[6,[-1,-2]],1]]],8,[[9,[-1]]],3],[[-2,-3,[24,[-1]]],[[2,[[7,[-1,-2]],1]]],8,[[9,[-1]],5,10,11],3],[[-1,-2,15],[[2,[1]]],[],3],[[-1,-2],[[2,[1]]],[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2,[24,[-3]]],[[2,[1]]],[],3,[]],[[-1,-2,[24,[-3]]],[[2,[1]]],[],3,[]],[[-1,-2,24],[[2,[1]]],[],3],[[-1,-2,24],[[2,[1]]],[],3],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[26,[-1]],-2,-3,-4],[[2,[1]]],[[28,[27]]],[[3,[29]]],[4,5],[4,5]],[[[26,[-1]],-2],[[2,[1]]],[[28,[27]]],[[3,[29]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[30,30],[31,31],[[[32,[-1]]],[[32,[-1]]],[5,[28,[27]]]],[[[26,[-1]]],[[26,[-1]]],[5,[28,[27]]]],[33,33],[34,34],[35,35],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[26,[-1]]],[],[[28,[27]]]],[[[36,[29]],[39,[[38,[37]]]],[39,[[38,[40]]]],[41,[29]]]],0,[[[26,[-1]],-2],[[2,[15,1]]],[[28,[27]]],[[3,[29]]]],[[],[[26,[-1]]],[[28,[27]]]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[[[32,[-1]],[32,[-1]]],42,[43,[28,[27]]]],[[[26,[-1]],[26,[-1]]],42,[43,[28,[27]]]],[-1,[],[4,5]],[[30,19],20],[[31,19],20],[[[32,[-1]],19],20,[10,[28,[27]]]],[[44,19],20],[[45,19],20],[[46,19],20],[[[26,[-1]],19],20,[10,[28,[27]]]],[[33,19],20],[[34,19],20],[[35,19],20],[-1,-1,[]],[31,30],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[47,[39]]],[]],[[[26,[-1]]],[],[[28,[27]]]],0,[[[26,[-1]],-2],[[2,[15,1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2],[[2,[15,1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2,[48,[29,29]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2],[[2,[15,1]]],[[28,[27]]],[[3,[29]]]],[30,[[24,[27]]]],[31,[[24,[27]]]],[[[26,[-1]],-2,[15,[[48,[29,29]],[48,[29,29]]]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,[[47,[39]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[26,[-1]],-2,[24,[27]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2,[24,[27]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2,[24,[49]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2,[24,[49]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[30,[[48,[29,29]]]],[31,[[48,[29,29]]]],[30,[[48,[29,29]]]],[31,[[48,[29,29]]]],[-1,[[47,[50]]],[]],0,0,0,0,[[-1,16],[[47,[39]]],8],[[-1,16],[[51,[[47,[[15,[50,39]]]]]]],8],[[-1,16],15,8],[[-1,[52,[50]],[52,[[39,[[39,[53]]]]]],16],15,8],0,0,0,0,0,0,0,0,0,0,0,0,[[[56,[-1,-4,-2,[55,[[54,[-1]]]],-3]],-5,[54,[-1]]],[[2,[15,1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[[-1,-3,39,[55,[[54,[-2]]]]],[[2,[39,1]]],[],[],[[3,[-2]]]],[[[61,[-1]],-2,39,[55,[[54,[-1]]]]],[[2,[39,1]]],57,[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[62,[-1]]],63,57],[[[64,[-1]]],[[64,[-1]]],[5,57]],[[[62,[-1]]],[[62,[-1]]],[5,57]],[[[54,[-1]]],[[54,[-1]]],[5,57]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[61,[-1]]],[],57],[[[36,[-1]],[39,[[38,[37]]]],[38,[37]],[39,[[38,[40]]]],[39,[[38,[40]]]]],[[64,[-1]]],57],[[[64,[-1]]],[[61,[-1]]],57],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[[[56,[-1,-4,-2,[55,[[54,[-1]]]],-3]],-5],[[2,[[56,[-1,-4,-2,65,-3]],1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[[[64,[-1]],19],20,[10,57]],[[[61,[-1]],19],20,[10,57]],[[[62,[-1]],19],20,[10,57]],[[[54,[-1]],19],20,[10,57]],[[[66,[-1,-3,-2]],19],20,[10,57],[10,[58,[-1]]],[10,[67,[-1,-2]]]],[[[56,[-1,-4,-2,-5,-3]],19],20,[10,57],[10,[58,[-1]]],[10,[59,[-1]]],[10,[60,[-1,-2,-3]]],[10,68]],[[[69,[-1,-4,-2,-3]],19],20,[10,57],[10,[58,[-1]]],[10,[59,[-1]]],[10,[60,[-1,-2,-3]]]],[-1,-1,[]],[-1,-1,[]],[[[48,[-1,-1]]],[[62,[-1]]],57],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],[[66,[-1,-3,-2]]],57,[[58,[-1]]],[[67,[-1,-2]]]],[39,65],[39,65],[[[69,[-1,-3,-2,70]],-4,[39,[[48,[-1,-1]]]]],[[2,[[48,[-1,-1]],1]]],71,[[58,[-1]]],[[60,[-1,-2,70]]],[[3,[-1]]]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[-4,-5],[[2,[[69,[-1,-4,-2,-3]],1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[[-1,-3],[[2,[39,1]]],[],[],[[3,[-2]]]],[[[61,[-1]],-2],[[2,[39,1]]],57,[[3,[-1]]]],[[[66,[-1,-3,-2]]],[],57,[[58,[-1]]],[[67,[-1,-2]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[61,[-1]]],[],57],[[-4,-5],[[2,[[56,[-1,-4,-2,[55,[[54,[-1]]]],-3]],1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[[-1,-3,39],[[2,[39,1]]],[],[],[[3,[-2]]]],[[[61,[-1]],-2,39],[[2,[39,1]]],57,[[3,[-1]]]],0,[[[56,[-1,-4,-2,65,-3]],-5],[[2,[[48,[-1,-1]],1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[[[62,[-1]]],[[24,[-1]]],57],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[55,[-1]]],[[55,[-1]]],5],[70,70],[[[72,[-1,-2,-3]]],[[72,[-1,-2,-3]]],[5,57],[5,[58,[-1]]],[5,[59,[-1]]]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[],[[15,[[47,[[39,[-1]]]],[73,[-1]],[73,[-1]]]]],[]],[[],[[15,[[47,[[39,[74]]]],[73,[74]],[73,[74]]]]]],[[],[[15,[[47,[[39,[29]]]],[73,[29]],[73,[29]]]]]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[16,15],[[75,19],20],[[[55,[-1]],19],20,10],[[[65,[-1]],19],20,10],[[70,19],20],[[[72,[-1,-2,-3]],19],20,57,[[58,[-1]]],[[59,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[[],16],[[],[[15,[[47,[[39,[-1]]]],[73,[-1]],[73,[-1]]]]],[76,77]],[[[72,[-1,-2,70]],[39,[-1]]],-1,71,[[58,[-1]]]],[[],16],[[],16],[[],16],[[],16],[[],[[72,[-1,-2,-3]]],57,[[58,[-1]]],[[59,[-1]]]],[[],16],[[],-1,[]],[[],-1,71],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],78],[[],78],[16],[16],[[],16],[[],16],[[],16],[-1,-1,[]],[29,29],[74,74],[[],16],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[79,79],[80,80],[81,81],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-3,39],[[2,[1]]],[],[],[[3,[-2]]]],[[81,-1,39],[[2,[1]]],[[3,[29]]]],[81],[[[36,[29]]]],[[],81],[[],79],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[[-1,-3],[[2,[39,1]]],[],[],[[3,[-2]]]],[[81,-1],[[2,[39,1]]],[[3,[29]]]],[[-2,-3,52],[[2,[82,1]]],57,[[83,[-1]]],[[3,[-1]]]],[16,15],[16,15],[16,15],[16,15],[16,15],[[[84,[-1,-2]],-3],[[2,[82,1]]],57,[[83,[-1]]],[[3,[-1]]]],[[79,19],20],[[80,19],20],[[81,19],20],[[[82,[-1]],19],20,10],[[[84,[-1,-2]],19],20,[10,57],[10,[83,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[[],16],[[],16],[[],16],[[-1,-3],[[2,[1]]],[],[],[[3,[-2]]]],[[81,-1],[[2,[1]]],[[3,[29]]]],[[-1,-3],[[2,[1]]],[],[],[[3,[-2]]]],[[81,-1],[[2,[0,1]]],[[3,[29]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[80,-1],[[2,[15,1]]],[[3,[29]]]],[81],[[-2,-3],[[2,[[84,[-1,-2]],1]]],57,[[83,[-1]]],[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[[[84,[-1,-2]],-3,52],[[2,[15,1]]],57,[[83,[-1]]],[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[85,[-1,-2]]],[[85,[-1,-2]]],[5,8],[[86,[-1]],5,10,11,5]],[[[87,[-1,-2]]],[[87,[-1,-2]]],[5,8],[[86,[-1]],5,10,11,5]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[88,[-1,-2,-3]],-4,[85,[-1,-2]],[21,[-1,-3]]],[[2,[[15,[[7,[-1,-3]],47]],1]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11],3],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[[]],[[[85,[-1,-2]],19],20,[10,8],[[86,[-1]],5,10,11,10]],[[[87,[-1,-2]],19],20,[10,8],[[86,[-1]],5,10,11,10]],[[[89,[-1,-2,-3]],19],20,[10,8],[[86,[-1]],5,10,11,10],[[9,[-1]],5,10,11,10]],[[[88,[-1,-2,-3]],19],20,[10,8],[[86,[-1]],5,10,11,10],[[9,[-1]],5,10,11,10]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-2,-3,24,16],[[2,[[87,[-1,-2]],1]]],8,[[86,[-1]],5,10,11],3],[[-2,[47,[[87,[-1,-2]]]]],[[85,[-1,-2]]],8,[[86,[-1]],5,10,11]],[[-2,-3,-4],[[2,[[87,[-1,-2]],1]]],8,[[86,[-1]],5,10,11],3,90],[[[89,[-1,-2,-3]],-4,[85,[-1,-2]]],[[2,[[15,[[17,[-1,-3]],47]],1]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11],3],[-1,-2,[],[]],[[-1,-2,-3],[[2,[[15,[47]],1]]],[],3,[]],[[[89,[-1,-2,-3]],-4,[85,[-1,-2]]],[[2,[[15,[[6,[-1,-3]],47]],1]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11],3],[[],16],[[],16],[[],16],[[],16],[[[87,[-1,-2]]],[],8,[[86,[-1]],5,10,11]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[-2,-3],[[89,[-1,-2,-3]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11]],[[-2,-3],[[88,[-1,-2,-3]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11]],0,[-1,[],[]],[[[88,[-1,-2,-3]],-4,[85,[-1,-2]],[21,[-1,-3]]],[[2,[[15,[[17,[-1,-3]],47]],1]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2,24,16],[[2,[1]]],[],3],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[91,[-1,-3,-2]]],[[91,[-1,-3,-2]]],[[92,[27]],5],[[28,[27]],5],[[93,[27,-2,-1]],5]],[[[94,[-1,-3,-2]]],[[94,[-1,-3,-2]]],[[92,[27]],5],[[28,[27]],5],[[93,[27,-2,-1]],5]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[94,[-1,-3,-2]]],[],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[36,[29]],[39,[[38,[37]]]],[38,[37]],[38,[40]],[15,[95,95,95]],[41,[29]]]],[[],[[94,[-1,-3,-2]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[[91,[-1,-3,-2]],[91,[-1,-3,-2]]],42,[[92,[27]],43],[[28,[27]],43],[[93,[27,-2,-1]],43]],[[[94,[-1,-3,-2]],[94,[-1,-3,-2]]],42,[[92,[27]],43],[[28,[27]],43],[[93,[27,-2,-1]],43]],[[]],[[[91,[-1,-3,-2]],19],20,[[92,[27]],10],[[28,[27]],10],[[93,[27,-2,-1]],10]],[[[94,[-1,-3,-2]],19],20,[[92,[27]],10],[[28,[27]],10],[[93,[27,-2,-1]],10]],[-1,-1,[]],[-1,-1,[]],[[[94,[-1,-3,-2]],-4,27],[[2,[[15,[47]],1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[[[91,[-1,-3,-2]],-4],[[2,[1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],[[[94,[-1,-3,-2]]],[],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[91,[-1,-3,-2]]],[[41,[29]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[94,[-1,-3,-2]],-4,[24,[29]],16],[[2,[1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[[96,[-1,-2]],-3],[[2,[1]]],8,[[97,[-1]],5],3],0,[[[96,[-1,-2]]],[[96,[-1,-2]]],[5,8],[[97,[-1]],5,5]],[[-1,-2],15,[],[]],[[[39,[-2]],[24,[98]],[24,[39]]],[[96,[-1,-2]]],8,[[97,[-1]],5]],[16,-1,[]],[16,-1,[]],[16,15],[[[96,[-1,-2]],19],20,[10,8],[[97,[-1]],5,10]],[-1,-1,[]],[[-1,-2,-3,16],[[2,[1]]],[],3,[]],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[99,[-1,-3,-2]]],[[99,[-1,-3,-2]]],[[92,[27]],5],[[28,[27]],5],[[93,[27,-2,-1]],5]],[[[100,[-1,-3,-2]]],[[100,[-1,-3,-2]]],[[92,[27]],5],[[28,[27]],5],[[93,[27,-2,-1]],5]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[100,[-1,-3,-2]]],[],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[36,[29]],[91,[-1,-3,-2]]],[[99,[-1,-3,-2]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[99,[-1,-3,-2]]],[[100,[-1,-3,-2]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[[99,[-1,-3,-2]],[99,[-1,-3,-2]]],42,[[92,[27]],43],[[28,[27]],43],[[93,[27,-2,-1]],43]],[[[100,[-1,-3,-2]],[100,[-1,-3,-2]]],42,[[92,[27]],43],[[28,[27]],43],[[93,[27,-2,-1]],43]],[[]],[[[99,[-1,-3,-2]],19],20,[[92,[27]],10],[[28,[27]],10],[[93,[27,-2,-1]],10]],[[[100,[-1,-3,-2]],19],20,[[92,[27]],10],[[28,[27]],10],[[93,[27,-2,-1]],10]],[-1,-1,[]],[-1,-1,[]],[[[100,[-1,-3,-2]],-4,27,16],[[2,[1]]],[[92,[27]],11],[[28,[27]]],[[93,[27,-2,-1]],11],[[3,[29]]]],[[[100,[-1,-3,-2]],-4,27],[[2,[[15,[[47,[47]]]],1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[[[100,[-1,-3,-2]]],[],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[100,[-1,-3,-2]],-4,[15,[[24,[29]]]],[24,[42]]],[[2,[15,1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[100,[-1,-3,-2]],-4,[24,[29]],16],[[2,[1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],0,0,0,0,0,[101,102],[103,102],0,[103,102],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[101,101],[[-1,-2],15,[],[]],[[103,-1,49],[[104,[102]]],105],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[101,19],20],[[103,19],20],[-1,-1,[]],[-1,-1,[]],[[101,-1],[[104,[29]]],105],[[101,-1],[[104,[102]]],105],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[106,101],[106,103],[[103,-1,49],[[104,[29]]],105],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[[[24,[-1]],[107,[16]]],[[108,[-1,[24,[-1]]]]],109],[[-1,[107,[16]]],-1,109],[[[110,[-1]]],[[110,[-1]]],71],[-1,-2,[],[]],[-1,-2,[],[]],[-1,63,[]],[[[108,[-1,-2]]],[[108,[-1,-2]]],[5,57],[5,[111,[-1]]]],[[-1,-2],15,[],[]],0,0,[[-1,16,16],[[47,[53]]],109],[16,-1,[]],[16,-1,[]],[16,15],[[[108,[-1,-2]],19],20,[10,57],[10,[111,[-1]]]],[-1,-1,[]],[50,[[39,[42]]]],[[],16],[[[108,[-1,-2]]],-2,57,[[111,[-1]]]],[-1,-2,[],[]],[[[39,[42]]],50],[[-1,-3,[38,[37]],[24,[-2]]],[[2,[1]]],[],[],[[3,[-2]]]],0,[[[108,[-1,-2]]],16,57,[[111,[-1]]]],[[[110,[-1]],16],[[110,[-1]]],71],[[[110,[-1]],[110,[-1]],[110,[-1]]],[[110,[-1]]],57],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[[[48,[-1,-1]],16],[[108,[-1,[48,[-1,-1]]]]],57],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[[[108,[-1,[48,[-1,-1]]]]],[[108,[-1,[24,[-1]]]]],57],[-1,-2,[],[]],[[[41,[-1]],-2,[24,[-1]],[107,[16]]],[[2,[[108,[-1,[48,[-1,-1]]]],1]]],109,[[3,[-1]]]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[112,[-1]]],[[112,[-1]]],5],[113,113],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[112,[-1]]],[],57],[[[36,[-1]],[39,[[38,[37]]]]],113,71],[113,[[112,[-1]]],71],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[113,113],42],[[[112,[-1]],19],20,10],[[113,19],20],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[[[112,[-1]]],[],57],[[-1,-3,[15,[[24,[-2]]]],[24,[42]]],[[2,[15,1]]],[],[],[[3,[-2]]]],[[[112,[-1]],-2,[15,[[24,[-1]]]],[24,[42]]],[[2,[15,1]]],71,[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[114,[-1]]],[[114,[-1]]],[5,109]],[[-1,-2],15,[],[]],[[[36,[-1]],115,[38,[37]]],[[114,[-1]]],109],[[[114,[-1]],[116,[-1]],16,[48,[-1,-1]],42,16,16],[[2,[[117,[-1]],1]]],109],[[[117,[-1]]],[[47,[[48,[-1,-1]]]]],109],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[[114,[-1]],[114,[-1]]],42,[43,109]],[[[117,[-1]],19],20,[10,109]],[[[114,[-1]],19],20,[10,109]],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[114,[-1]],[116,[-1]],16,[24,[-1]],42,16,16],[[2,[[117,[-1]],1]]],109],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[41,[-1]]],[[41,[-1]]],[5,109]],[[-1,-2],15,[],[]],[[[36,[-1]],[38,[37]],95],[[41,[-1]]],109],[[[41,[-1]],-2,[48,[-1,-1]],16,42],[[2,[[118,[-1]],1]]],109,[[3,[-1]]]],[[[41,[-1]],-2,[48,[-1,-1]],16],[[2,[15,1]]],109,[[3,[-1]]]],[[[118,[-1]]],[[47,[[48,[-1,-1]]]]],109],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[[41,[-1]],[41,[-1]]],42,[43,109]],[[[118,[-1]],19],20,[10,109]],[[[41,[-1]],19],20,[10,109]],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[41,[-1]],-2,[24,[-1]],16,42],[[2,[[118,[-1]],1]]],109,[[3,[-1]]]],[[[41,[-1]],-2,[24,[-1]],16],[[2,[[48,[-1,-1]],1]]],109,[[3,[-1]]]]],"c":[],"p":[[4,"Error",1164],[4,"Result",1165],[8,"Layouter",1166],[8,"Into",1167],[8,"Clone",1168],[3,"NonIdentityPoint",5],[3,"Point",5],[8,"CurveAffine",1169],[8,"EccInstructions",5],[8,"Debug",1170],[8,"Eq",1171],[3,"FixedPoint",5],[3,"FixedPointBaseField",5],[3,"FixedPointShort",5],[15,"tuple"],[15,"usize"],[3,"X",5],[3,"ScalarVar",5],[3,"Formatter",1170],[6,"Result",1170],[3,"ScalarFixed",5],[3,"ScalarFixedShort",5],[8,"BaseFitsInScalarInstructions",5],[3,"Value",1172],[3,"TypeId",1173],[3,"EccChip",201],[6,"Affine",1174],[8,"FixedPoints",5],[6,"Base",1174],[3,"EccPoint",201],[3,"NonIdentityEccPoint",201],[3,"EccConfig",201],[3,"EccScalarFixed",201],[3,"EccScalarFixedShort",201],[4,"ScalarVar",201],[3,"ConstraintSystem",1175],[3,"Advice",1175],[3,"Column",1175],[15,"array"],[3,"Fixed",1175],[3,"LookupRangeCheckConfig",1126],[15,"bool"],[8,"PartialEq",1171],[4,"FullScalar",201],[4,"ShortScalar",201],[4,"BaseFieldElem",201],[3,"Vec",1176],[3,"AssignedCell",1166],[6,"Scalar",1174],[15,"u64"],[4,"Option",1177],[15,"slice"],[15,"u8"],[4,"PaddedWord",410],[3,"Absorbing",546],[3,"Sponge",410],[8,"Field",1178],[8,"Spec",546],[8,"Domain",546],[8,"PoseidonSpongeInstructions",410],[3,"Pow5Chip",410],[3,"StateWord",410],[3,"Cell",1166],[3,"Pow5Config",410],[3,"Squeezing",546],[3,"Word",410],[8,"PoseidonInstructions",410],[8,"SpongeMode",546],[3,"Hash",410],[3,"ConstantLength",546],[8,"PrimeField",1178],[3,"Hash",546],[6,"Mds",546],[6,"Base",1179],[3,"P128Pow5T3",546],[8,"FromUniformBytes",1178],[8,"Ord",1171],[3,"String",1180],[3,"BlockWord",654],[3,"Table16Config",654],[3,"Table16Chip",654],[3,"Sha256Digest",654],[8,"Sha256Instructions",654],[3,"Sha256",654],[3,"Message",755],[8,"SinsemillaInstructions",755],[3,"MessagePiece",755],[3,"CommitDomain",755],[3,"HashDomain",755],[8,"IntoIterator",1181],[3,"SinsemillaConfig",848],[8,"HashDomains",755],[8,"CommitDomains",755],[3,"SinsemillaChip",848],[3,"TableColumn",1175],[3,"MerklePath",893],[8,"MerkleInstructions",893],[15,"u32"],[3,"MerkleConfig",916],[3,"MerkleChip",916],[3,"HashDomain",961],[6,"Point",1174],[3,"CommitDomain",961],[3,"CtOption",1182],[8,"Iterator",1183],[15,"str"],[3,"Range",1184],[3,"RangeConstrained",1007],[8,"PrimeFieldBits",1178],[4,"Expression",1175],[8,"FieldValue",1007],[3,"CondSwapChip",1048],[3,"CondSwapConfig",1048],[3,"RunningSumConfig",1090],[3,"Selector",1175],[3,"Region",1166],[3,"RunningSum",1090],[3,"RunningSum",1126],[8,"FixedPoint",201],[8,"FixedScalarKind",201],[8,"UtilitiesInstructions",1007],[8,"Var",1007],[8,"CondSwapInstructions",1048]],"b":[[573,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[574,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[601,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[602,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[623,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[624,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[626,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[627,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[629,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[630,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"]]},\ -"halo2_proofs":{"doc":"halo2_proofs","t":"NNNEALLALLLLALLLCLLAALALLLLQQQSIIQIISQQSKKKKFFFKLKKFKFKKKKLLKFFKFLLKFFLLKKDDIQIQDDDDQDDDIDLLLLLLLLLLLLLLLLLKLLLKLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMKLLKLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLKLKLLLLLLLLLLLLLLLLLLLLLLLLLAKLLLLLLLLLLLLLLLKLKLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNEIDNIIKLKLKLKKLLLLLLLLLLLKLKLLLLLLLKLLLLLLLLLLLKLLLKLLLLLLLLLLLLLLLNNECDDNNENNNDNNNNDNELLLLLLLLLLLLLLLLLLLLLFLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDNNDEEIDNDNIDNNIQNDDNDEEDDNNDIQDDNNDNNNNNNNQIDDNDNNDDNNNDENDNNNNDDDNLLLLLLLLLLLLLLLLKLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLKLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLKLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLKLLKLLKLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLMDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDEDDIDQNQDDDDNIDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLALLLLKLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDIQQIQQIIQIQQISSQILLLKKKLLKLLKKKLLLKLKLKLLKLLKLLLKKKKLKKKKKLLLLKKLKAAAADDGLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLAAAADDGLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDIQDDIIIIILLLLLLLLLLLLLLLLLLLLLLLLLKLLLLKLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLKLKKLLLLLLLLLLLLLLLLKLKLLKLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLKLL","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","FftGroup","Field","ONE","ScalarExt","ScalarExt","ZERO","a","a","b","b","best_fft","best_multiexp","compute_inner_product","coordinates","cube","double","endo","eval_polynomial","from_xy","g_to_lagrange","hash_to_curve","invert","is_on_curve","is_on_curve","is_zero","is_zero_vartime","jacobian_coordinates","kate_division","lagrange_interpolate","new_jacobian","parallelize","pow","pow_vartime","random","recursive_butterfly_arithmetic","small_multiexp","sqrt","sqrt_alt","sqrt_ratio","square","AssignedCell","Cell","Chip","Config","Layouter","Loaded","NamespacedLayouter","Region","RegionIndex","RegionStart","Root","SimpleFloorPlanner","SimpleTableLayouter","Table","TableLayouter","Value","add","add","add","add","add","add","add","add","add","add","and_then","as_mut","as_ref","assert_if_known","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","cell","clone","clone","clone","clone","clone","clone_into","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","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","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","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","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","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","synthesize","try_from","try_from","try_into","try_into","type_id","type_id","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","CellNotAssigned","CellValue","CircuitCost","CircuitGates","CircuitLayout","ConstraintNotSatisfied","ConstraintPoisoned","FailureLocation","InRegion","InstanceCellNotAssigned","Lookup","MockProver","OutsideRegion","Permutation","Poison","Shuffle","TracingFloorPlanner","Unassigned","VerifyFailure","advice_values","annotate_column","assert_satisfied","assert_satisfied_at_rows_par","assert_satisfied_par","assign_advice","assign_fixed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","circuit_dot_graph","clone","clone","clone_into","clone_into","collect","copy","cost","default","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","enable_selector","enter_region","eq","eq","eq","exit_region","fill_from_row","fixed","fixed_values","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get_challenge","init","init","init","init","init","init","init","into","into","into","into","into","into","into","mark_equality_cells","metadata","permutation","pop_namespace","push_namespace","queries_to_csv","query_instance","render","run","show_equality_constraints","show_labels","synthesize","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_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","verify","verify_at_rows","verify_at_rows_par","verify_par","view_height","view_width","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","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_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","from","hash","index","init","init","init","init","init","into","into","into","into","into","partial_cmp","partial_cmp","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","AdviceQuery","Any","Assigned","Assignment","BatchVerifier","BoundsFailure","Challenge","Challenge","Circuit","Column","ColumnNotAssigned","ColumnNotInPermutation","ColumnType","Config","Constant","Constraint","ConstraintSystem","ConstraintSystemFailure","Constraints","Error","Expression","FirstPhase","Fixed","Fixed","Fixed","FixedQuery","FloorPlanner","FloorPlanner","Gate","Instance","Instance","Instance","InstanceQuery","InstanceTooLarge","InvalidInstances","Negated","NotEnoughColumnsForConstants","NotEnoughRowsAvailable","Opening","OverwriteDefault","Params","Phase","PinnedConstraintSystem","PinnedVerificationKey","Product","ProvingKey","Rational","Scaled","SecondPhase","Selector","Selector","Sum","Synthesis","TableColumn","TableError","TableError","ThirdPhase","Transcript","Trivial","UnevenColumnLengths","UsedColumn","VerifyingKey","VirtualCell","VirtualCells","Zero","add","add","add","add","add","add","add","add_assign","add_assign","add_proof","advice","advice_column","advice_column_in","advice_column_phase","advice_in","advice_queries","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","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","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge_phase","challenge_usable_after","clone","clone","clone","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","clone_into","clone_into","clone_into","cmp","cmp","cmp","column_index","column_index","column_index","column_type","complex_selector","complexity","compress_selectors","configure","configure_with_params","configure_with_params","constants","constraint_name","copy","create_gate","create_proof","cs","cube","cur","default","default","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","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","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","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","eq","eq","evaluate","evaluate","evaluate_lazy","exit_region","expr","expr","fill_from_row","finalize","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","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","from","from","from","from_bytes","from_bytes","gates","general_column_annotations","get_challenge","get_domain","get_vk","hash","hash","hash","hash","hash","hash","hash","hash","hash_into","identifier","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","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","into","into","into","into","into","into_iter","invert","is_simple","is_zero_vartime","keygen_pk","keygen_vk","keygen_vk_custom","lookup","lookup_any","lookup_table_column","lookups","minimum_rows","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","name","neg","neg","neg","new","new","next","num_advice_columns","num_challenges","num_fixed_columns","num_instance_columns","num_selectors","numerator","params","params","partial_cmp","partial_cmp","partial_cmp","permutation","permutation","permutation","phase","phase","phase","pinned","pinned","polynomials","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","rotation","selector","set_minimum_degree","shuffle","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_owned","to_owned","to_owned","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_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","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","type_id","type_id","type_id","type_id","type_id","type_id","unblinded_advice_column","unblinded_advice_column_in","verify_proof","vzip","vzip","vzip","vzip","vzip","vzip","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","Argument","Assembly","VerifyingKey","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","build_ordered_mapping","clone","clone","clone","clone_into","clone_into","clone_into","columns","commitments","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","eq","fmt","fmt","fmt","from","from","from","get_columns","init","init","init","into","into","into","mapping","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","Basis","Coeff","Error","EvaluationDomain","ExtendedLagrangeCoeff","Guard","LagrangeCoeff","MSMAccumulator","OpeningError","Output","PinnedEvaluationDomain","Polynomial","ProverQuery","Rotation","SamplingError","VerificationStrategy","VerifierQuery","add","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_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","coeff_from_vec","coeff_to_extended","commitment","constant_extended","constant_lagrange","cur","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","divide_by_vanishing_poly","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","empty_coeff","empty_extended","empty_lagrange","eq","extended_k","extended_len","extended_to_coeff","finalize","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","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","init","init","init","into","into","into","into","into","into","into","into","into","into","ipa","iter","iter_mut","k","kzg","l_i_range","lagrange_from_vec","lagrange_to_coeff","mul","new","new","new_commitment","new_msm","next","num_coeffs","pinned","prev","process","rotate","rotate_extended","rotate_omega","sub","sub","to_owned","to_owned","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_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","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Blind","CommitmentScheme","Curve","Guard","MSM","MSM","MSMAccumulator","Params","ParamsProver","ParamsProver","ParamsVerifier","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","default","deref","deref_mut","downsize","drop","empty_msm","eq","eval","fmt","from","get_g","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","verifier_params","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","deref","deref","deref_mut","deref_mut","downsize","drop","drop","empty_msm","fmt","fmt","from","from","get_g","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","verifier_params","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","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_mut","borrow_mut","clone","clone_into","commit","commit_lagrange","deref","deref","deref_mut","deref_mut","downsize","drop","drop","empty_msm","fmt","fmt","from","from","from_parts","g2","get_g","init","init","into","into","k","n","new","new_params","read","read_custom","read_params","s_g2","setup","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verifier_params","vzip","vzip","write","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","deref","deref","deref_mut","deref_mut","drop","drop","eval","fmt","fmt","from","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","create_proof","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_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","translate","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_proofs"],[27,"halo2_proofs::arithmetic"],[74,"halo2_proofs::circuit"],[341,"halo2_proofs::circuit::floor_planner"],[377,"halo2_proofs::circuit::layouter"],[445,"halo2_proofs::dev"],[608,"halo2_proofs::dev::FailureLocation"],[611,"halo2_proofs::dev::VerifyFailure"],[633,"halo2_proofs::dev::cost"],[678,"halo2_proofs::dev::metadata"],[793,"halo2_proofs::plonk"],[1518,"halo2_proofs::plonk::Error"],[1519,"halo2_proofs::plonk::permutation"],[1576,"halo2_proofs::poly"],[1798,"halo2_proofs::poly::commitment"],[1865,"halo2_proofs::poly::ipa"],[1869,"halo2_proofs::poly::ipa::commitment"],[1916,"halo2_proofs::poly::ipa::msm"],[1946,"halo2_proofs::poly::ipa::multiopen"],[1978,"halo2_proofs::poly::ipa::strategy"],[2051,"halo2_proofs::poly::kzg"],[2055,"halo2_proofs::poly::kzg::commitment"],[2106,"halo2_proofs::poly::kzg::msm"],[2155,"halo2_proofs::poly::kzg::multiopen"],[2220,"halo2_proofs::poly::kzg::strategy"],[2280,"halo2_proofs::transcript"],[2434,"core::fmt"],[2435,"core::fmt"],[2436,"core::any"],[2437,"pasta_curves::arithmetic::curves"],[2438,"subtle"],[2439,"alloc::vec"],[2440,"core::ops::function"],[2441,"alloc::boxed"],[2442,"subtle"],[2443,"core::marker"],[2444,"core::marker"],[2445,"core::convert"],[2446,"rand_core"],[2447,"core::ops::arith"],[2448,"core::ops::function"],[2449,"core::fmt"],[2450,"core::option"],[2451,"core::ops::arith"],[2452,"std::collections::hash::set"],[2453,"core::hash"],[2454,"ff"],[2455,"core::cmp"],[2456,"core::cmp"],[2457,"plotters::drawing::area"],[2458,"plotters::drawing::area"],[2459,"core::ops::range"],[2460,"group::prime"],[2461,"std::collections::hash::map"],[2462,"core::default"],[2463,"std::io::error"],[2464,"std::io::error"],[2465,"core::error"],[2466,"std::io"],[2467,"halo2curves::pairing"]],"d":["Curve elements are serialized in compressed form. Field …","Curve elements are serialized in uncompressed form. Field …","Serialization is the same as RawBytes, but no checks are …","This enum specifies how various types are serialized and …","This module provides common utilities, traits and …","","","Traits and structs for implementing circuit components.","","","","","Tools for developing circuits.","","","Returns the argument unchanged.","","","Calls U::from(self).","This module provides an implementation of a variant of …","Contains utilities for performing arithmetic over …","","This module contains utilities and traits for dealing with …","","","","","The affine version of the curve","The base field over which this elliptic curve is …","The base field over which this elliptic curve is …","CURVE_ID used for hash-to-curve.","This trait is the affine counterpart to Curve and is used …","This trait is a common interface for dealing with elements …","The projective form of the curve","This represents an element of a group with basic …","This trait represents an element of a field.","The one element of the field, the multiplicative identity.","The scalar field of this elliptic curve.","The scalar field of this elliptic curve.","The zero element of the field, the additive identity.","Returns the curve constant a.","Returns the curve constant $a$.","Returns the curve constant b.","Returns the curve constant $b$.","Performs a radix-$2$ Fast-Fourier Transformation (FFT) on …","Performs a multi-exponentiation operation.","This computes the inner product of two vectors a and b.","Gets the coordinates of this point.","Cubes this element.","Doubles this element.","Apply the curve endomorphism by multiplying the …","This evaluates a provided polynomial (in coefficient form) …","Obtains a point given $(x, y)$, failing if it is not on the","Convert coefficient bases group elements to lagrange basis …","Requests a hasher that accepts messages and returns …","Computes the multiplicative inverse of this element, …","Returns whether or not this element is on the curve; should","Returns whether or not this element is on the curve; should","Returns true iff this element is zero.","Returns true iff this element is zero.","Return the Jacobian coordinates of this point.","Divides polynomial a in X by X - b with no remainder.","Returns coefficients of an n - 1 degree polynomial given a …","Obtains a point given Jacobian coordinates $X : Y : Z$, …","This utility function will parallelize an operation that …","Exponentiates self by exp, where exp is a little-endian …","Exponentiates self by exp, where exp is a little-endian …","Returns an element chosen uniformly at random using a …","This perform recursive butterfly arithmetic","Performs a small multi-exponentiation operation. Uses the …","Returns the square root of the field element, if it is …","Equivalent to Self::sqrt_ratio(self, one()).","Computes:","Squares this element.","An assigned cell.","A pointer to a cell within a circuit.","A chip implements a set of instructions that can be used …","A type that holds the configuration for this chip, and any …","A layout strategy within a circuit. The layouter is …","A type that holds any general chip state that needs to be …","This is a “namespaced” layouter which borrows a …","A region of the circuit in which a Chip can assign cells.","Index of a region in a layouter","Starting row of a region in a layouter","Represents the type of the “root” of this layouter, so …","A simple FloorPlanner that performs minimal optimizations.","A table layouter that can be used to assign values to a …","A lookup table in the circuit.","Helper trait for implementing a custom Layouter.","A value that might exist within a circuit.","","","","","","","","","","","Returns Value::unknown() if the value is Value::unknown(), …","Converts from &mut Value<V> to Value<&mut V>.","Converts from &Value<V> to Value<&V>.","Enforces an assertion on the contained value, if known.","Assign an advice column value (witness).","Assigns a constant value to the column advice at offset …","Assign the value of the instance column’s cell at …","Assigns a fixed value to a table cell.","","Assigns a fixed value to a table cell.","Assign a fixed value.","Assign a region of gates to an absolute row number.","","Assign a table region to an absolute row number.","","","","","","","","","","","","","","","","","","","","","","Returns the cell.","","","","","","","","","","","Maps a Value<&mut V> to a Value<V> by cloning the contents …","Maps a Value<&V> to a Value<V> by cloning the contents of …","The column of this cell.","The chip holds its own configuration.","Constrains a cell to have a constant value.","Constrains two cells to have the same value.","Constrains a Cell to equal an instance column’s row …","","Maps a Value<&mut V> to a Value<V> by copying the contents …","Maps a Value<&V> to a Value<V> by copying the contents of …","Copies the value to a given advice cell and constrains …","Cubes this field element.","","maps from a fixed column to a pair (default value, vector …","","","","","","","","","","","","","","","","","","","","","","","Doubles this field element.","","","","","","","","","","","","","Checks the contained value for an error condition, if …","Evaluates this value directly, performing an unbatched …","Evaluates this assigned cell’s value directly, …","Implementations of common circuit floor planners.","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Takes each element in the Iterator: if it is …","Queries the value of the given challenge.","","Gets the “root” of this assignment, bypassing the …","","","","","","","","","","","","Returns the value of the instance column’s cell at …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the field element corresponding to this value.","Inverts this assigned value (taking the inverse of zero to …","Constructs a known value.","Implementations of common circuit layouters.","Provides access to general chip state loaded at the …","Maps a Value<V> to Value<W> by applying a function to the …","","","","","","","","","","","Allows the circuit implementor to name/annotate a Column …","Enters into a namespace.","","Returns a new SimpleTableLayouter","Exits out of the existing namespace.","","Creates a new (sub)namespace and enters into it.","","Identifies the region in which this cell resides.","The relative offset of this cell within its region.","Squares this field element.","","","","","","","","","","","","Returns the field element corresponding to this value.","","","","","","Transposes a Value<[V; LEN]> into a [Value<V>; LEN].","Transposes a Value<impl IntoIterator<Item = V>> into a …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Constructs an unwitnessed value.","Unzips a value containing a tuple of two values.","Returns the value of the AssignedCell.","Returns the field element value of the AssignedCell.","","","","","","","","","","","Zips self with another Value.","The version 1 FloorPlanner provided by halo2.","A single pass of the V1 layouter.","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","Concrete column","The virtual column involved in a region. This includes …","Helper trait for implementing a custom Layouter.","The shape of a region. For a region at a certain index, we …","Virtual column representing a (boolean) selector","Intermediate trait requirements for RegionLayouter when …","Helper trait for implementing a custom Layouter.","Assign an advice column value (witness)","","Assigns a constant value to the column advice at offset …","","Assign the value of the instance column’s cell at …","","Assigns a fixed value to a table cell.","Assigns a fixed value","","","","","","","","","","","Get a reference to the set of columns used in a RegionShape…","Constrains a cell to have a constant value.","","Constraint two cells to have the same value.","","","","","","","","Enables a selector at the given offset.","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","Returns the value of the instance column’s cell at …","","Calls U::from(self).","Calls U::from(self).","Allows the circuit implementor to name/annotate a Column …","","Create a new RegionShape for a region at region_index.","","Get the region_index of a RegionShape.","Get the row_count of a RegionShape.","","","","","","","","","","","A cell that has been assigned a value.","A cell used in an active gate was not assigned to.","The value of a particular cell within the circuit.","","A struct for collecting and displaying the gates within a …","Graphical renderer for circuit layouts.","A constraint was not satisfied for a particular row.","A constraint was active on an unusable row, and is likely …","The location within the circuit at which a particular …","A location inside a region.","An instance cell used in an active gate was not assigned …","A lookup input did not exist in its corresponding table.","A test prover for debugging circuits.","A location outside of a region.","A permutation did not preserve the original value of a …","A unique poisoned cell.","A shuffle input did not exist in its corresponding map.","A helper type that augments a FloorPlanner with tracing …","An unassigned cell.","The reasons why a particular circuit is not satisfied.","Return the content of an advice column as assigned by the …","","Panics if the circuit being checked by this MockProver is …","Panics if the circuit being checked by this MockProver is …","Panics if the circuit being checked by this MockProver is …","","","","","","","","","","","","","","","","","Builds a dot graph string representing the given circuit.","","","","","Collects the gates from within the circuit.","","Developer tools for investigating the cost of a circuit.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the list of Fixed Columns used within a MockProver …","Return the content of a fixed column as assigned by the …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Marks cells involved in equality constraints, in red.","Metadata about circuits.","Returns the permutation argument (Assembly) used within a …","","","Prints the queries in this circuit to a CSV grid.","","Renders the given circuit on the given drawing area.","Runs a synthetic keygen-and-prove operation on the given …","Draws red lines between equality-constrained cells.","Sets the visibility of region labels.","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns Ok(()) if this MockProver is satisfied, or a list …","Returns Ok(()) if this MockProver is satisfied, or a list …","Returns Ok(()) if this MockProver is satisfied, or a list …","Returns Ok(()) if this MockProver is satisfied, or a list …","Sets the view height for this layout, as a number of rows.","Sets the view width for this layout, as a number of …","","","","","","","","The offset (relative to the start of the region) at which …","The region in which the failure occurred.","The circuit row on which the failure occurred.","The values of the virtual cells used by this constraint.","The column in which this cell should be assigned.","The column in which this cell should be assigned.","The column in which this permutation is not satisfied.","The polynomial constraint that is not satisfied.","The polynomial constraint that is not satisfied.","The index of the active gate.","The index of the active gate.","The offset (relative to the start of the region) at which …","The offset (relative to the start of the region) at which …","The location at which this constraint is not satisfied.","The location at which the lookup is not satisfied.","The location at which the lookup is not satisfied.","The location at which the permutation is not satisfied.","The index of the lookup that is not satisfied. These …","The name of the lookup that is not satisfied.","The name of the lookup that is not satisfied.","The offset (relative to the start of the region) at which …","The region in which this cell should be assigned.","The region in which this gate was activated.","The absolute row at which this cell should be assigned.","The index of the lookup that is not satisfied. These …","Measures a circuit to determine its costs, and explain …","The marginal size of a Halo 2 proof, broken down into its …","The size of a Halo 2 proof, broken down into its …","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the marginal proof size per instance of this …","Measures a circuit with parameter constant k.","Returns the proof size for the given number of instances …","","","","","","","","","","","","","Metadata about a column within a circuit.","Metadata about a configured constraint within a circuit.","Metadata about a configured gate within a circuit.","Metadata about an assigned region within a circuit.","A “virtual cell” is a PLONK cell that has been queried …","","","","","","","","","","","","","","","","","","","","","Return the column type.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","Returns the argument unchanged.","","Return the column index.","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An advice column","An Advice variant","This is an advice (witness) column queried at a certain …","Query of advice column at a certain relative location","An enum over the Advice, Fixed, Instance structs","A value assigned to a cell within a circuit.","This trait allows a Circuit to direct some backend to …","A verifier that checks multiple proofs in a batch. This …","Out of bounds index passed to a backend","A challenge squeezed from transcript after advice columns …","This is a challenge","This is a trait that circuits provide implementations for …","A column with an index and type","A TableColumn has not been assigned.","The instance sets up a copy constraint involving a column …","A column type","This is a configuration object that stores things like …","This is a constant polynomial","An individual polynomial constraint.","This is a description of the circuit environment, such as …","The constraint system is not satisfied.","A set of polynomial constraints with a common selector.","This is an error that could occur during proving or …","Low-degree expression representing an identity that must …","First phase","A fixed column","A Fixed variant","This is a fixed column queried at a certain relative …","Query of fixed column at a certain relative location","A floor planning strategy for a circuit.","The floor planner used for this circuit. This is an …","Gate","An instance column","An Instance variant","This is an instance (external) column queried at a certain …","Query of instance column at a certain relative location","Instance provided exceeds number of available rows","The provided instances do not match the circuit parameters.","This is a negated polynomial","Circuit synthesis requires global constants, but circuit …","k is too small for the given circuit.","Opening error","Attempt to overwrite a default value","Optional circuit configuration parameters. Requires the …","Phase of advice column","Represents the minimal parameters that determine a …","Minimal representation of a verification key that can be …","This is the product of two polynomials","This is a proving key which allows for the creation of …","A value stored as a fraction to enable batch inversion.","This is a scaled polynomial","Second phase","A selector, representing a fixed boolean value per row of …","This is a virtual selector","This is the sum of two polynomials","This is an error that can occur during synthesis of the …","A fixed column of a lookup table.","This is an error that could occur during table synthesis.","An error relating to a lookup table.","Third phase","Transcript error","A value that does not require inversion to evaluate.","A Table has columns of uneven lengths.","Attempt to assign a used TableColumn","This is a verifying key which allows for the verification …","A “virtual cell” is a PLONK cell that has been queried …","Exposes the “virtual cells” that can be queried while …","The field element zero.","","","","","","","","","","Adds a proof to the batch.","Returns Advice variant in FirstPhase","Allocate a new advice column at FirstPhase","Allocate a new advice column in given phase","Returns phase of advice columns","Returns Advice variant in given Phase","Returns advice queries","Allows the developer to include an annotation for an …","Annotate an Instance column.","Annotate a Lookup column.","Assign an advice column value (witness)","Assign a fixed value","Compute the number of blinding factors necessary to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns phase of challenges","Requests a challenge that is usable after the given phase.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Column index","Column index","Column index","Type of this column.","Allocate a new complex selector that can appear anywhere …","Approximate the computational complexity of this …","This will compress selectors together depending on their …","The circuit is given an opportunity to describe the exact …","The circuit is given an opportunity to describe the exact …","The circuit is given an opportunity to describe the exact …","Returns constants","Returns the name of the constraint at index …","Assign two cells to have the same value","Creates a new gate.","This creates a proof for the provided circuit when given …","Returns ConstraintSystem","Cubes this element.","Return expression from column at the current row","","","","Compute the degree of this polynomial","Compute the degree of the constraint system (the maximum …","Returns the denominator, if non-trivial.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Does not combine selectors and directly replaces them …","Doubles this element.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Enable this selector at the given offset within the given …","Enables this fixed column to be used for global constant …","Enable the ability to enforce equality over cells in this …","Enables a selector at the given row.","Creates a new region and enters into it.","","","","","","","","","","","","","","Evaluates this assigned value directly, performing an …","Evaluate the polynomial using the provided closures to …","Evaluate the polynomial lazily using the provided closures …","Exits the current region.","Return expression from selector","Return Expression","Fills a fixed column starting from the given row with …","Finalizes the batch and checks its validity.","Allocate a new fixed column","Returns commitments of fixed polynomials","Returns fixed queries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Reads a verification key from a slice of bytes using …","Reads a proving key from a slice of bytes using Self::read.","Returns gates","Returns general column annotations","Queries the value of the given challenge.","Get the underlying EvaluationDomain.","Get the underlying VerifyingKey.","","","","","","","","","Hashes a verification key into a transcript.","Identifier for this expression. Expressions with identical …","Index of this column.","Returns index of this selector","Index of this challenge.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns inner column","Allocate a new instance column","Returns instance queries","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Inverts this assigned value (taking the inverse of zero to …","Is this selector “simple”? Simple selectors can only …","Returns true iff this element is zero.","Generate a ProvingKey from a VerifyingKey and an instance …","Generate a VerifyingKey from an instance of Circuit. By …","Generate a VerifyingKey from an instance of Circuit.","Add a lookup argument for some input expressions and table …","Add a lookup argument for some input expressions and table …","Allocates a new fixed column that can be used in a lookup …","Returns lookup arguments","Returns the minimum necessary rows that need to exist in …","","","","","","","","","Returns the gate name.","","","","Returns Advice in given Phase","Constructs a new batch verifier.","Return expression from column at the next row","Returns number of advice columns","Returns number of challenges","Returns number of fixed columns","Returns number of instance columns","Returns number of selectors","Returns the numerator.","Returns a reference to the parameters that should be used …","Returns a reference to the parameters that should be used …","","","","Implementation of permutation argument.","Returns permutation argument","Returns VerifyingKey of permutation","Phase of this column","Phase of this advice column","Phase of this challenge.","Obtain a pinned version of this constraint system; a …","Obtains a pinned representation of this verification key …","Returns constraints of this gate","Exits out of the existing namespace.","Return expression from column at the previous row","","Creates a new (sub)namespace and enters into it.","Query an advice column at a relative position","Query an Any column at a relative position","Return expression from cell","Return expression from column at a relative position","","","","","Make side effects","Query a challenge","Query a fixed column at a relative position","Queries the cell of an instance column at a particular …","Query an instance column at a relative position","Query a selector at the current position.","Reads a verification key from a buffer.","Reads a proving key from a buffer. Does so by reading …","Return expression from column at the specified rotation","Rotation of this query","Rotation of this query","Rotation of this query","Allocate a new (simple) selector. Simple selectors cannot …","Sets the minimum degree required by the circuit, which can …","Add a shuffle argument for some input expressions and …","Returns shuffle arguments","","Squares this element.","Square this expression.","","","","","","","","","","","Given the provided cs, synthesize the given circuit.","Given the provided cs, synthesize the circuit. The …","Writes a verifying key to a vector of bytes using …","Writes a proving key to a vector of bytes using Self::write…","","","","","","","","","","","","","","","","","","","","","Returns representative of this VerifyingKey in transcripts","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Allocate a new unblinded advice column at FirstPhase","Allocate a new unblinded advice column in given phase. …","Returns a boolean indicating whether or not the proof is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Constructs a set of constraints that are controlled by the …","Returns a copy of this circuit with no witness values …","Writes a verifying key to a buffer.","Writes a proving key to a buffer.","The current value of k being used.","A permutation argument.","Struct that accumulates all the necessary data in order to …","The verifying key for a single permutation argument.","","","","","","","Builds the ordered mapping of the cycles. This will only …","","","","","","","Returns columns that participate in the permutation …","Returns commitments of sigma polynomials","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns columns that participate on the permutation …","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns mappings of the copies.","","","","","","","","","","","","","","","","The basis over which a polynomial is described.","The polynomial is defined as coefficients","This is an error that could occur during proving or …","This structure contains precomputed constants and other …","The polynomial is defined as coefficients of Lagrange …","Guards is unfinished verification result. Implement this …","The polynomial is defined as coefficients of Lagrange …","Multi scalar engine which is not evaluated yet.","OpeningProof is not well-formed","The output type of this verification strategy after …","Represents the minimal parameters that determine an …","Represents a univariate polynomial defined over a field …","A polynomial query at a point","Describes the relative rotation of a vector. Negative …","Caller needs to re-sample a point","Trait representing a strategy for verifying Halo 2 proofs.","A polynomial query at a point","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Obtains a polynomial in coefficient form when given a …","This takes us from an n-length coefficient vector into a …","Generic commitment scheme structures","Returns a constant polynomial in the extended Lagrange …","Returns a constant polynomial in the Lagrange coefficient …","The current location in the evaluation domain","","","","","","","","","","","","","","","","","","","","","","","This divides the polynomial (in the extended domain) by …","","","","","","","","","","","Returns an empty (zero) polynomial in the coefficient basis","Returns an empty (zero) polynomial in the extended …","Returns an empty (zero) polynomial in the Lagrange …","","Get the size of the extended domain","Get the size of the extended domain","This takes us from the extended evaluation domain and gets …","Finalizes the batch and checks its validity.","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Get the generator of the extended domain’s …","Get $\\\\omega$, the generator of the $2^k$ order …","Get $\\\\omega^{-1}$, the inverse of the generator of the …","Gets the quotient polynomial’s degree (as a multiple of …","","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Inner product argument commitment scheme","Iterate over the values, which are either in coefficient …","Iterate over the values mutably, which are either in …","Get the size of the domain","KZG commitment scheme","Computes evaluations (at the point x, where xn = x^n) of …","Obtains a polynomial in Lagrange form when given a vector …","This takes us from an n-length vector into the coefficient …","","Creates new verification strategy instance","This constructs a new evaluation domain object based on …","Create a new verifier query based on a commitment","Create a new verifier query based on a linear combination …","The next location in the evaluation domain","Gets the size of this polynomial in terms of the number of …","Obtain a pinned version of this evaluation domain; a …","The previous location in the evaluation domain","Obtains an MSM from the verifier strategy and yields back …","Rotates the values in a Lagrange basis polynomial by …","Rotate the extended domain polynomial over the original …","Multiplies a value by some power of $\\\\omega$, essentially …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Wrapper type around a blinding factor.","Defines components of a commitment scheme.","Elliptic curve used to commit the application and witnesses","Unfinalized verification result. This is returned in …","Multi scalar multiplication engine","Multi scalar multiplication engine","Accumulator fot comressed verification","Parameters for circuit sysnthesis and prover parameters.","Parameters for circuit sysnthesis and prover parameters.","Constant prover parameters","Verifier specific functionality with circuit constraints","Constant verifier parameters","Constant verifier parameters.","Common multi-open prover interface for various commitment …","Query instance or not","Query instance or not","Application field of this commitment scheme","Common multi-open verifier interface for various …","","","","Add another multiexp into this one","Add arbitrary term (the scalar and the point)","Return base points","","","Perform multiexp and check that it results in zero","","","This computes a commitment to a polynomial described by …","This commits to a polynomial using its evaluations over …","Create a multi-opening proof","","","","Downsize Params with smaller k.","","Generates an empty multiscalar multiplication struct using …","","Perform multiexp and return the result","","Returns the argument unchanged.","Getter for g generators","","Calls U::from(self).","Logaritmic size of the circuit","","","","Size of the circuit","Returns new instance of parameters","Creates new prover instance","Creates new verifier instance","Given rng creates new blinding scalar","Wrapper for parameter generator","Reads params from a buffer.","Wrapper for parameter reader","Scalars","Scale all scalars in the MSM by some scaling factor","","","","","Returns verification parameters.","Process the proof and returns unfinished result named Guard","","Writes params to a buffer.","This module contains an implementation of the polynomial …","Multiscalar multiplication engines","IPA multi-open scheme This module contains an optimisation …","Strategies used with KZG scheme","Concrete IPA commitment scheme","Public parameters for IPA commitment scheme","Verifier parameters","","","","","","","This computes a commitment to a polynomial described by …","This commits to a polynomial using its evaluations over …","Create a polynomial commitment opening proof for the …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","","","Initializes parameters for the curve, given a random …","","Reads params from a buffer.","","","","","","","","","","Checks to see if the proof represented within transcript …","","","Writes params to a buffer.","A multiscalar multiplication in the polynomial commitment …","Add a value to the first entry of g_scalars.","Add another multiexp into this one","Add another multiexp into this one","Add a vector of scalars to g_scalars. This function will …","Add to u_scalar","Add to w_scalar","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","Given verifier parameters Creates an empty multi scalar …","","","","","","","","IPA multi-open prover","IPA multi-open verifier","","","","","Create a multi-opening proof","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","An accumulator instance consisting of an evaluation claim …","A verifier that checks multiple proofs in a batch.","Wrapper for verification accumulator","A verifier that checks single proof","","","","","","","","","","","","","Computes G = ⟨s, params.g⟩","","","","","","","","","","","","","Finalizes the batch and checks its validity.","Finalizes the batch and checks its validity.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","The claimed output of the linear-time polycommit opening …","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","A vector of challenges u_0, …, u_{k - 1} sampled by the …","Lets caller supply the challenges and obtain an MSM with …","Lets caller supply the purported G point and simply appends","","","","","KZG commitment scheme","Multiscalar multiplication engines","KZG multi-open scheme","Strategies used with KZG scheme","Umbrella commitment scheme construction for all KZG …","These are the public parameters for the polynomial …","KZG multi-open verification parameters","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Initializes parameters for the curve through existing …","Returns gernerator on G2","","","","Calls U::from(self).","Calls U::from(self).","","","","","Reads params from a buffer.","Reads params from a buffer.","","Returns first power of secret on G2","Initializes parameters for the curve, draws toxic secret …","","","","","","","","","","","Writes params to a buffer.","Writes parameters to buffer","Two channel MSM accumulator","A multiscalar multiplication in the polynomial commitment …","","Add another multiexp into this one","","","","","","","","Performs final pairing check with given verifier params …","","","","","Prepares all scalars in the MSM to linear combination","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Create an empty MSM instance","Create a new two channel MSM accumulator instance","","","Scale all scalars in the MSM by some scaling factor","","","","","","","","","","","Concrete KZG prover with GWC variant","Concrete KZG prover with SHPLONK variant","Concrete KZG verifier with GWC variant","Concrete KZG multiopen verifier with SHPLONK variant","","","","","","","","","Create a multi-opening proof","Create a multi-opening proof","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Given parameters creates new prover instance","","","","","","","","","","","","","","","","Verify a multi-opening proof","","","","","A verifier that checks multiple proofs in a batch","Wrapper for linear verification accumulator","A verifier that checks a single proof","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Constructs an empty batch verifier","","Constructs an empty batch verifier","","","","","","","","","","","","","","","","","","","Constructs and initialized new batch verifier","We will replace BLAKE2b with an algebraic hash function in …","We will replace BLAKE2b with an algebraic hash function in …","A 255-bit challenge.","The scalar representation of a verifier challenge.","EncodedChallenge<C> defines a challenge encoding with a …","The Input type used to derive the challenge encoding. For …","Keccak256 hash function reader for EVM compatibility","Keccak256 hash function writer for EVM compatibility","Generic transcript view (from either the prover or verifier…","Transcript view from the perspective of a verifier that …","Initializes transcript at verifier side.","Transcript view from the perspective of a prover that has …","Manages beginning and finishing of transcript pipeline.","Cast an encoded challenge as a typed ChallengeScalar.","","","","","","","","","","","","","","","","","","","","","","","","","Writing the point to the transcript without writing it to …","","","","","Writing the scalar to the transcript without writing it to …","","","","","","","","","","","","","","","","","","","","","","","","","Conclude the interaction and return the output buffer …","","Conclude the interaction and return the output buffer …","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Get a scalar field element from an encoded challenge.","","Initialize a transcript given an input buffer.","Initialize a transcript given an output buffer.","","Initialize a transcript given an input buffer.","","Initialize a transcript given an input buffer.","Initialize a transcript given an output buffer.","","Initialize a transcript given an output buffer.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Get an encoded challenge from a given input challenge.","","Read a curve point from the prover.","","","Read a curve scalar from the prover.","","","Squeeze an encoded verifier challenge from the transcript.","","","","","Squeeze a typed challenge (in the scalar field) from the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Write a curve point to the proof and the transcript.","","","Write a scalar to the proof and the transcript.","",""],"i":[1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,0,1,0,1,1,1,1,190,190,12,190,0,0,12,0,0,10,190,12,10,190,12,190,12,0,0,0,12,10,10,190,0,12,0,190,10,190,12,10,10,190,0,0,190,0,10,10,10,0,0,10,10,10,10,0,0,0,191,0,191,0,0,0,0,45,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,32,32,32,55,40,42,32,45,44,45,44,40,29,53,47,48,46,35,32,42,44,40,29,53,47,48,46,35,32,42,44,35,29,47,48,46,35,29,47,48,46,35,29,29,46,191,32,32,45,44,29,29,35,29,29,40,40,29,53,47,47,48,48,46,35,32,42,44,40,29,53,47,48,46,35,32,42,44,29,40,29,53,47,48,46,35,32,42,44,44,48,29,29,35,0,40,29,53,47,48,46,35,32,42,44,40,29,29,53,47,47,48,48,46,35,32,32,42,42,44,29,45,44,45,44,40,29,53,47,48,46,35,32,42,44,32,40,29,53,47,48,46,35,32,42,44,29,29,29,0,191,29,29,29,29,29,29,29,29,29,29,29,32,45,29,40,45,44,45,44,46,46,29,29,29,29,29,29,29,29,29,29,29,53,29,29,47,48,46,35,29,29,40,29,53,47,48,46,35,32,42,44,40,29,53,47,48,46,35,32,42,44,40,29,53,47,48,46,35,32,42,44,29,29,35,35,40,29,53,47,48,46,35,32,42,44,29,0,0,67,67,68,67,68,67,67,68,67,68,67,68,67,68,67,68,67,67,67,68,67,68,67,67,67,68,68,67,68,67,68,67,68,67,70,0,0,0,70,0,0,54,69,54,69,54,69,55,54,69,69,70,69,70,69,70,69,70,70,69,54,69,54,69,69,70,69,70,69,70,54,69,70,69,70,69,70,70,70,70,69,70,54,69,69,70,54,69,69,70,69,69,69,70,69,70,69,70,69,70,69,70,76,83,0,0,0,0,83,83,0,80,83,83,0,80,83,76,83,0,76,0,75,75,75,75,75,75,75,80,83,81,86,82,76,75,80,83,81,86,82,76,75,0,80,76,80,76,81,75,0,82,80,83,81,86,82,76,75,80,83,81,86,82,76,75,80,83,81,86,82,76,75,75,75,80,83,76,75,75,75,75,80,80,83,83,81,81,86,82,76,75,80,83,81,86,82,76,75,75,80,83,81,86,82,76,75,80,83,81,86,82,76,75,82,0,75,75,75,81,75,82,75,82,82,86,80,76,80,83,81,80,83,81,86,82,76,75,80,83,81,86,82,76,75,80,83,81,86,82,76,75,75,75,75,75,82,82,80,83,81,86,82,76,75,192,192,193,194,195,196,197,194,198,195,196,195,196,194,199,200,197,199,199,200,195,195,196,196,200,0,0,0,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,94,94,94,96,97,94,96,97,94,96,97,94,96,97,0,0,0,0,0,98,102,99,100,101,98,102,99,100,101,98,99,100,101,98,99,100,101,98,102,98,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,98,98,102,102,99,99,100,100,101,101,98,98,98,102,102,102,102,99,99,100,100,101,101,101,101,101,98,98,98,102,99,100,101,98,102,99,100,101,98,102,98,99,100,101,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,0,59,106,0,0,0,0,0,36,0,106,0,0,130,36,0,65,106,0,0,36,0,0,0,0,0,59,106,0,0,65,0,0,59,106,0,36,36,106,36,36,36,130,65,0,0,0,106,0,28,106,0,0,106,106,36,0,0,36,0,36,28,130,130,0,0,0,28,28,28,28,28,28,28,106,28,28,107,59,109,109,109,59,109,41,109,109,41,41,109,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,103,127,128,116,109,129,36,130,107,117,131,118,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,103,127,128,116,109,129,36,130,107,117,131,118,109,109,28,34,33,43,38,59,73,113,114,115,39,57,106,103,116,109,117,118,28,34,33,43,38,59,73,113,114,115,39,57,106,103,116,109,117,118,34,59,39,113,114,115,34,109,106,109,65,65,65,109,116,41,109,0,117,28,34,33,109,107,106,109,28,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,103,127,128,116,109,129,36,130,107,117,131,118,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,103,127,128,116,109,129,36,130,107,117,131,118,109,28,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,103,127,128,116,109,129,36,130,107,117,131,118,73,109,109,41,41,28,34,33,43,38,59,73,113,114,115,39,57,106,28,106,106,41,73,57,41,107,109,117,109,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,103,127,128,116,109,129,36,36,130,130,107,117,131,118,123,28,28,28,28,28,34,34,34,34,124,125,126,33,43,38,59,59,59,59,73,113,114,115,39,57,106,103,103,127,127,127,128,116,109,129,36,36,130,107,117,131,118,117,118,109,109,41,117,118,34,33,43,38,59,73,39,57,117,106,34,73,57,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,103,127,128,116,109,129,36,130,107,117,131,118,39,109,109,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,103,127,128,116,109,129,36,130,107,117,131,118,128,28,73,28,0,0,0,109,109,109,109,109,28,28,28,28,106,106,28,28,116,28,28,106,33,107,34,109,109,109,109,109,28,65,65,34,59,39,0,109,117,33,114,57,109,117,116,41,34,106,41,129,129,112,34,33,43,38,59,106,129,129,41,129,129,117,118,34,113,114,115,109,109,109,109,36,28,106,28,28,28,28,28,28,106,28,28,106,87,65,117,118,28,34,33,43,38,59,73,113,114,115,39,57,106,103,116,109,117,118,36,130,117,123,28,34,34,34,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,103,127,128,116,109,129,36,130,107,117,131,118,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,103,127,128,116,109,129,36,130,107,117,131,118,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,103,127,128,116,109,129,36,130,107,117,131,118,109,109,0,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,103,127,128,116,109,129,36,130,107,117,131,118,128,65,117,118,201,0,0,0,88,138,139,88,138,139,88,88,138,139,88,138,139,88,139,88,138,139,88,138,139,88,138,139,88,88,138,139,88,138,139,138,88,138,139,88,138,139,88,88,138,139,88,138,139,88,138,139,88,138,139,88,138,139,0,0,0,0,0,0,0,202,157,144,0,0,0,0,157,0,0,147,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,149,150,152,153,154,147,111,134,149,150,152,153,154,147,111,134,134,0,134,134,111,134,156,149,150,157,152,153,154,147,147,111,134,156,149,150,157,152,153,154,147,147,111,134,134,156,149,150,157,152,153,154,147,111,134,134,134,111,134,134,134,144,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,134,134,134,147,147,147,147,147,147,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,0,147,147,134,0,134,134,134,147,144,134,150,150,111,147,134,111,144,147,134,134,147,147,134,149,150,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,0,0,142,143,0,137,143,0,0,142,0,142,203,0,204,143,142,0,160,160,160,151,151,151,160,160,151,160,160,203,137,204,160,160,160,137,160,137,160,151,160,160,203,160,160,137,160,160,160,137,203,204,143,160,142,137,142,151,151,160,160,160,160,203,143,160,137,0,0,0,0,0,0,0,162,164,162,164,162,162,162,162,0,162,164,162,164,162,162,164,162,162,164,162,164,162,162,164,162,164,162,162,162,164,162,164,162,162,164,162,164,162,164,162,0,162,164,162,0,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,0,0,166,167,166,167,166,166,167,166,167,166,167,166,167,166,167,166,167,166,167,166,167,166,167,166,167,166,167,167,166,167,0,0,0,0,165,168,169,170,165,168,169,170,165,168,165,168,165,165,168,169,170,165,168,169,170,165,168,169,170,169,170,165,168,169,170,165,168,169,170,168,165,168,169,170,165,168,169,170,169,170,169,170,165,168,165,168,169,170,165,168,169,170,165,168,169,170,168,165,165,165,168,169,170,0,0,0,0,0,0,0,171,174,171,174,171,171,171,171,171,174,171,174,171,171,174,171,171,174,171,174,171,171,171,171,174,171,174,171,171,171,174,171,171,174,171,171,171,171,174,171,174,171,174,171,171,174,171,171,0,0,173,175,173,173,173,175,173,175,173,175,173,175,173,175,173,173,173,175,173,175,173,175,173,173,175,173,175,175,173,175,173,175,173,175,173,173,175,173,175,173,175,173,175,173,175,173,175,0,0,0,0,177,179,178,180,177,179,178,180,177,178,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,178,180,177,179,178,180,177,179,178,180,177,179,178,180,179,180,177,179,178,180,0,0,0,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,182,183,181,182,183,181,182,183,181,182,183,181,182,183,182,182,183,183,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,182,0,0,0,0,0,119,0,0,0,0,0,0,0,119,185,186,187,188,184,189,185,186,187,188,184,189,185,186,187,188,184,189,185,186,187,188,184,189,136,185,186,187,188,136,185,186,187,188,185,186,187,188,184,184,189,189,185,186,187,188,184,189,185,186,187,188,184,189,205,187,188,185,186,187,188,184,189,185,186,187,188,184,189,119,189,206,205,185,185,186,186,187,187,188,188,184,189,185,186,187,188,184,189,119,189,145,185,186,145,185,186,136,185,186,187,188,136,185,186,187,188,184,189,184,185,186,187,188,184,189,185,186,187,188,184,189,185,186,187,188,184,189,185,186,187,188,184,189,120,187,188,120,187,188],"f":[0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,[1,1],[[-1,-2],2,[],[]],[3,-1,[]],[3,-1,[]],0,[3,2],[[1,4],5],[-1,-1,[]],0,[[],3],[-1,-2,[],[]],0,0,[-1,-2,[],[]],0,[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[[8,[-2]],-1,9],2,10,[[11,[-1]]]],[[8,[8,[-1]]],[],12],[[[8,[-1]],[8,[-1]]],-1,10],[-1,[[14,[[13,[-1]]]]],[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[8,[-1]],-1],-1,10],[[],[[14,[-1]]],[]],[[15,9],[[15,[-1]]],12],[16,[[18,[17]]]],[-1,[[14,[-1]]],[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,20,[]],[-1,2,[]],[[-1,-2],[[15,[-2]]],21,10],[[[8,[-1]],[8,[-1]]],[[15,[-1]]],10],[[],[[14,[-1]]],[]],[[[8,[-1]],-2],2,22,[17,22,23,24]],[[-1,-2],-1,[],[[26,[[8,[25]]]]]],[[-1,-2],-1,[],[[26,[[8,[25]]]]]],[-1,-2,27,[]],[[[8,[-2]],3,3,[8,[-1]]],2,10,[[11,[-1]]]],[[8,[8,[-1]]],[],12],[-1,[[14,[-1]]],[]],[-1,[[2,[19,-1]]],[]],[[-1,-1],[[2,[19,-1]]],[]],[-1,-1,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],30],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],-2],[[29,[-3]]],[],31,[]],[[[29,[-1]]],[[29,[-1]]],[]],[[[29,[-1]]],[[29,[-1]]],[]],[[[29,[-1]],-2],2,[],31],[[[32,[-1]],-2,[34,[33]],3,-3],[[6,[[35,[-4,-1]],36]]],10,17,37,[]],[[[32,[-1]],-2,[34,[33]],3,-3],[[6,[[35,[-3,-1]],36]]],10,17,[]],[[[32,[-1]],-2,[34,[38]],3,[34,[33]],3],[[6,[[35,[-1,-1]],36]]],10,17],[[-1,17,39,3,37],[[6,[2,36]]],[]],[[[40,[-1,-2]],17,39,3,37],[[6,[2,36]]],10,[[41,[-1]]]],[[[42,[-1]],-2,39,3,-3],[[6,[2,36]]],10,17,37],[[[32,[-1]],-2,[34,[43]],3,-3],[[6,[[35,[-4,-1]],36]]],10,17,37,[]],[[-1,-2,-3],[[6,[-4,36]]],[],17,37,[]],[[[44,[-1,-2]],-3,-4],[[6,[-5,36]]],10,[[45,[-1]]],17,37,[]],[[-1,-2,-3],[[6,[2,36]]],[],17,37],[[[44,[-1,-2]],-3,-4],[[6,[2,36]]],10,[[45,[-1]]],17,37],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[35,[-1,-2]]],46,[],10],[[[29,[-1]]],[[29,[-1]]],24],[47,47],[48,48],[46,46],[[[35,[-1,-2]]],[[35,[-1,-2]]],24,[24,10]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[29,[-1]]],[[29,[-1]]],24],[[[29,[-1]]],[[29,[-1]]],24],0,[-1,[],[]],[[[32,[-1]],46,-2],[[6,[2,36]]],10,[[49,[[28,[-1]]]]]],[[[32,[-1]],46,46],[[6,[2,36]]],10],[[-1,46,[34,[38]],3],[[6,[2,36]]],[]],[[[44,[-1,-2]],46,[34,[38]],3],[[6,[2,36]]],10,[[45,[-1]]]],[[[29,[-1]]],[[29,[-1]]],50],[[[29,[-1]]],[[29,[-1]]],50],[[[35,[-1,-2]],-3,[32,[-2]],[34,[33]],3],[[6,[[35,[-1,-2]],36]]],24,10,17],[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[51,[[28,[-1]]]]]],[[],[[29,[-1]]],[]],0,[3,-1,[]],[3,-1,[]],[3,-1,[]],[47],[3,-1,[]],[3,-1,[]],[48],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[51,[[28,[-1]]]]]],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[[44,[-1,-2]]],2,10,[[45,[-1]]]],[[48,48],20],[[[29,[-1]],-2],[[6,[2,36]]],[],31],[[[29,[[28,[-1]]]]],[[29,[-1]]],10],[[[35,[[28,[-1]],-1]]],[[35,[-1,-1]]],10],0,[[[40,[-1,-2]],4],5,10,[[41,[-1]]]],[[[29,[-1]],4],5,52],[[53,4],5],[[47,4],5],[[48,4],5],[[46,4],5],[[[35,[-1,-2]],4],5,52,[52,10]],[[[32,[-1]],4],5,[52,10]],[[[42,[-1]],4],5,[52,10]],[[[44,[-1,-2]],4],5,[52,10],[52,[45,[-1]]]],[-1,-1,[]],[-1,-1,[]],[[[29,[-1]]],[[29,[[28,[-1]]]]],10],[-1,-1,[]],[3,47],[-1,-1,[]],[-1,-1,[]],[3,48],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[54,[[32,[-1]]],10],[-1,-1,[]],[55,[[42,[-1]]],10],[-1,-1,[]],[-1,[[29,[-3]]],21,[],[[56,[-2]]]],[[-1,57],[[29,[-2]]],[],[]],[[[44,[-1,-2]],57],[[29,[-1]]],10,[[45,[-1]]]],[-1,[],[]],[[[44,[-1,-2]]],[],10,[[45,[-1]]]],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[[32,[-1]],[34,[38]],3],[[6,[[29,[-1]],36]]],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[49,[[28,[-1]]]]]],[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[51,[[28,[-1]]]]]],[-1,[[29,[-1]]],[]],0,[-1,[],[]],[[[29,[-1]],-2],[[29,[-3]]],[],31,[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],58],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[32,[-1]],-2,-3],2,10,17,[[49,[[34,[59]]]]]],[[-1,-2],[[44,[-3]]],[],31,[]],[[[29,[-1]]],[],60],[[-2,[8,[39]]],[[40,[-1,-2]]],10,[[41,[-1]]]],[[-1,[62,[61]]],2,[]],[[[44,[-1,-2]],[62,[61]]],2,10,[[45,[-1]]]],[[-1,-2],2,[],31],[[[44,[-1,-2]],-3],2,10,[[45,[-1]]],31],0,0,[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[51,[[28,[-1]]]]]],[[[29,[-1]],[29,[-1]]],[],63],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[-2,-3,[15,[[34,[43]]]]],[[6,[2,36]]],10,[[41,[-1]],64],[[65,[-1]]]],[[[29,[-1]]],[[29,[[28,[-2]]]]],[],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[29,[[66,[-1]]]]],[[66,[[29,[-1]]]]],50],[[[29,[-1]],3],[[15,[[29,[-2]]]]],21,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[],[[29,[-1]]],[]],[[[29,[[2,[-1,-2]]]]],[[2,[[29,[-1]],[29,[-2]]]]],[],[]],[[[35,[-1,-2]]],[[29,[-1]]],[],10],[[[35,[-1,-2]]],[[29,[[28,[-2]]]]],[],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[29,[-1]],[29,[-2]]],[[29,[[2,[-1,-2]]]]],[],[]],0,0,[[[67,[-1,-2]],-3,-4],[[6,[-5,36]]],10,[[41,[-1]],64],17,37,[]],[[[67,[-1,-2]],-3,-4],[[6,[2,36]]],10,[[41,[-1]],64],17,37],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[67,[-1,-2]],46,[34,[38]],3],[[6,[2,36]]],10,[[41,[-1]],64]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[68,4],5],[[[67,[-1,-2]],4],5,[52,10],[52,[41,[-1]]]],[-1,-1,[]],[-1,-1,[]],[[[67,[-1,-2]],57],[[29,[-1]]],10,[[41,[-1]],64]],[[[67,[-1,-2]]],[],10,[[41,[-1]],64]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[67,[-1,-2]],[62,[61]]],2,10,[[41,[-1]],64]],[[[67,[-1,-2]],-3],2,10,[[41,[-1]],64],31],[[-2,-3,[15,[[34,[43]]]]],[[6,[2,36]]],10,[[41,[-1]],64],[[65,[-1]]]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[[-1,17,[34,[33]],3,37],[[6,[46,36]]],[]],[[69,17,[34,[33]],3,37],[[6,[46,36]]]],[[-1,17,[34,[33]],3,[28,[-2]]],[[6,[46,36]]],[],[]],[[69,17,[34,[33]],3,[28,[-1]]],[[6,[46,36]]],10],[[-1,17,[34,[38]],3,[34,[33]],3],[[6,[[2,[46,[29,[-2]]]],36]]],[],[]],[[69,17,[34,[38]],3,[34,[33]],3],[[6,[[2,[46,[29,[-1]]]],36]]],10],[[-1,17,39,3,37],[[6,[2,36]]],[]],[[-1,17,[34,[43]],3,37],[[6,[46,36]]],[]],[[69,17,[34,[43]],3,37],[[6,[46,36]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[69,69],[70,70],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[70,70],71],[69,[[72,[70]]]],[[-1,46,[28,[-2]]],[[6,[2,36]]],[],[]],[[69,46,[28,[-1]]],[[6,[2,36]]],10],[[-1,46,46],[[6,[2,36]]],[]],[[69,46,46],[[6,[2,36]]]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[-1,17,73,3],[[6,[2,36]]],[]],[[69,17,73,3],[[6,[2,36]]]],[[70,70],20],[[69,4],5],[[70,4],5],[-1,-1,[]],[[[34,[59]]],70],[-1,-1,[]],[73,70],[[70,-1],2,74],[[],3],[[],3],[[-1,[34,[38]],3],[[6,[[29,[-2]],36]]],[],[]],[[69,[34,[38]],3],[[6,[[29,[-1]],36]]],10],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,17,[34,[59]]],2,[]],[[69,17,[34,[59]]],2],[47,69],[[70,70],[[62,[71]]]],[69,47],[69,3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[75,[-1]],[34,[33]]],[[8,[[76,[-1]]]]],[77,78]],[[[75,[-1]],-2,[34,[59]]],2,10,31],[[[75,[-1]]],2,[77,78]],[[[75,[-1]],-2,-2],2,[77,78],[24,79]],[[[75,[-1]]],2,[77,78]],[[[75,[-1]],-2,[34,[33]],3,-3],[[6,[2,36]]],10,31,31],[[[75,[-1]],-2,[34,[43]],3,-3],[[6,[2,36]]],10,31,31],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-2,61,10,[[65,[-1]]]],[80,80],[[[76,[-1]]],[[76,[-1]]],[24,10]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],81],[[[75,[-1]],[34,[59]],3,[34,[59]],3],[[6,[2,36]]],10],0,[[],82],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[[75,[-1]],-2,73,3],[[6,[2,36]]],10,31],[[[75,[-1]],-2],2,10,31],[[80,80],20],[[83,83],20],[[[76,[-1]],[76,[-1]]],20,[84,10]],[[[75,[-1]]],2,10],[[[75,[-1]],[34,[43]],3,[29,[[28,[-1]]]]],[[6,[2,36]]],10],[[[75,[-1]]],[[15,[[15,[[76,[-1]]]]]]],[77,78]],[[[75,[-1]],[34,[43]]],[[8,[[76,[-1]]]]],[77,78]],[[80,4],5],[[80,4],5],[[83,4],5],[[83,4],5],[[81,4],[[6,[2,85]]]],[[81,4],5],[[[86,[-1]],4],5,[52,87]],[[82,4],5],[[[76,[-1]],4],5,[52,10]],[[[75,[-1]],4],5,[52,10]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[75,[-1]],57],[[29,[-1]]],10],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[82,20],82],0,[[[75,[-1]]],88,[77,78]],[[[75,[-1]],[62,[61]]],2,10],[[[75,[-1]],-2],2,10,31],[81,61],[[[75,[-1]],[34,[38]],3],[[6,[[29,[-1]],36]]],10],[[82,9,-2,[90,[-3,89]]],[[6,[2,91]]],10,[[65,[-1]]],92],[[9,-2,[15,[[15,[-1]]]]],[[6,[[75,[-1]],36]]],[77,78],[[65,[-1]]]],[[82,20],82],[[82,20],82],[[-2,-3,[15,[[34,[43]]]]],[[6,[2,36]]],10,[[41,[-1]],64],[[65,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,61,[]],[-1,61,[]],[-1,61,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[[75,[-1]]],[[6,[2,[15,[83]]]]],[77,78]],[[[75,[-1]],-2,-2],[[6,[2,[15,[83]]]]],[77,78],[24,79]],[[[75,[-1]],-2,-2],[[6,[2,[15,[83]]]]],[77,78],[24,79]],[[[75,[-1]]],[[6,[2,[15,[83]]]]],[77,78]],[[82,[93,[3]]],82],[[82,[93,[3]]],82],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[[[94,[-1,-2]],4],5,[52,95],[52,65]],[[[96,[-1]],4],5,[52,95]],[[[97,[-1]],4],5,[52,95]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[94,[-1,-2]]],[[96,[-1]]],95,65],[[9,-1],[[94,[-2,-1]]],65,95],[[[94,[-1,-2]],3],[[97,[-1]]],95,65],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[98,98],[99,99],[100,100],[101,101],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[98,98],71],[[102,102],71],[98,59],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[3,2],[[98,98],20],[[102,102],20],[[99,99],20],[[100,100],20],[[101,101],20],[[98,4],5],[[98,4],5],[[102,4],5],[[102,4],5],[[99,4],5],[[99,4],5],[[100,4],5],[[100,4],5],[[101,4],5],[[101,4],5],[[[2,[59,3]]],98],[[[34,[59]]],98],[-1,-1,[]],[103,102],[[[2,[-1,98,104]]],102,[[26,[16]]]],[-1,-1,[]],[[[2,[98,104]]],102],[-1,-1,[]],[[[2,[3,-1]]],99,[[26,[16]]]],[-1,-1,[]],[[[2,[99,3,-1]]],100,[[26,[16]]]],[[[2,[3,61]]],101],[[[2,[3,16]]],101],[[[2,[3,61,[105,[98,61]]]]],101],[[[2,[3,16,[105,[98,61]]]]],101],[-1,-1,[]],[[98,-1],2,74],[98,3],[[],3],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[98,98],[[62,[71]]]],[[102,102],[[62,[71]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,61,[]],[-1,61,[]],[-1,61,[]],[-1,61,[]],[-1,61,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[106,[-1]],[106,[-1]]],[[106,[-1]]],10],[[[28,[-1]],[28,[-1]]],2,10],[[[28,[-1]],[28,[-1]]],2,10],[[[107,[-1]],[15,[[15,[15]]]],[15,[108]]],2,12],[[],59],[[[109,[-1]]],[[34,[33]]],10],[[[109,[-1]],-2],[[34,[33]]],10,110],[[[109,[-1]]],[[15,[108]]],10],[-1,59,110],[[[109,[-1]]],[[15,[[2,[[34,[33]],111]]]]],10],[[-1,-2,[34,[59]]],2,[],31],[[[109,[-1]],-2,-3],2,10,[[49,[[34,[59]]]]],17],[[[109,[-1]],39,-2],2,10,17],[[-1,-2,[34,[33]],3,-3],[[6,[2,36]]],[],31,31],[[-1,-2,[34,[43]],3,-3],[[6,[2,36]]],[],31,31],[[[109,[-1]]],3,10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[109,[-1]]],[[15,[108]]],10],[[[109,[-1]],-2],57,10,110],[[[28,[-1]]],[[28,[-1]]],24],[[[34,[-1]]],[[34,[-1]]],[24,112]],[33,33],[43,43],[38,38],[59,59],[73,73],[113,113],[114,114],[115,115],[39,39],[57,57],[[[106,[-1]]],[[106,[-1]]],24],[103,103],[[[116,[-1]]],[[116,[-1]]],[24,10]],[[[109,[-1]]],[[109,[-1]]],[24,10]],[[[117,[-1]]],[[117,[-1]]],[24,12]],[[[118,[-1]]],[[118,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[34,[-1]],[34,[-1]]],71,112],[[59,59],71],[[39,39],71],[113,3],[114,3],[115,3],[[[34,[-1]]],-1,112],[[[109,[-1]]],73,10],[[[106,[-1]]],3,10],[[[109,[-1]],[15,[[15,[20]]]]],[[2,[[109,[-1]],[15,[[15,[-1]]]]]]],10],[[[109,[-1]]],[],[]],[[[109,[-1]]],[],[]],[[[109,[-1]]],[],[]],[[[109,[-1]]],[[15,[[34,[43]]]]],10],[[[116,[-1]],3],16,10],[[-1,[34,[59]],3,[34,[59]],3],[[6,[2,36]]],[]],[[[109,[-1]],-2,-3],2,10,[[26,[16]]],31],[[118,[8,[-1]],[8,[[8,[8]]]],-2,-4],[[6,[2,36]]],65,27,119,[[120,[-3]]]],[[[117,[-1]]],109,12],[[[28,[-1]]],[[28,[-1]]],10],[[[34,[-1]]],[[106,[-2]]],112,10],[[],33],[[],[[109,[-1]]],10],[[],[[107,[-1]]],[121,12]],[[[106,[-1]]],3,10],[[[109,[-1]]],3,10],[[[28,[-1]]],[[62,[-1]]],10],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[109,[-1]],[15,[[15,[20]]]]],[[2,[[109,[-1]],[15,[[15,[-1]]]]]]],10],[[[28,[-1]]],[[28,[-1]]],10],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[73,[32,[-1]],3],[[6,[2,36]]],10],[[[109,[-1]],[34,[43]]],2,10],[[[109,[-1]],-2],2,10,[[49,[[34,[59]]]]]],[[-1,-2,73,3],[[6,[2,36]]],[],31],[[-1,-2],2,[],31],[[[28,[-1]],[28,[-1]]],20,10],[[[34,[-1]],[34,[-1]]],20,[84,112]],[[33,33],20],[[43,43],20],[[38,38],20],[[59,59],20],[[73,73],20],[[113,113],20],[[114,114],20],[[115,115],20],[[39,39],20],[[57,57],20],[[[106,[-1]],[106,[-1]]],20,84],[[[28,[-1]]],-1,10],[[[106,[-1]],-2,-3,-4,-5,-6,-7,-8,-9,-10,-11],-12,10,17,17,17,17,17,17,17,17,17,17,[]],[[[106,[-1]],-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12],-12,10,17,17,17,17,17,17,17,17,17,17,84],[-1,2,[]],[73,[[106,[-1]]],10],[57,[[106,[-1]]],10],[[-1,[34,[43]],3,[29,[[28,[-2]]]]],[[6,[2,36]]],[],[]],[[[107,[-1]],[122,[-1]],[117,[-1]]],20,12],[[[109,[-1]]],[[34,[43]]],10],[[[117,[-1]]],[[15,[-1]]],12],[[[109,[-1]]],[[15,[[2,[[34,[43]],111]]]]],10],[[[123,[-1]],4],5,10],[[[28,[-1]],4],5,52],[[[34,[-1]],4],5,[52,112]],[[124,4],5],[[125,4],5],[[126,4],5],[[33,4],5],[[43,4],5],[[38,4],5],[[59,4],5],[[73,4],5],[[113,4],5],[[114,4],5],[[115,4],5],[[39,4],5],[[57,4],5],[[[106,[-1]],4],5,52],[[103,4],5],[[[127,[-1]],4],5,[52,10]],[[[128,[-1,-2,-3]],4],5,[52,10],[52,[49,[[127,[-1]]]]],[52,21]],[[[116,[-1]],4],5,[52,10]],[[[109,[-1]],4],5,[52,10]],[[[129,[-1]],4],5,[52,10]],[[36,4],5],[[36,4],5],[[130,4],5],[[130,4],5],[[[107,[-1]],4],5,[52,12]],[[[117,[-1]],4],5,[52,12]],[[[131,[-1]],4],5,[52,12]],[[[118,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[[[28,[-1]]],[[28,[-1]]],10],[-1,[[28,[-1]]],10],[[[2,[-1,-1]]],[[28,[-1]]],10],[-1,[[28,[-1]]],10],[[[34,[43]]],[[34,[59]]]],[[[34,[33]]],[[34,[59]]]],[-1,-1,[]],[[[34,[38]]],[[34,[59]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[43,59],[38,59],[33,59],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[2,[-1,111]]],103,[[49,[[34,[59]]]]]],[[[2,[-1,[106,[-2]]]]],[[127,[-2]]],[[26,[16]]],10],[-1,-1,[]],[[[106,[-1]]],[[127,[-1]]],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[132,36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[8,[108]],1],[[133,[[117,[-1]]]]],0],[[[8,[108]],1],[[133,[[118,[-1]]]]],0],[[[109,[-1]]],[[15,[[116,[-1]]]]],10],[[[109,[-1]]],[[105,[98,61]]],10],[[-1,57],[[29,[-2]]],[],[]],[[[117,[-1]]],134,12],[[[118,[-1]]],[[117,[-1]]],12],[[[34,[-1]],-2],2,[135,112],74],[[33,-1],2,74],[[43,-1],2,74],[[38,-1],2,74],[[59,-1],2,74],[[73,-1],2,74],[[39,-1],2,74],[[57,-1],2,74],[[[117,[-1]],-3],[[133,[2]]],12,[[119,[-1]]],[[136,[-1,-2]]]],[[[106,[-1]]],61,10],[[[34,[-1]]],3,112],[73,3],[57,3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[39,[[34,[43]]]],[[[109,[-1]]],[[34,[38]]],10],[[[109,[-1]]],[[15,[[2,[[34,[38]],111]]]]],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[128,[-1,-2,-3]]],[],10,[[49,[[127,[-1]]]]],21],[[[28,[-1]]],[[28,[-1]]],10],[73,20],[[[28,[-1]]],20,10],[[-2,[117,[-1]],-3],[[6,[[118,[-1]],36]]],12,[[137,[-1]]],65],[[-2,-3],[[6,[[117,[-1]],36]]],12,[[137,[-1]]],65],[[-2,-3,20],[[6,[[117,[-1]],36]]],12,[[137,[-1]]],65],[[[109,[-1]],-2,-3],3,10,[[26,[16]]],31],[[[109,[-1]],-2,-3],3,10,[[26,[16]]],31],[[[109,[-1]]],39,10],[[[109,[-1]]],[[15,[[0,[-1]]]]],10],[[[109,[-1]]],3,10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[106,[-1]],[106,[-1]]],[[106,[-1]]],10],[[[106,[-1]],-1],[[106,[-1]]],10],[[[28,[-1]],[28,[-1]]],2,10],[[[28,[-1]],[28,[-1]]],2,10],[[[116,[-1]]],16,10],[[[28,[-1]]],[],10],[[[28,[-1]]],[],10],[[[106,[-1]]],[],10],[-1,33,110],[[],[[107,[-1]]],12],[[[34,[-1]]],[[106,[-2]]],112,10],[[[109,[-1]]],3,10],[[[109,[-1]]],3,10],[[[109,[-1]]],3,10],[[[109,[-1]]],3,10],[[[109,[-1]]],3,10],[[[28,[-1]]],-1,10],[-1,[],[]],[-1,[],[]],[[[34,[-1]],[34,[-1]]],[[62,[71]]],112],[[59,59],[[62,[71]]]],[[39,39],[[62,[71]]]],0,[[[109,[-1]]],138,10],[[[117,[-1]]],[[139,[-1]]],12],[33,108],[114,108],[57,108],[[[109,[-1]]],[[123,[-1]]],10],[[[117,[-1]]],[[131,[-1]]],12],[[[116,[-1]]],[[8,[[106,[-1]]]]],10],[[-1,[62,[61]]],2,[]],[[[34,[-1]]],[[106,[-2]]],112,10],[-1,[[106,[-2]]],79,10],[[-1,-2],2,[],31],[[[129,[-1]],[34,[33]],111],[[106,[-1]]],10],[[[129,[-1]],-2,111],[[106,[-1]]],10,[[49,[[34,[59]]]]]],[[-1,3,111],[[106,[-2]]],[],10],[[[34,[-1]],111],[[106,[-2]]],112,10],[[33,3,111],[[106,[-1]]],10],[[43,3,111],[[106,[-1]]],10],[[38,3,111],[[106,[-1]]],10],[[59,3,111],[[106,[-1]]],10],[[[106,[-1]],[129,[-1]]],2,10],[[[129,[-1]],57],[[106,[-1]]],10],[[[129,[-1]],[34,[43]],111],[[106,[-1]]],10],[[-1,[34,[38]],3],[[6,[[29,[-2]],36]]],[],[]],[[[129,[-1]],[34,[38]],111],[[106,[-1]]],10],[[[129,[-1]],73],[[106,[-1]]],10],[[-1,1],[[133,[[117,[-2]]]]],140,0],[[-1,1],[[133,[[118,[-2]]]]],140,0],[[[34,[-1]],104],[[106,[-2]]],112,10],[113,111],[114,111],[115,111],[[[109,[-1]]],73,10],[[[109,[-1]],3],2,10],[[[109,[-1]],-2,-3],3,10,[[26,[16]]],31],[[[109,[-1]]],[[15,[[0,[-1]]]]],10],[36,[[62,[141]]]],[[[28,[-1]]],[[28,[-1]]],10],[[[106,[-1]]],[[106,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[106,[-1]],[106,[-1]]],[[106,[-1]]],10],[[[28,[-1]],[28,[-1]]],2,10],[[[28,[-1]],[28,[-1]]],2,10],[-1,[[106,[-2]]],79,10],[[-2,-3,[15,[[34,[43]]]]],[[6,[2,36]]],10,[[41,[-1]],64],[[65,[-1]]]],[[-1,-3],[[6,[2,36]]],[],[],[[45,[-2]]]],[[[117,[-1]],1],[[15,[108]]],0],[[[118,[-1]],1],[[15,[108]]],0],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,61,[]],[-1,61,[]],[[[117,[-1]]],[],12],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[[[34,[59]]],[[6,[[34,[38]]]]]],[[[34,[59]]],[[6,[[34,[33]]]]]],[[[34,[59]]],[[6,[[34,[43]]]]]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[[109,[-1]]],[[34,[33]]],10],[[[109,[-1]],-2],[[34,[33]]],10,110],[[117,-3,[8,[[8,[8]]]],-5],[[6,[36]]],142,[[143,[-1]]],[[144,[-1,-2]]],119,[[145,[-4]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[106,[-1]],-2],[[128,[-1,-3,-2]]],10,21,[[49,[[127,[-1]]]]]],[-1,-1,[]],[[[117,[-1]],-2,1],[[133,[2]]],0,146],[[[118,[-1]],-2,1],[[133,[2]]],0,146],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[88,2],[88,88],[138,138],[[[139,[-1]]],[[139,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[88,[[8,[[34,[59]]]]]],[[[139,[-1]]],[[15,[-1]]],12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[[88,88],20],[[88,4],5],[[138,4],5],[[[139,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[138,[[15,[[34,[59]]]]]],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[88,[[0,[79]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[147,[-1,-2]],[147,[-1,-2]]],[[147,[-1,-2]]],10,148],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[134,[-1]]],[[134,[-1]]],[24,10]],[[[149,[-1]]],[[149,[-1]]],[24,12]],[[[150,[-1,-2]]],[[150,[-1,-2]]],12,[[151,[-1]]]],[152,152],[153,153],[154,154],[[[147,[-1,-2]]],[[147,[-1,-2]]],24,24],[111,111],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[134,[-1]],[15,[-1]]],[[147,[-1,152]]],155],[[[134,[-1]],[147,[-1,152]]],[[147,[-1,154]]],155],0,[[[134,[-1]],-1],[[147,[-1,154]]],155],[[[134,[-1]],-1],[[147,[-1,153]]],155],[[],111],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[147,[-1,-2]]],[[8,[-1]]],[],[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[147,[-1,-2]]],[[8,[-1]]],[],[]],[3,-1,[]],[3,-1,[]],[[[134,[-1]],[147,[-1,154]]],[[147,[-1,154]]],155],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[[134,[-1]]],[[147,[-1,152]]],155],[[[134,[-1]]],[[147,[-1,154]]],155],[[[134,[-1]]],[[147,[-1,153]]],155],[[111,111],20],[[[134,[-1]]],9,155],[[[134,[-1]]],3,155],[[[134,[-1]],[147,[-1,154]]],[[15,[-1]]],155],[-1,20,[]],[[[134,[-1]],4],5,[52,10]],[[[156,[-1]],4],5,[52,10]],[[[149,[-1]],4],5,[52,12]],[[[150,[-1,-2]],4],5,[52,12],[52,[151,[-1]]]],[[157,4],5],[[152,4],5],[[153,4],5],[[154,4],5],[[[147,[-1,-2]],4],5,52,52],[[111,4],5],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[134,[-1]]],-1,155],[[[134,[-1]]],-1,155],[[[134,[-1]]],-1,155],[[[134,[-1]]],3,155],[[[147,[-1,-2]],3],-1,[],[]],[[[147,[-1,-2]],[158,[3]]],[[8,[-1]]],[],[]],[[[147,[-1,-2]],159],[[8,[-1]]],[],[]],[[[147,[-1,-2]],159],[[8,[-1]]],[],[]],[[[147,[-1,-2]],3],-1,[],[]],[[[147,[-1,-2]],[158,[3]]],[[8,[-1]]],[],[]],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[147,[-1,-2]]],[[0,[79]]],[],[]],[[[147,[-1,-2]]],[[0,[79]]],[],[]],[[[134,[-1]]],9,155],0,[[[134,[-1]],-1,-1,-2],[[15,[-1]]],155,[21,24]],[[[134,[-1]],[15,[-1]]],[[147,[-1,153]]],155],[[[134,[-1]],[147,[-1,153]]],[[147,[-1,152]]],155],[[[147,[-1,-2]],-1],[[147,[-1,-2]]],10,148],[[],-1,[]],[[9,9],[[134,[-1]]],155],[-1,[[150,[-1,-2]]],12,[[151,[-1]]]],[-2,[[150,[-1,-2]]],12,[[151,[-1]]]],[[],111],[[[147,[-1,-2]]],3,[],[]],[[[134,[-1]]],[[156,[-1]]],155],[[],111],[[-1,-2],[[6,[36]]],[],31],[[[147,[-1,153]],111],[[147,[-1,153]]],10],[[[134,[-1]],[147,[-1,154]],111],[[147,[-1,154]]],155],[[[134,[-1]],-1,111],-1,155],[[[147,[-1,-2]],-1],[[147,[-1,-2]]],10,148],[[[147,[-1,-2]],[147,[-1,-2]]],[[147,[-1,-2]]],10,148],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[160,[-1]],[160,[-1]]],[[160,[-1]]],10],[[[160,[-1]],-1],2,10],[[[160,[-1]],[160,[-1]]],2,10],[[-1,-1],2,161],[-1,2,[]],[-1,15,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,20,[]],[[[160,[-1]]],[[160,[-1]]],24],[[-1,-2],2,[],[]],[[-1,[147,[152]],160],[],[]],[[-1,[147,[153]],160],[],[]],[[-1,-2,-4,-5],[[133,[2]]],[],27,119,[[120,[-3]]],[21,24]],[[],[[160,[-1]]],10],[3,-1,[]],[3,-1,[]],[[-1,9],2,[]],[3,2],[-1,[],[]],[[[160,[-1]],[160,[-1]]],20,84],[-1,[],[]],[[[160,[-1]],4],5,52],[-1,-1,[]],[-1,[[8,[-2]]],[],[]],[[],3],[-1,-2,[],[]],[-1,9,[]],[[[160,[-1]],[160,[-1]]],[[160,[-1]]],10],[[[160,[-1]],[160,[-1]]],2,10],[[[160,[-1]],-1],2,10],[-1,25,[]],[9,-1,[]],[[],-1,[]],[[],-1,[]],[-1,[[160,[-2]]],27,10],[9],[-1,[[133,[-2]]],140,[]],[-1,133,140],[-1,15,[]],[-1,2,[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,[],[]],[[-1,-3,-4],[[6,[157]]],[],119,[[145,[-2]]],[21,24]],[-1,-2,[],[]],[[-1,-2],[[133,[2]]],[],146],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]]],[[162,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[[162,[-1]],[147,[152]],160],[],12],[[[162,[-1]],[147,[153]],160],[],12],[[[162,[-1]],-2,-4,[147,[152]],160],[[133,[2]]],12,27,[[119,[-1]]],[[120,[-1,-3]]]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[162,[-1]],9],2,12],[3,2],[3,2],[[[162,[-1]]],[[163,[-1]]],12],[[[162,[-1]],4],5,[52,12]],[[[164,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[[[162,[-1]]],[[8,[-1]]],12],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]]],9,12],[[[162,[-1]]],25,12],[9,[[162,[-1]]],12],[9],[-1,[[133,[[162,[-2]]]]],140,12],[-1,133,140],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[[[162,[-1]]],[],12],[[[162,[-1]],[163,[-1]],-3],[[6,[[165,[-1]],157]]],12,[[119,[-1]]],[[145,[-1,-2]]]],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]],-2],[[133,[2]]],12,146],0,[[[163,[-1]]],2,12],[[[163,[-1]],[163,[-1]]],2,12],[[[163,[-1]],[163,[-1]]],2,12],[[[163,[-1]],8],2,12],[[[163,[-1]]],2,12],[[[163,[-1]]],2,12],[[[163,[-1]]],2,12],[[[163,[-1]]],15,12],[-1,-2,[],[]],[-1,-2,[],[]],[[[163,[-1]]],20,12],[[[163,[-1]]],[[163,[-1]]],[24,12]],[[-1,-2],2,[],[]],[3,-1,[]],[3,-1,[]],[3,2],[[[163,[-1]]],[],12],[[[163,[-1]],4],5,[52,12]],[-1,-1,[]],[[],3],[-1,-2,[],[]],[[[122,[-1]]],[[163,[-1]]],12],[[[163,[-1]]],15,12],[[[163,[-1]]],2,12],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[166,[-1]],-2,-4,-5],[[133,[2]]],12,27,[[119,[-1]]],[[120,[-1,-3]]],[21,24]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[[166,[-1]],4],5,[52,12]],[[[167,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]]],[[166,[-1]]],12],[[[122,[-1]]],[[167,[-1]]],12],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[[[167,[-1]],-3,-4,[163,[-1]]],[[6,[157]]],12,[[119,[-1]]],[[145,[-1,-2]]],[21,24]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[165,[-1]]],[[165,[-1]]],[24,12]],[[[168,[-1]]],[[168,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[165,[-1]]],-1,12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[[[169,[-1]]],20,12],[[[170,[-1]]],20,12],[[[165,[-1]],4],5,[52,12]],[[[168,[-1]],4],5,[52,12]],[[[169,[-1]],4],5,[52,12]],[[[170,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]]],[[169,[-1]]],12],[[[162,[-1]]],[[170,[-1]]],12],[[[169,[-1]],-2],[[6,[36]]],12,31],[[[170,[-1]],-2],[[6,[36]]],12,31],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],0,[[[165,[-1]]],[[163,[-1]]],12],[[[165,[-1]],-1],[[2,[[163,[-1]],[168,[-1]]]]],12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]]],[[171,[-1]]],[24,172]],[[-1,-2],2,[],[]],[[[171,[-1]],[147,[152]],160],[],[172,52]],[[[171,[-1]],[147,[153]],160],[],[172,52]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[171,[-1]],9],2,[172,52]],[3,2],[3,2],[[[171,[-1]]],[[173,[-1]]],[172,52]],[[[171,[-1]],4],5,[52,172]],[[[174,[-1]],4],5,[52,172]],[-1,-1,[]],[-1,-1,[]],[[[171,[-1]],9,15,[62,[15]]],[[171,[-1]]],[172,52]],[[[171,[-1]]],[],[172,52]],[[[171,[-1]]],8,[172,52]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]]],9,[172,52]],[[[171,[-1]]],25,[172,52]],[9,[[171,[-1]]],[172,52]],[9],[-1,[[133,[[171,[-2]]]]],140,[172,52]],[[-1,1],[[133,[[171,[-2]]]]],140,[172,52]],[-1,133,140],[[[171,[-1]]],[],[172,52]],[[9,-1],[[171,[-2]]],27,[172,52]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[[[171,[-1]]],[],[172,52]],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]],-2],[[133,[2]]],[172,52],146],[[[171,[-1]],-2,1],[[133,[2]]],[172,52],146],0,0,[[[173,[-1]],[173,[-1]]],2,[172,52]],[[[175,[-1]],[175,[-1]]],2,[176,52]],[[[173,[-1]]],2,[172,52]],[[[173,[-1]]],15,[172,52]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[173,[-1]]],20,[172,52]],[[[175,[-1]]],20,[176,52]],[[[173,[-1]]],[[173,[-1]]],[24,172]],[[[175,[-1]]],[[175,[-1]]],[24,172]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[173,[-1]]],2,172],[[],[[173,[-1]]],[121,172]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[[173,[-1]]],[],[172,52]],[[[173,[-1]],4],5,[52,172]],[[[175,[-1]],4],5,[52,172]],[-1,-1,[]],[[[171,[-1]]],[[175,[-1]]],[176,52]],[-1,-1,[]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[],[[173,[-1]]],172],[[[171,[-1]]],[[175,[-1]]],[176,52]],[[[173,[-1]]],15,[172,52]],[[[173,[-1]]],2,[172,52]],[[[175,[-1]]],2,[176,52]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[177,[-1]],-2,-4,-5],[[133,[2]]],[172,52],27,119,[[120,[-3]]],[21,24]],[[[178,[-1]],-2,-4,-5],[[133,[2]]],[172,52],27,119,[[120,[-3]]],[21,24]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[[[177,[-1]],4],5,[52,172]],[[[179,[-1]],4],5,[52,172]],[[[178,[-1]],4],5,[52,172]],[[[180,[-1]],4],5,[52,172]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]]],[[177,[-1]]],[172,52]],[[[171,[-1]]],[[179,[-1]]],[176,52]],[[[171,[-1]]],[[178,[-1]]],172],[[[171,[-1]]],[[178,[-1]]],[172,52]],[[[171,[-1]]],[[180,[-1]]],[176,52]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[[179,[-1]],-3,-4,[175,[-1]]],[[6,[157]]],[176,52],119,[[145,[-2]]],[21,24]],[[[180,[-1]],-3,-4,[175,[-1]]],[[6,[157]]],[176,52],119,[[145,[-2]]],[21,24]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[181,[-1]]],[[181,[-1]]],[24,176,52]],[[[182,[-1]]],[[182,[-1]]],[24,172]],[[[183,[-1]]],[[183,[-1]]],[24,172]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[[[182,[-1]]],20,[176,52]],[[[183,[-1]]],20,[176,52]],[[[181,[-1]],4],5,[52,176,52]],[[[182,[-1]],4],5,[52,172]],[[[183,[-1]],4],5,[52,172]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]]],[[182,[-1]]],[176,52]],[[[171,[-1]]],[[182,[-1]]],[176,52]],[[[171,[-1]]],[[183,[-1]]],[176,52]],[[[171,[-1]]],[[183,[-1]]],[176,52]],[[[182,[-1]],-2],[[6,[36]]],[176,52],31],[[[183,[-1]],-2],[[6,[36]]],[176,52],31],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[175,[-1]]],[[182,[-1]]],[176,52]],0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,[[184,[-2,-3]]],[],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[185,[-1,-2,-3]]],[[185,[-1,-2,-3]]],[24,140],[24,12],[24,[119,[-2]]]],[[[186,[-1,-2,-3]]],[[186,[-1,-2,-3]]],[24,140],[24,12],[24,[119,[-2]]]],[[[187,[-1,-2,-3]]],[[187,[-1,-2,-3]]],[24,146],[24,12],[24,[119,[-2]]]],[[[188,[-1,-2,-3]]],[[188,[-1,-2,-3]]],[24,146],[24,12],[24,[119,[-2]]]],[[[184,[-1,-2]]],[[184,[-1,-2]]],[24,12],24],[[[189,[-1]]],[[189,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],[[133,[2]]],[],[]],[[[185,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],140,12],[[[186,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],140,12],[[[187,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],146,12],[[[188,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],146,12],[-1,[[133,[2]]],[]],[[[185,[-1,-2,[189,[-2]]]]],[[133,[2]]],140,12],[[[186,[-1,-2,[189,[-2]]]]],[[133,[2]]],140,12],[[[187,[-1,-2,[189,[-2]]]]],[[133,[2]]],146,12],[[[188,[-1,-2,[189,[-2]]]]],[[133,[2]]],146,12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[184,[-1,-2]]],[],12,[]],[3,-1,[]],[[[189,[-1]]],[],12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[-1,-2,[],[]],[[[187,[-1,-2,[189,[-2]]]]],-1,146,12],[[[188,[-1,-2,[189,[-2]]]]],-1,146,12],[[[185,[-1,-2,-3]],4],5,[52,140],[52,12],[52,[119,[-2]]]],[[[186,[-1,-2,-3]],4],5,[52,140],[52,12],[52,[119,[-2]]]],[[[187,[-1,-2,-3]],4],5,[52,146],[52,12],[52,[119,[-2]]]],[[[188,[-1,-2,-3]],4],5,[52,146],[52,12],[52,[119,[-2]]]],[[[184,[-1,-2]],4],5,[52,12],52],[[[189,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,[],[]],[[[189,[-1]]],[],12],[-1,-2,[],[]],[-1,-2,[],[]],[[],3],[-1,[[185,[-1,-2,[189,[-2]]]]],140,12],[[],3],[-1,[[186,[-1,-2,[189,[-2]]]]],140,12],[-1,[[187,[-1,-2,[189,[-2]]]]],146,12],[[],3],[-1,[[188,[-1,-2,[189,[-2]]]]],146,12],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],-1,[]],[[[66,[108]]],[[189,[-1]]],12],[-1,[[133,[-2]]],[],[]],[[[185,[-1,-2,[189,[-2]]]]],[[133,[-2]]],140,12],[[[186,[-1,-2,[189,[-2]]]]],[[133,[-2]]],140,12],[-1,133,[]],[[[185,[-1,-2,[189,[-2]]]]],133,140,12],[[[186,[-1,-2,[189,[-2]]]]],133,140,12],[-1,-2,[],[]],[[[185,[-1,-2,[189,[-2]]]]],[[189,[-2]]],140,12],[[[186,[-1,-2,[189,[-2]]]]],[[189,[-2]]],140,12],[[[187,[-1,-2,[189,[-2]]]]],[[189,[-2]]],146,12],[[[188,[-1,-2,[189,[-2]]]]],[[189,[-2]]],146,12],[-1,[[184,[-2,-3]]],[],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[104,104]]],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2],[[133,[2]]],[],[]],[[[187,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],146,12],[[[188,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],146,12],[-1,[[133,[2]]],[]],[[[187,[-1,-2,[189,[-2]]]]],[[133,[2]]],146,12],[[[188,[-1,-2,[189,[-2]]]]],[[133,[2]]],146,12]],"c":[],"p":[[4,"SerdeFormat",0],[15,"tuple"],[15,"usize"],[3,"Formatter",2434],[6,"Result",2434],[4,"Result",2435],[3,"TypeId",2436],[15,"slice"],[15,"u32"],[8,"Field",27],[8,"FftGroup",27],[8,"CurveAffine",27],[3,"Coordinates",2437],[3,"CtOption",2438],[3,"Vec",2439],[15,"str"],[8,"Fn",2440],[3,"Box",2441],[3,"Choice",2438],[15,"bool"],[8,"IntoIterator",2442],[8,"Send",2443],[8,"Sync",2443],[8,"Clone",2444],[15,"u64"],[8,"AsRef",2445],[8,"RngCore",2446],[4,"Assigned",793],[3,"Value",74],[8,"Add",2447],[8,"FnOnce",2440],[3,"Region",74],[3,"Advice",793],[3,"Column",793],[3,"AssignedCell",74],[4,"Error",793],[8,"FnMut",2440],[3,"Instance",793],[3,"TableColumn",793],[3,"SimpleTableLayouter",74],[8,"Assignment",793],[3,"Table",74],[3,"Fixed",793],[3,"NamespacedLayouter",74],[8,"Layouter",74],[3,"Cell",74],[3,"RegionIndex",74],[3,"RegionStart",74],[8,"Into",2445],[8,"Copy",2443],[8,"Borrow",2448],[8,"Debug",2434],[3,"SimpleFloorPlanner",74],[8,"RegionLayouter",377],[8,"TableLayouter",377],[8,"FromIterator",2442],[3,"Challenge",793],[8,"Mul",2447],[4,"Any",793],[8,"Neg",2447],[3,"String",2449],[4,"Option",2450],[8,"Sub",2447],[8,"SyncDeps",377],[8,"Circuit",793],[15,"array"],[3,"V1Pass",341],[3,"V1",341],[3,"RegionShape",377],[4,"RegionColumn",377],[4,"Ordering",2451],[3,"HashSet",2452],[3,"Selector",793],[8,"Hasher",2453],[3,"MockProver",445],[4,"CellValue",445],[8,"FromUniformBytes",2454],[8,"Ord",2451],[8,"Iterator",2455],[4,"FailureLocation",445],[3,"CircuitGates",445],[3,"CircuitLayout",445],[4,"VerifyFailure",445],[8,"PartialEq",2451],[3,"Error",2434],[3,"TracingFloorPlanner",445],[8,"FloorPlanner",793],[3,"Assembly",1519],[3,"Shift",2456],[3,"DrawingArea",2457],[4,"DrawingAreaErrorKind",2457],[8,"DrawingBackend",2458],[3,"Range",2459],[3,"CircuitCost",633],[8,"PrimeGroup",2460],[3,"MarginalProofSize",633],[3,"ProofSize",633],[3,"Column",678],[3,"Gate",678],[3,"Constraint",678],[3,"Region",678],[3,"VirtualCell",678],[3,"VirtualCell",793],[15,"i32"],[3,"HashMap",2461],[4,"Expression",793],[3,"BatchVerifier",793],[15,"u8"],[3,"ConstraintSystem",793],[8,"Phase",793],[3,"Rotation",1576],[8,"ColumnType",793],[3,"FixedQuery",793],[3,"AdviceQuery",793],[3,"InstanceQuery",793],[3,"Gate",793],[3,"VerifyingKey",793],[3,"ProvingKey",793],[8,"EncodedChallenge",2280],[8,"TranscriptWrite",2280],[8,"Default",2462],[6,"ParamsVerifierIPA",1869],[3,"PinnedConstraintSystem",793],[3,"FirstPhase",793],[3,"SecondPhase",793],[3,"ThirdPhase",793],[3,"Constraint",793],[3,"Constraints",793],[3,"VirtualCells",793],[4,"TableError",793],[3,"PinnedVerificationKey",793],[3,"Error",2463],[6,"Result",2463],[3,"EvaluationDomain",1576],[8,"Hash",2453],[8,"Transcript",2280],[8,"Params",1798],[3,"Argument",1519],[3,"VerifyingKey",1519],[8,"Read",2464],[8,"Error",2465],[8,"CommitmentScheme",1798],[8,"Verifier",1798],[8,"VerificationStrategy",1576],[8,"TranscriptRead",2280],[8,"Write",2464],[3,"Polynomial",1576],[8,"Basis",1576],[3,"ProverQuery",1576],[3,"VerifierQuery",1576],[8,"MSM",1798],[3,"Coeff",1576],[3,"LagrangeCoeff",1576],[3,"ExtendedLagrangeCoeff",1576],[8,"WithSmallOrderMulGroup",2454],[3,"PinnedEvaluationDomain",1576],[4,"Error",1576],[3,"RangeFrom",2459],[3,"RangeFull",2459],[3,"Blind",1798],[8,"Sized",2443],[3,"ParamsIPA",1869],[3,"MSMIPA",1916],[3,"IPACommitmentScheme",1869],[3,"GuardIPA",1978],[3,"ProverIPA",1946],[3,"VerifierIPA",1946],[3,"Accumulator",1978],[3,"AccumulatorStrategy",1978],[3,"SingleStrategy",1978],[3,"ParamsKZG",2055],[8,"Engine",2466],[3,"MSMKZG",2106],[3,"KZGCommitmentScheme",2055],[3,"DualMSM",2106],[8,"MultiMillerLoop",2466],[3,"ProverGWC",2155],[3,"ProverSHPLONK",2155],[3,"VerifierGWC",2155],[3,"VerifierSHPLONK",2155],[3,"GuardKZG",2220],[3,"AccumulatorStrategy",2220],[3,"SingleStrategy",2220],[3,"ChallengeScalar",2280],[3,"Blake2bRead",2280],[3,"Keccak256Read",2280],[3,"Blake2bWrite",2280],[3,"Keccak256Write",2280],[3,"Challenge255",2280],[8,"CurveExt",27],[8,"Chip",74],[13,"InRegion",608],[13,"OutsideRegion",608],[13,"ConstraintNotSatisfied",611],[13,"CellNotAssigned",611],[13,"InstanceCellNotAssigned",611],[13,"Permutation",611],[13,"ConstraintPoisoned",611],[13,"Lookup",611],[13,"Shuffle",611],[13,"NotEnoughRowsAvailable",1518],[8,"Guard",1576],[8,"ParamsProver",1798],[8,"Prover",1798],[8,"TranscriptWriterBuffer",2280],[8,"TranscriptReadBuffer",2280]],"b":[[90,"impl-Add%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[91,"impl-Add%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[92,"impl-Add-for-%26Value%3CV%3E"],[93,"impl-Add%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[94,"impl-Add%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[95,"impl-Add%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[96,"impl-Add%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[97,"impl-Add-for-Value%3CV%3E"],[98,"impl-Add%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[99,"impl-Add%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[146,"impl-Value%3C%26mut+V%3E"],[147,"impl-Value%3C%26V%3E"],[154,"impl-Value%3C%26mut+V%3E"],[155,"impl-Value%3C%26V%3E"],[256,"impl-Mul%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[257,"impl-Mul-for-Value%3CV%3E"],[258,"impl-Mul%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[259,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[260,"impl-Mul-for-%26Value%3CV%3E"],[261,"impl-Mul%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[262,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[263,"impl-Mul%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[264,"impl-Mul%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[265,"impl-Mul%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[277,"impl-Sub-for-Value%3CV%3E"],[278,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[279,"impl-Sub%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[280,"impl-Sub%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[281,"impl-Sub-for-%26Value%3CV%3E"],[282,"impl-Sub%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[283,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[284,"impl-Sub%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[285,"impl-Sub%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[286,"impl-Sub%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[419,"impl-From%3CColumn%3CAny%3E%3E-for-RegionColumn"],[421,"impl-From%3CSelector%3E-for-RegionColumn"],[525,"impl-Debug-for-FailureLocation"],[526,"impl-Display-for-FailureLocation"],[527,"impl-Display-for-VerifyFailure"],[528,"impl-Debug-for-VerifyFailure"],[529,"impl-Display-for-CircuitGates"],[530,"impl-Debug-for-CircuitGates"],[724,"impl-Display-for-Column"],[725,"impl-Debug-for-Column"],[726,"impl-Debug-for-VirtualCell"],[727,"impl-Display-for-VirtualCell"],[728,"impl-Debug-for-Gate"],[729,"impl-Display-for-Gate"],[730,"impl-Display-for-Constraint"],[731,"impl-Debug-for-Constraint"],[732,"impl-Display-for-Region"],[733,"impl-Debug-for-Region"],[734,"impl-From%3C(Any,+usize)%3E-for-Column"],[735,"impl-From%3CColumn%3CAny%3E%3E-for-Column"],[737,"impl-From%3CVirtualCell%3E-for-VirtualCell"],[738,"impl-From%3C(S,+Column,+i32)%3E-for-VirtualCell"],[740,"impl-From%3C(Column,+i32)%3E-for-VirtualCell"],[745,"impl-From%3C(usize,+String)%3E-for-Region"],[746,"impl-From%3C(usize,+%26str)%3E-for-Region"],[747,"impl-From%3C(usize,+String,+HashMap%3CColumn,+String%3E)%3E-for-Region"],[748,"impl-From%3C(usize,+%26str,+HashMap%3CColumn,+String%3E)%3E-for-Region"],[861,"impl-Add%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[862,"impl-Add%3CF%3E-for-%26Assigned%3CF%3E"],[863,"impl-Add%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[864,"impl-Add-for-Assigned%3CF%3E"],[865,"impl-Add%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[866,"impl-Add%3CF%3E-for-Assigned%3CF%3E"],[868,"impl-AddAssign-for-Assigned%3CF%3E"],[869,"impl-AddAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1147,"impl-Display-for-Error"],[1148,"impl-Debug-for-Error"],[1149,"impl-Display-for-TableError"],[1150,"impl-Debug-for-TableError"],[1157,"impl-From%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1158,"impl-From%3CF%3E-for-Assigned%3CF%3E"],[1159,"impl-From%3C(F,+F)%3E-for-Assigned%3CF%3E"],[1160,"impl-From%3C%26F%3E-for-Assigned%3CF%3E"],[1161,"impl-From%3CColumn%3CFixed%3E%3E-for-Column%3CAny%3E"],[1162,"impl-From%3CColumn%3CAdvice%3E%3E-for-Column%3CAny%3E"],[1164,"impl-From%3CColumn%3CInstance%3E%3E-for-Column%3CAny%3E"],[1171,"impl-From%3CFixed%3E-for-Any"],[1172,"impl-From%3CInstance%3E-for-Any"],[1173,"impl-From%3CAdvice%3E-for-Any"],[1184,"impl-From%3C(S,+Expression%3CF%3E)%3E-for-Constraint%3CF%3E"],[1186,"impl-From%3CExpression%3CF%3E%3E-for-Constraint%3CF%3E"],[1291,"impl-Mul%3CF%3E-for-%26Assigned%3CF%3E"],[1292,"impl-Mul-for-Assigned%3CF%3E"],[1293,"impl-Mul%3CF%3E-for-Assigned%3CF%3E"],[1294,"impl-Mul%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1295,"impl-Mul-for-Expression%3CF%3E"],[1296,"impl-Mul%3CF%3E-for-Expression%3CF%3E"],[1297,"impl-MulAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1298,"impl-MulAssign-for-Assigned%3CF%3E"],[1300,"impl-Neg-for-%26Assigned%3CF%3E"],[1301,"impl-Neg-for-Assigned%3CF%3E"],[1357,"impl-Sub%3CF%3E-for-%26Assigned%3CF%3E"],[1358,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1359,"impl-Sub-for-Assigned%3CF%3E"],[1360,"impl-Sub%3CF%3E-for-Assigned%3CF%3E"],[1361,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1362,"impl-Sub%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1364,"impl-SubAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1365,"impl-SubAssign-for-Assigned%3CF%3E"],[1395,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CInstance%3E"],[1396,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CAdvice%3E"],[1397,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CFixed%3E"],[1701,"impl-Index%3Cusize%3E-for-Polynomial%3CF,+B%3E"],[1702,"impl-Index%3CRangeFrom%3Cusize%3E%3E-for-Polynomial%3CF,+B%3E"],[1703,"impl-Index%3CRangeFull%3E-for-Polynomial%3CF,+B%3E"],[1704,"impl-IndexMut%3CRangeFull%3E-for-Polynomial%3CF,+B%3E"],[1705,"impl-IndexMut%3Cusize%3E-for-Polynomial%3CF,+B%3E"],[1706,"impl-IndexMut%3CRangeFrom%3Cusize%3E%3E-for-Polynomial%3CF,+B%3E"],[1748,"impl-Sub%3CF%3E-for-%26Polynomial%3CF,+B%3E"],[1749,"impl-Sub%3C%26Polynomial%3CF,+B%3E%3E-for-Polynomial%3CF,+B%3E"],[1817,"impl-AddAssign%3CF%3E-for-Blind%3CF%3E"],[1818,"impl-AddAssign-for-Blind%3CF%3E"],[1845,"impl-MulAssign-for-Blind%3CF%3E"],[1846,"impl-MulAssign%3CF%3E-for-Blind%3CF%3E"],[1918,"impl-MSMIPA%3C\'a,+C%3E"],[1919,"impl-MSM%3CC%3E-for-MSMIPA%3C\'a,+C%3E"],[2199,"impl-ProverSHPLONK%3C\'a,+E%3E"],[2200,"impl-Prover%3C\'params,+KZGCommitmentScheme%3CE%3E%3E-for-ProverSHPLONK%3C\'params,+E%3E"],[2258,"impl-AccumulatorStrategy%3C\'params,+E%3E"],[2259,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-AccumulatorStrategy%3C\'params,+E%3E"],[2260,"impl-SingleStrategy%3C\'params,+E%3E"],[2261,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-SingleStrategy%3C\'params,+E%3E"]]}\ +"halo2_gadgets":{"doc":"This crate provides various common gadgets and chips for …","t":"AAAAAQIIDDDIQQDQDQDQDQDQQDQKLLKLLLLLLLLLLLLLLLLLLLALLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLKKKLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKENDDDDDIIQENSDEELLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLKRRRRFFFFDNENIIDDDDDQLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLKLLLLLLLLLLLKLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDIDGDQIIDLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLFLLLLLLLKLLLLLLKLKLKLLKLLKLLLLLLLLLLLLLLLLLLLLLLLLLRDQDDIQDDLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLKLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLQDIQQDIQDQDQQKQIQLLLLLLLLALLLLLLLLLLLLLLLLLKLLLLLLLLLLLLKKLLLLLLLLLLALLAKLLLLLLLLLLLLLLLLLLLKDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLRIDLLLALLLLLLLLKLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLRDDRRLLRLRRLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDIIQLFFLLKLLAAFLLLLLFLLLFLALFFLLLLLKKLLLDDILLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["ecc","poseidon","sha256","sinsemilla","utilities","Base","BaseFitsInScalarInstructions","EccInstructions","FixedPoint","FixedPointBaseField","FixedPointShort","FixedPoints","FixedPoints","FullScalar","NonIdentityPoint","NonIdentityPoint","Point","Point","ScalarFixed","ScalarFixed","ScalarFixedShort","ScalarFixedShort","ScalarVar","ScalarVar","ShortScalar","X","X","add","add","add","add_incomplete","add_incomplete","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","chip","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","constrain_equal","constrain_equal","constrain_equal","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","extract_p","extract_p","extract_p","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from_base","from_inner","from_inner","from_inner","from_inner","from_inner","from_inner","init","init","init","init","init","init","init","init","init","inner","inner","inner","into","into","into","into","into","into","into","into","into","mul","mul","mul","mul","mul","mul_fixed","mul_fixed_base_field_elem","mul_fixed_short","new","new","new","new","new","scalar_fixed_from_signed_short","scalar_var_from_base","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_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","witness_point","witness_point_non_id","witness_scalar_fixed","witness_scalar_var","BaseFieldElem","BaseFieldElem","EccChip","EccConfig","EccPoint","EccScalarFixed","EccScalarFixedShort","FixedPoint","FixedScalarKind","FixedScalarKind","FullScalar","FullWidth","NUM_WINDOWS","NonIdentityEccPoint","ScalarVar","ShortScalar","add","add_incomplete","advices","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_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","config","configure","constants","constrain_equal","construct","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","extract_p","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","generator","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","lagrange_coeffs","loaded","lookup_config","mul","mul_fixed","mul_fixed_base_field_elem","mul_fixed_short","point","point","scalar_fixed_from_signed_short","scalar_var_from_base","to_owned","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_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","u","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","witness_point","witness_point_non_id","witness_scalar_fixed","witness_scalar_var","x","x","y","y","z","FIXED_BASE_WINDOW_SIZE","H","NUM_WINDOWS","NUM_WINDOWS_SHORT","compute_lagrange_coeffs","find_zs_and_us","test_lagrange_coeffs","test_zs_and_us","Hash","Message","PaddedWord","Padding","PoseidonInstructions","PoseidonSpongeInstructions","Pow5Chip","Pow5Config","Sponge","StateWord","Word","Word","absorb","add_input","add_input","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cell","clone","clone","clone","clone_into","clone_into","clone_into","config","configure","construct","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","finish_absorbing","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_inner","get_output","get_output","hash","init","init","init","init","init","init","init","init","initial_state","initial_state","inner","into","into","into","into","into","into","into","loaded","new","permute","permute","primitives","squeeze","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","value","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Absorbing","ConstantLength","Domain","Hash","Mds","P128Pow5T3","Padding","Spec","SpongeMode","Squeezing","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","constants","constants","constants","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","full_rounds","full_rounds","full_rounds","generate_constants","hash","init","init","init","init","init","init","initial_capacity_element","initial_capacity_element","into","into","into","into","into","name","name","padding","padding","partial_rounds","partial_rounds","partial_rounds","sbox","sbox","sbox","secure_mds","secure_mds","secure_mds","to_owned","to_owned","to_owned","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","BLOCK_SIZE","BlockWord","BlockWord","Sha256","Sha256Digest","Sha256Instructions","State","Table16Chip","Table16Config","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","compress","compress","config","configure","construct","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","digest","digest","digest","drop","drop","drop","drop","drop","finalize","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","init","init","init","init","init","initialization","initialization","initialization_vector","initialization_vector","into","into","into","into","into","load","loaded","new","to_owned","to_owned","to_owned","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","update","vzip","vzip","vzip","vzip","vzip","CellValue","CommitDomain","CommitDomains","CommitDomains","FixedPoints","HashDomain","HashDomains","HashDomains","Message","Message","MessagePiece","MessagePiece","NonIdentityPoint","Q","RunningSum","SinsemillaInstructions","X","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chip","clone","clone","clone_into","clone_into","commit","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","extract","fmt","fmt","fmt","fmt","from","from","from","from","from_field_elem","from_pieces","from_subpieces","hash","hash_domain","hash_to_point","hash_to_point","init","init","init","init","inner","into","into","into","into","merkle","new","new","primitives","r","short_commit","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","vzip","vzip","vzip","vzip","witness_message_piece","SinsemillaChip","SinsemillaConfig","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","config","configure","construct","deref","deref","deref_mut","deref_mut","drop","drop","eq","eq","extract","fmt","fmt","from","from","hash_to_point","init","init","into","into","load","loaded","lookup_config","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_message_piece","MERKLE_CRH_PERSONALIZATION","MerkleInstructions","MerklePath","borrow","borrow_mut","calculate_root","chip","clone","clone_into","construct","deref","deref_mut","drop","fmt","from","hash_layer","init","into","to_owned","try_from","try_into","type_id","vzip","MerkleChip","MerkleConfig","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","config","configure","construct","deref","deref","deref_mut","deref_mut","drop","drop","eq","eq","extract","fmt","fmt","from","from","hash_layer","hash_to_point","init","init","into","into","loaded","swap","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_message_piece","C","CommitDomain","HashDomain","INV_TWO_POW_K","K","Q","Q","Q_PERSONALIZATION","R","SINSEMILLA_S","S_PERSONALIZATION","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","commit","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","hash","hash_to_point","init","init","into","into","new","new","short_commit","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","FieldValue","RangeConstrained","UtilitiesInstructions","Var","Var","bitrange_of","bitrange_subset","bool_check","borrow","borrow_mut","cell","clone","clone_into","cond_swap","decompose_running_sum","decompose_word","deref","deref_mut","drop","fmt","from","i2lebsp","init","inner","into","lebs2ip","load_private","lookup_range_check","num_bits","range_check","ternary","to_owned","try_from","try_into","type_id","unsound_unchecked","value","value","value","vzip","witness_short","CondSwapChip","CondSwapConfig","CondSwapInstructions","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","config","configure","construct","deref","deref","deref_mut","deref_mut","drop","drop","eq","fmt","fmt","from","from","init","init","into","into","loaded","swap","swap","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","RunningSum","RunningSumConfig","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","configure","copy_decompose","deref","deref","deref","deref_mut","deref_mut","drop","drop","eq","fmt","fmt","from","from","init","init","into","into","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_decompose","LookupRangeCheckConfig","RunningSum","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","configure","copy_check","copy_short_check","deref","deref","deref","deref_mut","deref_mut","drop","drop","eq","fmt","fmt","from","from","init","init","into","into","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_check","witness_short_check"],"q":[[0,"halo2_gadgets"],[5,"halo2_gadgets::ecc"],[201,"halo2_gadgets::ecc::chip"],[402,"halo2_gadgets::ecc::chip::constants"],[410,"halo2_gadgets::poseidon"],[546,"halo2_gadgets::poseidon::primitives"],[654,"halo2_gadgets::sha256"],[755,"halo2_gadgets::sinsemilla"],[848,"halo2_gadgets::sinsemilla::chip"],[893,"halo2_gadgets::sinsemilla::merkle"],[916,"halo2_gadgets::sinsemilla::merkle::chip"],[961,"halo2_gadgets::sinsemilla::primitives"],[1007,"halo2_gadgets::utilities"],[1048,"halo2_gadgets::utilities::cond_swap"],[1090,"halo2_gadgets::utilities::decompose_running_sum"],[1126,"halo2_gadgets::utilities::lookup_range_check"],[1164,"halo2_proofs::plonk::error"],[1165,"core::result"],[1166,"halo2_proofs::circuit"],[1167,"core::convert"],[1168,"core::clone"],[1169,"pasta_curves::arithmetic::curves"],[1170,"core::fmt"],[1171,"core::cmp"],[1172,"core::fmt"],[1173,"core::any"],[1174,"pasta_curves::pallas"],[1175,"pasta_curves::pallas"],[1176,"halo2_proofs::plonk::circuit"],[1177,"halo2_proofs::circuit"],[1178,"ff"],[1179,"halo2_proofs::circuit"],[1180,"ff"],[1181,"core::iter::traits::collect"],[1182,"halo2_proofs::plonk::circuit"],[1183,"core::iter::traits::iterator"],[1184,"core::ops::range"],[1185,"ff"]],"d":["Elliptic curve operations.","The Poseidon algebraic hash function.","The SHA-256 hash function.","The Sinsemilla hash function.","Utility gadgets.","Fixed points that can be multiplied by base field elements.","Instructions that can be implemented for a curve whose …","The set of circuit instructions required to use the ECC …","Precomputed multiples of a fixed point, for full-width …","Precomputed multiples of a fixed point, that can be …","Precomputed multiples of a fixed point, for short signed …","Defines the fixed points for a given instantiation of the …","Enumeration of the set of fixed bases to be used in scalar …","Fixed points that can be used with full-width scalar …","A point on a specific elliptic curve that is guaranteed to …","Variable representing a non-identity elliptic curve point.","A point on a specific elliptic curve.","Variable representing an elliptic curve point.","An integer representing an element of the scalar field for …","Variable representing a full-width element of the elliptic …","A signed short (64-bit) integer represented as an element …","Variable representing a signed short element of the …","An integer representing an element of the scalar field for …","Variable representing a scalar used in variable-base …","Fixed points that can be used with short scalar …","The affine short Weierstrass x-coordinate of a point on a …","Variable representing the affine short Weierstrass …","Performs complete point addition, returning a + b.","Returns self + other using complete addition.","Returns self + other using complete addition.","Performs incomplete point addition, returning a + b.","Returns self + other using incomplete addition. The …","","","","","","","","","","","","","","","","","","","Chip implementations for the ECC gadgets.","","","","","","","","","","","Constrains point a to be equal in value to point b.","Constrains this point to be equal in value to another …","Constrains this point to be equal in value to another …","","","","","","","","","","","","","","","","","","","","","","","","","","","","Extracts the x-coordinate of a point.","Extracts the x-coordinate of a point.","Extracts the x-coordinate of a point.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Constructs a scalar from an existing base-field element.","Wraps the given point (obtained directly from an …","Wraps the given point (obtained directly from an …","Wraps the given x-coordinate (obtained directly from an …","Wraps the given fixed base (obtained directly from an …","Wraps the given fixed base (obtained directly from an …","Wraps the given fixed base (obtained directly from an …","","","","","","","","","","Returns the inner point.","Returns the inner point.","Returns the inner x-coordinate.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Performs variable-base scalar multiplication, returning …","Returns [by] self.","Returns [by] self.","Returns [by] self.","Returns [by] self.","Performs fixed-base scalar multiplication using a …","Performs fixed-base scalar multiplication using a base …","Performs fixed-base scalar multiplication using a short …","Witnesses the given full-width scalar.","Witnesses the given full-width scalar.","Converts the given signed short scalar.","Constructs a new point with the given value.","Constructs a new point with the given value.","Converts a magnitude and sign that exists as variables in …","Converts a base field element that exists as a variable in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Witnesses the given point as a private input to the …","Witnesses the given point as a private input to the …","Witnesses a full-width scalar to be used in fixed-base …","Witnesses a full-width scalar to be used in variable-base …","Type marker representing a base field element being used …","An element of the elliptic curve’s base field, that is …","An EccInstructions chip that uses 10 advice columns.","Configuration for EccChip.","A curve point represented in affine (x, y) coordinates, or …","A full-width scalar used for fixed-base scalar …","A signed short scalar used for fixed-base scalar …","Returns information about a fixed point that is required …","A trait representing the kind of scalar used with a …","The kind of scalar that this fixed point can be multiplied …","Type marker representing a full-width scalar for use in …","A full-width scalar. This is unimplemented for …","The number of windows that this scalar kind requires.","A non-identity point represented in affine (x, y) …","An enumeration of the possible types of scalars used in …","Type marker representing a signed 64-bit scalar for use in …","","","Advice columns needed by instructions in the ECC chip.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Side effects","Constants required for the ECC chip.","","Reconstructs this chip from the given config.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the generator for this fixed point.","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the Lagrange coefficients for this fixed point.","","Lookup range check using 10-bit lookup table","","","","","Returns the value of this curve point, if known.","Returns the value of this curve point, if known.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the $u$ values for this fixed point.","","","","","","","","","","","","","","","The cell containing the affine short-Weierstrass …","The cell containing the affine short-Weierstrass …","The cell containing the affine short-Weierstrass …","The cell containing the affine short-Weierstrass …","Returns the $z$ value for this fixed point.","Window size for fixed-base scalar multiplication","$2^{FIXED_BASE_WINDOW_SIZE}$","Number of windows for a full-width scalar","Number of windows for a short signed scalar","For each window, we interpolate the $x$-coordinate. Here, …","For each window, $z$ is a field element such that for each …","Test that Lagrange interpolation coefficients reproduce …","Test that the z-values and u-values satisfy the conditions:","A Poseidon hash function, built around a sponge.","A message word provided by the prover.","A word from the padded input to a Poseidon sponge.","A padding word, that will be fixed in the circuit …","The set of circuit instructions required to use the …","The set of circuit instructions required to use the Sponge …","A Poseidon chip using an $x^5$ S-Box.","Configuration for a Pow5Chip.","A Poseidon sponge.","A word in the Poseidon state.","A word over which the Poseidon permutation operates.","Variable representing the word over which the Poseidon …","Absorbs an element into the sponge.","Adds the given input to the state.","","","","","","","","","","","","","","","","","","","","","","","","Configures this chip for use in a circuit.","Construct a Pow5Chip.","","","","","","","","","","","","","","","","","","","","","","Transitions the sponge into its squeezing state.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Construct a Word gadget from the inner word.","Extracts sponge output from the given state.","","Hashes the given input.","","","","","","","","Initializes a new hasher.","Returns the initial empty state for the given domain.","","The word contained in this gadget.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Constructs a new duplex sponge for the given Poseidon …","Applies the Poseidon permutation to the given state.","","The Poseidon algebraic hash function.","Squeezes an element from the sponge.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The absorbing state of the Sponge.","A Poseidon hash function used with constant input length.","A domain in which a Poseidon hash function is being used.","A Poseidon hash function, built around a sponge.","The type used to hold the MDS matrix and its inverse.","Poseidon-128 using the $x^5$ S-box, with a width of 3 …","Iterator that outputs padding field elements.","A specification for a Poseidon permutation.","The state of the Sponge.","The squeezing state of the Sponge.","","","","","","","","","","","","","","","","","Generates (round_constants, mds, mds^-1) corresponding to …","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","The number of full rounds for this specification.","","","Generates (round_constants, mds, mds^-1) corresponding to …","Hashes the given input.","","","","","","Initializes a new hasher.","The initial capacity element, encoding this domain.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","The name of this domain, for debug formatting purposes.","","Returns the padding to be appended to the input.","","The number of partial rounds for this specification.","","","The S-box for this specification.","","","Side-loaded index of the first correct and secure MDS that …","","","","","","","","","","","","","","","","","","","","","","","","","","The size of a SHA-256 block, in 32-bit words.","A word in a Table16 message block.","Variable representing a 32-bit word of the input block to …","A gadget that constrains a SHA-256 invocation. It supports …","The output of a SHA-256 circuit invocation.","The set of circuit instructions required to use the Sha256 …","Variable representing the SHA-256 internal state.","A chip that implements SHA-256 with a maximum lookup table …","Configuration for a Table16Chip.","","","","","","","","","","","","","","","","","Starting from the given initialized state, processes a …","","","Configures a circuit to include this chip.","Reconstructs this chip from the given config.","","","","","","","","","","","","Converts the given state into a message digest.","","Convenience function to compute hash of the data. It will …","","","","","","Retrieve result and consume hasher instance.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Creates an initial state from the output state of a …","","Places the SHA-256 IV in the circuit, returning the …","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Loads the lookup table required by this chip into the …","","Create a new hasher instance.","","","","","","","","","","","","","","","","","","","Digest data, updating the internal state.","","","","","","A variable in the circuit.","Gadget representing a domain in which …","Trait allowing circuit’s Sinsemilla CommitDomains to be …","CommitDomains used in this instruction.","A type enumerating the fixed points used in CommitDomains.","A domain in which $\\\\mathsf{SinsemillaHashToPoint}$ and …","Trait allowing circuit’s Sinsemilla HashDomains to be …","HashDomains used in this instruction.","A message to be hashed.","A message composed of Self::MessagePieces.","A message piece with a bitlength of some multiple of K.","A piece in a message containing a number of K-bit words. A …","A point output of Self::hash_to_point.","Returns the Q constant for this domain.","A cumulative sum z is used to decompose a Sinsemilla …","The set of circuit instructions required to use the …","The x-coordinate of a point output of Self::hash_to_point.","","","","","","","","","Chip implementations for the Sinsemilla gadgets.","","","","","$\\\\mathsf{SinsemillaCommit}$ from § 5.4.8.4.","","","","","","","","","","","","","Extracts the x-coordinate of the output of a Sinsemilla …","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Constructs a MessagePiece from a field element.","Constructs a message from a vector of MessagePieces.","Constructs a MessagePiece by concatenating a sequence of …","$\\\\mathsf{SinsemillaHash}$ from § 5.4.1.9.","Returns the HashDomain contained in this CommitDomain","Hashes a message to an ECC curve point. This returns both …","$\\\\mathsf{SinsemillaHashToPoint}$ from § 5.4.1.9.","","","","","Returns the inner MessagePiece contained in this gadget.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Gadgets for implementing a Merkle tree with Sinsemilla.","Constructs a new HashDomain for the given domain.","Constructs a new CommitDomain for the given domain.","Implementation of Sinsemilla outside the circuit.","Returns the fixed point corresponding to the R constant …","$\\\\mathsf{SinsemillaShortCommit}$ from § 5.4.8.4.","","","","","","","","","","","","","","","","","","","Witness a message piece given a field element. Returns a …","A chip that implements 10-bit Sinsemilla using a lookup …","Configuration for the Sinsemilla hash chip","","","","","","","","","","Side-effects","Reconstructs this chip from the given config.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Loads the lookup table required by this chip into the …","","Returns the lookup range check config used in this config.","","","","","","","","","","","","SWU hash-to-curve personalization for the Merkle CRH …","Instructions to check the validity of a Merkle path of a …","Gadget representing a Merkle path that proves a leaf …","","","Calculates the root of the tree containing the given leaf …","Chip implementing a Merkle hash using Sinsemilla as the …","","","Constructs a MerklePath.","","","","","Returns the argument unchanged.","Compute MerkleCRH for a given layer. The hash that …","","Calls U::from(self).","","","","","","Chip implementing MerkleInstructions.","Configuration for the MerkleChip implementation.","","","","","","","","","","Configures the MerkleChip.","Constructs a MerkleChip given a MerkleConfig.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","The largest integer such that $2^c \\\\leq (r_P - 1) / 2$, …","A domain in which $\\\\mathsf{SinsemillaCommit}$ and …","A domain in which $\\\\mathsf{SinsemillaHashToPoint}$ and …","$\\\\frac{1}{2^K}$","Number of bits of each message piece in …","Returns the Sinsemilla $Q$ constant for this domain.","Returns the Sinsemilla $Q$ constant for this domain.","SWU hash-to-curve personalization for Sinsemilla $Q$ …","Returns the Sinsemilla $R$ constant for this domain.","The precomputed bases for the Sinsemilla hash function.","SWU hash-to-curve personalization for Sinsemilla $S$ …","","","","","","","$\\\\mathsf{SinsemillaCommit}$ from § 5.4.8.4.","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","$\\\\mathsf{SinsemillaHash}$ from § 5.4.1.9.","$\\\\mathsf{SinsemillaHashToPoint}$ from § 5.4.1.9.","","","Calls U::from(self).","Calls U::from(self).","Constructs a new HashDomain with a specific prefix string.","Constructs a new CommitDomain with a specific prefix …","$\\\\mathsf{SinsemillaShortCommit}$ from § 5.4.8.4.","","","","","","","","","","A type that has a value at either keygen or proving time.","A type representing a range-constrained field element.","Trait for utilities used across circuits.","Trait for a variable in the circuit.","Variable in the circuit.","Constructs a RangeConstrained<Value<F>> as a bitrange of …","Takes a specified subsequence of the little-endian bit …","Checks that an expression is either 1 or 0.","","","The cell at which this variable was allocated.","","","Gadget and chip for a conditional swap utility.","Decomposes an $n$-bit field element $\\\\alpha$ into $W$ …","Decompose a word alpha into window_num_bits bits …","","","","","Returns the argument unchanged.","The sequence of bits representing a u64 in little-endian …","","Returns the range-constrained inner type.","Calls U::from(self).","The u64 integer represented by an L-bit little-endian …","Load a variable.","Make use of a K-bit lookup table to decompose a field …","Returns the number of bits to which this cell is …","Check that an expression is in the small range [0..range), …","If a then b, else c. Returns (a * b) + (1 - a) * c.","","","","","Constructs a RangeConstrained<AssignedCell<F, F>> without …","Returns the value of this type.","The value allocated to this variable.","Extracts the range-constrained value from this …","","Witnesses a subset of the bits in value and constrains …","A chip implementing a conditional swap.","Configuration for the CondSwapChip.","Instructions for a conditional swap gadget.","","","","","","","","","","Configures this chip for use in a circuit.","Constructs a CondSwapChip given a CondSwapConfig.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","Given an input pair (a,b) and a swap boolean flag, returns …","","","","","","","","","","","","The running sum $[z_0, …, z_W]$. If created in strict …","Configuration that provides methods for running sum …","","","","","","","perm MUST include the advice column z.","Decompose an existing variable alpha that is copied into …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","Decompose a field element alpha that is witnessed in this …","Configuration that provides methods for a lookup range …","The running sum $[z_0, …, z_W]$. If created in strict …","","","","","","","The running_sum advice column breaks the field element …","Range check on an existing cell that is copied into this …","Short range check on an existing cell that is copied into …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","Range check on a value that is witnessed in this helper.","Short range check on value that is witnessed in this …"],"i":[0,0,0,0,0,28,0,0,0,0,0,0,9,28,0,9,0,9,0,9,0,9,0,9,28,0,9,9,6,7,9,6,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,0,6,7,12,13,14,6,7,12,13,14,9,6,7,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,9,6,7,18,21,22,6,7,17,12,13,14,18,21,22,6,7,7,17,12,13,14,18,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,6,7,17,18,21,22,6,7,17,12,13,14,9,6,12,13,14,9,9,9,18,21,22,6,7,9,23,6,7,12,13,14,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,9,9,9,9,0,35,0,0,0,0,0,0,0,119,0,35,120,0,0,0,26,26,32,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,30,31,32,26,33,34,35,30,31,32,26,33,34,35,26,26,0,26,26,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,32,26,26,30,31,32,44,45,46,26,33,34,35,30,30,31,32,44,45,46,26,33,34,35,119,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,119,26,32,26,26,26,26,30,31,26,26,30,31,32,26,33,34,35,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,119,30,31,32,44,45,46,26,33,34,35,26,26,26,26,30,31,30,31,119,0,0,0,0,0,0,0,0,0,54,0,54,0,0,0,0,0,0,0,67,56,60,61,64,61,62,54,66,56,69,64,61,62,54,66,56,69,62,64,62,54,64,62,54,61,61,61,64,61,62,54,66,56,69,64,61,62,54,66,56,69,64,61,62,54,66,56,69,56,64,61,62,54,66,56,69,64,61,62,62,54,66,56,69,66,60,61,69,64,61,62,54,66,56,69,69,60,61,66,64,61,62,54,66,56,69,61,56,67,61,0,56,64,62,54,64,61,62,54,66,56,69,64,61,62,54,66,56,69,64,61,62,54,66,56,69,62,64,61,62,54,66,56,69,0,0,0,0,0,0,59,0,0,0,75,55,65,70,72,75,55,65,70,72,55,70,72,55,70,72,58,75,75,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,58,75,75,0,72,75,55,65,70,72,72,59,70,75,55,65,70,72,59,70,59,70,58,75,75,58,75,75,58,75,75,55,70,72,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,0,0,83,0,0,0,83,0,0,79,80,81,82,84,79,80,81,82,84,79,80,81,79,80,81,83,81,81,81,81,79,79,80,81,82,84,79,80,81,82,84,83,81,84,79,80,81,82,84,84,79,80,81,82,84,79,80,81,82,84,79,80,81,82,84,83,81,83,81,79,80,81,82,84,81,81,84,79,80,81,79,80,81,82,84,79,80,81,82,84,79,80,81,82,84,84,79,80,81,82,84,86,0,0,86,86,0,0,86,0,86,0,86,86,92,86,0,86,85,87,89,88,85,87,89,88,0,85,87,85,87,88,85,87,89,88,85,87,89,88,85,87,89,88,86,85,87,89,88,85,87,89,88,87,85,87,89,93,86,89,85,87,89,88,87,85,87,89,88,0,89,88,0,93,88,85,87,85,87,89,88,85,87,89,88,85,87,89,88,85,87,89,88,86,0,0,91,94,91,94,91,94,91,94,94,94,94,91,94,91,94,91,94,91,94,94,91,94,91,94,94,91,94,91,94,94,94,91,91,94,91,94,91,94,91,94,91,94,94,0,0,0,96,96,96,0,96,96,96,96,96,96,96,96,97,96,96,96,96,96,96,96,0,0,99,100,99,100,99,100,99,100,100,100,100,99,100,99,100,99,100,99,100,100,99,100,99,100,100,100,99,100,99,100,100,100,99,100,99,100,99,100,99,100,99,100,100,0,0,0,0,0,101,103,0,103,0,0,101,103,101,103,101,101,103,101,103,101,103,101,103,101,103,101,103,101,101,101,103,101,103,101,103,103,101,101,103,101,103,101,103,101,103,0,0,0,0,121,108,0,0,108,108,122,108,108,0,0,0,108,108,108,108,108,0,108,108,108,0,121,0,108,0,0,108,108,108,108,108,111,122,108,108,108,0,0,0,112,113,112,113,112,113,112,113,112,112,112,112,113,112,113,112,113,113,112,113,112,113,112,113,112,113,112,123,112,112,113,112,113,112,113,112,113,112,113,0,0,117,114,117,114,114,114,114,114,117,117,114,117,114,117,114,114,117,114,117,114,117,114,117,114,114,117,114,117,114,117,114,117,114,114,0,0,118,41,118,41,41,41,41,41,41,118,118,41,118,41,118,41,41,118,41,118,41,118,41,118,41,41,118,41,118,41,118,41,118,41,41,41],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,-2,-3,-4],[[2,[1]]],[],3,[4,5],[4,5]],[[[6,[-1,-2]],-3,-4],[[2,[[7,[-1,-2]],1]]],8,[[9,[-1]]],3,[[4,[[7,[-1,-2]]]],5]],[[[7,[-1,-2]],-3,-4],[[2,[[7,[-1,-2]],1]]],8,[[9,[-1]],5,10,11],3,[[4,[[7,[-1,-2]]]],5]],[[-1,-2],[[2,[1]]],[],3],[[[6,[-1,-2]],-3,[6,[-1,-2]]],[[2,[[6,[-1,-2]],1]]],8,[[9,[-1]]],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[6,[-1,-2]]],[[6,[-1,-2]]],[5,8],[5,[9,[-1]]]],[[[7,[-1,-2]]],[[7,[-1,-2]]],[5,8],[5,[9,[-1]],5,10,11]],[[[12,[-1,-2]]],[[12,[-1,-2]]],[5,8],[5,[9,[-1]]]],[[[13,[-1,-2]]],[[13,[-1,-2]]],[5,8],[5,[9,[-1]]]],[[[14,[-1,-2]]],[[14,[-1,-2]]],[5,8],[5,[9,[-1]]]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],[[2,[15,1]]],[],3],[[[6,[-1,-2]],-3,-4],[[2,[15,1]]],8,[[9,[-1]]],3,[[4,[[7,[-1,-2]]]],5]],[[[7,[-1,-2]],-3,-4],[[2,[15,1]]],8,[[9,[-1]],5,10,11],3,[[4,[[7,[-1,-2]]]],5]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[-1,[],[4,5]],[[[6,[-1,-2]]],[[17,[-1,-2]]],8,[[9,[-1]]]],[[[7,[-1,-2]]],[[17,[-1,-2]]],8,[[9,[-1]],5,10,11]],[[[18,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[21,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[22,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[6,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[7,[-1,-2]],19],20,[10,8],[10,[9,[-1]],5,10,11]],[[[17,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[12,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[13,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[14,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[6,[-1,-2]]],[[7,[-1,-2]]],8,[[9,[-1]],5,10,11]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-2,-3],[[2,[[18,[-1,-2]],1]]],8,[[23,[-1]]],3],[-2,[[6,[-1,-2]]],8,[[9,[-1]]]],[-2,[[7,[-1,-2]]],8,[[9,[-1]],5,10,11]],[-2,[[17,[-1,-2]]],8,[[9,[-1]]]],[-2,[[12,[-1,-2]]],8,[[9,[-1]]]],[-2,[[13,[-1,-2]]],8,[[9,[-1]]]],[-2,[[14,[-1,-2]]],8,[[9,[-1]]]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[[6,[-1,-2]]],[],8,[[9,[-1]]]],[[[7,[-1,-2]]],[],8,[[9,[-1]],5,10,11]],[[[17,[-1,-2]]],[],8,[[9,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2],[[2,[15,1]]],[],3],[[[6,[-1,-2]],-3,[18,[-1,-2]]],[[2,[[15,[[7,[-1,-2]],[18,[-1,-2]]]],1]]],8,[[9,[-1]]],3],[[[12,[-1,-2]],-3,[21,[-1,-2]]],[[2,[[15,[[7,[-1,-2]],[21,[-1,-2]]]],1]]],8,[[9,[-1]]],3],[[[13,[-1,-2]],-3],[[2,[[7,[-1,-2]],1]]],8,[[9,[-1]]],3],[[[14,[-1,-2]],-3,[22,[-1,-2]]],[[2,[[15,[[7,[-1,-2]],[22,[-1,-2]]]],1]]],8,[[9,[-1]]],3],[[-1,-2],[[2,[15,1]]],[],3],[[-1,-2],[[2,[1]]],[],3],[[-1,-2],[[2,[15,1]]],[],3],[[-2,-3,24],[[2,[[18,[-1,-2]],1]]],8,[[9,[-1]]],3],[[-2,-3,24],[[2,[[21,[-1,-2]],1]]],8,[[9,[-1]]],3],[[-2,-3,15],[[2,[[22,[-1,-2]],1]]],8,[[9,[-1]]],3],[[-2,-3,[24,[-1]]],[[2,[[6,[-1,-2]],1]]],8,[[9,[-1]]],3],[[-2,-3,[24,[-1]]],[[2,[[7,[-1,-2]],1]]],8,[[9,[-1]],5,10,11],3],[[-1,-2,15],[[2,[1]]],[],3],[[-1,-2],[[2,[1]]],[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2,[24,[-3]]],[[2,[1]]],[],3,[]],[[-1,-2,[24,[-3]]],[[2,[1]]],[],3,[]],[[-1,-2,24],[[2,[1]]],[],3],[[-1,-2,24],[[2,[1]]],[],3],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[26,[-1]],-2,-3,-4],[[2,[1]]],[[28,[27]]],[[3,[29]]],[4,5],[4,5]],[[[26,[-1]],-2],[[2,[1]]],[[28,[27]]],[[3,[29]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[30,30],[31,31],[[[32,[-1]]],[[32,[-1]]],[5,[28,[27]]]],[[[26,[-1]]],[[26,[-1]]],[5,[28,[27]]]],[33,33],[34,34],[35,35],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[26,[-1]]],[],[[28,[27]]]],[[[36,[29]],[39,[[38,[37]]]],[39,[[38,[40]]]],[41,[29]]]],0,[[[26,[-1]],-2],[[2,[15,1]]],[[28,[27]]],[[3,[29]]]],[[],[[26,[-1]]],[[28,[27]]]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[[[32,[-1]],[32,[-1]]],42,[43,[28,[27]]]],[[[26,[-1]],[26,[-1]]],42,[43,[28,[27]]]],[-1,[],[4,5]],[[30,19],20],[[31,19],20],[[[32,[-1]],19],20,[10,[28,[27]]]],[[44,19],20],[[45,19],20],[[46,19],20],[[[26,[-1]],19],20,[10,[28,[27]]]],[[33,19],20],[[34,19],20],[[35,19],20],[31,30],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[47,[39]]],[]],[[[26,[-1]]],[],[[28,[27]]]],0,[[[26,[-1]],-2],[[2,[15,1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2],[[2,[15,1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2,[48,[29,29]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2],[[2,[15,1]]],[[28,[27]]],[[3,[29]]]],[30,[[24,[27]]]],[31,[[24,[27]]]],[[[26,[-1]],-2,[15,[[48,[29,29]],[48,[29,29]]]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,[[47,[39]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[26,[-1]],-2,[24,[27]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2,[24,[27]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2,[24,[49]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2,[24,[49]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[30,[[48,[29,29]]]],[31,[[48,[29,29]]]],[30,[[48,[29,29]]]],[31,[[48,[29,29]]]],[-1,[[47,[50]]],[]],0,0,0,0,[[-1,16],[[47,[39]]],8],[[-1,16],[[51,[[47,[[15,[50,39]]]]]]],8],[[-1,16],15,8],[[-1,[52,[50]],[52,[[39,[[39,[53]]]]]],16],15,8],0,0,0,0,0,0,0,0,0,0,0,0,[[[56,[-1,-4,-2,[55,[[54,[-1]]]],-3]],-5,[54,[-1]]],[[2,[15,1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[[-1,-3,39,[55,[[54,[-2]]]]],[[2,[39,1]]],[],[],[[3,[-2]]]],[[[61,[-1]],-2,39,[55,[[54,[-1]]]]],[[2,[39,1]]],57,[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[62,[-1]]],63,57],[[[64,[-1]]],[[64,[-1]]],[5,57]],[[[62,[-1]]],[[62,[-1]]],[5,57]],[[[54,[-1]]],[[54,[-1]]],[5,57]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[61,[-1]]],[],57],[[[36,[-1]],[39,[[38,[37]]]],[38,[37]],[39,[[38,[40]]]],[39,[[38,[40]]]]],[[64,[-1]]],57],[[[64,[-1]]],[[61,[-1]]],57],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[[[56,[-1,-4,-2,[55,[[54,[-1]]]],-3]],-5],[[2,[[56,[-1,-4,-2,65,-3]],1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[[[64,[-1]],19],20,[10,57]],[[[61,[-1]],19],20,[10,57]],[[[62,[-1]],19],20,[10,57]],[[[54,[-1]],19],20,[10,57]],[[[66,[-1,-3,-2]],19],20,[10,57],[10,[58,[-1]]],[10,[67,[-1,-2]]]],[[[56,[-1,-4,-2,-5,-3]],19],20,[10,57],[10,[58,[-1]]],[10,[59,[-1]]],[10,[60,[-1,-2,-3]]],[10,68]],[[[69,[-1,-4,-2,-3]],19],20,[10,57],[10,[58,[-1]]],[10,[59,[-1]]],[10,[60,[-1,-2,-3]]]],[-1,-1,[]],[-1,-1,[]],[[[48,[-1,-1]]],[[62,[-1]]],57],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],[[66,[-1,-3,-2]]],57,[[58,[-1]]],[[67,[-1,-2]]]],[39,65],[39,65],[[[69,[-1,-3,-2,70]],-4,[39,[[48,[-1,-1]]]]],[[2,[[48,[-1,-1]],1]]],71,[[58,[-1]]],[[60,[-1,-2,70]]],[[3,[-1]]]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[-4,-5],[[2,[[69,[-1,-4,-2,-3]],1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[[-1,-3],[[2,[39,1]]],[],[],[[3,[-2]]]],[[[61,[-1]],-2],[[2,[39,1]]],57,[[3,[-1]]]],[[[66,[-1,-3,-2]]],[],57,[[58,[-1]]],[[67,[-1,-2]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[61,[-1]]],[],57],[[-4,-5],[[2,[[56,[-1,-4,-2,[55,[[54,[-1]]]],-3]],1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[[-1,-3,39],[[2,[39,1]]],[],[],[[3,[-2]]]],[[[61,[-1]],-2,39],[[2,[39,1]]],57,[[3,[-1]]]],0,[[[56,[-1,-4,-2,65,-3]],-5],[[2,[[48,[-1,-1]],1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[[[62,[-1]]],[[24,[-1]]],57],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[55,[-1]]],[[55,[-1]]],5],[70,70],[[[72,[-1,-2,-3]]],[[72,[-1,-2,-3]]],[5,57],[5,[58,[-1]]],[5,[59,[-1]]]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[],[[15,[[47,[[39,[-1]]]],[73,[-1]],[73,[-1]]]]],[]],[[],[[15,[[47,[[39,[29]]]],[73,[29]],[73,[29]]]]]],[[],[[15,[[47,[[39,[74]]]],[73,[74]],[73,[74]]]]]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[16,15],[[75,19],20],[[[55,[-1]],19],20,10],[[[65,[-1]],19],20,10],[[70,19],20],[[[72,[-1,-2,-3]],19],20,57,[[58,[-1]]],[[59,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[[],16],[[],[[15,[[47,[[39,[-1]]]],[73,[-1]],[73,[-1]]]]],[76,77]],[[[72,[-1,-2,70]],[39,[-1]]],-1,71,[[58,[-1]]]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],[[72,[-1,-2,-3]]],57,[[58,[-1]]],[[59,[-1]]]],[[],-1,[]],[[],-1,71],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],78],[[],78],[16],[16],[[],16],[[],16],[[],16],[-1,-1,[]],[29,29],[74,74],[[],16],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[79,79],[80,80],[81,81],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-3,39],[[2,[1]]],[],[],[[3,[-2]]]],[[81,-1,39],[[2,[1]]],[[3,[29]]]],[81],[[[36,[29]]]],[[],81],[[],79],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[[-1,-3],[[2,[39,1]]],[],[],[[3,[-2]]]],[[81,-1],[[2,[39,1]]],[[3,[29]]]],[[-2,-3,52],[[2,[82,1]]],57,[[83,[-1]]],[[3,[-1]]]],[16,15],[16,15],[16,15],[16,15],[16,15],[[[84,[-1,-2]],-3],[[2,[82,1]]],57,[[83,[-1]]],[[3,[-1]]]],[[79,19],20],[[80,19],20],[[81,19],20],[[[82,[-1]],19],20,10],[[[84,[-1,-2]],19],20,[10,57],[10,[83,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[[],16],[[],16],[[],16],[[-1,-3],[[2,[1]]],[],[],[[3,[-2]]]],[[81,-1],[[2,[1]]],[[3,[29]]]],[[-1,-3],[[2,[1]]],[],[],[[3,[-2]]]],[[81,-1],[[2,[0,1]]],[[3,[29]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[80,-1],[[2,[15,1]]],[[3,[29]]]],[81],[[-2,-3],[[2,[[84,[-1,-2]],1]]],57,[[83,[-1]]],[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[[[84,[-1,-2]],-3,52],[[2,[15,1]]],57,[[83,[-1]]],[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[85,[-1,-2]]],[[85,[-1,-2]]],[5,8],[[86,[-1]],5,10,11,5]],[[[87,[-1,-2]]],[[87,[-1,-2]]],[5,8],[[86,[-1]],5,10,11,5]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[88,[-1,-2,-3]],-4,[85,[-1,-2]],[21,[-1,-3]]],[[2,[[15,[[7,[-1,-3]],47]],1]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11],3],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[[]],[[[85,[-1,-2]],19],20,[10,8],[[86,[-1]],5,10,11,10]],[[[87,[-1,-2]],19],20,[10,8],[[86,[-1]],5,10,11,10]],[[[89,[-1,-2,-3]],19],20,[10,8],[[86,[-1]],5,10,11,10],[[9,[-1]],5,10,11,10]],[[[88,[-1,-2,-3]],19],20,[10,8],[[86,[-1]],5,10,11,10],[[9,[-1]],5,10,11,10]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-2,-3,24,16],[[2,[[87,[-1,-2]],1]]],8,[[86,[-1]],5,10,11],3],[[-2,[47,[[87,[-1,-2]]]]],[[85,[-1,-2]]],8,[[86,[-1]],5,10,11]],[[-2,-3,-4],[[2,[[87,[-1,-2]],1]]],8,[[86,[-1]],5,10,11],3,90],[[[89,[-1,-2,-3]],-4,[85,[-1,-2]]],[[2,[[15,[[17,[-1,-3]],47]],1]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11],3],[-1,-2,[],[]],[[-1,-2,-3],[[2,[[15,[47]],1]]],[],3,[]],[[[89,[-1,-2,-3]],-4,[85,[-1,-2]]],[[2,[[15,[[6,[-1,-3]],47]],1]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11],3],[[],16],[[],16],[[],16],[[],16],[[[87,[-1,-2]]],[],8,[[86,[-1]],5,10,11]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[-2,-3],[[89,[-1,-2,-3]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11]],[[-2,-3],[[88,[-1,-2,-3]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11]],0,[-1,[],[]],[[[88,[-1,-2,-3]],-4,[85,[-1,-2]],[21,[-1,-3]]],[[2,[[15,[[17,[-1,-3]],47]],1]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2,24,16],[[2,[1]]],[],3],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[91,[-1,-3,-2]]],[[91,[-1,-3,-2]]],[[92,[27]],5],[[28,[27]],5],[[93,[27,-2,-1]],5]],[[[94,[-1,-3,-2]]],[[94,[-1,-3,-2]]],[[92,[27]],5],[[28,[27]],5],[[93,[27,-2,-1]],5]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[94,[-1,-3,-2]]],[],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[36,[29]],[39,[[38,[37]]]],[38,[37]],[38,[40]],[15,[95,95,95]],[41,[29]]]],[[],[[94,[-1,-3,-2]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[[91,[-1,-3,-2]],[91,[-1,-3,-2]]],42,[[92,[27]],43],[[28,[27]],43],[[93,[27,-2,-1]],43]],[[[94,[-1,-3,-2]],[94,[-1,-3,-2]]],42,[[92,[27]],43],[[28,[27]],43],[[93,[27,-2,-1]],43]],[[]],[[[91,[-1,-3,-2]],19],20,[[92,[27]],10],[[28,[27]],10],[[93,[27,-2,-1]],10]],[[[94,[-1,-3,-2]],19],20,[[92,[27]],10],[[28,[27]],10],[[93,[27,-2,-1]],10]],[-1,-1,[]],[-1,-1,[]],[[[94,[-1,-3,-2]],-4,27],[[2,[[15,[47]],1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[[[91,[-1,-3,-2]],-4],[[2,[1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],[[[94,[-1,-3,-2]]],[],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[91,[-1,-3,-2]]],[[41,[29]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[94,[-1,-3,-2]],-4,[24,[29]],16],[[2,[1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[[96,[-1,-2]],-3],[[2,[1]]],8,[[97,[-1]],5],3],0,[[[96,[-1,-2]]],[[96,[-1,-2]]],[5,8],[[97,[-1]],5,5]],[[-1,-2],15,[],[]],[[[39,[-2]],[24,[98]],[24,[39]]],[[96,[-1,-2]]],8,[[97,[-1]],5]],[16,-1,[]],[16,-1,[]],[16,15],[[[96,[-1,-2]],19],20,[10,8],[[97,[-1]],5,10]],[-1,-1,[]],[[-1,-2,-3,16],[[2,[1]]],[],3,[]],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[99,[-1,-3,-2]]],[[99,[-1,-3,-2]]],[[92,[27]],5],[[28,[27]],5],[[93,[27,-2,-1]],5]],[[[100,[-1,-3,-2]]],[[100,[-1,-3,-2]]],[[92,[27]],5],[[28,[27]],5],[[93,[27,-2,-1]],5]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[100,[-1,-3,-2]]],[],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[36,[29]],[91,[-1,-3,-2]]],[[99,[-1,-3,-2]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[99,[-1,-3,-2]]],[[100,[-1,-3,-2]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[[99,[-1,-3,-2]],[99,[-1,-3,-2]]],42,[[92,[27]],43],[[28,[27]],43],[[93,[27,-2,-1]],43]],[[[100,[-1,-3,-2]],[100,[-1,-3,-2]]],42,[[92,[27]],43],[[28,[27]],43],[[93,[27,-2,-1]],43]],[[]],[[[99,[-1,-3,-2]],19],20,[[92,[27]],10],[[28,[27]],10],[[93,[27,-2,-1]],10]],[[[100,[-1,-3,-2]],19],20,[[92,[27]],10],[[28,[27]],10],[[93,[27,-2,-1]],10]],[-1,-1,[]],[-1,-1,[]],[[[100,[-1,-3,-2]],-4,27,16],[[2,[1]]],[[92,[27]],11],[[28,[27]]],[[93,[27,-2,-1]],11],[[3,[29]]]],[[[100,[-1,-3,-2]],-4,27],[[2,[[15,[[47,[47]]]],1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[[[100,[-1,-3,-2]]],[],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[100,[-1,-3,-2]],-4,[15,[[24,[29]]]],[24,[42]]],[[2,[15,1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[100,[-1,-3,-2]],-4,[24,[29]],16],[[2,[1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],0,0,0,0,0,[101,102],[103,102],0,[103,102],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[101,101],[[-1,-2],15,[],[]],[[103,-1,49],[[104,[102]]],105],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[101,19],20],[[103,19],20],[-1,-1,[]],[-1,-1,[]],[[101,-1],[[104,[29]]],105],[[101,-1],[[104,[102]]],105],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[106,101],[106,103],[[103,-1,49],[[104,[29]]],105],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[[[24,[-1]],[107,[16]]],[[108,[-1,[24,[-1]]]]],109],[[-1,[107,[16]]],-1,109],[[[110,[-1]]],[[110,[-1]]],71],[-1,-2,[],[]],[-1,-2,[],[]],[-1,63,[]],[[[108,[-1,-2]]],[[108,[-1,-2]]],[5,57],[5,[111,[-1]]]],[[-1,-2],15,[],[]],0,0,[[-1,16,16],[[47,[53]]],109],[16,-1,[]],[16,-1,[]],[16,15],[[[108,[-1,-2]],19],20,[10,57],[10,[111,[-1]]]],[-1,-1,[]],[50,[[39,[42]]]],[[],16],[[[108,[-1,-2]]],-2,57,[[111,[-1]]]],[-1,-2,[],[]],[[[39,[42]]],50],[[-1,-3,[38,[37]],[24,[-2]]],[[2,[1]]],[],[],[[3,[-2]]]],0,[[[108,[-1,-2]]],16,57,[[111,[-1]]]],[[[110,[-1]],16],[[110,[-1]]],71],[[[110,[-1]],[110,[-1]],[110,[-1]]],[[110,[-1]]],57],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[[[48,[-1,-1]],16],[[108,[-1,[48,[-1,-1]]]]],57],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[[[108,[-1,[48,[-1,-1]]]]],[[108,[-1,[24,[-1]]]]],57],[-1,-2,[],[]],[[[41,[-1]],-2,[24,[-1]],[107,[16]]],[[2,[[108,[-1,[48,[-1,-1]]]],1]]],109,[[3,[-1]]]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[112,[-1]]],[[112,[-1]]],5],[113,113],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[112,[-1]]],[],57],[[[36,[-1]],[39,[[38,[37]]]]],113,71],[113,[[112,[-1]]],71],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[113,113],42],[[[112,[-1]],19],20,10],[[113,19],20],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[[[112,[-1]]],[],57],[[-1,-3,[15,[[24,[-2]]]],[24,[42]]],[[2,[15,1]]],[],[],[[3,[-2]]]],[[[112,[-1]],-2,[15,[[24,[-1]]]],[24,[42]]],[[2,[15,1]]],71,[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[114,[-1]]],[[114,[-1]]],[5,109]],[[-1,-2],15,[],[]],[[[36,[-1]],115,[38,[37]]],[[114,[-1]]],109],[[[114,[-1]],[116,[-1]],16,[48,[-1,-1]],42,16,16],[[2,[[117,[-1]],1]]],109],[[[117,[-1]]],[[47,[[48,[-1,-1]]]]],109],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[[114,[-1]],[114,[-1]]],42,[43,109]],[[[117,[-1]],19],20,[10,109]],[[[114,[-1]],19],20,[10,109]],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[114,[-1]],[116,[-1]],16,[24,[-1]],42,16,16],[[2,[[117,[-1]],1]]],109],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[41,[-1]]],[[41,[-1]]],[5,109]],[[-1,-2],15,[],[]],[[[36,[-1]],[38,[37]],95],[[41,[-1]]],109],[[[41,[-1]],-2,[48,[-1,-1]],16,42],[[2,[[118,[-1]],1]]],109,[[3,[-1]]]],[[[41,[-1]],-2,[48,[-1,-1]],16],[[2,[15,1]]],109,[[3,[-1]]]],[16,-1,[]],[[[118,[-1]]],[[47,[[48,[-1,-1]]]]],109],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[[41,[-1]],[41,[-1]]],42,[43,109]],[[[118,[-1]],19],20,[10,109]],[[[41,[-1]],19],20,[10,109]],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[41,[-1]],-2,[24,[-1]],16,42],[[2,[[118,[-1]],1]]],109,[[3,[-1]]]],[[[41,[-1]],-2,[24,[-1]],16],[[2,[[48,[-1,-1]],1]]],109,[[3,[-1]]]]],"c":[],"p":[[4,"Error",1164],[4,"Result",1165],[8,"Layouter",1166],[8,"Into",1167],[8,"Clone",1168],[3,"NonIdentityPoint",5],[3,"Point",5],[8,"CurveAffine",1169],[8,"EccInstructions",5],[8,"Debug",1170],[8,"Eq",1171],[3,"FixedPoint",5],[3,"FixedPointBaseField",5],[3,"FixedPointShort",5],[15,"tuple"],[15,"usize"],[3,"X",5],[3,"ScalarVar",5],[3,"Formatter",1170],[6,"Result",1170],[3,"ScalarFixed",5],[3,"ScalarFixedShort",5],[8,"BaseFitsInScalarInstructions",5],[3,"Value",1172],[3,"TypeId",1173],[3,"EccChip",201],[6,"Affine",1174],[8,"FixedPoints",5],[6,"Base",1174],[3,"EccPoint",201],[3,"NonIdentityEccPoint",201],[3,"EccConfig",201],[3,"EccScalarFixed",201],[3,"EccScalarFixedShort",201],[4,"ScalarVar",201],[3,"ConstraintSystem",1175],[3,"Advice",1175],[3,"Column",1175],[15,"array"],[3,"Fixed",1175],[3,"LookupRangeCheckConfig",1126],[15,"bool"],[8,"PartialEq",1171],[4,"FullScalar",201],[4,"ShortScalar",201],[4,"BaseFieldElem",201],[3,"Vec",1176],[3,"AssignedCell",1166],[6,"Scalar",1174],[15,"u64"],[4,"Option",1177],[15,"slice"],[15,"u8"],[4,"PaddedWord",410],[3,"Absorbing",546],[3,"Sponge",410],[8,"Field",1178],[8,"Spec",546],[8,"Domain",546],[8,"PoseidonSpongeInstructions",410],[3,"Pow5Chip",410],[3,"StateWord",410],[3,"Cell",1166],[3,"Pow5Config",410],[3,"Squeezing",546],[3,"Word",410],[8,"PoseidonInstructions",410],[8,"SpongeMode",546],[3,"Hash",410],[3,"ConstantLength",546],[8,"PrimeField",1178],[3,"Hash",546],[6,"Mds",546],[6,"Base",1179],[3,"P128Pow5T3",546],[8,"FromUniformBytes",1178],[8,"Ord",1171],[3,"String",1180],[3,"BlockWord",654],[3,"Table16Config",654],[3,"Table16Chip",654],[3,"Sha256Digest",654],[8,"Sha256Instructions",654],[3,"Sha256",654],[3,"Message",755],[8,"SinsemillaInstructions",755],[3,"MessagePiece",755],[3,"CommitDomain",755],[3,"HashDomain",755],[8,"IntoIterator",1181],[3,"SinsemillaConfig",848],[8,"HashDomains",755],[8,"CommitDomains",755],[3,"SinsemillaChip",848],[3,"TableColumn",1175],[3,"MerklePath",893],[8,"MerkleInstructions",893],[15,"u32"],[3,"MerkleConfig",916],[3,"MerkleChip",916],[3,"HashDomain",961],[6,"Point",1174],[3,"CommitDomain",961],[3,"CtOption",1182],[8,"Iterator",1183],[15,"str"],[3,"Range",1184],[3,"RangeConstrained",1007],[8,"PrimeFieldBits",1178],[4,"Expression",1175],[8,"FieldValue",1007],[3,"CondSwapChip",1048],[3,"CondSwapConfig",1048],[3,"RunningSumConfig",1090],[3,"Selector",1175],[3,"Region",1166],[3,"RunningSum",1090],[3,"RunningSum",1126],[8,"FixedPoint",201],[8,"FixedScalarKind",201],[8,"UtilitiesInstructions",1007],[8,"Var",1007],[8,"CondSwapInstructions",1048]],"b":[[573,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[574,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[601,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[602,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[623,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[624,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[626,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[627,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[629,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[630,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"]]},\ +"halo2_proofs":{"doc":"halo2_proofs","t":"NNNEALLALLLLALLLCLLAALALLLLQQQSIIQIISQQSKKKKFFFKLKKFKFKKKKLLKFFKFLLKFFLLKKDDIQIQDDDDQDDDIDLLLLLLLLLLLLLLLLLKLLLKLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMKLLKLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLKLKLLLLLLLLLLLLLLLLLLLLLLLLLAKLLLLLLLLLLLLLLLKLKLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNEIDNIIKLKLKLKKLLLLLLLLLLLKLKLLLLLLLKLLLLLLLLLLLKLLLKLLLLLLLLLLLLLLLNNECDDNNENNNDNNNNDNELLLLLLLLLLLLLLLLLLLLLFLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDNNDEEIDNDNIDNNIQNDDNDEEDDNNDIQDDNNDNNNNNNNQIDDNDNNDDNNNDENDNNNNDDDNLLLLLLLLLLLLLLLLKLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLKLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLKLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLKLLKLLKLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLMDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDEDDIDQNQDDDDNIDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLALLLLKLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDIQQIQQIIQIQQISSQILLLKKKLLKLLKKKLLLKLKLKLLKLLKLLLKKKKLKKKKKLLLLKKLKAAAADDGLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLAAAADDGLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDIQDDIIIIILLLLLLLLLLLLLLLLLLLLLLLLLKLLLLKLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLKLKKLLLLLLLLLLLLLLLLKLKLLKLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLKLL","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","FftGroup","Field","ONE","ScalarExt","ScalarExt","ZERO","a","a","b","b","best_fft","best_multiexp","compute_inner_product","coordinates","cube","double","endo","eval_polynomial","from_xy","g_to_lagrange","hash_to_curve","invert","is_on_curve","is_on_curve","is_zero","is_zero_vartime","jacobian_coordinates","kate_division","lagrange_interpolate","new_jacobian","parallelize","pow","pow_vartime","random","recursive_butterfly_arithmetic","small_multiexp","sqrt","sqrt_alt","sqrt_ratio","square","AssignedCell","Cell","Chip","Config","Layouter","Loaded","NamespacedLayouter","Region","RegionIndex","RegionStart","Root","SimpleFloorPlanner","SimpleTableLayouter","Table","TableLayouter","Value","add","add","add","add","add","add","add","add","add","add","and_then","as_mut","as_ref","assert_if_known","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","cell","clone","clone","clone","clone","clone","clone_into","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","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","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","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","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","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","synthesize","try_from","try_from","try_into","try_into","type_id","type_id","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","CellNotAssigned","CellValue","CircuitCost","CircuitGates","CircuitLayout","ConstraintNotSatisfied","ConstraintPoisoned","FailureLocation","InRegion","InstanceCellNotAssigned","Lookup","MockProver","OutsideRegion","Permutation","Poison","Shuffle","TracingFloorPlanner","Unassigned","VerifyFailure","advice_values","annotate_column","assert_satisfied","assert_satisfied_at_rows_par","assert_satisfied_par","assign_advice","assign_fixed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","circuit_dot_graph","clone","clone","clone_into","clone_into","collect","copy","cost","default","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","enable_selector","enter_region","eq","eq","eq","exit_region","fill_from_row","fixed","fixed_values","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get_challenge","init","init","init","init","init","init","init","into","into","into","into","into","into","into","mark_equality_cells","metadata","permutation","pop_namespace","push_namespace","queries_to_csv","query_instance","render","run","show_equality_constraints","show_labels","synthesize","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_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","verify","verify_at_rows","verify_at_rows_par","verify_par","view_height","view_width","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","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_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","from","hash","index","init","init","init","init","init","into","into","into","into","into","partial_cmp","partial_cmp","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","AdviceQuery","Any","Assigned","Assignment","BatchVerifier","BoundsFailure","Challenge","Challenge","Circuit","Column","ColumnNotAssigned","ColumnNotInPermutation","ColumnType","Config","Constant","Constraint","ConstraintSystem","ConstraintSystemFailure","Constraints","Error","Expression","FirstPhase","Fixed","Fixed","Fixed","FixedQuery","FloorPlanner","FloorPlanner","Gate","Instance","Instance","Instance","InstanceQuery","InstanceTooLarge","InvalidInstances","Negated","NotEnoughColumnsForConstants","NotEnoughRowsAvailable","Opening","OverwriteDefault","Params","Phase","PinnedConstraintSystem","PinnedVerificationKey","Product","ProvingKey","Rational","Scaled","SecondPhase","Selector","Selector","Sum","Synthesis","TableColumn","TableError","TableError","ThirdPhase","Transcript","Trivial","UnevenColumnLengths","UsedColumn","VerifyingKey","VirtualCell","VirtualCells","Zero","add","add","add","add","add","add","add","add_assign","add_assign","add_proof","advice","advice_column","advice_column_in","advice_column_phase","advice_in","advice_queries","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","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","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge_phase","challenge_usable_after","clone","clone","clone","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","clone_into","clone_into","clone_into","cmp","cmp","cmp","column_index","column_index","column_index","column_type","complex_selector","complexity","compress_selectors","configure","configure_with_params","configure_with_params","constants","constraint_name","copy","create_gate","create_proof","cs","cube","cur","default","default","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","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","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","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","eq","eq","evaluate","evaluate","evaluate_lazy","exit_region","expr","expr","fill_from_row","finalize","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","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","from","from","from","from_bytes","from_bytes","gates","general_column_annotations","get_challenge","get_domain","get_vk","hash","hash","hash","hash","hash","hash","hash","hash","hash_into","identifier","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","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","into","into","into","into","into","into_iter","invert","is_simple","is_zero_vartime","keygen_pk","keygen_vk","keygen_vk_custom","lookup","lookup_any","lookup_table_column","lookups","minimum_rows","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","name","neg","neg","neg","new","new","next","num_advice_columns","num_challenges","num_fixed_columns","num_instance_columns","num_selectors","numerator","params","params","partial_cmp","partial_cmp","partial_cmp","permutation","permutation","permutation","phase","phase","phase","pinned","pinned","polynomials","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","rotation","selector","set_minimum_degree","shuffle","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_owned","to_owned","to_owned","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_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","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","type_id","type_id","type_id","type_id","type_id","type_id","unblinded_advice_column","unblinded_advice_column_in","verify_proof","vzip","vzip","vzip","vzip","vzip","vzip","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","Argument","Assembly","VerifyingKey","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","build_ordered_mapping","clone","clone","clone","clone_into","clone_into","clone_into","columns","commitments","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","eq","fmt","fmt","fmt","from","from","from","get_columns","init","init","init","into","into","into","mapping","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","Basis","Coeff","Error","EvaluationDomain","ExtendedLagrangeCoeff","Guard","LagrangeCoeff","MSMAccumulator","OpeningError","Output","PinnedEvaluationDomain","Polynomial","ProverQuery","Rotation","SamplingError","VerificationStrategy","VerifierQuery","add","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_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","coeff_from_vec","coeff_to_extended","commitment","constant_extended","constant_lagrange","cur","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","divide_by_vanishing_poly","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","empty_coeff","empty_extended","empty_lagrange","eq","extended_k","extended_len","extended_to_coeff","finalize","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","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","init","init","init","into","into","into","into","into","into","into","into","into","into","ipa","iter","iter_mut","k","kzg","l_i_range","lagrange_from_vec","lagrange_to_coeff","mul","new","new","new_commitment","new_msm","next","num_coeffs","pinned","prev","process","rotate","rotate_extended","rotate_omega","sub","sub","to_owned","to_owned","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_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","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Blind","CommitmentScheme","Curve","Guard","MSM","MSM","MSMAccumulator","Params","ParamsProver","ParamsProver","ParamsVerifier","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","default","deref","deref_mut","downsize","drop","empty_msm","eq","eval","fmt","from","get_g","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","verifier_params","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","deref","deref","deref_mut","deref_mut","downsize","drop","drop","empty_msm","fmt","fmt","from","from","get_g","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","verifier_params","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","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_mut","borrow_mut","clone","clone_into","commit","commit_lagrange","deref","deref","deref_mut","deref_mut","downsize","drop","drop","empty_msm","fmt","fmt","from","from","from_parts","g2","get_g","init","init","into","into","k","n","new","new_params","read","read_custom","read_params","s_g2","setup","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verifier_params","vzip","vzip","write","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","deref","deref","deref_mut","deref_mut","drop","drop","eval","fmt","fmt","from","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","create_proof","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_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","translate","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_proofs"],[27,"halo2_proofs::arithmetic"],[74,"halo2_proofs::circuit"],[341,"halo2_proofs::circuit::floor_planner"],[377,"halo2_proofs::circuit::layouter"],[445,"halo2_proofs::dev"],[608,"halo2_proofs::dev::FailureLocation"],[611,"halo2_proofs::dev::VerifyFailure"],[633,"halo2_proofs::dev::cost"],[678,"halo2_proofs::dev::metadata"],[793,"halo2_proofs::plonk"],[1518,"halo2_proofs::plonk::Error"],[1519,"halo2_proofs::plonk::permutation"],[1576,"halo2_proofs::poly"],[1798,"halo2_proofs::poly::commitment"],[1865,"halo2_proofs::poly::ipa"],[1869,"halo2_proofs::poly::ipa::commitment"],[1916,"halo2_proofs::poly::ipa::msm"],[1946,"halo2_proofs::poly::ipa::multiopen"],[1978,"halo2_proofs::poly::ipa::strategy"],[2051,"halo2_proofs::poly::kzg"],[2055,"halo2_proofs::poly::kzg::commitment"],[2106,"halo2_proofs::poly::kzg::msm"],[2155,"halo2_proofs::poly::kzg::multiopen"],[2220,"halo2_proofs::poly::kzg::strategy"],[2280,"halo2_proofs::transcript"],[2434,"core::fmt"],[2435,"core::fmt"],[2436,"core::any"],[2437,"pasta_curves::arithmetic::curves"],[2438,"subtle"],[2439,"alloc::vec"],[2440,"core::ops::function"],[2441,"alloc::boxed"],[2442,"subtle"],[2443,"core::marker"],[2444,"core::marker"],[2445,"core::convert"],[2446,"rand_core"],[2447,"core::ops::arith"],[2448,"core::ops::function"],[2449,"core::fmt"],[2450,"core::option"],[2451,"core::ops::arith"],[2452,"std::collections::hash::set"],[2453,"core::hash"],[2454,"ff"],[2455,"core::cmp"],[2456,"core::cmp"],[2457,"plotters::drawing::area"],[2458,"plotters::drawing::area"],[2459,"core::ops::range"],[2460,"group::prime"],[2461,"std::collections::hash::map"],[2462,"core::default"],[2463,"std::io::error"],[2464,"std::io::error"],[2465,"core::error"],[2466,"std::io"],[2467,"halo2curves::pairing"]],"d":["Curve elements are serialized in compressed form. Field …","Curve elements are serialized in uncompressed form. Field …","Serialization is the same as RawBytes, but no checks are …","This enum specifies how various types are serialized and …","This module provides common utilities, traits and …","","","Traits and structs for implementing circuit components.","","","","","Tools for developing circuits.","","","Returns the argument unchanged.","","","Calls U::from(self).","This module provides an implementation of a variant of …","Contains utilities for performing arithmetic over …","","This module contains utilities and traits for dealing with …","","","","","The affine version of the curve","The base field over which this elliptic curve is …","The base field over which this elliptic curve is …","CURVE_ID used for hash-to-curve.","This trait is the affine counterpart to Curve and is used …","This trait is a common interface for dealing with elements …","The projective form of the curve","This represents an element of a group with basic …","This trait represents an element of a field.","The one element of the field, the multiplicative identity.","The scalar field of this elliptic curve.","The scalar field of this elliptic curve.","The zero element of the field, the additive identity.","Returns the curve constant a.","Returns the curve constant $a$.","Returns the curve constant b.","Returns the curve constant $b$.","Performs a radix-$2$ Fast-Fourier Transformation (FFT) on …","Performs a multi-exponentiation operation.","This computes the inner product of two vectors a and b.","Gets the coordinates of this point.","Cubes this element.","Doubles this element.","Apply the curve endomorphism by multiplying the …","This evaluates a provided polynomial (in coefficient form) …","Obtains a point given $(x, y)$, failing if it is not on the","Convert coefficient bases group elements to lagrange basis …","Requests a hasher that accepts messages and returns …","Computes the multiplicative inverse of this element, …","Returns whether or not this element is on the curve; should","Returns whether or not this element is on the curve; should","Returns true iff this element is zero.","Returns true iff this element is zero.","Return the Jacobian coordinates of this point.","Divides polynomial a in X by X - b with no remainder.","Returns coefficients of an n - 1 degree polynomial given a …","Obtains a point given Jacobian coordinates $X : Y : Z$, …","This utility function will parallelize an operation that …","Exponentiates self by exp, where exp is a little-endian …","Exponentiates self by exp, where exp is a little-endian …","Returns an element chosen uniformly at random using a …","This perform recursive butterfly arithmetic","Performs a small multi-exponentiation operation. Uses the …","Returns the square root of the field element, if it is …","Equivalent to Self::sqrt_ratio(self, one()).","Computes:","Squares this element.","An assigned cell.","A pointer to a cell within a circuit.","A chip implements a set of instructions that can be used …","A type that holds the configuration for this chip, and any …","A layout strategy within a circuit. The layouter is …","A type that holds any general chip state that needs to be …","This is a “namespaced” layouter which borrows a …","A region of the circuit in which a Chip can assign cells.","Index of a region in a layouter","Starting row of a region in a layouter","Represents the type of the “root” of this layouter, so …","A simple FloorPlanner that performs minimal optimizations.","A table layouter that can be used to assign values to a …","A lookup table in the circuit.","Helper trait for implementing a custom Layouter.","A value that might exist within a circuit.","","","","","","","","","","","Returns Value::unknown() if the value is Value::unknown(), …","Converts from &mut Value<V> to Value<&mut V>.","Converts from &Value<V> to Value<&V>.","Enforces an assertion on the contained value, if known.","Assign an advice column value (witness).","Assigns a constant value to the column advice at offset …","Assign the value of the instance column’s cell at …","Assigns a fixed value to a table cell.","","Assigns a fixed value to a table cell.","Assign a fixed value.","Assign a region of gates to an absolute row number.","","Assign a table region to an absolute row number.","","","","","","","","","","","","","","","","","","","","","","Returns the cell.","","","","","","","","","","","Maps a Value<&V> to a Value<V> by cloning the contents of …","Maps a Value<&mut V> to a Value<V> by cloning the contents …","The column of this cell.","The chip holds its own configuration.","Constrains a cell to have a constant value.","Constrains two cells to have the same value.","Constrains a Cell to equal an instance column’s row …","","Maps a Value<&mut V> to a Value<V> by copying the contents …","Maps a Value<&V> to a Value<V> by copying the contents of …","Copies the value to a given advice cell and constrains …","Cubes this field element.","","maps from a fixed column to a pair (default value, vector …","","","","","","","","","","","","","","","","","","","","","","","Doubles this field element.","","","","","","","","","","","","","Checks the contained value for an error condition, if …","Evaluates this value directly, performing an unbatched …","Evaluates this assigned cell’s value directly, …","Implementations of common circuit floor planners.","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Takes each element in the Iterator: if it is …","Queries the value of the given challenge.","","Gets the “root” of this assignment, bypassing the …","","","","","","","","","","","","Returns the value of the instance column’s cell at …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the field element corresponding to this value.","Inverts this assigned value (taking the inverse of zero to …","Constructs a known value.","Implementations of common circuit layouters.","Provides access to general chip state loaded at the …","Maps a Value<V> to Value<W> by applying a function to the …","","","","","","","","","","","Allows the circuit implementor to name/annotate a Column …","Enters into a namespace.","","Returns a new SimpleTableLayouter","Exits out of the existing namespace.","","Creates a new (sub)namespace and enters into it.","","Identifies the region in which this cell resides.","The relative offset of this cell within its region.","Squares this field element.","","","","","","","","","","","","Returns the field element corresponding to this value.","","","","","","Transposes a Value<[V; LEN]> into a [Value<V>; LEN].","Transposes a Value<impl IntoIterator<Item = V>> into a …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Constructs an unwitnessed value.","Unzips a value containing a tuple of two values.","Returns the value of the AssignedCell.","Returns the field element value of the AssignedCell.","","","","","","","","","","","Zips self with another Value.","The version 1 FloorPlanner provided by halo2.","A single pass of the V1 layouter.","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","Concrete column","The virtual column involved in a region. This includes …","Helper trait for implementing a custom Layouter.","The shape of a region. For a region at a certain index, we …","Virtual column representing a (boolean) selector","Intermediate trait requirements for RegionLayouter when …","Helper trait for implementing a custom Layouter.","Assign an advice column value (witness)","","Assigns a constant value to the column advice at offset …","","Assign the value of the instance column’s cell at …","","Assigns a fixed value to a table cell.","Assigns a fixed value","","","","","","","","","","","Get a reference to the set of columns used in a RegionShape…","Constrains a cell to have a constant value.","","Constraint two cells to have the same value.","","","","","","","","Enables a selector at the given offset.","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","Returns the value of the instance column’s cell at …","","Calls U::from(self).","Calls U::from(self).","Allows the circuit implementor to name/annotate a Column …","","Create a new RegionShape for a region at region_index.","","Get the region_index of a RegionShape.","Get the row_count of a RegionShape.","","","","","","","","","","","A cell that has been assigned a value.","A cell used in an active gate was not assigned to.","The value of a particular cell within the circuit.","","A struct for collecting and displaying the gates within a …","Graphical renderer for circuit layouts.","A constraint was not satisfied for a particular row.","A constraint was active on an unusable row, and is likely …","The location within the circuit at which a particular …","A location inside a region.","An instance cell used in an active gate was not assigned …","A lookup input did not exist in its corresponding table.","A test prover for debugging circuits.","A location outside of a region.","A permutation did not preserve the original value of a …","A unique poisoned cell.","A shuffle input did not exist in its corresponding map.","A helper type that augments a FloorPlanner with tracing …","An unassigned cell.","The reasons why a particular circuit is not satisfied.","Return the content of an advice column as assigned by the …","","Panics if the circuit being checked by this MockProver is …","Panics if the circuit being checked by this MockProver is …","Panics if the circuit being checked by this MockProver is …","","","","","","","","","","","","","","","","","Builds a dot graph string representing the given circuit.","","","","","Collects the gates from within the circuit.","","Developer tools for investigating the cost of a circuit.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the list of Fixed Columns used within a MockProver …","Return the content of a fixed column as assigned by the …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Marks cells involved in equality constraints, in red.","Metadata about circuits.","Returns the permutation argument (Assembly) used within a …","","","Prints the queries in this circuit to a CSV grid.","","Renders the given circuit on the given drawing area.","Runs a synthetic keygen-and-prove operation on the given …","Draws red lines between equality-constrained cells.","Sets the visibility of region labels.","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns Ok(()) if this MockProver is satisfied, or a list …","Returns Ok(()) if this MockProver is satisfied, or a list …","Returns Ok(()) if this MockProver is satisfied, or a list …","Returns Ok(()) if this MockProver is satisfied, or a list …","Sets the view height for this layout, as a number of rows.","Sets the view width for this layout, as a number of …","","","","","","","","The offset (relative to the start of the region) at which …","The region in which the failure occurred.","The circuit row on which the failure occurred.","The values of the virtual cells used by this constraint.","The column in which this cell should be assigned.","The column in which this cell should be assigned.","The column in which this permutation is not satisfied.","The polynomial constraint that is not satisfied.","The polynomial constraint that is not satisfied.","The index of the active gate.","The index of the active gate.","The offset (relative to the start of the region) at which …","The offset (relative to the start of the region) at which …","The location at which this constraint is not satisfied.","The location at which the lookup is not satisfied.","The location at which the lookup is not satisfied.","The location at which the permutation is not satisfied.","The index of the lookup that is not satisfied. These …","The name of the lookup that is not satisfied.","The name of the lookup that is not satisfied.","The offset (relative to the start of the region) at which …","The region in which this cell should be assigned.","The region in which this gate was activated.","The absolute row at which this cell should be assigned.","The index of the lookup that is not satisfied. These …","Measures a circuit to determine its costs, and explain …","The marginal size of a Halo 2 proof, broken down into its …","The size of a Halo 2 proof, broken down into its …","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the marginal proof size per instance of this …","Measures a circuit with parameter constant k.","Returns the proof size for the given number of instances …","","","","","","","","","","","","","Metadata about a column within a circuit.","Metadata about a configured constraint within a circuit.","Metadata about a configured gate within a circuit.","Metadata about an assigned region within a circuit.","A “virtual cell” is a PLONK cell that has been queried …","","","","","","","","","","","","","","","","","","","","","Return the column type.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","","Returns the argument unchanged.","","Return the column index.","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An advice column","An Advice variant","This is an advice (witness) column queried at a certain …","Query of advice column at a certain relative location","An enum over the Advice, Fixed, Instance structs","A value assigned to a cell within a circuit.","This trait allows a Circuit to direct some backend to …","A verifier that checks multiple proofs in a batch. This …","Out of bounds index passed to a backend","A challenge squeezed from transcript after advice columns …","This is a challenge","This is a trait that circuits provide implementations for …","A column with an index and type","A TableColumn has not been assigned.","The instance sets up a copy constraint involving a column …","A column type","This is a configuration object that stores things like …","This is a constant polynomial","An individual polynomial constraint.","This is a description of the circuit environment, such as …","The constraint system is not satisfied.","A set of polynomial constraints with a common selector.","This is an error that could occur during proving or …","Low-degree expression representing an identity that must …","First phase","A fixed column","A Fixed variant","This is a fixed column queried at a certain relative …","Query of fixed column at a certain relative location","A floor planning strategy for a circuit.","The floor planner used for this circuit. This is an …","Gate","An instance column","An Instance variant","This is an instance (external) column queried at a certain …","Query of instance column at a certain relative location","Instance provided exceeds number of available rows","The provided instances do not match the circuit parameters.","This is a negated polynomial","Circuit synthesis requires global constants, but circuit …","k is too small for the given circuit.","Opening error","Attempt to overwrite a default value","Optional circuit configuration parameters. Requires the …","Phase of advice column","Represents the minimal parameters that determine a …","Minimal representation of a verification key that can be …","This is the product of two polynomials","This is a proving key which allows for the creation of …","A value stored as a fraction to enable batch inversion.","This is a scaled polynomial","Second phase","A selector, representing a fixed boolean value per row of …","This is a virtual selector","This is the sum of two polynomials","This is an error that can occur during synthesis of the …","A fixed column of a lookup table.","This is an error that could occur during table synthesis.","An error relating to a lookup table.","Third phase","Transcript error","A value that does not require inversion to evaluate.","A Table has columns of uneven lengths.","Attempt to assign a used TableColumn","This is a verifying key which allows for the verification …","A “virtual cell” is a PLONK cell that has been queried …","Exposes the “virtual cells” that can be queried while …","The field element zero.","","","","","","","","","","Adds a proof to the batch.","Returns Advice variant in FirstPhase","Allocate a new advice column at FirstPhase","Allocate a new advice column in given phase","Returns phase of advice columns","Returns Advice variant in given Phase","Returns advice queries","Allows the developer to include an annotation for an …","Annotate an Instance column.","Annotate a Lookup column.","Assign an advice column value (witness)","Assign a fixed value","Compute the number of blinding factors necessary to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns phase of challenges","Requests a challenge that is usable after the given phase.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Column index","Column index","Column index","Type of this column.","Allocate a new complex selector that can appear anywhere …","Approximate the computational complexity of this …","This will compress selectors together depending on their …","The circuit is given an opportunity to describe the exact …","The circuit is given an opportunity to describe the exact …","The circuit is given an opportunity to describe the exact …","Returns constants","Returns the name of the constraint at index …","Assign two cells to have the same value","Creates a new gate.","This creates a proof for the provided circuit when given …","Returns ConstraintSystem","Cubes this element.","Return expression from column at the current row","","","","Compute the degree of this polynomial","Compute the degree of the constraint system (the maximum …","Returns the denominator, if non-trivial.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Does not combine selectors and directly replaces them …","Doubles this element.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Enable this selector at the given offset within the given …","Enables this fixed column to be used for global constant …","Enable the ability to enforce equality over cells in this …","Enables a selector at the given row.","Creates a new region and enters into it.","","","","","","","","","","","","","","Evaluates this assigned value directly, performing an …","Evaluate the polynomial using the provided closures to …","Evaluate the polynomial lazily using the provided closures …","Exits the current region.","Return expression from selector","Return Expression","Fills a fixed column starting from the given row with …","Finalizes the batch and checks its validity.","Allocate a new fixed column","Returns commitments of fixed polynomials","Returns fixed queries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Reads a verification key from a slice of bytes using …","Reads a proving key from a slice of bytes using Self::read.","Returns gates","Returns general column annotations","Queries the value of the given challenge.","Get the underlying EvaluationDomain.","Get the underlying VerifyingKey.","","","","","","","","","Hashes a verification key into a transcript.","Identifier for this expression. Expressions with identical …","Index of this column.","Returns index of this selector","Index of this challenge.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns inner column","Allocate a new instance column","Returns instance queries","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Inverts this assigned value (taking the inverse of zero to …","Is this selector “simple”? Simple selectors can only …","Returns true iff this element is zero.","Generate a ProvingKey from a VerifyingKey and an instance …","Generate a VerifyingKey from an instance of Circuit. By …","Generate a VerifyingKey from an instance of Circuit.","Add a lookup argument for some input expressions and table …","Add a lookup argument for some input expressions and table …","Allocates a new fixed column that can be used in a lookup …","Returns lookup arguments","Returns the minimum necessary rows that need to exist in …","","","","","","","","","Returns the gate name.","","","","Returns Advice in given Phase","Constructs a new batch verifier.","Return expression from column at the next row","Returns number of advice columns","Returns number of challenges","Returns number of fixed columns","Returns number of instance columns","Returns number of selectors","Returns the numerator.","Returns a reference to the parameters that should be used …","Returns a reference to the parameters that should be used …","","","","Implementation of permutation argument.","Returns permutation argument","Returns VerifyingKey of permutation","Phase of this column","Phase of this advice column","Phase of this challenge.","Obtain a pinned version of this constraint system; a …","Obtains a pinned representation of this verification key …","Returns constraints of this gate","Exits out of the existing namespace.","Return expression from column at the previous row","","Creates a new (sub)namespace and enters into it.","Query an advice column at a relative position","Query an Any column at a relative position","Return expression from cell","Return expression from column at a relative position","","","","","Make side effects","Query a challenge","Query a fixed column at a relative position","Queries the cell of an instance column at a particular …","Query an instance column at a relative position","Query a selector at the current position.","Reads a verification key from a buffer.","Reads a proving key from a buffer. Does so by reading …","Return expression from column at the specified rotation","Rotation of this query","Rotation of this query","Rotation of this query","Allocate a new (simple) selector. Simple selectors cannot …","Sets the minimum degree required by the circuit, which can …","Add a shuffle argument for some input expressions and …","Returns shuffle arguments","","Squares this element.","Square this expression.","","","","","","","","","","","Given the provided cs, synthesize the given circuit.","Given the provided cs, synthesize the circuit. The …","Writes a verifying key to a vector of bytes using …","Writes a proving key to a vector of bytes using Self::write…","","","","","","","","","","","","","","","","","","","","","Returns representative of this VerifyingKey in transcripts","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Allocate a new unblinded advice column at FirstPhase","Allocate a new unblinded advice column in given phase. …","Returns a boolean indicating whether or not the proof is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Constructs a set of constraints that are controlled by the …","Returns a copy of this circuit with no witness values …","Writes a verifying key to a buffer.","Writes a proving key to a buffer.","The current value of k being used.","A permutation argument.","Struct that accumulates all the necessary data in order to …","The verifying key for a single permutation argument.","","","","","","","Builds the ordered mapping of the cycles. This will only …","","","","","","","Returns columns that participate in the permutation …","Returns commitments of sigma polynomials","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns columns that participate on the permutation …","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns mappings of the copies.","","","","","","","","","","","","","","","","The basis over which a polynomial is described.","The polynomial is defined as coefficients","This is an error that could occur during proving or …","This structure contains precomputed constants and other …","The polynomial is defined as coefficients of Lagrange …","Guards is unfinished verification result. Implement this …","The polynomial is defined as coefficients of Lagrange …","Multi scalar engine which is not evaluated yet.","OpeningProof is not well-formed","The output type of this verification strategy after …","Represents the minimal parameters that determine an …","Represents a univariate polynomial defined over a field …","A polynomial query at a point","Describes the relative rotation of a vector. Negative …","Caller needs to re-sample a point","Trait representing a strategy for verifying Halo 2 proofs.","A polynomial query at a point","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Obtains a polynomial in coefficient form when given a …","This takes us from an n-length coefficient vector into a …","Generic commitment scheme structures","Returns a constant polynomial in the extended Lagrange …","Returns a constant polynomial in the Lagrange coefficient …","The current location in the evaluation domain","","","","","","","","","","","","","","","","","","","","","","","This divides the polynomial (in the extended domain) by …","","","","","","","","","","","Returns an empty (zero) polynomial in the coefficient basis","Returns an empty (zero) polynomial in the extended …","Returns an empty (zero) polynomial in the Lagrange …","","Get the size of the extended domain","Get the size of the extended domain","This takes us from the extended evaluation domain and gets …","Finalizes the batch and checks its validity.","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Get the generator of the extended domain’s …","Get $\\\\omega$, the generator of the $2^k$ order …","Get $\\\\omega^{-1}$, the inverse of the generator of the …","Gets the quotient polynomial’s degree (as a multiple of …","","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Inner product argument commitment scheme","Iterate over the values, which are either in coefficient …","Iterate over the values mutably, which are either in …","Get the size of the domain","KZG commitment scheme","Computes evaluations (at the point x, where xn = x^n) of …","Obtains a polynomial in Lagrange form when given a vector …","This takes us from an n-length vector into the coefficient …","","Creates new verification strategy instance","This constructs a new evaluation domain object based on …","Create a new verifier query based on a commitment","Create a new verifier query based on a linear combination …","The next location in the evaluation domain","Gets the size of this polynomial in terms of the number of …","Obtain a pinned version of this evaluation domain; a …","The previous location in the evaluation domain","Obtains an MSM from the verifier strategy and yields back …","Rotates the values in a Lagrange basis polynomial by …","Rotate the extended domain polynomial over the original …","Multiplies a value by some power of $\\\\omega$, essentially …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Wrapper type around a blinding factor.","Defines components of a commitment scheme.","Elliptic curve used to commit the application and witnesses","Unfinalized verification result. This is returned in …","Multi scalar multiplication engine","Multi scalar multiplication engine","Accumulator fot comressed verification","Parameters for circuit sysnthesis and prover parameters.","Parameters for circuit sysnthesis and prover parameters.","Constant prover parameters","Verifier specific functionality with circuit constraints","Constant verifier parameters","Constant verifier parameters.","Common multi-open prover interface for various commitment …","Query instance or not","Query instance or not","Application field of this commitment scheme","Common multi-open verifier interface for various …","","","","Add another multiexp into this one","Add arbitrary term (the scalar and the point)","Return base points","","","Perform multiexp and check that it results in zero","","","This computes a commitment to a polynomial described by …","This commits to a polynomial using its evaluations over …","Create a multi-opening proof","","","","Downsize Params with smaller k.","","Generates an empty multiscalar multiplication struct using …","","Perform multiexp and return the result","","Returns the argument unchanged.","Getter for g generators","","Calls U::from(self).","Logaritmic size of the circuit","","","","Size of the circuit","Returns new instance of parameters","Creates new prover instance","Creates new verifier instance","Given rng creates new blinding scalar","Wrapper for parameter generator","Reads params from a buffer.","Wrapper for parameter reader","Scalars","Scale all scalars in the MSM by some scaling factor","","","","","Returns verification parameters.","Process the proof and returns unfinished result named Guard","","Writes params to a buffer.","This module contains an implementation of the polynomial …","Multiscalar multiplication engines","IPA multi-open scheme This module contains an optimisation …","Strategies used with KZG scheme","Concrete IPA commitment scheme","Public parameters for IPA commitment scheme","Verifier parameters","","","","","","","This computes a commitment to a polynomial described by …","This commits to a polynomial using its evaluations over …","Create a polynomial commitment opening proof for the …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","","","Initializes parameters for the curve, given a random …","","Reads params from a buffer.","","","","","","","","","","Checks to see if the proof represented within transcript …","","","Writes params to a buffer.","A multiscalar multiplication in the polynomial commitment …","Add a value to the first entry of g_scalars.","Add another multiexp into this one","Add another multiexp into this one","Add a vector of scalars to g_scalars. This function will …","Add to u_scalar","Add to w_scalar","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","Given verifier parameters Creates an empty multi scalar …","","","","","","","","IPA multi-open prover","IPA multi-open verifier","","","","","Create a multi-opening proof","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","An accumulator instance consisting of an evaluation claim …","A verifier that checks multiple proofs in a batch.","Wrapper for verification accumulator","A verifier that checks single proof","","","","","","","","","","","","","Computes G = ⟨s, params.g⟩","","","","","","","","","","","","","Finalizes the batch and checks its validity.","Finalizes the batch and checks its validity.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","The claimed output of the linear-time polycommit opening …","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","A vector of challenges u_0, …, u_{k - 1} sampled by the …","Lets caller supply the challenges and obtain an MSM with …","Lets caller supply the purported G point and simply appends","","","","","KZG commitment scheme","Multiscalar multiplication engines","KZG multi-open scheme","Strategies used with KZG scheme","Umbrella commitment scheme construction for all KZG …","These are the public parameters for the polynomial …","KZG multi-open verification parameters","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Initializes parameters for the curve through existing …","Returns gernerator on G2","","","","Calls U::from(self).","Calls U::from(self).","","","","","Reads params from a buffer.","Reads params from a buffer.","","Returns first power of secret on G2","Initializes parameters for the curve, draws toxic secret …","","","","","","","","","","","Writes params to a buffer.","Writes parameters to buffer","Two channel MSM accumulator","A multiscalar multiplication in the polynomial commitment …","","Add another multiexp into this one","","","","","","","","Performs final pairing check with given verifier params …","","","","","Prepares all scalars in the MSM to linear combination","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Create an empty MSM instance","Create a new two channel MSM accumulator instance","","","Scale all scalars in the MSM by some scaling factor","","","","","","","","","","","Concrete KZG prover with GWC variant","Concrete KZG prover with SHPLONK variant","Concrete KZG verifier with GWC variant","Concrete KZG multiopen verifier with SHPLONK variant","","","","","","","","","Create a multi-opening proof","Create a multi-opening proof","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Given parameters creates new prover instance","","","","","","","","","","","","","","","Verify a multi-opening proof","","","","","A verifier that checks multiple proofs in a batch","Wrapper for linear verification accumulator","A verifier that checks a single proof","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Constructs an empty batch verifier","","","Constructs an empty batch verifier","","","","","","","","","","","","","","","","","","Constructs and initialized new batch verifier","We will replace BLAKE2b with an algebraic hash function in …","We will replace BLAKE2b with an algebraic hash function in …","A 255-bit challenge.","The scalar representation of a verifier challenge.","EncodedChallenge<C> defines a challenge encoding with a …","The Input type used to derive the challenge encoding. For …","Keccak256 hash function reader for EVM compatibility","Keccak256 hash function writer for EVM compatibility","Generic transcript view (from either the prover or verifier…","Transcript view from the perspective of a verifier that …","Initializes transcript at verifier side.","Transcript view from the perspective of a prover that has …","Manages beginning and finishing of transcript pipeline.","Cast an encoded challenge as a typed ChallengeScalar.","","","","","","","","","","","","","","","","","","","","","","","","","Writing the point to the transcript without writing it to …","","","","","Writing the scalar to the transcript without writing it to …","","","","","","","","","","","","","","","","","","","","","","","","","Conclude the interaction and return the output buffer …","","Conclude the interaction and return the output buffer …","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Get a scalar field element from an encoded challenge.","","Initialize a transcript given an input buffer.","Initialize a transcript given an output buffer.","","Initialize a transcript given an input buffer.","Initialize a transcript given an input buffer.","","Initialize a transcript given an output buffer.","","Initialize a transcript given an output buffer.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Get an encoded challenge from a given input challenge.","","Read a curve point from the prover.","","","Read a curve scalar from the prover.","","","Squeeze an encoded verifier challenge from the transcript.","","","","","Squeeze a typed challenge (in the scalar field) from the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Write a curve point to the proof and the transcript.","","","Write a scalar to the proof and the transcript.","",""],"i":[1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,0,1,0,1,1,1,1,190,190,12,190,0,0,12,0,0,10,190,12,10,190,12,190,12,0,0,0,12,10,10,190,0,12,0,190,10,190,12,10,10,190,0,0,190,0,10,10,10,0,0,10,10,10,10,0,0,0,191,0,191,0,0,0,0,45,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,32,32,32,55,40,42,32,45,44,45,44,40,29,53,47,48,46,35,32,42,44,40,29,53,47,48,46,35,32,42,44,35,29,47,48,46,35,29,47,48,46,35,29,29,46,191,32,32,45,44,29,29,35,29,29,40,40,29,53,47,47,48,48,46,35,32,42,44,40,29,53,47,48,46,35,32,42,44,29,40,29,53,47,48,46,35,32,42,44,44,48,29,29,35,0,40,29,53,47,48,46,35,32,42,44,40,29,29,53,47,47,48,48,46,35,32,32,42,42,44,29,45,44,45,44,40,29,53,47,48,46,35,32,42,44,32,40,29,53,47,48,46,35,32,42,44,29,29,29,0,191,29,29,29,29,29,29,29,29,29,29,29,32,45,29,40,45,44,45,44,46,46,29,29,29,29,29,29,29,29,29,29,29,53,29,29,47,48,46,35,29,29,40,29,53,47,48,46,35,32,42,44,40,29,53,47,48,46,35,32,42,44,40,29,53,47,48,46,35,32,42,44,29,29,35,35,40,29,53,47,48,46,35,32,42,44,29,0,0,67,67,68,67,68,67,67,68,67,68,67,68,67,68,67,68,67,67,67,68,67,68,67,67,67,68,68,67,68,67,68,67,68,67,70,0,0,0,70,0,0,54,69,54,69,54,69,55,54,69,69,70,69,70,69,70,69,70,70,69,54,69,54,69,69,70,69,70,69,70,54,69,70,69,70,69,70,70,70,70,69,70,54,69,69,70,54,69,69,70,69,69,69,70,69,70,69,70,69,70,69,70,76,83,0,0,0,0,83,83,0,80,83,83,0,80,83,76,83,0,76,0,75,75,75,75,75,75,75,80,83,81,86,82,76,75,80,83,81,86,82,76,75,0,80,76,80,76,81,75,0,82,80,83,81,86,82,76,75,80,83,81,86,82,76,75,80,83,81,86,82,76,75,75,75,80,83,76,75,75,75,75,80,80,83,83,81,81,86,82,76,75,80,83,81,86,82,76,75,75,80,83,81,86,82,76,75,80,83,81,86,82,76,75,82,0,75,75,75,81,75,82,75,82,82,86,80,76,80,83,81,80,83,81,86,82,76,75,80,83,81,86,82,76,75,80,83,81,86,82,76,75,75,75,75,75,82,82,80,83,81,86,82,76,75,192,192,193,194,195,196,197,194,198,195,196,195,196,194,199,200,197,199,199,200,195,195,196,196,200,0,0,0,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,94,94,94,96,97,94,96,97,94,96,97,94,96,97,0,0,0,0,0,98,102,99,100,101,98,102,99,100,101,98,99,100,101,98,99,100,101,98,102,98,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,98,98,102,102,99,99,100,100,101,101,98,98,98,102,102,102,102,99,99,100,100,101,101,101,101,101,98,98,98,102,99,100,101,98,102,99,100,101,98,102,98,99,100,101,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,0,59,106,0,0,0,0,0,36,0,106,0,0,130,36,0,65,106,0,0,36,0,0,0,0,0,59,106,0,0,65,0,0,59,106,0,36,36,106,36,36,36,130,65,0,0,0,106,0,28,106,0,0,106,106,36,0,0,36,0,36,28,130,130,0,0,0,28,28,28,28,28,28,28,106,28,28,107,59,109,109,109,59,109,41,109,109,41,41,109,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,109,109,28,34,33,43,38,59,73,113,114,115,39,57,106,104,116,109,117,118,28,34,33,43,38,59,73,113,114,115,39,57,106,104,116,109,117,118,34,59,39,113,114,115,34,109,106,109,65,65,65,109,116,41,109,0,117,28,34,33,109,107,106,109,28,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,109,28,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,73,109,109,41,41,28,34,33,43,38,59,73,113,114,115,39,57,106,28,106,106,41,73,57,41,107,109,117,109,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,36,130,130,107,117,131,118,123,28,28,28,28,28,34,34,34,34,124,125,126,33,43,38,59,59,59,59,73,113,114,115,39,57,106,104,104,127,127,127,128,116,109,129,36,36,130,107,117,131,118,117,118,109,109,41,117,118,34,33,43,38,59,73,39,57,117,106,34,73,57,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,39,109,109,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,128,28,73,28,0,0,0,109,109,109,109,109,28,28,28,28,106,106,28,28,116,28,28,106,33,107,34,109,109,109,109,109,28,65,65,34,59,39,0,109,117,33,114,57,109,117,116,41,34,106,41,129,129,112,34,33,43,38,59,106,129,129,41,129,129,117,118,34,113,114,115,109,109,109,109,36,28,106,28,28,28,28,28,28,106,28,28,106,87,65,117,118,28,34,33,43,38,59,73,113,114,115,39,57,106,104,116,109,117,118,36,130,117,123,28,34,34,34,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,109,109,0,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,128,65,117,118,201,0,0,0,88,138,139,88,138,139,88,88,138,139,88,138,139,88,139,88,138,139,88,138,139,88,138,139,88,88,138,139,88,138,139,138,88,138,139,88,138,139,88,88,138,139,88,138,139,88,138,139,88,138,139,88,138,139,0,0,0,0,0,0,0,202,157,144,0,0,0,0,157,0,0,147,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,149,150,152,153,154,147,111,134,149,150,152,153,154,147,111,134,134,0,134,134,111,134,156,149,150,157,152,153,154,147,147,111,134,156,149,150,157,152,153,154,147,147,111,134,134,156,149,150,157,152,153,154,147,111,134,134,134,111,134,134,134,144,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,134,134,134,147,147,147,147,147,147,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,0,147,147,134,0,134,134,134,147,144,134,150,150,111,147,134,111,144,147,134,134,147,147,134,149,150,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,0,0,142,143,0,137,143,0,0,142,0,142,203,0,204,143,142,0,160,160,160,151,151,151,160,160,151,160,160,203,137,204,160,160,160,137,160,137,160,151,160,160,203,160,160,137,160,160,160,137,203,204,143,160,142,137,142,151,151,160,160,160,160,203,143,160,137,0,0,0,0,0,0,0,162,164,162,164,162,162,162,162,0,162,164,162,164,162,162,164,162,162,164,162,164,162,162,164,162,164,162,162,162,164,162,164,162,162,164,162,164,162,164,162,0,162,164,162,0,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,0,0,166,167,166,167,166,166,167,166,167,166,167,166,167,166,167,166,167,166,167,166,167,166,167,166,167,166,167,167,166,167,0,0,0,0,165,168,169,170,165,168,169,170,165,168,165,168,165,165,168,169,170,165,168,169,170,165,168,169,170,169,170,165,168,169,170,165,168,169,170,168,165,168,169,170,165,168,169,170,169,170,169,170,165,168,165,168,169,170,165,168,169,170,165,168,169,170,168,165,165,165,168,169,170,0,0,0,0,0,0,0,171,174,171,174,171,171,171,171,171,174,171,174,171,171,174,171,171,174,171,174,171,171,171,171,174,171,174,171,171,171,174,171,171,174,171,171,171,171,174,171,174,171,174,171,171,174,171,171,0,0,173,175,173,173,173,175,173,175,173,175,173,175,173,175,173,173,173,175,173,175,173,175,173,173,175,173,175,175,173,175,173,175,173,175,173,173,175,173,175,173,175,173,175,173,175,173,175,0,0,0,0,177,179,178,180,177,179,178,180,177,178,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,178,180,177,179,178,180,177,179,178,180,177,179,178,180,179,180,177,179,178,180,0,0,0,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,182,183,181,182,183,181,182,183,181,182,183,181,182,183,182,182,183,183,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,182,0,0,0,0,0,119,0,0,0,0,0,0,0,119,185,186,187,188,184,189,185,186,187,188,184,189,185,186,187,188,184,189,185,186,187,188,184,189,136,185,186,187,188,136,185,186,187,188,185,186,187,188,184,184,189,189,185,186,187,188,184,189,185,186,187,188,184,189,205,187,188,185,186,187,188,184,189,185,186,187,188,184,189,119,189,206,205,185,185,186,186,187,187,188,188,184,189,185,186,187,188,184,189,119,189,145,185,186,145,185,186,136,185,186,187,188,136,185,186,187,188,184,189,184,185,186,187,188,184,189,185,186,187,188,184,189,185,186,187,188,184,189,185,186,187,188,184,189,120,187,188,120,187,188],"f":[0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,[1,1],[[-1,-2],2,[],[]],[3,-1,[]],[3,-1,[]],0,[3,2],[[1,4],5],[-1,-1,[]],0,[[],3],[-1,-2,[],[]],0,0,[-1,-2,[],[]],0,[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[[8,[-2]],-1,9],2,10,[[11,[-1]]]],[[8,[8,[-1]]],[],12],[[[8,[-1]],[8,[-1]]],-1,10],[-1,[[14,[[13,[-1]]]]],[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[8,[-1]],-1],-1,10],[[],[[14,[-1]]],[]],[[15,9],[[15,[-1]]],12],[16,[[18,[17]]]],[-1,[[14,[-1]]],[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,20,[]],[-1,2,[]],[[-1,-2],[[15,[-2]]],21,10],[[[8,[-1]],[8,[-1]]],[[15,[-1]]],10],[[],[[14,[-1]]],[]],[[[8,[-1]],-2],2,22,[17,22,23,24]],[[-1,-2],-1,[],[[26,[[8,[25]]]]]],[[-1,-2],-1,[],[[26,[[8,[25]]]]]],[-1,-2,27,[]],[[[8,[-2]],3,3,[8,[-1]]],2,10,[[11,[-1]]]],[[8,[8,[-1]]],[],12],[-1,[[14,[-1]]],[]],[-1,[[2,[19,-1]]],[]],[[-1,-1],[[2,[19,-1]]],[]],[-1,-1,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[29,[[28,[-1]]]],-1],[],10],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[-1]],[29,[-1]]],[],30],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],-2],[[29,[-3]]],[],31,[]],[[[29,[-1]]],[[29,[-1]]],[]],[[[29,[-1]]],[[29,[-1]]],[]],[[[29,[-1]],-2],2,[],31],[[[32,[-1]],-2,[34,[33]],3,-3],[[6,[[35,[-4,-1]],36]]],10,17,37,[]],[[[32,[-1]],-2,[34,[33]],3,-3],[[6,[[35,[-3,-1]],36]]],10,17,[]],[[[32,[-1]],-2,[34,[38]],3,[34,[33]],3],[[6,[[35,[-1,-1]],36]]],10,17],[[-1,17,39,3,37],[[6,[2,36]]],[]],[[[40,[-1,-2]],17,39,3,37],[[6,[2,36]]],10,[[41,[-1]]]],[[[42,[-1]],-2,39,3,-3],[[6,[2,36]]],10,17,37],[[[32,[-1]],-2,[34,[43]],3,-3],[[6,[[35,[-4,-1]],36]]],10,17,37,[]],[[-1,-2,-3],[[6,[-4,36]]],[],17,37,[]],[[[44,[-1,-2]],-3,-4],[[6,[-5,36]]],10,[[45,[-1]]],17,37,[]],[[-1,-2,-3],[[6,[2,36]]],[],17,37],[[[44,[-1,-2]],-3,-4],[[6,[2,36]]],10,[[45,[-1]]],17,37],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[35,[-1,-2]]],46,[],10],[[[29,[-1]]],[[29,[-1]]],24],[47,47],[48,48],[46,46],[[[35,[-1,-2]]],[[35,[-1,-2]]],24,[24,10]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[29,[-1]]],[[29,[-1]]],24],[[[29,[-1]]],[[29,[-1]]],24],0,[-1,[],[]],[[[32,[-1]],46,-2],[[6,[2,36]]],10,[[49,[[28,[-1]]]]]],[[[32,[-1]],46,46],[[6,[2,36]]],10],[[-1,46,[34,[38]],3],[[6,[2,36]]],[]],[[[44,[-1,-2]],46,[34,[38]],3],[[6,[2,36]]],10,[[45,[-1]]]],[[[29,[-1]]],[[29,[-1]]],50],[[[29,[-1]]],[[29,[-1]]],50],[[[35,[-1,-2]],-3,[32,[-2]],[34,[33]],3],[[6,[[35,[-1,-2]],36]]],24,10,17],[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[51,[[28,[-1]]]]]],[[],[[29,[-1]]],[]],0,[3,-1,[]],[3,-1,[]],[3,-1,[]],[47],[3,-1,[]],[3,-1,[]],[48],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[51,[[28,[-1]]]]]],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[[44,[-1,-2]]],2,10,[[45,[-1]]]],[[48,48],20],[[[29,[-1]],-2],[[6,[2,36]]],[],31],[[[29,[[28,[-1]]]]],[[29,[-1]]],10],[[[35,[[28,[-1]],-1]]],[[35,[-1,-1]]],10],0,[[[40,[-1,-2]],4],5,10,[[41,[-1]]]],[[[29,[-1]],4],5,52],[[53,4],5],[[47,4],5],[[48,4],5],[[46,4],5],[[[35,[-1,-2]],4],5,52,[52,10]],[[[32,[-1]],4],5,[52,10]],[[[42,[-1]],4],5,[52,10]],[[[44,[-1,-2]],4],5,[52,10],[52,[45,[-1]]]],[-1,-1,[]],[-1,-1,[]],[[[29,[-1]]],[[29,[[28,[-1]]]]],10],[-1,-1,[]],[3,47],[-1,-1,[]],[3,48],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[54,[[32,[-1]]],10],[-1,-1,[]],[55,[[42,[-1]]],10],[-1,-1,[]],[-1,[[29,[-3]]],21,[],[[56,[-2]]]],[[-1,57],[[29,[-2]]],[],[]],[[[44,[-1,-2]],57],[[29,[-1]]],10,[[45,[-1]]]],[-1,[],[]],[[[44,[-1,-2]]],[],10,[[45,[-1]]]],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[[32,[-1]],[34,[38]],3],[[6,[[29,[-1]],36]]],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[49,[[28,[-1]]]]]],[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[51,[[28,[-1]]]]]],[-1,[[29,[-1]]],[]],0,[-1,[],[]],[[[29,[-1]],-2],[[29,[-3]]],[],31,[]],[[[29,[-1]],[29,[-1]]],[],58],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[32,[-1]],-2,-3],2,10,17,[[49,[[34,[59]]]]]],[[-1,-2],[[44,[-3]]],[],31,[]],[[[29,[-1]]],[],60],[[-2,[8,[39]]],[[40,[-1,-2]]],10,[[41,[-1]]]],[[-1,[62,[61]]],2,[]],[[[44,[-1,-2]],[62,[61]]],2,10,[[45,[-1]]]],[[-1,-2],2,[],31],[[[44,[-1,-2]],-3],2,10,[[45,[-1]]],31],0,0,[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[51,[[28,[-1]]]]]],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],63],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[-2,-3,[15,[[34,[43]]]]],[[6,[2,36]]],10,[[41,[-1]],64],[[65,[-1]]]],[[[29,[-1]]],[[29,[[28,[-2]]]]],[],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[29,[[66,[-1]]]]],[[66,[[29,[-1]]]]],50],[[[29,[-1]],3],[[15,[[29,[-2]]]]],21,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[],[[29,[-1]]],[]],[[[29,[[2,[-1,-2]]]]],[[2,[[29,[-1]],[29,[-2]]]]],[],[]],[[[35,[-1,-2]]],[[29,[-1]]],[],10],[[[35,[-1,-2]]],[[29,[[28,[-2]]]]],[],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[29,[-1]],[29,[-2]]],[[29,[[2,[-1,-2]]]]],[],[]],0,0,[[[67,[-1,-2]],-3,-4],[[6,[-5,36]]],10,[[41,[-1]],64],17,37,[]],[[[67,[-1,-2]],-3,-4],[[6,[2,36]]],10,[[41,[-1]],64],17,37],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[67,[-1,-2]],46,[34,[38]],3],[[6,[2,36]]],10,[[41,[-1]],64]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[68,4],5],[[[67,[-1,-2]],4],5,[52,10],[52,[41,[-1]]]],[-1,-1,[]],[-1,-1,[]],[[[67,[-1,-2]],57],[[29,[-1]]],10,[[41,[-1]],64]],[[[67,[-1,-2]]],[],10,[[41,[-1]],64]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[67,[-1,-2]],[62,[61]]],2,10,[[41,[-1]],64]],[[[67,[-1,-2]],-3],2,10,[[41,[-1]],64],31],[[-2,-3,[15,[[34,[43]]]]],[[6,[2,36]]],10,[[41,[-1]],64],[[65,[-1]]]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[[-1,17,[34,[33]],3,37],[[6,[46,36]]],[]],[[69,17,[34,[33]],3,37],[[6,[46,36]]]],[[-1,17,[34,[33]],3,[28,[-2]]],[[6,[46,36]]],[],[]],[[69,17,[34,[33]],3,[28,[-1]]],[[6,[46,36]]],10],[[-1,17,[34,[38]],3,[34,[33]],3],[[6,[[2,[46,[29,[-2]]]],36]]],[],[]],[[69,17,[34,[38]],3,[34,[33]],3],[[6,[[2,[46,[29,[-1]]]],36]]],10],[[-1,17,39,3,37],[[6,[2,36]]],[]],[[-1,17,[34,[43]],3,37],[[6,[46,36]]],[]],[[69,17,[34,[43]],3,37],[[6,[46,36]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[69,69],[70,70],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[70,70],71],[69,[[72,[70]]]],[[-1,46,[28,[-2]]],[[6,[2,36]]],[],[]],[[69,46,[28,[-1]]],[[6,[2,36]]],10],[[-1,46,46],[[6,[2,36]]],[]],[[69,46,46],[[6,[2,36]]]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[-1,17,73,3],[[6,[2,36]]],[]],[[69,17,73,3],[[6,[2,36]]]],[[70,70],20],[[69,4],5],[[70,4],5],[-1,-1,[]],[[[34,[59]]],70],[73,70],[-1,-1,[]],[[70,-1],2,74],[[],3],[[],3],[[-1,[34,[38]],3],[[6,[[29,[-2]],36]]],[],[]],[[69,[34,[38]],3],[[6,[[29,[-1]],36]]],10],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,17,[34,[59]]],2,[]],[[69,17,[34,[59]]],2],[47,69],[[70,70],[[62,[71]]]],[69,47],[69,3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[75,[-1]],[34,[33]]],[[8,[[76,[-1]]]]],[77,78]],[[[75,[-1]],-2,[34,[59]]],2,10,31],[[[75,[-1]]],2,[77,78]],[[[75,[-1]],-2,-2],2,[77,78],[24,79]],[[[75,[-1]]],2,[77,78]],[[[75,[-1]],-2,[34,[33]],3,-3],[[6,[2,36]]],10,31,31],[[[75,[-1]],-2,[34,[43]],3,-3],[[6,[2,36]]],10,31,31],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-2,61,10,[[65,[-1]]]],[80,80],[[[76,[-1]]],[[76,[-1]]],[24,10]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],81],[[[75,[-1]],[34,[59]],3,[34,[59]],3],[[6,[2,36]]],10],0,[[],82],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[[75,[-1]],-2,73,3],[[6,[2,36]]],10,31],[[[75,[-1]],-2],2,10,31],[[80,80],20],[[83,83],20],[[[76,[-1]],[76,[-1]]],20,[84,10]],[[[75,[-1]]],2,10],[[[75,[-1]],[34,[43]],3,[29,[[28,[-1]]]]],[[6,[2,36]]],10],[[[75,[-1]]],[[15,[[15,[[76,[-1]]]]]]],[77,78]],[[[75,[-1]],[34,[43]]],[[8,[[76,[-1]]]]],[77,78]],[[80,4],5],[[80,4],5],[[83,4],5],[[83,4],5],[[81,4],[[6,[2,85]]]],[[81,4],5],[[[86,[-1]],4],5,[52,87]],[[82,4],5],[[[76,[-1]],4],5,[52,10]],[[[75,[-1]],4],5,[52,10]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[75,[-1]],57],[[29,[-1]]],10],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[82,20],82],0,[[[75,[-1]]],88,[77,78]],[[[75,[-1]],[62,[61]]],2,10],[[[75,[-1]],-2],2,10,31],[81,61],[[[75,[-1]],[34,[38]],3],[[6,[[29,[-1]],36]]],10],[[82,9,-2,[90,[-3,89]]],[[6,[2,91]]],10,[[65,[-1]]],92],[[9,-2,[15,[[15,[-1]]]]],[[6,[[75,[-1]],36]]],[77,78],[[65,[-1]]]],[[82,20],82],[[82,20],82],[[-2,-3,[15,[[34,[43]]]]],[[6,[2,36]]],10,[[41,[-1]],64],[[65,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,61,[]],[-1,61,[]],[-1,61,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[[75,[-1]]],[[6,[2,[15,[83]]]]],[77,78]],[[[75,[-1]],-2,-2],[[6,[2,[15,[83]]]]],[77,78],[24,79]],[[[75,[-1]],-2,-2],[[6,[2,[15,[83]]]]],[77,78],[24,79]],[[[75,[-1]]],[[6,[2,[15,[83]]]]],[77,78]],[[82,[93,[3]]],82],[[82,[93,[3]]],82],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[[[94,[-1,-2]],4],5,[52,95],[52,65]],[[[96,[-1]],4],5,[52,95]],[[[97,[-1]],4],5,[52,95]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[94,[-1,-2]]],[[96,[-1]]],95,65],[[9,-1],[[94,[-2,-1]]],65,95],[[[94,[-1,-2]],3],[[97,[-1]]],95,65],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[98,98],[99,99],[100,100],[101,101],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[98,98],71],[[102,102],71],[98,59],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[3,2],[[98,98],20],[[102,102],20],[[99,99],20],[[100,100],20],[[101,101],20],[[98,4],5],[[98,4],5],[[102,4],5],[[102,4],5],[[99,4],5],[[99,4],5],[[100,4],5],[[100,4],5],[[101,4],5],[[101,4],5],[[[2,[59,3]]],98],[-1,-1,[]],[[[34,[59]]],98],[[[2,[-1,98,103]]],102,[[26,[16]]]],[104,102],[-1,-1,[]],[[[2,[98,103]]],102],[-1,-1,[]],[[[2,[3,-1]]],99,[[26,[16]]]],[[[2,[99,3,-1]]],100,[[26,[16]]]],[-1,-1,[]],[[[2,[3,16,[105,[98,61]]]]],101],[[[2,[3,61]]],101],[[[2,[3,61,[105,[98,61]]]]],101],[[[2,[3,16]]],101],[-1,-1,[]],[[98,-1],2,74],[98,3],[[],3],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[98,98],[[62,[71]]]],[[102,102],[[62,[71]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,61,[]],[-1,61,[]],[-1,61,[]],[-1,61,[]],[-1,61,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[106,[-1]],[106,[-1]]],[[106,[-1]]],10],[[[28,[-1]],[28,[-1]]],2,10],[[[28,[-1]],[28,[-1]]],2,10],[[[107,[-1]],[15,[[15,[15]]]],[15,[108]]],2,12],[[],59],[[[109,[-1]]],[[34,[33]]],10],[[[109,[-1]],-2],[[34,[33]]],10,110],[[[109,[-1]]],[[15,[108]]],10],[-1,59,110],[[[109,[-1]]],[[15,[[2,[[34,[33]],111]]]]],10],[[-1,-2,[34,[59]]],2,[],31],[[[109,[-1]],-2,-3],2,10,[[49,[[34,[59]]]]],17],[[[109,[-1]],39,-2],2,10,17],[[-1,-2,[34,[33]],3,-3],[[6,[2,36]]],[],31,31],[[-1,-2,[34,[43]],3,-3],[[6,[2,36]]],[],31,31],[[[109,[-1]]],3,10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[109,[-1]]],[[15,[108]]],10],[[[109,[-1]],-2],57,10,110],[[[28,[-1]]],[[28,[-1]]],24],[[[34,[-1]]],[[34,[-1]]],[24,112]],[33,33],[43,43],[38,38],[59,59],[73,73],[113,113],[114,114],[115,115],[39,39],[57,57],[[[106,[-1]]],[[106,[-1]]],24],[104,104],[[[116,[-1]]],[[116,[-1]]],[24,10]],[[[109,[-1]]],[[109,[-1]]],[24,10]],[[[117,[-1]]],[[117,[-1]]],[24,12]],[[[118,[-1]]],[[118,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[34,[-1]],[34,[-1]]],71,112],[[59,59],71],[[39,39],71],[113,3],[114,3],[115,3],[[[34,[-1]]],-1,112],[[[109,[-1]]],73,10],[[[106,[-1]]],3,10],[[[109,[-1]],[15,[[15,[20]]]]],[[2,[[109,[-1]],[15,[[15,[-1]]]]]]],10],[[[109,[-1]]],[],[]],[[[109,[-1]]],[],[]],[[[109,[-1]]],[],[]],[[[109,[-1]]],[[15,[[34,[43]]]]],10],[[[116,[-1]],3],16,10],[[-1,[34,[59]],3,[34,[59]],3],[[6,[2,36]]],[]],[[[109,[-1]],-2,-3],2,10,[[26,[16]]],31],[[118,[8,[-1]],[8,[[8,[8]]]],-2,-4],[[6,[2,36]]],65,27,119,[[120,[-3]]]],[[[117,[-1]]],109,12],[[[28,[-1]]],[[28,[-1]]],10],[[[34,[-1]]],[[106,[-2]]],112,10],[[],33],[[],[[109,[-1]]],10],[[],[[107,[-1]]],[121,12]],[[[106,[-1]]],3,10],[[[109,[-1]]],3,10],[[[28,[-1]]],[[62,[-1]]],10],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[109,[-1]],[15,[[15,[20]]]]],[[2,[[109,[-1]],[15,[[15,[-1]]]]]]],10],[[[28,[-1]]],[[28,[-1]]],10],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[73,[32,[-1]],3],[[6,[2,36]]],10],[[[109,[-1]],[34,[43]]],2,10],[[[109,[-1]],-2],2,10,[[49,[[34,[59]]]]]],[[-1,-2,73,3],[[6,[2,36]]],[],31],[[-1,-2],2,[],31],[[[28,[-1]],[28,[-1]]],20,10],[[[34,[-1]],[34,[-1]]],20,[84,112]],[[33,33],20],[[43,43],20],[[38,38],20],[[59,59],20],[[73,73],20],[[113,113],20],[[114,114],20],[[115,115],20],[[39,39],20],[[57,57],20],[[[106,[-1]],[106,[-1]]],20,84],[[[28,[-1]]],-1,10],[[[106,[-1]],-2,-3,-4,-5,-6,-7,-8,-9,-10,-11],-12,10,17,17,17,17,17,17,17,17,17,17,[]],[[[106,[-1]],-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12],-12,10,17,17,17,17,17,17,17,17,17,17,84],[-1,2,[]],[73,[[106,[-1]]],10],[57,[[106,[-1]]],10],[[-1,[34,[43]],3,[29,[[28,[-2]]]]],[[6,[2,36]]],[],[]],[[[107,[-1]],[122,[-1]],[117,[-1]]],20,12],[[[109,[-1]]],[[34,[43]]],10],[[[117,[-1]]],[[15,[-1]]],12],[[[109,[-1]]],[[15,[[2,[[34,[43]],111]]]]],10],[[[123,[-1]],4],5,10],[[[28,[-1]],4],5,52],[[[34,[-1]],4],5,[52,112]],[[124,4],5],[[125,4],5],[[126,4],5],[[33,4],5],[[43,4],5],[[38,4],5],[[59,4],5],[[73,4],5],[[113,4],5],[[114,4],5],[[115,4],5],[[39,4],5],[[57,4],5],[[[106,[-1]],4],5,52],[[104,4],5],[[[127,[-1]],4],5,[52,10]],[[[128,[-1,-2,-3]],4],5,[52,10],[52,[49,[[127,[-1]]]]],[52,21]],[[[116,[-1]],4],5,[52,10]],[[[109,[-1]],4],5,[52,10]],[[[129,[-1]],4],5,[52,10]],[[36,4],5],[[36,4],5],[[130,4],5],[[130,4],5],[[[107,[-1]],4],5,[52,12]],[[[117,[-1]],4],5,[52,12]],[[[131,[-1]],4],5,[52,12]],[[[118,[-1]],4],5,[52,12]],[-1,-1,[]],[[[2,[-1,-1]]],[[28,[-1]]],10],[-1,[[28,[-1]]],10],[[[28,[-1]]],[[28,[-1]]],10],[-1,[[28,[-1]]],10],[-1,-1,[]],[[[34,[43]]],[[34,[59]]]],[[[34,[33]]],[[34,[59]]]],[[[34,[38]]],[[34,[59]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[33,59],[43,59],[-1,-1,[]],[38,59],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[2,[-1,111]]],104,[[49,[[34,[59]]]]]],[-1,-1,[]],[[[106,[-1]]],[[127,[-1]]],10],[[[2,[-1,[106,[-2]]]]],[[127,[-2]]],[[26,[16]]],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[132,36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[8,[108]],1],[[133,[[117,[-1]]]]],0],[[[8,[108]],1],[[133,[[118,[-1]]]]],0],[[[109,[-1]]],[[15,[[116,[-1]]]]],10],[[[109,[-1]]],[[105,[98,61]]],10],[[-1,57],[[29,[-2]]],[],[]],[[[117,[-1]]],134,12],[[[118,[-1]]],[[117,[-1]]],12],[[[34,[-1]],-2],2,[135,112],74],[[33,-1],2,74],[[43,-1],2,74],[[38,-1],2,74],[[59,-1],2,74],[[73,-1],2,74],[[39,-1],2,74],[[57,-1],2,74],[[[117,[-1]],-3],[[133,[2]]],12,[[119,[-1]]],[[136,[-1,-2]]]],[[[106,[-1]]],61,10],[[[34,[-1]]],3,112],[73,3],[57,3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[39,[[34,[43]]]],[[[109,[-1]]],[[34,[38]]],10],[[[109,[-1]]],[[15,[[2,[[34,[38]],111]]]]],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[128,[-1,-2,-3]]],[],10,[[49,[[127,[-1]]]]],21],[[[28,[-1]]],[[28,[-1]]],10],[73,20],[[[28,[-1]]],20,10],[[-2,[117,[-1]],-3],[[6,[[118,[-1]],36]]],12,[[137,[-1]]],65],[[-2,-3],[[6,[[117,[-1]],36]]],12,[[137,[-1]]],65],[[-2,-3,20],[[6,[[117,[-1]],36]]],12,[[137,[-1]]],65],[[[109,[-1]],-2,-3],3,10,[[26,[16]]],31],[[[109,[-1]],-2,-3],3,10,[[26,[16]]],31],[[[109,[-1]]],39,10],[[[109,[-1]]],[[15,[[0,[-1]]]]],10],[[[109,[-1]]],3,10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[106,[-1]],[106,[-1]]],[[106,[-1]]],10],[[[106,[-1]],-1],[[106,[-1]]],10],[[[28,[-1]],[28,[-1]]],2,10],[[[28,[-1]],[28,[-1]]],2,10],[[[116,[-1]]],16,10],[[[28,[-1]]],[],10],[[[28,[-1]]],[],10],[[[106,[-1]]],[],10],[-1,33,110],[[],[[107,[-1]]],12],[[[34,[-1]]],[[106,[-2]]],112,10],[[[109,[-1]]],3,10],[[[109,[-1]]],3,10],[[[109,[-1]]],3,10],[[[109,[-1]]],3,10],[[[109,[-1]]],3,10],[[[28,[-1]]],-1,10],[-1,[],[]],[-1,[],[]],[[[34,[-1]],[34,[-1]]],[[62,[71]]],112],[[59,59],[[62,[71]]]],[[39,39],[[62,[71]]]],0,[[[109,[-1]]],138,10],[[[117,[-1]]],[[139,[-1]]],12],[33,108],[114,108],[57,108],[[[109,[-1]]],[[123,[-1]]],10],[[[117,[-1]]],[[131,[-1]]],12],[[[116,[-1]]],[[8,[[106,[-1]]]]],10],[[-1,[62,[61]]],2,[]],[[[34,[-1]]],[[106,[-2]]],112,10],[-1,[[106,[-2]]],79,10],[[-1,-2],2,[],31],[[[129,[-1]],[34,[33]],111],[[106,[-1]]],10],[[[129,[-1]],-2,111],[[106,[-1]]],10,[[49,[[34,[59]]]]]],[[-1,3,111],[[106,[-2]]],[],10],[[[34,[-1]],111],[[106,[-2]]],112,10],[[33,3,111],[[106,[-1]]],10],[[43,3,111],[[106,[-1]]],10],[[38,3,111],[[106,[-1]]],10],[[59,3,111],[[106,[-1]]],10],[[[106,[-1]],[129,[-1]]],2,10],[[[129,[-1]],57],[[106,[-1]]],10],[[[129,[-1]],[34,[43]],111],[[106,[-1]]],10],[[-1,[34,[38]],3],[[6,[[29,[-2]],36]]],[],[]],[[[129,[-1]],[34,[38]],111],[[106,[-1]]],10],[[[129,[-1]],73],[[106,[-1]]],10],[[-1,1],[[133,[[117,[-2]]]]],140,0],[[-1,1],[[133,[[118,[-2]]]]],140,0],[[[34,[-1]],103],[[106,[-2]]],112,10],[113,111],[114,111],[115,111],[[[109,[-1]]],73,10],[[[109,[-1]],3],2,10],[[[109,[-1]],-2,-3],3,10,[[26,[16]]],31],[[[109,[-1]]],[[15,[[0,[-1]]]]],10],[36,[[62,[141]]]],[[[28,[-1]]],[[28,[-1]]],10],[[[106,[-1]]],[[106,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[106,[-1]],[106,[-1]]],[[106,[-1]]],10],[[[28,[-1]],[28,[-1]]],2,10],[[[28,[-1]],[28,[-1]]],2,10],[-1,[[106,[-2]]],79,10],[[-2,-3,[15,[[34,[43]]]]],[[6,[2,36]]],10,[[41,[-1]],64],[[65,[-1]]]],[[-1,-3],[[6,[2,36]]],[],[],[[45,[-2]]]],[[[117,[-1]],1],[[15,[108]]],0],[[[118,[-1]],1],[[15,[108]]],0],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,61,[]],[-1,61,[]],[[[117,[-1]]],[],12],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[[[34,[59]]],[[6,[[34,[38]]]]]],[[[34,[59]]],[[6,[[34,[33]]]]]],[[[34,[59]]],[[6,[[34,[43]]]]]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[[109,[-1]]],[[34,[33]]],10],[[[109,[-1]],-2],[[34,[33]]],10,110],[[117,-3,[8,[[8,[8]]]],-5],[[6,[36]]],142,[[143,[-1]]],[[144,[-1,-2]]],119,[[145,[-4]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[106,[-1]],-2],[[128,[-1,-3,-2]]],10,21,[[49,[[127,[-1]]]]]],[-1,-1,[]],[[[117,[-1]],-2,1],[[133,[2]]],0,146],[[[118,[-1]],-2,1],[[133,[2]]],0,146],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[88,2],[88,88],[138,138],[[[139,[-1]]],[[139,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[88,[[8,[[34,[59]]]]]],[[[139,[-1]]],[[15,[-1]]],12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[[88,88],20],[[88,4],5],[[138,4],5],[[[139,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[138,[[15,[[34,[59]]]]]],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[88,[[0,[79]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[147,[-1,-2]],[147,[-1,-2]]],[[147,[-1,-2]]],10,148],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[134,[-1]]],[[134,[-1]]],[24,10]],[[[149,[-1]]],[[149,[-1]]],[24,12]],[[[150,[-1,-2]]],[[150,[-1,-2]]],12,[[151,[-1]]]],[152,152],[153,153],[154,154],[[[147,[-1,-2]]],[[147,[-1,-2]]],24,24],[111,111],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[134,[-1]],[15,[-1]]],[[147,[-1,152]]],155],[[[134,[-1]],[147,[-1,152]]],[[147,[-1,154]]],155],0,[[[134,[-1]],-1],[[147,[-1,154]]],155],[[[134,[-1]],-1],[[147,[-1,153]]],155],[[],111],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[147,[-1,-2]]],[[8,[-1]]],[],[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[147,[-1,-2]]],[[8,[-1]]],[],[]],[3,-1,[]],[3,-1,[]],[[[134,[-1]],[147,[-1,154]]],[[147,[-1,154]]],155],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[[134,[-1]]],[[147,[-1,152]]],155],[[[134,[-1]]],[[147,[-1,154]]],155],[[[134,[-1]]],[[147,[-1,153]]],155],[[111,111],20],[[[134,[-1]]],9,155],[[[134,[-1]]],3,155],[[[134,[-1]],[147,[-1,154]]],[[15,[-1]]],155],[-1,20,[]],[[[134,[-1]],4],5,[52,10]],[[[156,[-1]],4],5,[52,10]],[[[149,[-1]],4],5,[52,12]],[[[150,[-1,-2]],4],5,[52,12],[52,[151,[-1]]]],[[157,4],5],[[152,4],5],[[153,4],5],[[154,4],5],[[[147,[-1,-2]],4],5,52,52],[[111,4],5],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[134,[-1]]],-1,155],[[[134,[-1]]],-1,155],[[[134,[-1]]],-1,155],[[[134,[-1]]],3,155],[[[147,[-1,-2]],3],-1,[],[]],[[[147,[-1,-2]],[158,[3]]],[[8,[-1]]],[],[]],[[[147,[-1,-2]],159],[[8,[-1]]],[],[]],[[[147,[-1,-2]],159],[[8,[-1]]],[],[]],[[[147,[-1,-2]],3],-1,[],[]],[[[147,[-1,-2]],[158,[3]]],[[8,[-1]]],[],[]],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[147,[-1,-2]]],[[0,[79]]],[],[]],[[[147,[-1,-2]]],[[0,[79]]],[],[]],[[[134,[-1]]],9,155],0,[[[134,[-1]],-1,-1,-2],[[15,[-1]]],155,[21,24]],[[[134,[-1]],[15,[-1]]],[[147,[-1,153]]],155],[[[134,[-1]],[147,[-1,153]]],[[147,[-1,152]]],155],[[[147,[-1,-2]],-1],[[147,[-1,-2]]],10,148],[[],-1,[]],[[9,9],[[134,[-1]]],155],[-1,[[150,[-1,-2]]],12,[[151,[-1]]]],[-2,[[150,[-1,-2]]],12,[[151,[-1]]]],[[],111],[[[147,[-1,-2]]],3,[],[]],[[[134,[-1]]],[[156,[-1]]],155],[[],111],[[-1,-2],[[6,[36]]],[],31],[[[147,[-1,153]],111],[[147,[-1,153]]],10],[[[134,[-1]],[147,[-1,154]],111],[[147,[-1,154]]],155],[[[134,[-1]],-1,111],-1,155],[[[147,[-1,-2]],[147,[-1,-2]]],[[147,[-1,-2]]],10,148],[[[147,[-1,-2]],-1],[[147,[-1,-2]]],10,148],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[160,[-1]],[160,[-1]]],[[160,[-1]]],10],[[[160,[-1]],[160,[-1]]],2,10],[[[160,[-1]],-1],2,10],[[-1,-1],2,161],[-1,2,[]],[-1,15,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,20,[]],[[[160,[-1]]],[[160,[-1]]],24],[[-1,-2],2,[],[]],[[-1,[147,[152]],160],[],[]],[[-1,[147,[153]],160],[],[]],[[-1,-2,-4,-5],[[133,[2]]],[],27,119,[[120,[-3]]],[21,24]],[[],[[160,[-1]]],10],[3,-1,[]],[3,-1,[]],[[-1,9],2,[]],[3,2],[-1,[],[]],[[[160,[-1]],[160,[-1]]],20,84],[-1,[],[]],[[[160,[-1]],4],5,52],[-1,-1,[]],[-1,[[8,[-2]]],[],[]],[[],3],[-1,-2,[],[]],[-1,9,[]],[[[160,[-1]],[160,[-1]]],[[160,[-1]]],10],[[[160,[-1]],-1],2,10],[[[160,[-1]],[160,[-1]]],2,10],[-1,25,[]],[9,-1,[]],[[],-1,[]],[[],-1,[]],[-1,[[160,[-2]]],27,10],[9],[-1,[[133,[-2]]],140,[]],[-1,133,140],[-1,15,[]],[-1,2,[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,[],[]],[[-1,-3,-4],[[6,[157]]],[],119,[[145,[-2]]],[21,24]],[-1,-2,[],[]],[[-1,-2],[[133,[2]]],[],146],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]]],[[162,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[[162,[-1]],[147,[152]],160],[],12],[[[162,[-1]],[147,[153]],160],[],12],[[[162,[-1]],-2,-4,[147,[152]],160],[[133,[2]]],12,27,[[119,[-1]]],[[120,[-1,-3]]]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[162,[-1]],9],2,12],[3,2],[3,2],[[[162,[-1]]],[[163,[-1]]],12],[[[162,[-1]],4],5,[52,12]],[[[164,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[[[162,[-1]]],[[8,[-1]]],12],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]]],9,12],[[[162,[-1]]],25,12],[9,[[162,[-1]]],12],[9],[-1,[[133,[[162,[-2]]]]],140,12],[-1,133,140],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[[[162,[-1]]],[],12],[[[162,[-1]],[163,[-1]],-3],[[6,[[165,[-1]],157]]],12,[[119,[-1]]],[[145,[-1,-2]]]],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]],-2],[[133,[2]]],12,146],0,[[[163,[-1]]],2,12],[[[163,[-1]],[163,[-1]]],2,12],[[[163,[-1]],[163,[-1]]],2,12],[[[163,[-1]],8],2,12],[[[163,[-1]]],2,12],[[[163,[-1]]],2,12],[[[163,[-1]]],2,12],[[[163,[-1]]],15,12],[-1,-2,[],[]],[-1,-2,[],[]],[[[163,[-1]]],20,12],[[[163,[-1]]],[[163,[-1]]],[24,12]],[[-1,-2],2,[],[]],[3,-1,[]],[3,-1,[]],[3,2],[[[163,[-1]]],[],12],[[[163,[-1]],4],5,[52,12]],[-1,-1,[]],[[],3],[-1,-2,[],[]],[[[122,[-1]]],[[163,[-1]]],12],[[[163,[-1]]],15,12],[[[163,[-1]]],2,12],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[166,[-1]],-2,-4,-5],[[133,[2]]],12,27,[[119,[-1]]],[[120,[-1,-3]]],[21,24]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[[166,[-1]],4],5,[52,12]],[[[167,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]]],[[166,[-1]]],12],[[[122,[-1]]],[[167,[-1]]],12],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[[[167,[-1]],-3,-4,[163,[-1]]],[[6,[157]]],12,[[119,[-1]]],[[145,[-1,-2]]],[21,24]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[165,[-1]]],[[165,[-1]]],[24,12]],[[[168,[-1]]],[[168,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[165,[-1]]],-1,12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[[[169,[-1]]],20,12],[[[170,[-1]]],20,12],[[[165,[-1]],4],5,[52,12]],[[[168,[-1]],4],5,[52,12]],[[[169,[-1]],4],5,[52,12]],[[[170,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]]],[[169,[-1]]],12],[[[162,[-1]]],[[170,[-1]]],12],[[[169,[-1]],-2],[[6,[36]]],12,31],[[[170,[-1]],-2],[[6,[36]]],12,31],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],0,[[[165,[-1]]],[[163,[-1]]],12],[[[165,[-1]],-1],[[2,[[163,[-1]],[168,[-1]]]]],12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]]],[[171,[-1]]],[24,172]],[[-1,-2],2,[],[]],[[[171,[-1]],[147,[152]],160],[],[172,52]],[[[171,[-1]],[147,[153]],160],[],[172,52]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[171,[-1]],9],2,[172,52]],[3,2],[3,2],[[[171,[-1]]],[[173,[-1]]],[172,52]],[[[171,[-1]],4],5,[52,172]],[[[174,[-1]],4],5,[52,172]],[-1,-1,[]],[-1,-1,[]],[[[171,[-1]],9,15,[62,[15]]],[[171,[-1]]],[172,52]],[[[171,[-1]]],[],[172,52]],[[[171,[-1]]],8,[172,52]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]]],9,[172,52]],[[[171,[-1]]],25,[172,52]],[9,[[171,[-1]]],[172,52]],[9],[-1,[[133,[[171,[-2]]]]],140,[172,52]],[[-1,1],[[133,[[171,[-2]]]]],140,[172,52]],[-1,133,140],[[[171,[-1]]],[],[172,52]],[[9,-1],[[171,[-2]]],27,[172,52]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[[[171,[-1]]],[],[172,52]],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]],-2],[[133,[2]]],[172,52],146],[[[171,[-1]],-2,1],[[133,[2]]],[172,52],146],0,0,[[[173,[-1]],[173,[-1]]],2,[172,52]],[[[175,[-1]],[175,[-1]]],2,[176,52]],[[[173,[-1]]],2,[172,52]],[[[173,[-1]]],15,[172,52]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[173,[-1]]],20,[172,52]],[[[175,[-1]]],20,[176,52]],[[[173,[-1]]],[[173,[-1]]],[24,172]],[[[175,[-1]]],[[175,[-1]]],[24,172]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[173,[-1]]],2,172],[[],[[173,[-1]]],[121,172]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[[173,[-1]]],[],[172,52]],[[[173,[-1]],4],5,[52,172]],[[[175,[-1]],4],5,[52,172]],[-1,-1,[]],[-1,-1,[]],[[[171,[-1]]],[[175,[-1]]],[176,52]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[],[[173,[-1]]],172],[[[171,[-1]]],[[175,[-1]]],[176,52]],[[[173,[-1]]],15,[172,52]],[[[173,[-1]]],2,[172,52]],[[[175,[-1]]],2,[176,52]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[177,[-1]],-2,-4,-5],[[133,[2]]],[172,52],27,119,[[120,[-3]]],[21,24]],[[[178,[-1]],-2,-4,-5],[[133,[2]]],[172,52],27,119,[[120,[-3]]],[21,24]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[[[177,[-1]],4],5,[52,172]],[[[179,[-1]],4],5,[52,172]],[[[178,[-1]],4],5,[52,172]],[[[180,[-1]],4],5,[52,172]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]]],[[177,[-1]]],[172,52]],[[[171,[-1]]],[[179,[-1]]],[176,52]],[[[171,[-1]]],[[178,[-1]]],[172,52]],[[[171,[-1]]],[[178,[-1]]],172],[[[171,[-1]]],[[180,[-1]]],[176,52]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[[179,[-1]],-3,-4,[175,[-1]]],[[6,[157]]],[176,52],119,[[145,[-2]]],[21,24]],[[[180,[-1]],-3,-4,[175,[-1]]],[[6,[157]]],[176,52],119,[[145,[-2]]],[21,24]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[181,[-1]]],[[181,[-1]]],[24,176,52]],[[[182,[-1]]],[[182,[-1]]],[24,172]],[[[183,[-1]]],[[183,[-1]]],[24,172]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[[[182,[-1]]],20,[176,52]],[[[183,[-1]]],20,[176,52]],[[[181,[-1]],4],5,[52,176,52]],[[[182,[-1]],4],5,[52,172]],[[[183,[-1]],4],5,[52,172]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]]],[[182,[-1]]],[176,52]],[[[171,[-1]]],[[182,[-1]]],[176,52]],[[[171,[-1]]],[[183,[-1]]],[176,52]],[[[171,[-1]]],[[183,[-1]]],[176,52]],[[[182,[-1]],-2],[[6,[36]]],[176,52],31],[[[183,[-1]],-2],[[6,[36]]],[176,52],31],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[175,[-1]]],[[182,[-1]]],[176,52]],0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,[[184,[-2,-3]]],[],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[185,[-1,-2,-3]]],[[185,[-1,-2,-3]]],[24,140],[24,12],[24,[119,[-2]]]],[[[186,[-1,-2,-3]]],[[186,[-1,-2,-3]]],[24,140],[24,12],[24,[119,[-2]]]],[[[187,[-1,-2,-3]]],[[187,[-1,-2,-3]]],[24,146],[24,12],[24,[119,[-2]]]],[[[188,[-1,-2,-3]]],[[188,[-1,-2,-3]]],[24,146],[24,12],[24,[119,[-2]]]],[[[184,[-1,-2]]],[[184,[-1,-2]]],[24,12],24],[[[189,[-1]]],[[189,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],[[133,[2]]],[],[]],[[[185,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],140,12],[[[186,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],140,12],[[[187,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],146,12],[[[188,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],146,12],[-1,[[133,[2]]],[]],[[[185,[-1,-2,[189,[-2]]]]],[[133,[2]]],140,12],[[[186,[-1,-2,[189,[-2]]]]],[[133,[2]]],140,12],[[[187,[-1,-2,[189,[-2]]]]],[[133,[2]]],146,12],[[[188,[-1,-2,[189,[-2]]]]],[[133,[2]]],146,12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[184,[-1,-2]]],[],12,[]],[3,-1,[]],[[[189,[-1]]],[],12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[-1,-2,[],[]],[[[187,[-1,-2,[189,[-2]]]]],-1,146,12],[[[188,[-1,-2,[189,[-2]]]]],-1,146,12],[[[185,[-1,-2,-3]],4],5,[52,140],[52,12],[52,[119,[-2]]]],[[[186,[-1,-2,-3]],4],5,[52,140],[52,12],[52,[119,[-2]]]],[[[187,[-1,-2,-3]],4],5,[52,146],[52,12],[52,[119,[-2]]]],[[[188,[-1,-2,-3]],4],5,[52,146],[52,12],[52,[119,[-2]]]],[[[184,[-1,-2]],4],5,[52,12],52],[[[189,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,[],[]],[[[189,[-1]]],[],12],[-1,-2,[],[]],[-1,-2,[],[]],[[],3],[-1,[[185,[-1,-2,[189,[-2]]]]],140,12],[-1,[[186,[-1,-2,[189,[-2]]]]],140,12],[[],3],[-1,[[187,[-1,-2,[189,[-2]]]]],146,12],[[],3],[-1,[[188,[-1,-2,[189,[-2]]]]],146,12],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],-1,[]],[[[66,[108]]],[[189,[-1]]],12],[-1,[[133,[-2]]],[],[]],[[[185,[-1,-2,[189,[-2]]]]],[[133,[-2]]],140,12],[[[186,[-1,-2,[189,[-2]]]]],[[133,[-2]]],140,12],[-1,133,[]],[[[185,[-1,-2,[189,[-2]]]]],133,140,12],[[[186,[-1,-2,[189,[-2]]]]],133,140,12],[-1,-2,[],[]],[[[185,[-1,-2,[189,[-2]]]]],[[189,[-2]]],140,12],[[[186,[-1,-2,[189,[-2]]]]],[[189,[-2]]],140,12],[[[187,[-1,-2,[189,[-2]]]]],[[189,[-2]]],146,12],[[[188,[-1,-2,[189,[-2]]]]],[[189,[-2]]],146,12],[-1,[[184,[-2,-3]]],[],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[103,103]]],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2],[[133,[2]]],[],[]],[[[187,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],146,12],[[[188,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],146,12],[-1,[[133,[2]]],[]],[[[187,[-1,-2,[189,[-2]]]]],[[133,[2]]],146,12],[[[188,[-1,-2,[189,[-2]]]]],[[133,[2]]],146,12]],"c":[],"p":[[4,"SerdeFormat",0],[15,"tuple"],[15,"usize"],[3,"Formatter",2434],[6,"Result",2434],[4,"Result",2435],[3,"TypeId",2436],[15,"slice"],[15,"u32"],[8,"Field",27],[8,"FftGroup",27],[8,"CurveAffine",27],[3,"Coordinates",2437],[3,"CtOption",2438],[3,"Vec",2439],[15,"str"],[8,"Fn",2440],[3,"Box",2441],[3,"Choice",2438],[15,"bool"],[8,"IntoIterator",2442],[8,"Send",2443],[8,"Sync",2443],[8,"Clone",2444],[15,"u64"],[8,"AsRef",2445],[8,"RngCore",2446],[4,"Assigned",793],[3,"Value",74],[8,"Add",2447],[8,"FnOnce",2440],[3,"Region",74],[3,"Advice",793],[3,"Column",793],[3,"AssignedCell",74],[4,"Error",793],[8,"FnMut",2440],[3,"Instance",793],[3,"TableColumn",793],[3,"SimpleTableLayouter",74],[8,"Assignment",793],[3,"Table",74],[3,"Fixed",793],[3,"NamespacedLayouter",74],[8,"Layouter",74],[3,"Cell",74],[3,"RegionIndex",74],[3,"RegionStart",74],[8,"Into",2445],[8,"Copy",2443],[8,"Borrow",2448],[8,"Debug",2434],[3,"SimpleFloorPlanner",74],[8,"RegionLayouter",377],[8,"TableLayouter",377],[8,"FromIterator",2442],[3,"Challenge",793],[8,"Mul",2447],[4,"Any",793],[8,"Neg",2447],[3,"String",2449],[4,"Option",2450],[8,"Sub",2447],[8,"SyncDeps",377],[8,"Circuit",793],[15,"array"],[3,"V1Pass",341],[3,"V1",341],[3,"RegionShape",377],[4,"RegionColumn",377],[4,"Ordering",2451],[3,"HashSet",2452],[3,"Selector",793],[8,"Hasher",2453],[3,"MockProver",445],[4,"CellValue",445],[8,"FromUniformBytes",2454],[8,"Ord",2451],[8,"Iterator",2455],[4,"FailureLocation",445],[3,"CircuitGates",445],[3,"CircuitLayout",445],[4,"VerifyFailure",445],[8,"PartialEq",2451],[3,"Error",2434],[3,"TracingFloorPlanner",445],[8,"FloorPlanner",793],[3,"Assembly",1519],[3,"Shift",2456],[3,"DrawingArea",2457],[4,"DrawingAreaErrorKind",2457],[8,"DrawingBackend",2458],[3,"Range",2459],[3,"CircuitCost",633],[8,"PrimeGroup",2460],[3,"MarginalProofSize",633],[3,"ProofSize",633],[3,"Column",678],[3,"Gate",678],[3,"Constraint",678],[3,"Region",678],[3,"VirtualCell",678],[15,"i32"],[3,"VirtualCell",793],[3,"HashMap",2461],[4,"Expression",793],[3,"BatchVerifier",793],[15,"u8"],[3,"ConstraintSystem",793],[8,"Phase",793],[3,"Rotation",1576],[8,"ColumnType",793],[3,"FixedQuery",793],[3,"AdviceQuery",793],[3,"InstanceQuery",793],[3,"Gate",793],[3,"VerifyingKey",793],[3,"ProvingKey",793],[8,"EncodedChallenge",2280],[8,"TranscriptWrite",2280],[8,"Default",2462],[6,"ParamsVerifierIPA",1869],[3,"PinnedConstraintSystem",793],[3,"FirstPhase",793],[3,"SecondPhase",793],[3,"ThirdPhase",793],[3,"Constraint",793],[3,"Constraints",793],[3,"VirtualCells",793],[4,"TableError",793],[3,"PinnedVerificationKey",793],[3,"Error",2463],[6,"Result",2463],[3,"EvaluationDomain",1576],[8,"Hash",2453],[8,"Transcript",2280],[8,"Params",1798],[3,"Argument",1519],[3,"VerifyingKey",1519],[8,"Read",2464],[8,"Error",2465],[8,"CommitmentScheme",1798],[8,"Verifier",1798],[8,"VerificationStrategy",1576],[8,"TranscriptRead",2280],[8,"Write",2464],[3,"Polynomial",1576],[8,"Basis",1576],[3,"ProverQuery",1576],[3,"VerifierQuery",1576],[8,"MSM",1798],[3,"Coeff",1576],[3,"LagrangeCoeff",1576],[3,"ExtendedLagrangeCoeff",1576],[8,"WithSmallOrderMulGroup",2454],[3,"PinnedEvaluationDomain",1576],[4,"Error",1576],[3,"RangeFrom",2459],[3,"RangeFull",2459],[3,"Blind",1798],[8,"Sized",2443],[3,"ParamsIPA",1869],[3,"MSMIPA",1916],[3,"IPACommitmentScheme",1869],[3,"GuardIPA",1978],[3,"ProverIPA",1946],[3,"VerifierIPA",1946],[3,"Accumulator",1978],[3,"AccumulatorStrategy",1978],[3,"SingleStrategy",1978],[3,"ParamsKZG",2055],[8,"Engine",2466],[3,"MSMKZG",2106],[3,"KZGCommitmentScheme",2055],[3,"DualMSM",2106],[8,"MultiMillerLoop",2466],[3,"ProverGWC",2155],[3,"ProverSHPLONK",2155],[3,"VerifierGWC",2155],[3,"VerifierSHPLONK",2155],[3,"GuardKZG",2220],[3,"AccumulatorStrategy",2220],[3,"SingleStrategy",2220],[3,"ChallengeScalar",2280],[3,"Blake2bRead",2280],[3,"Keccak256Read",2280],[3,"Blake2bWrite",2280],[3,"Keccak256Write",2280],[3,"Challenge255",2280],[8,"CurveExt",27],[8,"Chip",74],[13,"InRegion",608],[13,"OutsideRegion",608],[13,"ConstraintNotSatisfied",611],[13,"CellNotAssigned",611],[13,"InstanceCellNotAssigned",611],[13,"Permutation",611],[13,"ConstraintPoisoned",611],[13,"Lookup",611],[13,"Shuffle",611],[13,"NotEnoughRowsAvailable",1518],[8,"Guard",1576],[8,"ParamsProver",1798],[8,"Prover",1798],[8,"TranscriptWriterBuffer",2280],[8,"TranscriptReadBuffer",2280]],"b":[[90,"impl-Add%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[91,"impl-Add%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[92,"impl-Add%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[93,"impl-Add-for-Value%3CV%3E"],[94,"impl-Add%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[95,"impl-Add%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[96,"impl-Add%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[97,"impl-Add%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[98,"impl-Add%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[99,"impl-Add-for-%26Value%3CV%3E"],[146,"impl-Value%3C%26V%3E"],[147,"impl-Value%3C%26mut+V%3E"],[154,"impl-Value%3C%26mut+V%3E"],[155,"impl-Value%3C%26V%3E"],[256,"impl-Mul-for-Value%3CV%3E"],[257,"impl-Mul%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[258,"impl-Mul%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[259,"impl-Mul%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[260,"impl-Mul%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[261,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[262,"impl-Mul%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[263,"impl-Mul%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[264,"impl-Mul-for-%26Value%3CV%3E"],[265,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[277,"impl-Sub%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[278,"impl-Sub%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[279,"impl-Sub%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[280,"impl-Sub%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[281,"impl-Sub%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[282,"impl-Sub-for-%26Value%3CV%3E"],[283,"impl-Sub%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[284,"impl-Sub-for-Value%3CV%3E"],[285,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[286,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[419,"impl-From%3CColumn%3CAny%3E%3E-for-RegionColumn"],[420,"impl-From%3CSelector%3E-for-RegionColumn"],[525,"impl-Display-for-FailureLocation"],[526,"impl-Debug-for-FailureLocation"],[527,"impl-Display-for-VerifyFailure"],[528,"impl-Debug-for-VerifyFailure"],[529,"impl-Display-for-CircuitGates"],[530,"impl-Debug-for-CircuitGates"],[724,"impl-Display-for-Column"],[725,"impl-Debug-for-Column"],[726,"impl-Display-for-VirtualCell"],[727,"impl-Debug-for-VirtualCell"],[728,"impl-Display-for-Gate"],[729,"impl-Debug-for-Gate"],[730,"impl-Display-for-Constraint"],[731,"impl-Debug-for-Constraint"],[732,"impl-Debug-for-Region"],[733,"impl-Display-for-Region"],[734,"impl-From%3C(Any,+usize)%3E-for-Column"],[736,"impl-From%3CColumn%3CAny%3E%3E-for-Column"],[737,"impl-From%3C(S,+Column,+i32)%3E-for-VirtualCell"],[738,"impl-From%3CVirtualCell%3E-for-VirtualCell"],[740,"impl-From%3C(Column,+i32)%3E-for-VirtualCell"],[745,"impl-From%3C(usize,+%26str,+HashMap%3CColumn,+String%3E)%3E-for-Region"],[746,"impl-From%3C(usize,+String)%3E-for-Region"],[747,"impl-From%3C(usize,+String,+HashMap%3CColumn,+String%3E)%3E-for-Region"],[748,"impl-From%3C(usize,+%26str)%3E-for-Region"],[861,"impl-Add%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[862,"impl-Add%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[863,"impl-Add%3CF%3E-for-%26Assigned%3CF%3E"],[864,"impl-Add-for-Assigned%3CF%3E"],[865,"impl-Add%3CF%3E-for-Assigned%3CF%3E"],[866,"impl-Add%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[868,"impl-AddAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[869,"impl-AddAssign-for-Assigned%3CF%3E"],[1147,"impl-Debug-for-Error"],[1148,"impl-Display-for-Error"],[1149,"impl-Display-for-TableError"],[1150,"impl-Debug-for-TableError"],[1156,"impl-From%3C(F,+F)%3E-for-Assigned%3CF%3E"],[1157,"impl-From%3CF%3E-for-Assigned%3CF%3E"],[1158,"impl-From%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1159,"impl-From%3C%26F%3E-for-Assigned%3CF%3E"],[1161,"impl-From%3CColumn%3CFixed%3E%3E-for-Column%3CAny%3E"],[1162,"impl-From%3CColumn%3CAdvice%3E%3E-for-Column%3CAny%3E"],[1163,"impl-From%3CColumn%3CInstance%3E%3E-for-Column%3CAny%3E"],[1171,"impl-From%3CAdvice%3E-for-Any"],[1172,"impl-From%3CFixed%3E-for-Any"],[1174,"impl-From%3CInstance%3E-for-Any"],[1185,"impl-From%3CExpression%3CF%3E%3E-for-Constraint%3CF%3E"],[1186,"impl-From%3C(S,+Expression%3CF%3E)%3E-for-Constraint%3CF%3E"],[1291,"impl-Mul%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1292,"impl-Mul-for-Assigned%3CF%3E"],[1293,"impl-Mul%3CF%3E-for-%26Assigned%3CF%3E"],[1294,"impl-Mul%3CF%3E-for-Assigned%3CF%3E"],[1295,"impl-Mul-for-Expression%3CF%3E"],[1296,"impl-Mul%3CF%3E-for-Expression%3CF%3E"],[1297,"impl-MulAssign-for-Assigned%3CF%3E"],[1298,"impl-MulAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1300,"impl-Neg-for-Assigned%3CF%3E"],[1301,"impl-Neg-for-%26Assigned%3CF%3E"],[1357,"impl-Sub-for-Assigned%3CF%3E"],[1358,"impl-Sub%3CF%3E-for-%26Assigned%3CF%3E"],[1359,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1360,"impl-Sub%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1361,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1362,"impl-Sub%3CF%3E-for-Assigned%3CF%3E"],[1364,"impl-SubAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1365,"impl-SubAssign-for-Assigned%3CF%3E"],[1394,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CInstance%3E"],[1395,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CAdvice%3E"],[1396,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CFixed%3E"],[1701,"impl-Index%3Cusize%3E-for-Polynomial%3CF,+B%3E"],[1702,"impl-Index%3CRangeFrom%3Cusize%3E%3E-for-Polynomial%3CF,+B%3E"],[1703,"impl-Index%3CRangeFull%3E-for-Polynomial%3CF,+B%3E"],[1704,"impl-IndexMut%3CRangeFull%3E-for-Polynomial%3CF,+B%3E"],[1705,"impl-IndexMut%3Cusize%3E-for-Polynomial%3CF,+B%3E"],[1706,"impl-IndexMut%3CRangeFrom%3Cusize%3E%3E-for-Polynomial%3CF,+B%3E"],[1748,"impl-Sub%3C%26Polynomial%3CF,+B%3E%3E-for-Polynomial%3CF,+B%3E"],[1749,"impl-Sub%3CF%3E-for-%26Polynomial%3CF,+B%3E"],[1817,"impl-AddAssign-for-Blind%3CF%3E"],[1818,"impl-AddAssign%3CF%3E-for-Blind%3CF%3E"],[1845,"impl-MulAssign%3CF%3E-for-Blind%3CF%3E"],[1846,"impl-MulAssign-for-Blind%3CF%3E"],[1918,"impl-MSMIPA%3C\'a,+C%3E"],[1919,"impl-MSM%3CC%3E-for-MSMIPA%3C\'a,+C%3E"],[2199,"impl-Prover%3C\'params,+KZGCommitmentScheme%3CE%3E%3E-for-ProverSHPLONK%3C\'params,+E%3E"],[2200,"impl-ProverSHPLONK%3C\'a,+E%3E"],[2258,"impl-AccumulatorStrategy%3C\'params,+E%3E"],[2259,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-AccumulatorStrategy%3C\'params,+E%3E"],[2260,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-SingleStrategy%3C\'params,+E%3E"],[2261,"impl-SingleStrategy%3C\'params,+E%3E"]]}\ }'); if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; diff --git a/settings.html b/settings.html index 93d78a7efb..e4ed7fc69f 100644 --- a/settings.html +++ b/settings.html @@ -1,4 +1,4 @@ -Settings +Settings -

    Rustdoc settings

    Back
    \ No newline at end of file +

    Rustdoc settings

    Back
    \ No newline at end of file diff --git a/src/halo2/lib.rs.html b/src/halo2/lib.rs.html index c0789d07f0..ace44ec44d 100644 --- a/src/halo2/lib.rs.html +++ b/src/halo2/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source +lib.rs - source +ecc.rs - source +chip.rs - source +add.rs - source +add_incomplete.rs - source +constants.rs - source +mul.rs - source +complete.rs - source +incomplete.rs - source +overflow.rs - source +mul_fixed.rs - source +base_field_elem.rs - source +full_width.rs - source +short.rs - source +witness_point.rs - source +lib.rs - source +poseidon.rs - source +pow5.rs - source +primitives.rs - source +fp.rs - source +fq.rs - source +grain.rs - source +mds.rs - source +p128pow5t3.rs - source +sha256.rs - source +table16.rs - source +compression.rs - source +compression_gates.rs - source +compression_util.rs - source +subregion_digest.rs - source +subregion_initial.rs - source +subregion_main.rs - source +gates.rs - source +message_schedule.rs - source +schedule_gates.rs - source +schedule_util.rs - source +subregion1.rs - source +subregion2.rs - source +subregion3.rs - source +spread_table.rs - source +util.rs - source +sinsemilla.rs - source +chip.rs - source +generator_table.rs - source +hash_to_point.rs - source +merkle.rs - source +chip.rs - source +message.rs - source +primitives.rs - source +addition.rs - source +sinsemilla_s.rs - source +utilities.rs - source +cond_swap.rs - source +decompose_running_sum.rs - source +lookup_range_check.rs - source +arithmetic.rs - source +circuit.rs - source +floor_planner.rs - source +single_pass.rs - source +v1.rs - source +strategy.rs - source +layouter.rs - source +table_layouter.rs - source +value.rs - source +dev.rs - source +cost.rs - source +failure.rs - source +emitter.rs - source +gates.rs - source +graph.rs - source +layout.rs - source +metadata.rs - source +tfp.rs - source +util.rs - source +helpers.rs - source +lib.rs - source +multicore.rs - source +plonk.rs - source +assigned.rs - source +circuit.rs - source +compress_selectors.rs - source +error.rs - source +evaluation.rs - source +keygen.rs - source +lookup.rs - source +prover.rs - source +verifier.rs - source +permutation.rs - source +keygen.rs - source +prover.rs - source +verifier.rs - source +prover.rs - source +shuffle.rs - source +prover.rs - source +verifier.rs - source +vanishing.rs - source +prover.rs - source +verifier.rs - source +verifier.rs - source +batch.rs - source +poly.rs - source +commitment.rs - source +domain.rs - source +commitment.rs - source +prover.rs - source +verifier.rs - source +mod.rs - source +msm.rs - source +multiopen.rs - source +prover.rs - source +verifier.rs - source +strategy.rs - source +commitment.rs - source +mod.rs - source +msm.rs - source +multiopen.rs - source +gwc.rs - source +prover.rs - source +verifier.rs - source +shplonk.rs - source +prover.rs - source +verifier.rs - source +strategy.rs - source +query.rs - source +strategy.rs - source +transcript.rs - source