diff --git a/dev/bench/data.js b/dev/bench/data.js deleted file mode 100644 index e97919ee..00000000 --- a/dev/bench/data.js +++ /dev/null @@ -1,896 +0,0 @@ -window.BENCHMARK_DATA = { - "lastUpdate": 1665228352588, - "repoUrl": "https://github.com/zcash/halo2", - "entries": { - "halo2 Benchmark": [ - { - "commit": { - "author": { - "email": "daira@jacaranda.org", - "name": "Daira Hopwood", - "username": "daira" - }, - "committer": { - "email": "noreply@github.com", - "name": "GitHub", - "username": "web-flow" - }, - "distinct": true, - "id": "0f7299c1165e98d1e26c73fabd6ab9429b64559e", - "message": "Merge pull request #625 from zcash/region-query-instance\n\nhalo2_proofs: Introduce `RegionLayouter::instance_value` method.", - "timestamp": "2022-10-08T11:18:46+01:00", - "tree_id": "ffca7af06a8932ce4d740e7dd1d4ab39191d6433", - "url": "https://github.com/zcash/halo2/commit/0f7299c1165e98d1e26c73fabd6ab9429b64559e" - }, - "date": 1665228149810, - "tool": "cargo", - "benches": [ - { - "name": "WIDTH = 3, RATE = 2-prover", - "value": 66851455, - "range": "± 5273851", - "unit": "ns/iter" - }, - { - "name": "WIDTH = 3, RATE = 2-verifier", - "value": 3455273, - "range": "± 159856", - "unit": "ns/iter" - }, - { - "name": "WIDTH = 9, RATE = 8-prover", - "value": 141345039, - "range": "± 3824245", - "unit": "ns/iter" - }, - { - "name": "WIDTH = 9, RATE = 8-verifier", - "value": 4200603, - "range": "± 86623", - "unit": "ns/iter" - }, - { - "name": "WIDTH = 12, RATE = 11-prover", - "value": 199229396, - "range": "± 1348321", - "unit": "ns/iter" - }, - { - "name": "WIDTH = 12, RATE = 11-verifier", - "value": 4641767, - "range": "± 97497", - "unit": "ns/iter" - }, - { - "name": "Poseidon/2-to-1", - "value": 47886, - "range": "± 80", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/hash-to-point/510", - "value": 164197, - "range": "± 115", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/hash/510", - "value": 179384, - "range": "± 123", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/commit/510", - "value": 294480, - "range": "± 167", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/short-commit/510", - "value": 294444, - "range": "± 241", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/hash-to-point/520", - "value": 167639, - "range": "± 158", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/hash/520", - "value": 182826, - "range": "± 132", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/commit/520", - "value": 297825, - "range": "± 195", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/short-commit/520", - "value": 297742, - "range": "± 149", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/hash-to-point/1086", - "value": 350801, - "range": "± 326", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/hash/1086", - "value": 365957, - "range": "± 184", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/commit/1086", - "value": 481037, - "range": "± 416", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/short-commit/1086", - "value": 481320, - "range": "± 1380", - "unit": "ns/iter" - }, - { - "name": "double-and-add", - "value": 3490297, - "range": "± 2628", - "unit": "ns/iter" - }, - { - "name": "dev-lookup/14", - "value": 6065578, - "range": "± 5044", - "unit": "ns/iter" - }, - { - "name": "dev-lookup/15", - "value": 10435799, - "range": "± 47318", - "unit": "ns/iter" - }, - { - "name": "dev-lookup/16", - "value": 22807227, - "range": "± 93121", - "unit": "ns/iter" - }, - { - "name": "dev-lookup/17", - "value": 42893270, - "range": "± 84799", - "unit": "ns/iter" - }, - { - "name": "dev-lookup/18", - "value": 81484933, - "range": "± 163450", - "unit": "ns/iter" - }, - { - "name": "fft/k/3", - "value": 7222, - "range": "± 248", - "unit": "ns/iter" - }, - { - "name": "fft/k/4", - "value": 9383, - "range": "± 819", - "unit": "ns/iter" - }, - { - "name": "fft/k/5", - "value": 15472, - "range": "± 489", - "unit": "ns/iter" - }, - { - "name": "fft/k/6", - "value": 20661, - "range": "± 388", - "unit": "ns/iter" - }, - { - "name": "fft/k/7", - "value": 29336, - "range": "± 334", - "unit": "ns/iter" - }, - { - "name": "fft/k/8", - "value": 49379, - "range": "± 1474", - "unit": "ns/iter" - }, - { - "name": "fft/k/9", - "value": 102610, - "range": "± 11605", - "unit": "ns/iter" - }, - { - "name": "fft/k/10", - "value": 199079, - "range": "± 13112", - "unit": "ns/iter" - }, - { - "name": "fft/k/11", - "value": 405705, - "range": "± 8447", - "unit": "ns/iter" - }, - { - "name": "fft/k/12", - "value": 850787, - "range": "± 15564", - "unit": "ns/iter" - }, - { - "name": "fft/k/13", - "value": 1791245, - "range": "± 19209", - "unit": "ns/iter" - }, - { - "name": "fft/k/14", - "value": 3791903, - "range": "± 59088", - "unit": "ns/iter" - }, - { - "name": "fft/k/15", - "value": 8093230, - "range": "± 178791", - "unit": "ns/iter" - }, - { - "name": "fft/k/16", - "value": 17460013, - "range": "± 173640", - "unit": "ns/iter" - }, - { - "name": "fft/k/17", - "value": 37328118, - "range": "± 323516", - "unit": "ns/iter" - }, - { - "name": "fft/k/18", - "value": 83851515, - "range": "± 1834068", - "unit": "ns/iter" - }, - { - "name": "hash-to-curve/Pallas", - "value": 34790, - "range": "± 24", - "unit": "ns/iter" - }, - { - "name": "hash-to-curve/Vesta", - "value": 34921, - "range": "± 663", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/8", - "value": 176869513, - "range": "± 11078434", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/9", - "value": 380813676, - "range": "± 5419340", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/10", - "value": 821364769, - "range": "± 1741821", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/11", - "value": 1769159936, - "range": "± 7876361", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/12", - "value": 3789216070, - "range": "± 12359219", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/13", - "value": 8088032208, - "range": "± 9463647", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/14", - "value": 17251322551, - "range": "± 24536559", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/15", - "value": 36597606448, - "range": "± 14843837", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/16", - "value": 77392349534, - "range": "± 37462202", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/8", - "value": 109560367, - "range": "± 689728", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/9", - "value": 189074552, - "range": "± 1565105", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/10", - "value": 336674530, - "range": "± 2669747", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/11", - "value": 608418262, - "range": "± 1866554", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/12", - "value": 1124799123, - "range": "± 2927586", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/13", - "value": 2134871869, - "range": "± 61280969", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/14", - "value": 4058409271, - "range": "± 11757718", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/15", - "value": 7821020935, - "range": "± 16052633", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/16", - "value": 15078783707, - "range": "± 41702199", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/8", - "value": 5862172, - "range": "± 88234", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/9", - "value": 9120501, - "range": "± 197195", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/10", - "value": 14885881, - "range": "± 775073", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/11", - "value": 24862069, - "range": "± 1135111", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/12", - "value": 42726037, - "range": "± 333675", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/13", - "value": 76454241, - "range": "± 2962343", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/14", - "value": 137258212, - "range": "± 600079", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/15", - "value": 252683207, - "range": "± 9369649", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/16", - "value": 458904051, - "range": "± 3382060", - "unit": "ns/iter" - } - ] - }, - { - "commit": { - "author": { - "email": "daira@jacaranda.org", - "name": "Daira Hopwood", - "username": "daira" - }, - "committer": { - "email": "noreply@github.com", - "name": "GitHub", - "username": "web-flow" - }, - "distinct": true, - "id": "de76fd48fc795c41daa6ab2233b95d1459b72c9c", - "message": "Merge pull request #622 from zcash/patch-mockprover-query_instance\n\n[MockProver] Check for instance values in gate queries.", - "timestamp": "2022-10-08T11:15:06+01:00", - "tree_id": "9c8748762e3e9f090c03cdb29afb92ab67636780", - "url": "https://github.com/zcash/halo2/commit/de76fd48fc795c41daa6ab2233b95d1459b72c9c" - }, - "date": 1665228344002, - "tool": "cargo", - "benches": [ - { - "name": "WIDTH = 3, RATE = 2-prover", - "value": 75841023, - "range": "± 3816837", - "unit": "ns/iter" - }, - { - "name": "WIDTH = 3, RATE = 2-verifier", - "value": 3746880, - "range": "± 249853", - "unit": "ns/iter" - }, - { - "name": "WIDTH = 9, RATE = 8-prover", - "value": 162875279, - "range": "± 8032335", - "unit": "ns/iter" - }, - { - "name": "WIDTH = 9, RATE = 8-verifier", - "value": 4724741, - "range": "± 335101", - "unit": "ns/iter" - }, - { - "name": "WIDTH = 12, RATE = 11-prover", - "value": 225218194, - "range": "± 7032582", - "unit": "ns/iter" - }, - { - "name": "WIDTH = 12, RATE = 11-verifier", - "value": 5176644, - "range": "± 329392", - "unit": "ns/iter" - }, - { - "name": "Poseidon/2-to-1", - "value": 50511, - "range": "± 2043", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/hash-to-point/510", - "value": 178090, - "range": "± 7585", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/hash/510", - "value": 191750, - "range": "± 15800", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/commit/510", - "value": 313286, - "range": "± 7933", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/short-commit/510", - "value": 313892, - "range": "± 10323", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/hash-to-point/520", - "value": 179805, - "range": "± 8160", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/hash/520", - "value": 195581, - "range": "± 5990", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/commit/520", - "value": 317389, - "range": "± 13019", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/short-commit/520", - "value": 317621, - "range": "± 13964", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/hash-to-point/1086", - "value": 382653, - "range": "± 27597", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/hash/1086", - "value": 389219, - "range": "± 12808", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/commit/1086", - "value": 517229, - "range": "± 23918", - "unit": "ns/iter" - }, - { - "name": "Sinsemilla/short-commit/1086", - "value": 511972, - "range": "± 27389", - "unit": "ns/iter" - }, - { - "name": "double-and-add", - "value": 3836082, - "range": "± 130980", - "unit": "ns/iter" - }, - { - "name": "dev-lookup/14", - "value": 7618821, - "range": "± 56567", - "unit": "ns/iter" - }, - { - "name": "dev-lookup/15", - "value": 13675453, - "range": "± 113397", - "unit": "ns/iter" - }, - { - "name": "dev-lookup/16", - "value": 30567593, - "range": "± 620484", - "unit": "ns/iter" - }, - { - "name": "dev-lookup/17", - "value": 57014952, - "range": "± 625617", - "unit": "ns/iter" - }, - { - "name": "dev-lookup/18", - "value": 108419669, - "range": "± 1421419", - "unit": "ns/iter" - }, - { - "name": "fft/k/3", - "value": 8948, - "range": "± 681", - "unit": "ns/iter" - }, - { - "name": "fft/k/4", - "value": 10513, - "range": "± 688", - "unit": "ns/iter" - }, - { - "name": "fft/k/5", - "value": 19422, - "range": "± 1146", - "unit": "ns/iter" - }, - { - "name": "fft/k/6", - "value": 23387, - "range": "± 1317", - "unit": "ns/iter" - }, - { - "name": "fft/k/7", - "value": 33999, - "range": "± 1432", - "unit": "ns/iter" - }, - { - "name": "fft/k/8", - "value": 58515, - "range": "± 4845", - "unit": "ns/iter" - }, - { - "name": "fft/k/9", - "value": 121503, - "range": "± 14082", - "unit": "ns/iter" - }, - { - "name": "fft/k/10", - "value": 242739, - "range": "± 28889", - "unit": "ns/iter" - }, - { - "name": "fft/k/11", - "value": 492781, - "range": "± 39824", - "unit": "ns/iter" - }, - { - "name": "fft/k/12", - "value": 1030076, - "range": "± 264401", - "unit": "ns/iter" - }, - { - "name": "fft/k/13", - "value": 2273191, - "range": "± 141140", - "unit": "ns/iter" - }, - { - "name": "fft/k/14", - "value": 4915348, - "range": "± 214414", - "unit": "ns/iter" - }, - { - "name": "fft/k/15", - "value": 11021687, - "range": "± 1555732", - "unit": "ns/iter" - }, - { - "name": "fft/k/16", - "value": 22956623, - "range": "± 1054070", - "unit": "ns/iter" - }, - { - "name": "fft/k/17", - "value": 49576155, - "range": "± 1864594", - "unit": "ns/iter" - }, - { - "name": "fft/k/18", - "value": 111415378, - "range": "± 4306195", - "unit": "ns/iter" - }, - { - "name": "hash-to-curve/Pallas", - "value": 34934, - "range": "± 1421", - "unit": "ns/iter" - }, - { - "name": "hash-to-curve/Vesta", - "value": 34895, - "range": "± 1659", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/8", - "value": 200402007, - "range": "± 14715380", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/9", - "value": 413438663, - "range": "± 5980796", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/10", - "value": 900705127, - "range": "± 70208622", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/11", - "value": 1936976295, - "range": "± 18781697", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/12", - "value": 4143991480, - "range": "± 48994313", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/13", - "value": 8967053402, - "range": "± 171749272", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/14", - "value": 18938307634, - "range": "± 260757718", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/15", - "value": 40157997237, - "range": "± 243289317", - "unit": "ns/iter" - }, - { - "name": "plonk-keygen/16", - "value": 84685244277, - "range": "± 356799722", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/8", - "value": 123566944, - "range": "± 3279620", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/9", - "value": 215615832, - "range": "± 32629493", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/10", - "value": 376195313, - "range": "± 13646739", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/11", - "value": 681473565, - "range": "± 14527875", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/12", - "value": 1255315548, - "range": "± 16684674", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/13", - "value": 2388595029, - "range": "± 27693238", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/14", - "value": 4591928785, - "range": "± 86933169", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/15", - "value": 8922690665, - "range": "± 60495506", - "unit": "ns/iter" - }, - { - "name": "plonk-prover/16", - "value": 17172514331, - "range": "± 109130480", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/8", - "value": 6493762, - "range": "± 390270", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/9", - "value": 10120399, - "range": "± 713158", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/10", - "value": 16767211, - "range": "± 928785", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/11", - "value": 27510751, - "range": "± 1112823", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/12", - "value": 47384368, - "range": "± 2229134", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/13", - "value": 84064888, - "range": "± 3623572", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/14", - "value": 152175056, - "range": "± 5082674", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/15", - "value": 282262992, - "range": "± 7947666", - "unit": "ns/iter" - }, - { - "name": "plonk-verifier/16", - "value": 523500359, - "range": "± 16970620", - "unit": "ns/iter" - } - ] - } - ] - } -} \ No newline at end of file diff --git a/dev/bench/index.html b/dev/bench/index.html deleted file mode 100644 index 06c25907..00000000 --- a/dev/bench/index.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - Benchmarks - - - - -
- - - - - - - diff --git a/rustdoc/latest/halo2_proofs/dev/cost/index.html b/rustdoc/latest/halo2_proofs/dev/cost/index.html index 55c7c7de..0345f18e 100644 --- a/rustdoc/latest/halo2_proofs/dev/cost/index.html +++ b/rustdoc/latest/halo2_proofs/dev/cost/index.html @@ -13,5 +13,5 @@ }); }); -
Expand description

Developer tools for investigating the cost of a circuit.

+
Expand description

Developer tools for investigating the cost of a circuit.

Structs

Measures a circuit to determine its costs, and explain what contributes to them.
The marginal size of a Halo 2 proof, broken down into its contributing factors.
The size of a Halo 2 proof, broken down into its contributing factors.
\ No newline at end of file diff --git a/rustdoc/latest/halo2_proofs/dev/cost/struct.CircuitCost.html b/rustdoc/latest/halo2_proofs/dev/cost/struct.CircuitCost.html index 3491ed3e..93d18920 100644 --- a/rustdoc/latest/halo2_proofs/dev/cost/struct.CircuitCost.html +++ b/rustdoc/latest/halo2_proofs/dev/cost/struct.CircuitCost.html @@ -13,12 +13,12 @@ }); }); -
pub struct CircuitCost<G: PrimeGroup, ConcreteCircuit: Circuit<G::Scalar>> { /* private fields */ }
Expand description

Measures a circuit to determine its costs, and explain what contributes to them.

-

Implementations

Measures a circuit with parameter constant k.

+
pub struct CircuitCost<G: PrimeGroup, ConcreteCircuit: Circuit<G::Scalar>> { /* private fields */ }
Expand description

Measures a circuit to determine its costs, and explain what contributes to them.

+

Implementations

Measures a circuit with parameter constant k.

Panics if k is not large enough for the circuit.

-

Returns the marginal proof size per instance of this circuit.

-

Returns the proof size for the given number of instances of this circuit.

-

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Converts self into T using Into<T>. Read more
Causes self to use its Binary implementation when Debug-formatted. Read more
Causes self to use its Display implementation when +

Returns the marginal proof size per instance of this circuit.

+

Returns the proof size for the given number of instances of this circuit.

+

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Converts self into T using Into<T>. Read more
Causes self to use its Binary implementation when Debug-formatted. Read more
Causes self to use its Display implementation when Debug-formatted. Read more
Causes self to use its LowerExp implementation when Debug-formatted. Read more
Causes self to use its LowerHex implementation when Debug-formatted. Read more
Causes self to use its Octal implementation when Debug-formatted. Read more
Causes self to use its Pointer implementation when diff --git a/rustdoc/latest/halo2_proofs/dev/cost/struct.MarginalProofSize.html b/rustdoc/latest/halo2_proofs/dev/cost/struct.MarginalProofSize.html index 9f74537c..42237664 100644 --- a/rustdoc/latest/halo2_proofs/dev/cost/struct.MarginalProofSize.html +++ b/rustdoc/latest/halo2_proofs/dev/cost/struct.MarginalProofSize.html @@ -13,8 +13,8 @@ }); }); -
pub struct MarginalProofSize<G: PrimeGroup> { /* private fields */ }
Expand description

The marginal size of a Halo 2 proof, broken down into its contributing factors.

-

Trait Implementations

Formats the value using the given formatter. Read more
Converts to this type from the input type.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Converts self into T using Into<T>. Read more
Causes self to use its Binary implementation when Debug-formatted. Read more
Causes self to use its Display implementation when +
pub struct MarginalProofSize<G: PrimeGroup> { /* private fields */ }
Expand description

The marginal size of a Halo 2 proof, broken down into its contributing factors.

+

Trait Implementations

Formats the value using the given formatter. Read more
Converts to this type from the input type.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Converts self into T using Into<T>. Read more
Causes self to use its Binary implementation when Debug-formatted. Read more
Causes self to use its Display implementation when Debug-formatted. Read more
Causes self to use its LowerExp implementation when Debug-formatted. Read more
Causes self to use its LowerHex implementation when Debug-formatted. Read more
Causes self to use its Octal implementation when Debug-formatted. Read more
Causes self to use its Pointer implementation when diff --git a/rustdoc/latest/halo2_proofs/dev/cost/struct.ProofSize.html b/rustdoc/latest/halo2_proofs/dev/cost/struct.ProofSize.html index 06e05f71..cfbfc2d6 100644 --- a/rustdoc/latest/halo2_proofs/dev/cost/struct.ProofSize.html +++ b/rustdoc/latest/halo2_proofs/dev/cost/struct.ProofSize.html @@ -13,8 +13,8 @@ }); }); -
pub struct ProofSize<G: PrimeGroup> { /* private fields */ }
Expand description

The size of a Halo 2 proof, broken down into its contributing factors.

-

Trait Implementations

Formats the value using the given formatter. Read more
Converts to this type from the input type.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Converts self into T using Into<T>. Read more
Causes self to use its Binary implementation when Debug-formatted. Read more
Causes self to use its Display implementation when +
pub struct ProofSize<G: PrimeGroup> { /* private fields */ }
Expand description

The size of a Halo 2 proof, broken down into its contributing factors.

+

Trait Implementations

Formats the value using the given formatter. Read more
Converts to this type from the input type.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Converts self into T using Into<T>. Read more
Causes self to use its Binary implementation when Debug-formatted. Read more
Causes self to use its Display implementation when Debug-formatted. Read more
Causes self to use its LowerExp implementation when Debug-formatted. Read more
Causes self to use its LowerHex implementation when Debug-formatted. Read more
Causes self to use its Octal implementation when Debug-formatted. Read more
Causes self to use its Pointer implementation when diff --git a/rustdoc/latest/halo2_proofs/dev/struct.CircuitLayout.html b/rustdoc/latest/halo2_proofs/dev/struct.CircuitLayout.html index 18d66a10..61acc6ce 100644 --- a/rustdoc/latest/halo2_proofs/dev/struct.CircuitLayout.html +++ b/rustdoc/latest/halo2_proofs/dev/struct.CircuitLayout.html @@ -13,7 +13,7 @@ }); }); -
pub struct CircuitLayout { /* private fields */ }
Expand description

Graphical renderer for circuit layouts.

+
pub struct CircuitLayout { /* private fields */ }
Expand description

Graphical renderer for circuit layouts.

Cells that have been assigned to by the circuit will be shaded. If any cells are assigned to more than once (which is usually a mistake), they will be shaded darker than the surrounding cells.

@@ -31,16 +31,16 @@ drawing_area.fill(&WHITE).unwrap(); let circuit = MyCircuit::default(); let k = 5; // Suitable size for MyCircuit CircuitLayout::default().render(k, &circuit, &drawing_area).unwrap();
-

Implementations

Sets the visibility of region labels.

+

Implementations

Sets the visibility of region labels.

The default is to show labels.

-

Marks cells involved in equality constraints, in red.

+

Marks cells involved in equality constraints, in red.

The default is to not mark these cells.

-

Draws red lines between equality-constrained cells.

+

Draws red lines between equality-constrained cells.

The default is to not show these, as they can get very messy.

-

Sets the view width for this layout, as a number of columns.

-

Sets the view height for this layout, as a number of rows.

-

Renders the given circuit on the given drawing area.

-

Trait Implementations

Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Converts self into T using Into<T>. Read more
Causes self to use its Binary implementation when Debug-formatted. Read more
Causes self to use its Display implementation when +

Sets the view width for this layout, as a number of columns.

+

Sets the view height for this layout, as a number of rows.

+

Renders the given circuit on the given drawing area.

+

Trait Implementations

Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Converts self into T using Into<T>. Read more
Causes self to use its Binary implementation when Debug-formatted. Read more
Causes self to use its Display implementation when Debug-formatted. Read more
Causes self to use its LowerExp implementation when Debug-formatted. Read more
Causes self to use its LowerHex implementation when Debug-formatted. Read more
Causes self to use its Octal implementation when Debug-formatted. Read more
Causes self to use its Pointer implementation when diff --git a/rustdoc/latest/search-index.js b/rustdoc/latest/search-index.js index 320c75a9..588c7327 100644 --- a/rustdoc/latest/search-index.js +++ b/rustdoc/latest/search-index.js @@ -1,7 +1,7 @@ var searchIndex = JSON.parse('{\ "halo2":{"doc":"halo2","t":[],"n":[],"q":[],"d":[],"i":[],"f":[],"p":[]},\ "halo2_gadgets":{"doc":"This crate provides various common gadgets and chips for …","t":[0,0,0,0,0,16,8,8,3,3,3,8,16,16,3,16,3,16,3,16,3,16,3,16,16,3,16,10,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,10,10,10,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,4,13,3,3,3,3,3,8,8,16,4,13,18,3,4,4,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,12,17,17,17,17,5,5,5,5,3,13,4,13,8,8,3,3,3,3,3,16,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,10,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,3,3,8,3,3,16,8,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,10,11,10,11,10,11,11,10,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,17,3,16,3,3,8,16,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,16,3,8,16,16,3,8,16,3,16,3,16,16,10,16,8,16,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,0,11,11,0,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,8,3,11,11,11,0,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,3,3,17,17,11,11,17,11,17,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,3,8,8,16,11,5,5,11,11,10,11,11,0,0,5,11,11,11,11,11,5,11,11,11,5,11,0,11,5,5,11,11,11,11,11,10,10,11,11,11,3,3,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"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","0","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","0","0","Absorbing","ConstantLength","Domain","Hash","P128Pow5T3","Padding","Spec","SpongeMode","Squeezing","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","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","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","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","0","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":["halo2_gadgets","","","","","halo2_gadgets::ecc","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::ecc::chip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::ecc::chip::ScalarVar","halo2_gadgets::ecc::chip::constants","","","","","","","","halo2_gadgets::poseidon","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::poseidon::PaddedWord","","halo2_gadgets::poseidon::primitives","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::sha256","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::sinsemilla","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::sinsemilla::chip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::sinsemilla::merkle","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::sinsemilla::merkle::chip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::sinsemilla::primitives","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::utilities","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::utilities::cond_swap","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::utilities::decompose_running_sum","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_gadgets::utilities::lookup_range_check","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"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.","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.","","","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,25,0,0,0,0,0,0,4,25,0,4,0,4,0,4,0,4,0,4,25,0,4,4,5,7,4,5,16,19,20,5,7,15,11,12,13,16,19,20,5,7,15,11,12,13,0,5,7,11,12,13,5,7,11,12,13,4,5,7,16,19,20,5,7,15,11,12,13,16,19,20,5,7,15,11,12,13,16,19,20,5,7,15,11,12,13,4,5,7,16,19,20,5,7,15,11,12,13,16,19,20,5,7,7,15,11,12,13,16,5,7,15,11,12,13,16,19,20,5,7,15,11,12,13,5,7,15,16,19,20,5,7,15,11,12,13,4,5,11,12,13,4,4,4,16,19,20,5,7,4,21,5,7,11,12,13,16,19,20,5,7,15,11,12,13,16,19,20,5,7,15,11,12,13,16,19,20,5,7,15,11,12,13,16,19,20,5,7,15,11,12,13,4,4,4,4,0,32,0,0,0,0,0,0,0,108,0,32,109,0,0,0,26,26,29,27,28,29,38,39,40,26,30,31,32,27,28,29,38,39,40,26,30,31,32,27,28,29,26,30,31,32,27,28,29,26,30,31,32,26,26,0,26,26,27,28,29,38,39,40,26,30,31,32,27,28,29,38,39,40,26,30,31,32,27,28,29,38,39,40,26,30,31,32,29,26,26,27,28,29,38,39,40,26,30,31,32,27,27,28,29,38,39,40,26,30,31,32,108,27,28,29,38,39,40,26,30,31,32,27,28,29,38,39,40,26,30,31,32,108,26,29,26,26,26,26,27,28,26,26,27,28,29,26,30,31,32,27,28,29,38,39,40,26,30,31,32,27,28,29,38,39,40,26,30,31,32,27,28,29,38,39,40,26,30,31,32,108,27,28,29,38,39,40,26,30,31,32,26,26,26,26,27,28,27,28,108,110,0,0,0,0,0,0,0,0,0,50,0,50,0,0,0,0,0,0,0,61,52,49,53,56,53,54,50,62,52,64,56,53,54,50,62,52,64,54,56,54,50,56,54,50,53,53,53,56,53,54,50,62,52,64,56,53,54,50,62,52,64,56,53,54,50,62,52,64,52,56,53,54,50,62,52,64,56,53,54,54,50,62,52,64,62,49,53,64,56,53,54,50,62,52,64,64,49,53,62,56,53,54,50,62,52,64,53,52,61,53,0,52,56,54,50,56,53,54,50,62,52,64,56,53,54,50,62,52,64,56,53,54,50,62,52,64,54,56,53,54,50,62,52,64,111,112,0,0,0,0,0,48,0,0,0,66,67,51,60,65,66,67,51,60,65,65,65,47,67,67,66,67,51,60,65,66,67,51,60,65,66,67,51,60,65,66,67,51,60,65,66,67,51,60,65,47,67,67,66,66,66,67,51,60,65,48,65,66,67,51,60,65,48,65,48,65,47,67,67,47,67,67,47,67,67,65,66,67,51,60,65,66,67,51,60,65,66,67,51,60,65,66,67,51,60,65,70,0,0,73,0,0,0,73,0,0,70,71,72,74,75,70,71,72,74,75,70,71,72,70,71,72,73,72,72,72,72,70,70,71,72,74,75,70,71,72,74,75,73,72,75,70,71,72,74,75,75,70,71,72,74,75,70,71,72,74,75,70,71,72,74,75,73,72,73,72,70,71,72,74,75,72,72,75,70,71,72,70,71,72,74,75,70,71,72,74,75,70,71,72,74,75,75,70,71,72,74,75,113,0,0,113,113,0,0,113,0,113,0,113,113,114,113,0,113,76,77,79,78,76,77,79,78,0,76,77,76,77,78,76,77,79,78,76,77,79,78,76,77,79,78,113,76,77,79,78,76,77,79,78,77,76,77,79,115,113,79,76,77,79,78,77,76,77,79,78,0,79,78,0,115,78,76,77,76,77,79,78,76,77,79,78,76,77,79,78,76,77,79,78,113,0,0,81,82,81,82,81,82,81,82,82,82,82,81,82,81,82,81,82,81,82,82,81,82,81,82,82,81,82,81,82,82,82,81,81,82,81,82,81,82,81,82,81,82,82,0,0,0,84,84,84,0,84,84,84,84,84,84,84,84,116,84,84,84,84,84,84,84,0,0,86,87,86,87,86,87,86,87,87,87,87,86,87,86,87,86,87,86,87,87,86,87,86,87,87,87,86,87,86,87,87,87,86,87,86,87,86,87,86,87,86,87,87,0,0,0,0,0,88,90,0,90,0,0,88,90,88,90,88,88,90,88,90,88,90,88,90,88,90,88,90,88,88,88,90,88,90,88,90,90,88,88,90,88,90,88,90,88,90,0,0,0,0,117,96,0,0,96,96,118,96,96,0,0,0,96,96,96,96,96,0,96,96,96,0,117,0,96,0,0,96,96,96,96,96,98,118,96,96,96,0,0,0,100,101,100,101,100,101,100,101,100,100,100,100,101,100,101,100,101,101,100,101,100,101,100,101,100,101,100,119,100,100,101,100,101,100,101,100,101,100,101,0,0,105,102,105,102,102,102,102,102,105,105,102,105,102,105,102,102,105,102,105,102,105,102,105,102,102,105,102,105,102,105,102,105,102,102,0,0,107,35,107,35,35,35,35,35,35,107,107,35,107,35,107,35,35,107,35,107,35,107,35,107,35,35,107,35,107,35,107,35,107,35,35,35],"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,[[],[[2,[1]]]],[[[5,[3,[4,[3]]]],6],[[2,[[7,[3,[4,[3]]]],1]]]],[[[7,[3,[0,[[4,[3]],8,9,10]]]],6],[[2,[[7,[3,[0,[[4,[3]],8,9,10]]]],1]]]],[[],[[2,[1]]]],[[[5,[3,[4,[3]]]],6,[5,[3,[4,[3]]]]],[[2,[[5,[3,[4,[3]]]],1]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[[5,[[0,[8,3]],[0,[8,[4,[[0,[8,3]]]]]]]]],[[5,[[0,[8,3]],[0,[8,[4,[[0,[8,3]]]]]]]]]],[[[7,[[0,[8,3]],[0,[8,[4,[[0,[8,3]]]],8,9,10]]]]],[[7,[[0,[8,3]],[0,[8,[4,[[0,[8,3]]]],8,9,10]]]]]],[[[11,[[0,[8,3]],[0,[8,[4,[[0,[8,3]]]]]]]]],[[11,[[0,[8,3]],[0,[8,[4,[[0,[8,3]]]]]]]]]],[[[12,[[0,[8,3]],[0,[8,[4,[[0,[8,3]]]]]]]]],[[12,[[0,[8,3]],[0,[8,[4,[[0,[8,3]]]]]]]]]],[[[13,[[0,[8,3]],[0,[8,[4,[[0,[8,3]]]]]]]]],[[13,[[0,[8,3]],[0,[8,[4,[[0,[8,3]]]]]]]]]],[[]],[[]],[[]],[[]],[[]],[[],[[2,[1]]]],[[[5,[3,[4,[3]]]],6],[[2,[1]]]],[[[7,[3,[0,[[4,[3]],8,9,10]]]],6],[[2,[1]]]],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[[]],[[[5,[3,[4,[3]]]]],[[15,[3,[4,[3]]]]]],[[[7,[3,[0,[[4,[3]],8,9,10]]]]],[[15,[3,[0,[[4,[3]],8,9,10]]]]]],[[[16,[[0,[9,3]],[0,[9,[4,[[0,[9,3]]]]]]]],17],18],[[[19,[[0,[9,3]],[0,[9,[4,[[0,[9,3]]]]]]]],17],18],[[[20,[[0,[9,3]],[0,[9,[4,[[0,[9,3]]]]]]]],17],18],[[[5,[[0,[9,3]],[0,[9,[4,[[0,[9,3]]]]]]]],17],18],[[[7,[[0,[9,3]],[0,[9,[4,[[0,[9,3]]]],8,9,10]]]],17],18],[[[15,[[0,[9,3]],[0,[9,[4,[[0,[9,3]]]]]]]],17],18],[[[11,[[0,[9,3]],[0,[9,[4,[[0,[9,3]]]]]]]],17],18],[[[12,[[0,[9,3]],[0,[9,[4,[[0,[9,3]]]]]]]],17],18],[[[13,[[0,[9,3]],[0,[9,[4,[[0,[9,3]]]]]]]],17],18],[[]],[[]],[[]],[[]],[[[5,[3,[0,[[4,[3]],8,9,10]]]]],[[7,[3,[0,[[4,[3]],8,9,10]]]]]],[[]],[[]],[[]],[[]],[[]],[[[21,[3]],6],[[2,[[16,[3,[21,[3]]]],1]]]],[[[4,[3]]],[[5,[3,[4,[3]]]]]],[[[0,[[4,[3]],8,9,10]]],[[7,[3,[0,[[4,[3]],8,9,10]]]]]],[[[4,[3]]],[[15,[3,[4,[3]]]]]],[[[4,[3]]],[[11,[3,[4,[3]]]]]],[[[4,[3]]],[[12,[3,[4,[3]]]]]],[[[4,[3]]],[[13,[3,[4,[3]]]]]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[[5,[3,[4,[3]]]]]],[[[7,[3,[0,[[4,[3]],8,9,10]]]]]],[[[15,[3,[4,[3]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[2,[1]]]],[[[5,[3,[4,[3]]]],6,[16,[3,[4,[3]]]]],[[2,[1]]]],[[[11,[3,[4,[3]]]],6,[19,[3,[4,[3]]]]],[[2,[1]]]],[[[12,[3,[4,[3]]]],6],[[2,[[7,[3,[4,[3]]]],1]]]],[[[13,[3,[4,[3]]]],6,[20,[3,[4,[3]]]]],[[2,[1]]]],[[],[[2,[1]]]],[[],[[2,[1]]]],[[],[[2,[1]]]],[[[4,[3]],6,22],[[2,[[16,[3,[4,[3]]]],1]]]],[[[4,[3]],6,22],[[2,[[19,[3,[4,[3]]]],1]]]],[[[4,[3]],6],[[2,[[20,[3,[4,[3]]]],1]]]],[[[4,[3]],6,[22,[3]]],[[2,[[5,[3,[4,[3]]]],1]]]],[[[0,[[4,[3]],8,9,10]],6,[22,[3]]],[[2,[[7,[3,[0,[[4,[3]],8,9,10]]]],1]]]],[[],[[2,[1]]]],[[],[[2,[1]]]],[[]],[[]],[[]],[[]],[[]],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[22,[[2,[1]]]],[22,[[2,[1]]]],[22,[[2,[1]]]],[22,[[2,[1]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[26,[[25,[24]]]]],[[2,[1]]]],[[[26,[[25,[24]]]]],[[2,[1]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[27,27],[28,28],[[[29,[[0,[8,[25,[24]]]]]]],[[29,[[0,[8,[25,[24]]]]]]]],[[[26,[[0,[8,[25,[24]]]]]]],[[26,[[0,[8,[25,[24]]]]]]]],[30,30],[31,31],[32,32],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[26,[[25,[24]]]]]],[[33,[35,[34]]]],0,[[[26,[[25,[24]]]]],[[2,[1]]]],[[],[[26,[[25,[24]]]]]],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[[[29,[[0,[36,[25,[24]]]]]],29],37],[[[26,[[0,[36,[25,[24]]]]]],26],37],[[]],[[27,17],18],[[28,17],18],[[[29,[[0,[9,[25,[24]]]]]],17],18],[[38,17],18],[[39,17],18],[[40,17],18],[[[26,[[0,[9,[25,[24]]]]]],17],18],[[30,17],18],[[31,17],18],[[32,17],18],[28,27],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],41],[[[26,[[25,[24]]]]]],0,[[[26,[[25,[24]]]]],[[2,[1]]]],[[[26,[[25,[24]]]]],[[2,[1]]]],[[[26,[[25,[24]]]],[42,[34,34]]],[[2,[1]]]],[[[26,[[25,[24]]]]],[[2,[1]]]],[27,[[22,[24]]]],[28,[[22,[24]]]],[[[26,[[25,[24]]]]],[[2,[1]]]],[[[26,[[25,[24]]]]],[[2,[1]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[],41],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[26,[[25,[24]]]],[22,[24]]],[[2,[1]]]],[[[26,[[25,[24]]]],[22,[24]]],[[2,[1]]]],[[[26,[[25,[24]]]],[22,[43]]],[[2,[1]]]],[[[26,[[25,[24]]]],[22,[43]]],[[2,[1]]]],[27,[[42,[34,34]]]],[28,[[42,[34,34]]]],[27,[[42,[34,34]]]],[28,[[42,[34,34]]]],[[],[[41,[44]]]],0,0,0,0,0,[[3,14],41],[[3,14],[[45,[41]]]],[[3,14]],[[3,14]],0,0,0,0,0,0,0,0,0,0,0,0,[[[52,[46,[49,[46,[47,[46]],[48,[46]]]],[47,[46]],[51,[[50,[46]]]],[48,[46]]]],[6,[46]],[50,[46]]],[[2,[1]]]],[51,[[2,[1]]]],[[[53,[46]],51],[[2,[1]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[54,[46]]],55],[[[56,[[0,[8,46]]]]],[[56,[[0,[8,46]]]]]],[[[54,[[0,[8,46]]]]],[[54,[[0,[8,46]]]]]],[[[50,[[0,[8,57]]]]],[[50,[[0,[8,57]]]]]],[[]],[[]],[[]],[[[53,[46]]]],[[33,[59,[58]]],[[56,[46]]]],[[[56,[46]]],[[53,[46]]]],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[[[52,[46,[49,[46,[47,[46]],[48,[46]]]],[47,[46]],[51,[[50,[46]]]],[48,[46]]]],[6,[46]]],[[2,[[52,[46,[49,[46,[47,[46]],[48,[46]]]],[47,[46]],60,[48,[46]]]],1]]]],[[[56,[[0,[9,46]]]],17],18],[[[53,[[0,[9,46]]]],17],18],[[[54,[[0,[9,46]]]],17],18],[[[50,[[0,[9,57]]]],17],18],[[[62,[[0,[9,46]],[0,[9,[61,[[0,[9,46]],[0,[9,[47,[[0,[9,46]]]]]]]]]],[0,[9,[47,[[0,[9,46]]]]]]]],17],18],[[[52,[[0,[9,46]],[0,[9,[49,[[0,[9,46]],[0,[9,[47,[[0,[9,46]]]]]],[0,[9,[48,[[0,[9,46]]]]]]]]]],[0,[9,[47,[[0,[9,46]]]]]],[0,[9,63]],[0,[9,[48,[[0,[9,46]]]]]]]],17],18],[[[64,[[0,[9,46]],[0,[9,[49,[[0,[9,46]],[0,[9,[47,[[0,[9,46]]]]]],[0,[9,[48,[[0,[9,46]]]]]]]]]],[0,[9,[47,[[0,[9,46]]]]]],[0,[9,[48,[[0,[9,46]]]]]]]],17],18],[[]],[[]],[[]],[[[42,[46,46]]],[[54,[46]]]],[[]],[[]],[[]],[[]],[[],[[62,[46,[61,[46,[47,[46]]]],[47,[46]]]]]],[[],60],[[],60],[[[64,[46,[49,[46,[47,[46]],65]],[47,[46]],65]],[6,[46]]],[[2,[[42,[46,46]],1]]]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[[49,[46,[47,[46]],[48,[46]]]],[6,[46]]],[[2,[[64,[46,[49,[46,[47,[46]],[48,[46]]]],[47,[46]],[48,[46]]]],1]]]],[[],[[2,[1]]]],[[[53,[46]]],[[2,[1]]]],[[[62,[46,[61,[46,[47,[46]]]],[47,[46]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[53,[46]]]],[[[49,[46,[47,[46]],[48,[46]]]],[6,[46]]],[[2,[[52,[46,[49,[46,[47,[46]],[48,[46]]]],[47,[46]],[51,[[50,[46]]]],[48,[46]]]],1]]]],[[],[[2,[1]]]],[[[53,[46]]],[[2,[1]]]],0,[[[52,[46,[49,[46,[47,[46]],[48,[46]]]],[47,[46]],60,[48,[46]]]],[6,[46]]],[[2,[[42,[46,46]],1]]]],[[]],[[]],[[]],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[[54,[46]]],[[22,[46]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[65,65],[[]],[[]],[[]],[[]],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[[[66,[46,[47,[46]],[48,[46]]]],17],18],[[67,17],18],[[[51,[9]],17],18],[[[60,[9]],17],18],[[65,17],18],[[]],[[]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[[66,[46,[47,[46]],65]]],46],[[],[[66,[46,[47,[46]],[48,[46]]]]]],[[],14],[[],14],[[],14],[[],14],[[],14],[[]],[[],46],[[]],[[]],[[]],[[]],[[]],[[],68],[[],68],[14],[14],[[],14],[[],14],[[],14],[[]],[34,34],[69,69],[[],14],[[],14],[[],14],[[]],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],23],[[],23],[[],23],[[],23],[[],23],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[70,70],[71,71],[72,72],[[]],[[]],[[]],[[],[[2,[1]]]],[72,[[2,[1]]]],[72],[33],[[],72],[[],70],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[[],[[2,[1]]]],[72,[[2,[1]]]],[[[73,[46]],[6,[46]]],[[2,[74,1]]]],[14],[14],[14],[14],[14],[[[75,[46,[73,[46]]]],[6,[46]]],[[2,[74,1]]]],[[70,17],18],[[71,17],18],[[72,17],18],[[[74,[9]],17],18],[[[75,[[0,[9,46]],[0,[9,[73,[[0,[9,46]]]]]]]],17],18],[[]],[[]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],[[2,[1]]]],[72,[[2,[1]]]],[[],[[2,[1]]]],[72,[[2,[0,1]]]],[[]],[[]],[[]],[[]],[[]],[71,[[2,[1]]]],[72],[[[73,[46]],[6,[46]]],[[2,[[75,[46,[73,[46]]]],1]]]],[[]],[[]],[[]],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],23],[[],23],[[],23],[[],23],[[],23],[[[75,[46,[73,[46]]]],[6,[46]]],[[2,[1]]]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[[76,[[0,[8,3]],8]]],[[76,[[0,[8,3]],8]]]],[[[77,[[0,[8,3]],8]]],[[77,[[0,[8,3]],8]]]],[[]],[[]],[[[78,[3]],6,[76,[3]],[19,[3]]],[[2,[1]]]],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[14],[[]],[[[76,[[0,[9,3]],9]],17],18],[[[77,[[0,[9,3]],9]],17],18],[[[79,[[0,[9,3]],9,9]],17],18],[[[78,[[0,[9,3]],9,9]],17],18],[[]],[[]],[[]],[[]],[[6,22,14],[[2,[[77,[3]],1]]]],[[[41,[[77,[3]]]]],[[76,[3]]]],[[6,80],[[2,[[77,[3]],1]]]],[[[79,[3]],6,[76,[3]]],[[2,[1]]]],[[]],[6,[[2,[1]]]],[[[79,[3]],6,[76,[3]]],[[2,[1]]]],[[],14],[[],14],[[],14],[[],14],[[[77,[3]]]],[[]],[[]],[[]],[[]],0,[[],[[79,[3]]]],[[],[[78,[3]]]],0,[[]],[[[78,[3]],6,[76,[3]],[19,[3]]],[[2,[1]]]],[[]],[[]],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[[],23],[[],23],[[],23],[[],23],[[]],[[]],[[]],[[]],[[6,22,14],[[2,[1]]]],0,0,[[]],[[]],[[]],[[]],[[[81,[8,8,8]]],[[81,[8,8,8]]]],[[[82,[8,8,8]]],[[82,[8,8,8]]]],[[]],[[]],[82],[[33,[59,[58]],[59,[83]],[35,[34]]]],[[],82],[14],[14],[14],[14],[14],[14],[[[81,[36,36,36]],81],37],[[[82,[36,36,36]],82],37],[[]],[[[81,[9,9,9]],17],18],[[[82,[9,9,9]],17],18],[[]],[[]],[[82,[6,[34]],24],[[2,[1]]]],[[],14],[[],14],[[]],[[]],[81,[[2,[1]]]],[82],[81,[[35,[34]]]],[[]],[[]],[[],2],[[],2],[[],2],[[],2],[[],23],[[],23],[[]],[[]],[[82,[6,[34]],[22,[34]],14],[[2,[1]]]],0,0,0,[[]],[[]],[[[84,[3]],6],[[2,[1]]]],0,[[[84,[[0,[8,3]],8]]],[[84,[[0,[8,3]],8]]]],[[]],[[[22,[85]],22],[[84,[3]]]],[14],[14],[14],[[[84,[[0,[9,3]],9]],17],18],[[]],[[6,14],[[2,[1]]]],[[],14],[[]],[[]],[[],2],[[],2],[[],23],[[]],0,0,[[]],[[]],[[]],[[]],[[[86,[8,8,8]]],[[86,[8,8,8]]]],[[[87,[8,8,8]]],[[87,[8,8,8]]]],[[]],[[]],[87],[[33,81],86],[86,87],[14],[14],[14],[14],[14],[14],[[[86,[36,36,36]],86],37],[[[87,[36,36,36]],87],37],[[]],[[[86,[9,9,9]],17],18],[[[87,[9,9,9]],17],18],[[]],[[]],[[87,[6,[34]],24,14],[[2,[1]]]],[[87,[6,[34]],24],[[2,[1]]]],[[],14],[[],14],[[]],[[]],[87],[[87,[6,[34]],[22,[37]]],[[2,[1]]]],[[]],[[]],[[],2],[[],2],[[],2],[[],2],[[],23],[[],23],[[]],[[]],[[87,[6,[34]],[22,[34]],14],[[2,[1]]]],0,0,0,0,0,[88,89],[90,89],0,[90,89],0,0,[[]],[[]],[[]],[[]],[88,88],[[]],[[90,91,43],[[92,[89]]]],[14],[14],[14],[14],[14],[14],[[88,17],18],[[90,17],18],[[]],[[]],[[88,91],[[92,[34]]]],[[88,91],[[92,[89]]]],[[],14],[[],14],[[]],[[]],[93,88],[93,90],[[90,91,43],[[92,[34]]]],[[]],[[],2],[[],2],[[],2],[[],2],[[],23],[[],23],[[]],[[]],0,0,0,0,0,[[22,[94,[14]]],[[96,[95,[22,[95]]]]]],[[[94,[14]]],95],[[[97,[46]]],[[97,[46]]]],[[]],[[]],[[],55],[[[96,[[0,[8,57]],[0,[8,[98,[[0,[8,57]]]]]]]]],[[96,[[0,[8,57]],[0,[8,[98,[[0,[8,57]]]]]]]]]],[[]],0,0,[[14,14],[[41,[99]]]],[14],[14],[14],[[[96,[[0,[9,57]],[0,[9,[98,[[0,[9,57]]]]]]]],17],18],[[]],[44],[[],14],[[[96,[57,[98,[57]]]]]],[[]],[[],44],[[6,[59,[58]],22],[[2,[1]]]],0,[[[96,[57,[98,[57]]]]],14],[[[97,[46]],14],[[97,[46]]]],[[[97,[46]],[97,[46]],[97,[46]]],[[97,[46]]]],[[]],[[],2],[[],2],[[],23],[[[42,[57,57]],14],[[96,[57,[42,[57,57]]]]]],[[],22],[[],22],[[[96,[57,[42,[57,57]]]]],[[96,[57,[22,[57]]]]]],[[]],[[35,[6,[[0,[46,95]]]],22,[94,[14]]],[[2,[[96,[[0,[46,95]],[42,[[0,[46,95]],[0,[46,95]]]]]],1]]]],0,0,0,[[]],[[]],[[]],[[]],[[[100,[8]]],[[100,[8]]]],[101,101],[[]],[[]],[[[100,[46]]]],[33,101],[101,[[100,[46]]]],[14],[14],[14],[14],[14],[14],[[101,101],37],[[[100,[9]],17],18],[[101,17],18],[[]],[[]],[[],14],[[],14],[[]],[[]],[[[100,[46]]]],[[6,[22,[37]]],[[2,[1]]]],[[[100,[46]],[6,[46]],[22,[37]]],[[2,[1]]]],[[]],[[]],[[],2],[[],2],[[],2],[[],2],[[],23],[[],23],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[[102,[[0,[8,46,95]]]]],[[102,[[0,[8,46,95]]]]]],[[]],[[33,103,[59,[58]]],[[102,[[0,[46,95]]]]]],[[[102,[[0,[46,95]]]],104,14,[42,[[0,[46,95]],[0,[46,95]]]],37,14,14],[[2,[[105,[[0,[46,95]]]],1]]]],[14],[[[105,[[0,[46,95]]]]],41],[14],[14],[14],[14],[14],[[[102,[[0,[36,46,95]]]],102],37],[[[105,[[0,[9,46,95]]]],17],18],[[[102,[[0,[9,46,95]]]],17],18],[[]],[[]],[[],14],[[],14],[[]],[[]],[[]],[[],2],[[],2],[[],2],[[],2],[[],23],[[],23],[[]],[[]],[[[102,[[0,[46,95]]]],104,14,[22,[[0,[46,95]]]],37,14,14],[[2,[[105,[[0,[46,95]]]],1]]]],0,0,[[]],[[]],[[]],[[]],[[[35,[[0,[8,46,95]]]]],[[35,[[0,[8,46,95]]]]]],[[]],[[33,[59,[58]],106],[[35,[[0,[46,95]]]]]],[[[35,[[0,[46,95]]]],[6,[[0,[46,95]]]],[42,[[0,[46,95]],[0,[46,95]]]],14,37],[[2,[[107,[[0,[46,95]]]],1]]]],[[[35,[[0,[46,95]]]],[6,[[0,[46,95]]]],[42,[[0,[46,95]],[0,[46,95]]]],14],[[2,[1]]]],[14],[[[107,[[0,[46,95]]]]],41],[14],[14],[14],[14],[14],[[[35,[[0,[36,46,95]]]],35],37],[[[107,[[0,[9,46,95]]]],17],18],[[[35,[[0,[9,46,95]]]],17],18],[[]],[[]],[[],14],[[],14],[[]],[[]],[[]],[[],2],[[],2],[[],2],[[],2],[[],23],[[],23],[[]],[[]],[[[35,[[0,[46,95]]]],[6,[[0,[46,95]]]],[22,[[0,[46,95]]]],14,37],[[2,[[107,[[0,[46,95]]]],1]]]],[[[35,[[0,[46,95]]]],[6,[[0,[46,95]]]],[22,[[0,[46,95]]]],14],[[2,[[42,[[0,[46,95]],[0,[46,95]]]],1]]]]],"p":[[4,"Error"],[4,"Result"],[8,"CurveAffine"],[8,"EccInstructions"],[3,"NonIdentityPoint"],[8,"Layouter"],[3,"Point"],[8,"Clone"],[8,"Debug"],[8,"Eq"],[3,"FixedPoint"],[3,"FixedPointBaseField"],[3,"FixedPointShort"],[15,"usize"],[3,"X"],[3,"ScalarVar"],[3,"Formatter"],[6,"Result"],[3,"ScalarFixed"],[3,"ScalarFixedShort"],[8,"BaseFitsInScalarInstructions"],[3,"Value"],[3,"TypeId"],[6,"Affine"],[8,"FixedPoints"],[3,"EccChip"],[3,"EccPoint"],[3,"NonIdentityEccPoint"],[3,"EccConfig"],[3,"EccScalarFixed"],[3,"EccScalarFixedShort"],[4,"ScalarVar"],[3,"ConstraintSystem"],[6,"Base"],[3,"LookupRangeCheckConfig"],[8,"PartialEq"],[15,"bool"],[4,"FullScalar"],[4,"ShortScalar"],[4,"BaseFieldElem"],[3,"Vec"],[3,"AssignedCell"],[6,"Scalar"],[15,"u64"],[4,"Option"],[8,"FieldExt"],[8,"Spec"],[8,"Domain"],[8,"PoseidonSpongeInstructions"],[4,"PaddedWord"],[3,"Absorbing"],[3,"Sponge"],[3,"Pow5Chip"],[3,"StateWord"],[3,"Cell"],[3,"Pow5Config"],[8,"Field"],[3,"Advice"],[3,"Column"],[3,"Squeezing"],[8,"PoseidonInstructions"],[3,"Word"],[8,"SpongeMode"],[3,"Hash"],[3,"ConstantLength"],[3,"Hash"],[3,"P128Pow5T3"],[3,"String"],[6,"Base"],[3,"BlockWord"],[3,"Table16Config"],[3,"Table16Chip"],[8,"Sha256Instructions"],[3,"Sha256Digest"],[3,"Sha256"],[3,"Message"],[3,"MessagePiece"],[3,"CommitDomain"],[3,"HashDomain"],[8,"IntoIterator"],[3,"SinsemillaConfig"],[3,"SinsemillaChip"],[3,"Fixed"],[3,"MerklePath"],[15,"u32"],[3,"MerkleConfig"],[3,"MerkleChip"],[3,"HashDomain"],[6,"Point"],[3,"CommitDomain"],[8,"Iterator"],[3,"CtOption"],[15,"str"],[3,"Range"],[8,"PrimeFieldBits"],[3,"RangeConstrained"],[4,"Expression"],[8,"FieldValue"],[15,"u8"],[3,"CondSwapChip"],[3,"CondSwapConfig"],[3,"RunningSumConfig"],[3,"Selector"],[3,"Region"],[3,"RunningSum"],[3,"TableColumn"],[3,"RunningSum"],[8,"FixedPoint"],[8,"FixedScalarKind"],[13,"BaseFieldElem"],[13,"Message"],[13,"Padding"],[8,"SinsemillaInstructions"],[8,"HashDomains"],[8,"CommitDomains"],[8,"MerkleInstructions"],[8,"UtilitiesInstructions"],[8,"Var"],[8,"CondSwapInstructions"]]},\ -"halo2_proofs":{"doc":"halo2_proofs","t":[0,0,0,2,0,0,0,16,16,16,18,3,8,8,16,18,8,8,8,18,18,16,16,16,8,3,18,18,18,10,10,10,10,5,5,11,11,11,11,11,11,5,11,10,11,11,11,11,11,11,10,11,11,10,5,11,11,11,11,10,10,10,11,10,10,10,10,10,10,10,11,11,11,11,10,10,10,11,11,10,5,5,11,10,10,5,11,11,11,10,5,5,10,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,10,3,3,8,16,8,16,3,3,3,3,16,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,10,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,4,8,3,13,8,10,11,10,11,10,11,10,10,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,13,2,3,3,13,13,4,13,13,13,3,13,13,4,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,13,13,3,4,4,8,3,13,8,3,13,8,16,13,3,3,13,3,4,4,3,13,13,3,8,16,3,13,13,3,13,13,13,13,13,13,16,3,3,13,3,13,13,3,13,3,13,13,3,13,13,8,3,3,13,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,10,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,8,3,4,3,3,3,13,3,3,3,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,5,11,11,11,11,11,11,3,3,12,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,5,11,11,3,3,3,3,8,16,8,8,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11],"n":["arithmetic","circuit","dev","pasta","plonk","poly","transcript","AffineExt","Base","Base","CURVE_ID","Coordinates","CurveAffine","CurveExt","CurveExt","DELTA","Field","FieldExt","Group","MODULUS","ROOT_OF_UNITY_INV","Scalar","ScalarExt","ScalarExt","SqrtRatio","SqrtTables","TWO_INV","T_MINUS1_OVER2","ZETA","a","a","b","b","best_fft","best_multiexp","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","compute_inner_product","conditional_select","coordinates","cube","default","deref","deref","deref_mut","deref_mut","double","drop","drop","endo","eval_polynomial","fmt","fmt","from","from","from_bytes_wide","from_u128","from_xy","from_xy","get_lower_128","get_lower_32","group_add","group_scale","group_sub","group_zero","hash_to_curve","init","init","into","into","invert","is_on_curve","is_on_curve","is_zero","is_zero_vartime","jacobian_coordinates","kate_division","lagrange_interpolate","new","new_jacobian","one","parallelize","pow","pow_by_t_minus1_over2","pow_vartime","random","recursive_butterfly_arithmetic","small_multiexp","sqrt","sqrt_alt","sqrt_alt","sqrt_ratio","sqrt_ratio","square","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","u","v","vzip","vzip","x","y","zero","AssignedCell","Cell","Chip","Config","Layouter","Loaded","NamespacedLayouter","Region","RegionIndex","RegionStart","Root","SimpleFloorPlanner","Table","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_fixed","assign_region","assign_region","assign_table","assign_table","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","cell","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cloned","cloned","config","constrain_constant","constrain_equal","constrain_instance","constrain_instance","copied","copied","copy_advice","cube","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","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","eq","error_if_known_and","evaluate","evaluate","floor_planner","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","get_root","get_root","init","init","init","init","init","init","init","init","init","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","namespace","neg","pop_namespace","pop_namespace","push_namespace","push_namespace","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_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","unknown","unzip","value","value_field","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_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","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","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","0","0","CellNotAssigned","CircuitCost","CircuitGates","CircuitLayout","ConstraintNotSatisfied","ConstraintPoisoned","FailureLocation","InRegion","InstanceCellNotAssigned","Lookup","MockProver","OutsideRegion","Permutation","VerifyFailure","assert_satisfied","assign_advice","assign_fixed","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","circuit_dot_graph","collect","copy","cost","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","enable_selector","enter_region","eq","eq","exit_region","fill_from_row","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","init","init","init","init","init","into","into","into","into","into","mark_equality_cells","metadata","pop_namespace","push_namespace","queries_to_csv","query_instance","render","run","show_equality_constraints","show_labels","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","verify","view_height","view_width","vzip","vzip","vzip","vzip","vzip","offset","region","row","cell_values","column","column","column","constraint","constraint","gate","gate","gate_offset","gate_offset","location","location","location","lookup_index","offset","region","region","row","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_into","clone_into","cmp","cmp","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","init","init","init","init","init","into","into","into","into","into","partial_cmp","partial_cmp","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","Circuit","Column","ColumnNotInPermutation","ColumnType","Config","Constant","Constraint","ConstraintSystem","ConstraintSystemFailure","Constraints","Error","Expression","Fixed","Fixed","Fixed","FixedQuery","FloorPlanner","FloorPlanner","Instance","Instance","Instance","InstanceQuery","InstanceTooLarge","InvalidInstances","Negated","NotEnoughColumnsForConstants","NotEnoughRowsAvailable","Opening","Output","PinnedConstraintSystem","PinnedVerificationKey","Product","ProvingKey","Rational","Scaled","Selector","Selector","SingleVerifier","Sum","Synthesis","TableColumn","Transcript","Trivial","VerificationStrategy","VerifyingKey","VirtualCells","Zero","add","add","add","add","add","add","add","add_assign","add_assign","add_proof","advice_column","assign_advice","assign_fixed","blinding_factors","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","column_type","complex_selector","configure","copy","create_gate","create_proof","cube","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_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","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable","enable_constant","enable_equality","enable_equality","enable_selector","enter_region","eq","eq","eq","eq","eq","eq","eq","eq","evaluate","evaluate","exit_region","fill_from_row","finalize","fixed_column","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","get_domain","get_vk","hash","hash","hash","hash","hash","hash","hash","hash_into","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","instance_column","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","lookup","lookup_table_column","minimum_rows","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","neg","neg","neg","new","new","numerator","partial_cmp","partial_cmp","pinned","pinned","pop_namespace","process","process","provide","push_namespace","query_advice","query_any","query_fixed","query_instance","query_instance","query_selector","selector","set_minimum_degree","source","square","square","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","synthesize","synthesize","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","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","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","with_selector","without_witnesses","0","0","1","0","0","current_k","0","0","0","0","0","0","0","0","0","1","1","1","0","Basis","Coeff","Error","EvaluationDomain","ExtendedLagrangeCoeff","LagrangeCoeff","OpeningError","PinnedEvaluationDomain","Polynomial","Rotation","SamplingError","add","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","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","coeff_from_vec","coeff_to_extended","commitment","constant_extended","constant_lagrange","cur","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","divide_by_vanishing_poly","drop","drop","drop","drop","drop","drop","drop","drop","empty_coeff","empty_extended","empty_lagrange","eq","extended_len","extended_to_coeff","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","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","into","into","into","into","into","into","into","into","iter","iter_mut","l_i_range","lagrange_from_vec","lagrange_to_coeff","mul","multiopen","new","next","num_coeffs","pinned","prev","rotate","rotate_extended","rotate_omega","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_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","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","Accumulator","Blind","Guard","MSM","Params","add","add_assign","add_assign","add_constant_term","add_msm","add_to_g_scalars","add_to_u_scalar","add_to_w_scalar","append_term","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","commit","commit_lagrange","compute_g","create_proof","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","empty_msm","eq","eval","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","g","get_g","init","init","init","init","init","into","into","into","into","into","mul","mul_assign","mul_assign","new","new","read","scale","to_owned","to_owned","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","u_packed","use_challenges","use_g","verify_proof","vzip","vzip","vzip","vzip","vzip","write","ProverQuery","VerifierQuery","blind","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","create_proof","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","new_commitment","new_msm","point","poly","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","Blake2bRead","Blake2bWrite","Challenge255","ChallengeScalar","EncodedChallenge","Input","Transcript","TranscriptRead","TranscriptWrite","as_challenge_scalar","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","common_point","common_point","common_point","common_scalar","common_scalar","common_scalar","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","finalize","fmt","fmt","fmt","fmt","from","from","from","from","get_scalar","get_scalar","init","init","init","init","init","init","into","into","into","into","new","new","read_point","read_point","read_scalar","read_scalar","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge_scalar","to_owned","to_owned","to_owned","to_owned","translate","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","write_point","write_point","write_scalar","write_scalar"],"q":["halo2_proofs","","","","","","","halo2_proofs::arithmetic","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::circuit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::circuit::floor_planner","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::circuit::layouter","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::circuit::layouter::RegionColumn","","halo2_proofs::dev","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::dev::FailureLocation","","","halo2_proofs::dev::VerifyFailure","","","","","","","","","","","","","","","","","","halo2_proofs::dev::cost","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::dev::metadata","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::plonk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::plonk::Assigned","","","halo2_proofs::plonk::Error","","","halo2_proofs::plonk::Expression","","","","","","","","","","","","halo2_proofs::poly","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::poly::commitment","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::poly::multiopen","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::transcript","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["This module provides common utilities, traits and …","Traits and structs for implementing circuit components.","Tools for developing circuits.","","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.","The affine coordinates of a point on an elliptic 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","Generator of the $t-order$ multiplicative subgroup","This trait represents an element of a field.","This trait is a common interface for dealing with elements …","This represents an element of a group with basic …","Modulus of the field written as a string for display …","Inverse of PrimeField::root_of_unity()","The group is assumed to be of prime order $p$. Scalar is …","The scalar field of this elliptic curve.","The scalar field of this elliptic curve.","A trait that exposes additional operations related to …","Tables used for square root computation.","Inverse of $2$ in the field.","The value $(T-1)/2$ such that $2^S \\\\cdot T = p - 1$ with …","Element of multiplicative order $3$.","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) …","","","Returns the argument unchanged.","Returns the argument unchanged.","Obtains a field element that is congruent to the provided …","Obtains a field element congruent to the integer v.","Obtains a point given $(x, y)$, failing if it is not on the","Obtains a Coordinates value given $(x, y)$, failing if it …","Gets the lower 128 bits of this field element when …","Gets the lower 32 bits of this field element when expressed","Adds rhs to this group element.","Scales this group element by a scalar.","Subtracts rhs from this group element.","Returns the additive identity of the group.","Requests a hasher that accepts messages and returns …","","","Calls U::from(self).","Calls U::from(self).","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 …","Build tables given parameters for the perfect hash.","Obtains a point given Jacobian coordinates $X : Y : Z$, …","Returns the one element of the field, the multiplicative …","This simple utility function will parallelize an operation …","Exponentiates self by by, where by is a little-endian order","Raise this field element to the power Self::T_MINUS1_OVER2.","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()).","Same as sqrt_ratio(u, one()) but more efficient.","Computes:","Computes:","Squares this element.","","","","","","","","Returns the u-coordinate.","Returns the v-coordinate.","","","Returns the x-coordinate.","Returns the y-coordinate.","Returns the zero element of the field, the additive …","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 lookup table in the circuit.","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.","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 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.","","","","","","","","","","","","","","","","","","","","","","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.","Takes each element in the Iterator: if it is …","Gets the “root” of this assignment, bypassing the …","","","","","","","","","","","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 …","","","","","","","","","","","Enters into a namespace.","","Exits out of the existing namespace.","","Creates a new (sub)namespace and enters into it.","","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","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).","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 used in an active gate was not assigned to.","","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 …","The reasons why a particular circuit is not satisfied.","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 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).","Marks cells involved in equality constraints, in red.","Metadata about circuits.","","","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 …","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 permutation is not satisfied.","The index of the lookup that is not satisfied. These …","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.","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 …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","This is a trait that circuits provide implementations for …","A column with an index and type","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 …","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 …","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","The output type of this verification strategy after …","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","A selector, representing a fixed boolean value per row of …","This is a virtual selector","A verifier that checks a single proof at a time.","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.","Transcript error","A value that does not require inversion to evaluate.","Trait representing a strategy for verifying Halo 2 proofs.","This is a verifying key which allows for the verification …","Exposes the “virtual cells” that can be queried while …","The field element zero.","","","","","","","","","","Adds a proof to the batch.","Allocate a new advice column","Assign an advice column value (witness)","Assign a fixed value","Compute the number of blinding factors necessary to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Type of this column.","Allocate a new complex selector that can appear anywhere …","The circuit is given an opportunity to describe the exact …","Assign two cells to have the same value","Creates a new gate.","This creates a proof for the provided circuit when given …","Cubes this element.","","","Compute the degree of this polynomial","Compute the degree of the constraint system (the maximum …","Returns the denominator, if non-trivial.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Doubles this element.","","","","","","","","","","","","","","","","","","","","","","","","Enable this selector at the given offset within the given …","Enables this fixed column to be used for global constant …","Enable equality on this TableColumn.","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 …","Exits the current region.","Fills a fixed column starting from the given row with …","Finalizes the batch and checks its validity.","Allocate a new fixed column","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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.","Get the underlying EvaluationDomain.","Get the underlying VerifyingKey.","","","","","","","","Hashes a verification key into a transcript.","","","","","","","","","","","","","","","","","","","","","","","","Allocate a new instance column","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.","Add a lookup argument for some input expressions and table …","Allocates a new fixed column that can be used in a lookup …","Returns the minimum necessary rows that need to exist in …","","","","","","","","","","","","Constructs a new batch verifier.","Constructs a new single proof verifier.","Returns the numerator.","","","Obtain a pinned version of this constraint system; a …","Obtains a pinned representation of this verification key …","Exits out of the existing namespace.","Obtains an MSM from the verifier strategy and yields back …","","","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","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.","Allocate a new (simple) selector. Simple selectors cannot …","Sets the minimum degree required by the circuit, which can …","","Squares this element.","Square this expression.","","","","","","","","","","Given the provided cs, synthesize the given circuit.","Given the provided cs, synthesize the circuit. The …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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 …","","","","","","The current value of k being used.","","","","","","","","","","","","","","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 …","The polynomial is defined as coefficients of Lagrange …","OpeningProof is not well-formed","Represents the minimal parameters that determine an …","Represents a univariate polynomial defined over a field …","Describes the relative rotation of a vector. Negative …","Caller needs to re-sample a point","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Obtains a polynomial in coefficient form when given a …","This takes us from an n-length coefficient vector into a …","This module contains an implementation of the polynomial …","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","This takes us from the extended evaluation domain and gets …","","","","","","","","","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).","Iterate over the values, which are either in coefficient …","Iterate over the values mutably, which are either in …","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 …","","This module contains an optimisation of the polynomial …","This constructs a new evaluation domain object based on …","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","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 …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An accumulator instance consisting of an evaluation claim …","Wrapper type around a blinding factor.","A guard returned by the verifier","A multiscalar multiplication in the polynomial commitment …","These are the public parameters for the polynomial …","","","","Add a value to the first entry of g_scalars.","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","Add arbitrary term (the scalar and the point)","","","","","","","","","","","","","","","","","","","","","This computes a commitment to a polynomial described by …","This commits to a polynomial using its evaluations over …","Computes G = ⟨s, params.g⟩","Create a polynomial commitment opening proof for the …","","","","","","","","","","","","","","","","","Generates an empty multiscalar multiplication struct using …","","Perform multiexp and check that it results in zero","","","","","","Returns the argument unchanged.","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 …","Getter for g generators","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Create a new, empty MSM using the provided parameters.","Initializes parameters for the curve, given a random …","Reads params from a buffer.","Scale all scalars in the MSM by some scaling factor","","","","","","","","","","","","","","","","","","","","","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","Checks to see if the proof represented within transcript …","","","","","","Writes params to a buffer.","A polynomial query at a point","A polynomial query at a point","blinding factor of polynomial","","","","","","","","","Create a multi-opening proof","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Create a new verifier query based on a commitment","Create a new verifier query based on a linear combination …","point at which polynomial is queried","coefficients of polynomial","","","","","","","","","Verify a multi-opening proof","","","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 …","Generic transcript view (from either the prover or verifier…","Transcript view from the perspective of a verifier that …","Transcript view from the perspective of a prover that has …","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 …","","","","","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.","","","","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":[0,0,0,0,0,0,0,132,132,81,132,0,0,0,81,19,0,0,0,19,19,62,132,81,0,0,19,133,19,132,81,132,81,0,0,2,10,2,10,2,2,0,2,81,3,2,2,10,2,10,3,2,10,132,0,2,10,2,10,19,19,81,2,19,133,62,62,62,62,132,2,10,2,10,3,132,81,3,3,132,0,0,10,132,3,0,19,133,3,3,0,0,3,133,10,133,10,3,2,2,10,2,10,2,10,2,2,2,10,2,2,3,0,0,0,134,0,134,0,0,0,0,37,0,0,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,28,28,28,34,28,37,38,37,38,26,44,40,41,39,31,28,34,38,26,44,40,41,39,31,28,34,38,31,26,40,41,39,31,26,40,41,39,31,26,26,134,28,28,37,38,26,26,31,26,26,26,44,40,40,41,41,39,31,28,34,38,26,44,40,41,39,31,28,34,38,26,26,44,40,41,39,31,28,34,38,38,41,26,26,31,0,26,44,40,41,39,31,28,34,38,26,26,44,40,40,41,41,39,31,28,28,34,34,38,26,37,38,26,44,40,41,39,31,28,34,38,26,44,40,41,39,31,28,34,38,26,26,26,0,134,26,26,26,26,26,26,26,26,26,26,26,37,26,37,38,37,38,26,26,26,26,26,26,26,26,26,26,26,44,26,26,40,41,39,31,26,26,26,44,40,41,39,31,28,34,38,26,44,40,41,39,31,28,34,38,26,44,40,41,39,31,28,34,38,26,26,31,31,26,44,40,41,39,31,28,34,38,26,0,0,52,52,53,52,53,52,52,53,52,53,52,53,52,53,52,53,52,52,53,52,53,52,52,52,53,53,52,53,52,53,52,53,52,56,0,0,0,56,0,45,55,45,55,45,55,46,45,55,55,56,55,56,55,56,55,56,56,55,45,55,45,55,55,56,55,56,55,56,45,55,56,55,56,55,56,56,56,56,55,56,45,55,55,56,55,56,55,55,55,56,55,56,55,56,55,56,55,56,135,136,66,0,0,0,66,66,0,65,66,66,0,65,66,0,61,61,61,65,66,63,64,61,65,66,63,64,61,0,63,61,0,64,65,66,63,64,61,65,66,63,64,61,65,66,63,64,61,61,61,65,66,61,61,65,65,66,66,63,63,64,61,65,66,63,64,61,65,66,63,64,61,65,66,63,64,61,64,0,61,61,63,61,64,61,64,64,65,66,63,65,66,63,64,61,65,66,63,64,61,65,66,63,64,61,61,64,64,65,66,63,64,61,137,137,138,139,140,141,142,139,143,140,141,140,141,139,144,142,144,140,140,141,141,0,0,0,72,73,74,72,73,74,72,73,74,72,73,74,72,73,74,72,73,74,72,73,74,72,73,74,72,73,74,72,72,72,72,73,74,72,73,74,72,73,74,72,73,74,0,0,0,0,0,75,77,78,79,76,75,77,78,79,76,75,76,75,76,75,77,75,77,78,79,76,75,77,78,79,76,75,77,78,79,76,75,77,78,79,76,75,75,77,77,78,78,79,79,76,76,75,75,75,77,77,77,78,78,79,79,76,76,76,75,77,78,79,76,75,77,78,79,76,75,77,75,76,75,77,78,79,76,75,77,78,79,76,75,77,78,79,76,75,77,78,79,76,75,77,78,79,76,0,60,80,0,0,0,0,0,32,0,0,32,0,71,80,0,0,32,0,0,0,0,60,80,0,0,71,0,60,80,0,32,32,80,32,32,32,108,0,0,80,0,25,80,0,80,0,80,32,0,32,25,0,0,0,25,25,25,25,25,25,25,80,25,25,82,84,51,51,84,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,25,30,29,36,33,60,59,86,87,88,35,80,84,89,90,25,30,29,36,33,60,59,86,87,88,35,80,84,89,90,30,60,30,84,71,51,84,0,25,84,82,80,84,25,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,25,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,59,84,35,84,51,51,25,30,29,36,33,60,59,35,25,80,51,51,82,84,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,32,82,99,89,100,90,25,25,25,25,25,30,30,30,30,29,36,33,60,60,60,60,59,86,87,88,35,80,95,95,95,96,84,97,98,32,32,82,99,89,100,90,89,90,30,29,36,33,60,59,35,89,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,84,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,96,25,59,25,0,0,84,84,84,25,25,25,25,80,80,25,25,25,25,80,82,99,25,30,60,84,89,51,108,99,32,51,98,98,98,51,98,98,84,84,32,25,80,25,25,25,25,25,25,80,25,25,145,71,25,30,29,36,33,60,59,86,87,88,35,80,84,89,90,32,25,30,30,30,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,0,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,96,71,146,147,147,148,149,150,151,152,153,154,155,156,157,158,159,157,158,159,106,0,0,0,0,0,0,115,0,0,0,115,110,102,114,115,111,112,113,110,106,102,114,115,111,112,113,110,106,102,111,112,113,110,106,102,111,112,113,110,106,102,102,0,102,102,106,102,114,115,111,112,113,110,110,106,102,114,115,111,112,113,110,110,106,102,102,114,115,111,112,113,110,106,102,102,102,106,102,102,102,114,115,111,112,113,110,106,102,114,115,111,112,113,110,106,102,102,102,102,110,110,110,110,110,110,102,114,115,111,112,113,110,106,102,114,115,111,112,113,110,106,110,110,102,102,102,110,0,102,106,110,102,106,110,102,102,102,111,112,113,110,106,102,114,115,111,112,113,110,106,102,114,115,111,112,113,110,106,102,114,115,111,112,113,110,106,102,114,115,111,112,113,110,106,119,0,0,0,0,0,119,119,119,120,120,120,120,120,120,120,122,123,91,119,120,122,123,91,119,120,122,123,91,119,120,122,123,91,119,91,91,122,0,119,120,122,123,91,119,120,122,123,91,119,120,122,123,91,119,91,119,120,120,122,123,91,119,120,122,123,91,119,123,91,120,122,123,91,119,120,122,123,91,119,119,119,119,120,91,91,120,120,122,123,91,119,120,122,123,91,119,120,122,123,91,119,120,122,123,91,119,123,122,122,0,120,122,123,91,119,91,0,0,124,124,125,124,125,124,125,124,125,0,124,125,124,125,124,125,124,125,124,125,124,125,124,125,125,125,124,124,124,125,124,125,124,125,124,125,0,124,125,0,0,0,0,0,121,0,0,0,121,128,130,126,131,128,130,126,131,128,130,126,131,128,130,126,131,160,128,130,160,128,130,128,130,126,126,131,131,128,130,126,131,128,130,126,131,130,128,130,126,131,128,130,126,131,121,131,128,128,130,130,126,131,128,130,126,131,121,131,161,128,161,128,160,128,130,160,128,130,126,131,126,128,130,126,131,128,130,126,131,128,130,126,131,128,130,126,131,162,130,162,130],"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,0,0,[[]],[[]],[[]],[[]],[1],[[]],[[]],[[]],[[]],[[]],[2,2],[[]],[[],3],[[2,2,4],2],[[],[[5,[2]]]],[[]],[[],2],[6],[6],[6],[6],[[]],[6],[6],[[]],[3,3],[[2,7],[[9,[8]]]],[[10,7],[[9,[8]]]],[[]],[[]],[[]],[11],[[],5],[[],[[5,[2]]]],[[],11],[[],1],[[]],[[]],[[]],[[]],[12,[[15,[13,14]]]],[[],6],[[],6],[[]],[[]],[[],5],[[],4],[[],4],[[],4],[[],16],[[]],[[17,3],[[18,[3]]]],[[],[[18,[19]]]],[[1,6],10],[[],5],[[]],[[[0,[13,20,21,22]]]],[[]],[[]],[[]],[23],[[6,6]],[[]],[[],5],[[]],[10],[[]],[10],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[2],[2],[[]],[[]],[2],[2],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[26,[[25,[3]]]],[26,[3]]]],[[[26,[[25,[3]]]],3]],[[[26,[25]],[26,[3]]]],[[26,26]],[[26,26]],[[[26,[25]],3]],[[26,26]],[[26,26]],[[26,26]],[[26,26]],[[26,27],26],[26,26],[26,26],[[26,27]],[[[28,[3]],[30,[29]],6],[[9,[[31,[3]],32]]]],[[[28,[3]],[30,[29]],6],[[9,[[31,[3]],32]]]],[[[28,[3]],[30,[33]],6,[30,[29]],6],[[9,[[31,[3,3]],32]]]],[[[34,[3]],35,6],[[9,[32]]]],[[[28,[3]],[30,[36]],6],[[9,[[31,[3]],32]]]],[[],[[9,[32]]]],[[[38,[3,[37,[3]]]]],[[9,[32]]]],[[],[[9,[32]]]],[[[38,[3,[37,[3]]]]],[[9,[32]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[31,[3]]],39],[[[26,[22]]],[[26,[22]]]],[40,40],[41,41],[39,39],[[[31,[22,[0,[22,3]]]]],[[31,[22,[0,[22,3]]]]]],[[]],[[]],[[]],[[]],[[]],[26,26],[26,26],[[]],[[[28,[3]],39],[[9,[32]]]],[[[28,[3]],39,39],[[9,[32]]]],[[39,[30,[33]],6],[[9,[32]]]],[[[38,[3,[37,[3]]]],39,[30,[33]],6],[[9,[32]]]],[26,26],[26,26],[[[31,[22,3]],28,[30,[29]],6],[[9,[[31,[22,3]],32]]]],[26,[[26,[[25,[3]]]]]],[[],26],[6],[6],[40],[6],[41],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[26,[[26,[[25,[3]]]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[[38,[3,[37,[3]]]]]],[[41,41],16],[[26,27],[[9,[32]]]],[[[26,[[25,[3]]]]],[[26,[3]]]],[[[31,[[25,[3]],3]]],[[31,[3,3]]]],0,[[[26,[42]],7],43],[[44,7],43],[[40,7],43],[[41,7],43],[[39,7],43],[[[31,[42,[0,[42,3]]]],7],43],[[[28,[[0,[42,3]]]],7],43],[[[34,[[0,[42,3]]]],7],43],[[[38,[[0,[42,3]],[0,[42,[37,[[0,[42,3]]]]]]]],7],43],[[]],[[[26,[3]]],[[26,[[25,[3]]]]]],[[]],[[]],[6,40],[[]],[6,41],[[]],[[]],[45,[[28,[3]]]],[[]],[[]],[46,[[34,[3]]]],[[]],[17,[[26,[47]]]],[[]],[[[38,[3,[37,[3]]]]]],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[26,[[26,[[25,[3]]]]]],[26,[[26,[[25,[3]]]]]],[[],26],0,[[]],[[26,27],26],[[26,26]],[[26,26]],[[26,26]],[[26,26]],[[26,26]],[[26,26]],[[[26,[[25,[3]]]],[26,[3]]]],[[[26,[[25,[3]]]],3]],[[[26,[25]],[26,[3]]]],[[[26,[25]],3]],[[],38],[[[26,[48]]]],[[[50,[49]]]],[[[38,[3,[37,[3]]]],[50,[49]]]],[[]],[[[38,[3,[37,[3]]]]]],[26,[[26,[[25,[3]]]]]],[[[26,[[25,[3]]]],3]],[[[26,[[25,[3]]]],[26,[3]]]],[[26,26]],[[[26,[25]],[26,[3]]]],[[26,26]],[[26,26]],[[26,26]],[[26,26]],[[[26,[25]],3]],[[26,26]],[[[18,[[30,[36]]]]],[[9,[32]]]],[26,[[26,[[25,[3]]]]]],[[]],[[]],[[]],[[]],[[]],[26],[[26,6],[[18,[26]]]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],26],[26],[[[31,[3]]],26],[[[31,[3]]],[[26,[[25,[3]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[26,26],26],0,0,[[[52,[3,[51,[3]]]]],[[9,[32]]]],[[[52,[3,[51,[3]]]]],[[9,[32]]]],[[]],[[]],[[]],[[]],[[[52,[3,[51,[3]]]],39,[30,[33]],6],[[9,[32]]]],[6],[6],[6],[6],[6],[6],[[53,7],43],[[[52,[[0,[42,3]],[0,[42,[51,[[0,[42,3]]]]]]]],7],43],[[]],[[]],[[[52,[3,[51,[3]]]]]],[[],6],[[],6],[[]],[[]],[[[52,[3,[51,[3]]]],[50,[49]]]],[[[52,[3,[51,[3]]]]]],[[[18,[[30,[36]]]]],[[9,[32]]]],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[]],[[]],0,0,0,0,0,0,[[13,[30,[29]],6,54],[[9,[39,32]]]],[[55,13,[30,[29]],6,54],[[9,[39,32]]]],[[13,[30,[29]],6,25],[[9,[39,32]]]],[[55,13,[30,[29]],6,[25,[3]]],[[9,[39,32]]]],[[13,[30,[33]],6,[30,[29]],6],[[9,[32]]]],[[55,13,[30,[33]],6,[30,[29]],6],[[9,[32]]]],[[13,35,6,54],[[9,[32]]]],[[13,[30,[36]],6,54],[[9,[39,32]]]],[[55,13,[30,[36]],6,54],[[9,[39,32]]]],[[]],[[]],[[]],[[]],[55,55],[56,56],[[]],[[]],[[56,56],57],[55,58],[[39,25],[[9,[32]]]],[[55,39,[25,[3]]],[[9,[32]]]],[[39,39],[[9,[32]]]],[[55,39,39],[[9,[32]]]],[6],[6],[6],[6],[6],[6],[[13,59,6],[[9,[32]]]],[[55,13,59,6],[[9,[32]]]],[[56,56],16],[[55,7],43],[[56,7],43],[[]],[[[30,[60]]],56],[[]],[59,56],[56],[[],6],[[],6],[[[30,[33]],6],[[9,[26,32]]]],[[55,[30,[33]],6],[[9,[[26,[3]],32]]]],[[]],[[]],[40,55],[[56,56],[[50,[57]]]],[55,40],[55,6],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[61,[19]]]],[[[61,[[0,[3,62]]]],[30,[29]],6],[[9,[32]]]],[[[61,[[0,[3,62]]]],[30,[36]],6],[[9,[32]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],49],[[],63],[[[61,[[0,[3,62]]]],[30,[60]],6,[30,[60]],6],[[9,[32]]]],0,[[],64],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[[61,[[0,[3,62]]]],59,6],[[9,[32]]]],[[[61,[[0,[3,62]]]]]],[[65,65],16],[[66,66],16],[[[61,[[0,[3,62]]]]]],[[[61,[[0,[3,62]]]],[30,[36]],6,[26,[[25,[[0,[3,62]]]]]]],[[9,[32]]]],[[65,7],43],[[65,7],43],[[66,7],43],[[66,7],43],[[63,7],[[9,[8]]]],[[63,7],43],[[64,7],43],[[[61,[[0,[42,62,3]]]],7],43],[[]],[[]],[[]],[[]],[[]],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[64,16],64],0,[[[61,[[0,[3,62]]]],[50,[49]]]],[[[61,[[0,[3,62]]]]]],[63,49],[[[61,[[0,[3,62]]]],[30,[33]],6],[[9,[[26,[[0,[3,62]]]],32]]]],[[64,1,67],[[9,[68]]]],[[1,[18,[[18,[19]]]]],[[9,[[61,[19]],32]]]],[[64,16],64],[[64,16],64],[[],49],[[],49],[[],49],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[],24],[[[61,[19]]],[[9,[[18,[66]]]]]],[[64,[69,[6]]],64],[[64,[69,[6]]],64],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[[72,[[0,[42,70]],[0,[42,71]]]],7],43],[[[73,[[0,[42,70]]]],7],43],[[[74,[[0,[42,70]]]],7],43],[[]],[[]],[[]],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[[72,[70,71]]],[[73,[70]]]],[6,[[72,[70,71]]]],[[[72,[70,71]],6],[[74,[70]]]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[]],[[]],[[]],0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[75,75],[76,76],[[]],[[]],[[75,75],57],[[77,77],57],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[75,75],16],[[77,77],16],[[78,78],16],[[79,79],16],[[76,76],16],[[75,7],43],[[75,7],43],[[77,7],43],[[77,7],43],[[78,7],43],[[78,7],43],[[79,7],43],[[79,7],43],[[76,7],43],[[76,7],43],[[[30,[60]]],75],[[]],[[],75],[[],77],[[],77],[[]],[[],78],[[]],[[],79],[[]],[[]],[[],76],[[],76],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[75,75],[[50,[57]]]],[[77,77],[[50,[57]]]],[[]],[[]],[[],49],[[],49],[[],49],[[],49],[[],49],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[],24],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[25,[3]],[25,[3]]],[[25,[3]]]],[[[25,[3]],3],[[25,[3]]]],[[[25,[3]],[25,[3]]],[[25,[3]]]],[[25,3],[[25,[3]]]],[[25,[25,[3]]],[[25,[3]]]],[[25,25],[[25,[3]]]],[[[80,[3]],[80,[3]]],[[80,[3]]]],[[[25,[3]],[25,[3]]]],[[[25,[3]],[25,[3]]]],[[[82,[81]],[18,[[18,[18]]]],[18,[83]]]],[[[84,[3]]],[[30,[29]]]],[[[30,[29]],6],[[9,[32]]]],[[[30,[36]],6],[[9,[32]]]],[[[84,[3]]],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[25,[22]]],[[25,[22]]]],[[[30,[[0,[22,85]]]]],[[30,[[0,[22,85]]]]]],[29,29],[36,36],[33,33],[60,60],[59,59],[86,86],[87,87],[88,88],[35,35],[[[80,[22]]],[[80,[22]]]],[[[84,[[0,[22,3]]]]],[[84,[[0,[22,3]]]]]],[[[89,[[0,[22,81]]]]],[[89,[[0,[22,81]]]]]],[[[90,[[0,[22,81]]]]],[[90,[[0,[22,81]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[30,[85]],[30,[85]]],57],[[60,60],57],[[[30,[85]]]],[[[84,[3]]],59],[84],[[[30,[60]],6,[30,[60]],6],[[9,[32]]]],[[[84,[3]],12,27]],[[91,90,23],[[9,[32]]]],[[[25,[3]]],[[25,[3]]]],[[],[[84,[3]]]],[[],[[82,[[0,[92,81]]]]]],[[[80,[3]]],6],[[[84,[3]]],6],[[[25,[3]]],[[50,[3]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[[25,[3]]],[[25,[3]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[59,28,6],[[9,[32]]]],[[[84,[3]],[30,[36]]]],[[35,84]],[[[84,[3]],[93,[[30,[60]]]]]],[[59,6],[[9,[32]]]],[[]],[[[25,[3]],[25,[3]]],16],[[[30,[[0,[94,85]]]],30],16],[[29,29],16],[[36,36],16],[[33,33],16],[[60,60],16],[[59,59],16],[[35,35],16],[[[25,[3]]],3],[[[80,[3]]]],[[]],[[[30,[36]],6,[26,[25]]],[[9,[32]]]],[[[82,[81]],91,89],16],[[[84,[3]]],[[30,[36]]]],[[[25,[42]],7],43],[[[30,[[0,[42,85]]]],7],43],[[29,7],43],[[36,7],43],[[33,7],43],[[60,7],43],[[59,7],43],[[86,7],43],[[87,7],43],[[88,7],43],[[35,7],43],[[[80,[42]],7],43],[[[95,[[0,[42,3]]]],7],43],[[[96,[[0,[42,3]],[0,[42,[93,[[95,[[0,[42,3]]]]]]]],[0,[42,17]]]],7],43],[[[84,[[0,[42,3]]]],7],43],[[[97,[[0,[42,3]]]],7],43],[[[98,[[0,[42,3]]]],7],43],[[32,7],43],[[32,7],43],[[[82,[[0,[42,81]]]],7],43],[[[99,[[0,[42,81]]]],7],43],[[[89,[[0,[42,81]]]],7],43],[[[100,[[0,[42,81]]]],7],43],[[[90,[[0,[42,81]]]],7],43],[[],[[25,[3]]]],[3,[[25,[3]]]],[[],[[25,[3]]]],[25,[[25,[3]]]],[[]],[[[30,[36]]],[[30,[60]]]],[[[30,[29]]],[[30,[60]]]],[[[30,[33]]],[[30,[60]]]],[[]],[[]],[[]],[[]],[29,60],[36,60],[33,60],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[95,[3]]]],[[[80,[3]]],[[95,[3]]]],[[]],[[]],[[]],[[]],[[]],[101,32],[[]],[[]],[[]],[[]],[[]],[[]],[[[89,[81]]],102],[[[90,[81]]],89],[[[30,[[0,[103,85]]]]]],[29],[36],[33],[60],[59],[35],[[[89,[81]]],104],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[[84,[3]]],[[30,[33]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[96,[3,[93,[[95,[3]]]],17]]]],[[[25,[3]]],[[25,[3]]]],[59,16],[[[25,[3]]],16],[[91,89],[[9,[90,32]]]],[91,[[9,[89,32]]]],[[[84,[3]],27],6],[[[84,[3]]],35],[[[84,[3]]],6],[[[25,[3]],25],[[25,[3]]]],[[[25,[3]],[25,[3]]],[[25,[3]]]],[[[25,[3]],3],[[25,[3]]]],[[25,3],[[25,[3]]]],[[[80,[3]],3],[[80,[3]]]],[[[80,[3]],[80,[3]]],[[80,[3]]]],[[[25,[3]],[25,[3]]]],[[[25,[3]],[25,[3]]]],[25],[[[25,[3]]]],[[[80,[3]]]],[[],[[82,[81]]]],[91,[[99,[81]]]],[[[25,[3]]],3],[[[30,[85]],[30,[85]]],[[50,[57]]]],[[60,60],[[50,[57]]]],[[[84,[3]]],[[97,[3]]]],[[[89,[81]]],[[100,[81]]]],[[[50,[49]]]],[27,[[9,[32]]]],[[[99,[81]],27],[[9,[32]]]],[105],[[]],[[[98,[3]],[30,[29]],106],[[80,[3]]]],[[[98,[3]],[93,[[30,[60]]]],106],[[80,[3]]]],[[[98,[3]],[30,[36]],106],[[80,[3]]]],[[[30,[33]],6],[[9,[26,32]]]],[[[98,[3]],[30,[33]],106],[[80,[3]]]],[[[98,[3]],59],[[80,[3]]]],[[[84,[3]]],59],[[[84,[3]],6]],[32,[[50,[107]]]],[[[25,[3]]],[[25,[3]]]],[[[80,[3]]],[[80,[3]]]],[[25,3],[[25,[3]]]],[[[25,[3]],[25,[3]]],[[25,[3]]]],[[25,25],[[25,[3]]]],[[25,[25,[3]]],[[25,[3]]]],[[[25,[3]],[25,[3]]],[[25,[3]]]],[[[25,[3]],3],[[25,[3]]]],[[[80,[3]],[80,[3]]],[[80,[3]]]],[[[25,[3]],[25,[3]]]],[[[25,[3]],[25,[3]]]],[[[18,[[30,[36]]]]],[[9,[32]]]],[37,[[9,[32]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],49],[[],9],[[[30,[60]]],[[9,[[30,[33]]]]]],[[[30,[60]]],[[9,[[30,[36]]]]]],[[[30,[60]]],[[9,[[30,[29]]]]]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[91,89,[108,[81]]],[[9,[32]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[80,[3]],17],[[96,[3,[93,[[95,[3]]]],17]]]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[110,[3,109]],110],[[110,[3,109]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[102,[[0,[22,62]]]]],[[102,[[0,[22,62]]]]]],[111,111],[112,112],[113,113],[[[110,[22,22]]],[[110,[22,22]]]],[106,106],[[]],[[]],[[]],[[]],[[]],[[]],[[[102,[62]],[18,[62]]],[[110,[62,111]]]],[[[102,[62]],[110,[62,111]]],[[110,[62,113]]]],0,[[[102,[62]],62],[[110,[62,113]]]],[[[102,[62]],62],[[110,[62,112]]]],[[],106],[6],[6],[6],[6],[6],[6],[110],[6],[6],[6],[6],[6],[6],[6],[6],[6],[110],[6],[[[102,[62]],[110,[62,113]]],[[110,[62,113]]]],[6],[6],[6],[6],[6],[6],[6],[6],[[[102,[62]]],[[110,[62,111]]]],[[[102,[62]]],[[110,[62,113]]]],[[[102,[62]]],[[110,[62,112]]]],[[106,106],16],[[[102,[62]]],6],[[[102,[62]],[110,[62,113]]],[[18,[62]]]],[[[102,[[0,[42,62]]]],7],43],[[[114,[[0,[42,62]]]],7],43],[[115,7],43],[[111,7],43],[[112,7],43],[[113,7],43],[[[110,[42,42]],7],43],[[106,7],43],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[102,[62]]]],[[[102,[62]]]],[[[102,[62]]]],[[[102,[62]]],6],[[110,116]],[[110,6]],[[110,[117,[6]]]],[[110,6]],[[110,[117,[6]]]],[[110,116]],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[110,118],[110,118],[[[102,[62]],[0,[17,22]]],18],[[[102,[62]],[18,[62]]],[[110,[62,112]]]],[[[102,[62]],[110,[62,112]]],[[110,[62,111]]]],[[[110,[3,109]],3],[[110,[3,109]]]],0,[[1,1],[[102,[62]]]],[[],106],[110,6],[[[102,[62]]],[[114,[62]]]],[[],106],[[[110,[3,112]],106],[[110,[3,112]]]],[[[102,[62]],110,106],[[110,[62,113]]]],[[[102,[62]],106]],[[]],[[]],[[]],[[]],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,[[[119,[19]],[119,[19]]],[[119,[19]]]],[[[119,[19]],[119,[19]]]],[[[119,[19]],19]],[[[120,[81]]]],[[[120,[81]],[120,[81]]]],[[[120,[81]]]],[[[120,[81]]]],[[[120,[81]]]],[[[120,[81]],81]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[120,[[0,[22,81]]]]],[[120,[[0,[22,81]]]]]],[[[122,[[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]],[[122,[[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]]],[[[123,[[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]],[[123,[[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]]],[[[91,[[0,[22,81]]]]],[[91,[[0,[22,81]]]]]],[[[119,[22]]],[[119,[22]]]],[[]],[[]],[[]],[[]],[[]],[[[91,[81]],110,119]],[[[91,[81]],110,119]],[[[122,[81,[121,[81]]]]],81],[[91,23,110,119],104],[[],[[119,[19]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[[91,[81]]],[[120,[81]]]],[[[119,[94]],119],16],[[[120,[81]]],16],[[[120,[[0,[42,81]]]],7],43],[[[122,[[0,[42,81]],[0,[42,[121,[[0,[42,81]]]]]]]],7],43],[[[123,[[0,[42,81]],[0,[42,[121,[[0,[42,81]]]]]]]],7],43],[[[91,[[0,[42,81]]]],7],43],[[[119,[42]],7],43],[[]],[[]],[[]],[[]],[[]],0,[[[91,[81]]],[[18,[81]]]],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[[119,[19]],[119,[19]]],[[119,[19]]]],[[[119,[19]],[119,[19]]]],[[[119,[19]],19]],[91,[[120,[81]]]],[1,[[91,[81]]]],[[],[[104,[[91,[81]]]]]],[[[120,[81]]]],[[]],[[]],[[]],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[],24],0,[[[122,[81,[121,[81]]]]],[[120,[81]]]],[[[122,[81,[121,[81]]]],81]],[[91,[120,[81]]],[[9,[[122,[81,[121,[81]]]],115]]]],[[]],[[]],[[]],[[]],[[]],[[[91,[81]]],104],0,0,0,[[]],[[]],[[]],[[]],[[[124,[[0,[22,81]]]]],[[124,[[0,[22,81]]]]]],[[[125,[[0,[22,81]]]]],[[125,[[0,[22,81]]]]]],[[]],[[]],[[91,23],104],[6],[6],[6],[6],[6],[6],[[[124,[[0,[42,81]]]],7],43],[[[125,[[0,[42,81]]]],7],43],[[]],[[]],[[],6],[[],6],[[]],[[]],[[],[[125,[81]]]],[120,[[125,[81]]]],0,0,[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[91,[120,[81]]],[[9,[[122,[81,[121,[81]]]],115]]]],[[]],[[]],0,0,0,0,0,0,0,0,0,[[],126],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[128,[[0,[22,127]],[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]],[[128,[[0,[22,127]],[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]]],[[[130,[[0,[22,129]],[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]],[[130,[[0,[22,129]],[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]]],[[[126,[[0,[22,81]],22]]],[[126,[[0,[22,81]],22]]]],[[[131,[[0,[22,81]]]]],[[131,[[0,[22,81]]]]]],[[]],[[]],[[]],[[]],[[],104],[[[128,[127,81,[131,[81]]]],81],104],[[[130,[129,81,[131,[81]]]],81],104],[[],104],[[[128,[127,81,[131,[81]]]]],104],[[[130,[129,81,[131,[81]]]]],104],[6],[6],[6],[[[126,[81]]]],[6],[[[131,[81]]]],[6],[6],[6],[6],[6],[6],[6],[6],[[[130,[129,81,[121,[81]]]]],129],[[[128,[[0,[42,127]],[0,[42,81]],[0,[42,[121,[[0,[42,81]]]]]]]],7],43],[[[130,[[0,[42,129]],[0,[42,81]],[0,[42,[121,[[0,[42,81]]]]]]]],7],43],[[[126,[[0,[42,81]],42]],7],43],[[[131,[[0,[42,81]]]],7],43],[[]],[[]],[[]],[[]],[[]],[[[131,[81]]]],[127,[[128,[127,81,[121,[81]]]]]],[[],6],[129,[[130,[129,81,[121,[81]]]]]],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[],[[131,[81]]]],[[],104],[[[128,[127,81,[131,[81]]]]],[[104,[81]]]],[[],104],[[[128,[127,81,[131,[81]]]]],104],[[]],[[[128,[127,81,[131,[81]]]]],[[131,[81]]]],[[[130,[129,81,[131,[81]]]]],[[131,[81]]]],[[],126],[[]],[[]],[[]],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[]],[[]],[[]],[[]],[[],104],[[[130,[129,81,[131,[81]]]],81],104],[[],104],[[[130,[129,81,[131,[81]]]]],104]],"p":[[15,"u32"],[3,"Coordinates"],[8,"Field"],[3,"Choice"],[3,"CtOption"],[15,"usize"],[3,"Formatter"],[3,"Error"],[4,"Result"],[3,"SqrtTables"],[15,"u128"],[15,"str"],[8,"Fn"],[3,"Global"],[3,"Box"],[15,"bool"],[8,"IntoIterator"],[3,"Vec"],[8,"FieldExt"],[8,"Send"],[8,"Sync"],[8,"Clone"],[8,"RngCore"],[3,"TypeId"],[4,"Assigned"],[3,"Value"],[8,"FnOnce"],[3,"Region"],[3,"Advice"],[3,"Column"],[3,"AssignedCell"],[4,"Error"],[3,"Instance"],[3,"Table"],[3,"TableColumn"],[3,"Fixed"],[8,"Layouter"],[3,"NamespacedLayouter"],[3,"Cell"],[3,"RegionIndex"],[3,"RegionStart"],[8,"Debug"],[6,"Result"],[3,"SimpleFloorPlanner"],[8,"RegionLayouter"],[8,"TableLayouter"],[8,"FromIterator"],[8,"Neg"],[3,"String"],[4,"Option"],[8,"Assignment"],[3,"V1Pass"],[3,"V1"],[8,"FnMut"],[3,"RegionShape"],[4,"RegionColumn"],[4,"Ordering"],[3,"HashSet"],[3,"Selector"],[4,"Any"],[3,"MockProver"],[8,"Group"],[3,"CircuitGates"],[3,"CircuitLayout"],[4,"FailureLocation"],[4,"VerifyFailure"],[3,"DrawingArea"],[4,"DrawingAreaErrorKind"],[3,"Range"],[8,"PrimeGroup"],[8,"Circuit"],[3,"CircuitCost"],[3,"MarginalProofSize"],[3,"ProofSize"],[3,"Column"],[3,"Region"],[3,"VirtualCell"],[3,"Gate"],[3,"Constraint"],[4,"Expression"],[8,"CurveAffine"],[3,"BatchVerifier"],[15,"u8"],[3,"ConstraintSystem"],[8,"ColumnType"],[3,"FixedQuery"],[3,"AdviceQuery"],[3,"InstanceQuery"],[3,"VerifyingKey"],[3,"ProvingKey"],[3,"Params"],[8,"Default"],[8,"Into"],[8,"PartialEq"],[3,"Constraint"],[3,"Constraints"],[3,"PinnedConstraintSystem"],[3,"VirtualCells"],[3,"SingleVerifier"],[3,"PinnedVerificationKey"],[3,"Error"],[3,"EvaluationDomain"],[8,"Hash"],[6,"Result"],[3,"Demand"],[3,"Rotation"],[8,"Error"],[8,"VerificationStrategy"],[8,"Basis"],[3,"Polynomial"],[3,"Coeff"],[3,"LagrangeCoeff"],[3,"ExtendedLagrangeCoeff"],[3,"PinnedEvaluationDomain"],[4,"Error"],[3,"RangeFull"],[3,"RangeFrom"],[8,"Iterator"],[3,"Blind"],[3,"MSM"],[8,"EncodedChallenge"],[3,"Guard"],[3,"Accumulator"],[3,"ProverQuery"],[3,"VerifierQuery"],[3,"ChallengeScalar"],[8,"Read"],[3,"Blake2bRead"],[8,"Write"],[3,"Blake2bWrite"],[3,"Challenge255"],[8,"CurveExt"],[8,"SqrtRatio"],[8,"Chip"],[13,"Column"],[13,"Selector"],[13,"InRegion"],[13,"OutsideRegion"],[13,"ConstraintNotSatisfied"],[13,"CellNotAssigned"],[13,"InstanceCellNotAssigned"],[13,"Permutation"],[13,"ConstraintPoisoned"],[13,"Lookup"],[8,"FloorPlanner"],[13,"Trivial"],[13,"Rational"],[13,"Transcript"],[13,"ColumnNotInPermutation"],[13,"NotEnoughRowsAvailable"],[13,"Constant"],[13,"Selector"],[13,"Fixed"],[13,"Advice"],[13,"Instance"],[13,"Negated"],[13,"Sum"],[13,"Product"],[13,"Scaled"],[8,"Transcript"],[8,"TranscriptRead"],[8,"TranscriptWrite"]]}\ +"halo2_proofs":{"doc":"halo2_proofs","t":[0,0,0,2,0,0,0,16,16,16,18,3,8,8,16,18,8,8,8,18,18,16,16,16,8,3,18,18,18,10,10,10,10,5,5,11,11,11,11,11,11,5,11,10,11,11,11,11,11,11,10,11,11,10,5,11,11,11,11,10,10,10,11,10,10,10,10,10,10,10,11,11,11,11,10,10,10,11,11,10,5,5,11,10,10,5,11,11,11,10,5,5,10,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,10,3,3,8,16,8,16,3,3,3,3,16,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,10,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,4,8,3,13,8,10,11,10,11,10,11,10,10,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,13,2,3,3,13,13,4,13,13,13,3,13,13,4,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,13,13,3,4,4,8,3,13,8,3,13,8,16,13,3,3,13,3,4,4,3,13,13,3,8,16,3,13,13,3,13,13,13,13,13,13,16,3,3,13,3,13,13,3,13,3,13,13,3,13,13,8,3,3,13,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,10,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,8,3,4,3,3,3,13,3,3,3,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,5,11,11,11,11,11,11,3,3,12,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,5,11,11,3,3,3,3,8,16,8,8,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11],"n":["arithmetic","circuit","dev","pasta","plonk","poly","transcript","AffineExt","Base","Base","CURVE_ID","Coordinates","CurveAffine","CurveExt","CurveExt","DELTA","Field","FieldExt","Group","MODULUS","ROOT_OF_UNITY_INV","Scalar","ScalarExt","ScalarExt","SqrtRatio","SqrtTables","TWO_INV","T_MINUS1_OVER2","ZETA","a","a","b","b","best_fft","best_multiexp","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","compute_inner_product","conditional_select","coordinates","cube","default","deref","deref","deref_mut","deref_mut","double","drop","drop","endo","eval_polynomial","fmt","fmt","from","from","from_bytes_wide","from_u128","from_xy","from_xy","get_lower_128","get_lower_32","group_add","group_scale","group_sub","group_zero","hash_to_curve","init","init","into","into","invert","is_on_curve","is_on_curve","is_zero","is_zero_vartime","jacobian_coordinates","kate_division","lagrange_interpolate","new","new_jacobian","one","parallelize","pow","pow_by_t_minus1_over2","pow_vartime","random","recursive_butterfly_arithmetic","small_multiexp","sqrt","sqrt_alt","sqrt_alt","sqrt_ratio","sqrt_ratio","square","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","u","v","vzip","vzip","x","y","zero","AssignedCell","Cell","Chip","Config","Layouter","Loaded","NamespacedLayouter","Region","RegionIndex","RegionStart","Root","SimpleFloorPlanner","Table","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_fixed","assign_region","assign_region","assign_table","assign_table","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","cell","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cloned","cloned","config","constrain_constant","constrain_equal","constrain_instance","constrain_instance","copied","copied","copy_advice","cube","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","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","eq","error_if_known_and","evaluate","evaluate","floor_planner","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","get_root","get_root","init","init","init","init","init","init","init","init","init","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","namespace","neg","pop_namespace","pop_namespace","push_namespace","push_namespace","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_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","unknown","unzip","value","value_field","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_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","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","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","0","0","CellNotAssigned","CircuitCost","CircuitGates","CircuitLayout","ConstraintNotSatisfied","ConstraintPoisoned","FailureLocation","InRegion","InstanceCellNotAssigned","Lookup","MockProver","OutsideRegion","Permutation","VerifyFailure","assert_satisfied","assign_advice","assign_fixed","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","circuit_dot_graph","collect","copy","cost","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","enable_selector","enter_region","eq","eq","exit_region","fill_from_row","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","init","init","init","init","init","into","into","into","into","into","mark_equality_cells","metadata","pop_namespace","push_namespace","queries_to_csv","query_instance","render","run","show_equality_constraints","show_labels","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","verify","view_height","view_width","vzip","vzip","vzip","vzip","vzip","offset","region","row","cell_values","column","column","column","constraint","constraint","gate","gate","gate_offset","gate_offset","location","location","location","lookup_index","offset","region","region","row","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_into","clone_into","cmp","cmp","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","init","init","init","init","init","into","into","into","into","into","partial_cmp","partial_cmp","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","Circuit","Column","ColumnNotInPermutation","ColumnType","Config","Constant","Constraint","ConstraintSystem","ConstraintSystemFailure","Constraints","Error","Expression","Fixed","Fixed","Fixed","FixedQuery","FloorPlanner","FloorPlanner","Instance","Instance","Instance","InstanceQuery","InstanceTooLarge","InvalidInstances","Negated","NotEnoughColumnsForConstants","NotEnoughRowsAvailable","Opening","Output","PinnedConstraintSystem","PinnedVerificationKey","Product","ProvingKey","Rational","Scaled","Selector","Selector","SingleVerifier","Sum","Synthesis","TableColumn","Transcript","Trivial","VerificationStrategy","VerifyingKey","VirtualCells","Zero","add","add","add","add","add","add","add","add_assign","add_assign","add_proof","advice_column","assign_advice","assign_fixed","blinding_factors","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","column_type","complex_selector","configure","copy","create_gate","create_proof","cube","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_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","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable","enable_constant","enable_equality","enable_equality","enable_selector","enter_region","eq","eq","eq","eq","eq","eq","eq","eq","evaluate","evaluate","exit_region","fill_from_row","finalize","fixed_column","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","get_domain","get_vk","hash","hash","hash","hash","hash","hash","hash","hash_into","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","instance_column","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","lookup","lookup_table_column","minimum_rows","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","neg","neg","neg","new","new","numerator","partial_cmp","partial_cmp","pinned","pinned","pop_namespace","process","process","provide","push_namespace","query_advice","query_any","query_fixed","query_instance","query_instance","query_selector","selector","set_minimum_degree","source","square","square","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","synthesize","synthesize","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","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","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","with_selector","without_witnesses","0","0","1","0","0","current_k","0","0","0","0","0","0","0","0","0","1","1","1","0","Basis","Coeff","Error","EvaluationDomain","ExtendedLagrangeCoeff","LagrangeCoeff","OpeningError","PinnedEvaluationDomain","Polynomial","Rotation","SamplingError","add","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","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","coeff_from_vec","coeff_to_extended","commitment","constant_extended","constant_lagrange","cur","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","divide_by_vanishing_poly","drop","drop","drop","drop","drop","drop","drop","drop","empty_coeff","empty_extended","empty_lagrange","eq","extended_len","extended_to_coeff","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","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","into","into","into","into","into","into","into","into","iter","iter_mut","l_i_range","lagrange_from_vec","lagrange_to_coeff","mul","multiopen","new","next","num_coeffs","pinned","prev","rotate","rotate_extended","rotate_omega","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_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","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","Accumulator","Blind","Guard","MSM","Params","add","add_assign","add_assign","add_constant_term","add_msm","add_to_g_scalars","add_to_u_scalar","add_to_w_scalar","append_term","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","commit","commit_lagrange","compute_g","create_proof","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","empty_msm","eq","eval","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","g","get_g","init","init","init","init","init","into","into","into","into","into","mul","mul_assign","mul_assign","new","new","read","scale","to_owned","to_owned","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","u_packed","use_challenges","use_g","verify_proof","vzip","vzip","vzip","vzip","vzip","write","ProverQuery","VerifierQuery","blind","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","create_proof","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","new_commitment","new_msm","point","poly","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","Blake2bRead","Blake2bWrite","Challenge255","ChallengeScalar","EncodedChallenge","Input","Transcript","TranscriptRead","TranscriptWrite","as_challenge_scalar","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","common_point","common_point","common_point","common_scalar","common_scalar","common_scalar","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","finalize","fmt","fmt","fmt","fmt","from","from","from","from","get_scalar","get_scalar","init","init","init","init","init","init","into","into","into","into","new","new","read_point","read_point","read_scalar","read_scalar","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge_scalar","to_owned","to_owned","to_owned","to_owned","translate","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","write_point","write_point","write_scalar","write_scalar"],"q":["halo2_proofs","","","","","","","halo2_proofs::arithmetic","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::circuit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::circuit::floor_planner","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::circuit::layouter","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::circuit::layouter::RegionColumn","","halo2_proofs::dev","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::dev::FailureLocation","","","halo2_proofs::dev::VerifyFailure","","","","","","","","","","","","","","","","","","halo2_proofs::dev::cost","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::dev::metadata","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::plonk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::plonk::Assigned","","","halo2_proofs::plonk::Error","","","halo2_proofs::plonk::Expression","","","","","","","","","","","","halo2_proofs::poly","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::poly::commitment","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::poly::multiopen","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2_proofs::transcript","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["This module provides common utilities, traits and …","Traits and structs for implementing circuit components.","Tools for developing circuits.","","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.","The affine coordinates of a point on an elliptic 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","Generator of the $t-order$ multiplicative subgroup","This trait represents an element of a field.","This trait is a common interface for dealing with elements …","This represents an element of a group with basic …","Modulus of the field written as a string for display …","Inverse of PrimeField::root_of_unity()","The group is assumed to be of prime order $p$. Scalar is …","The scalar field of this elliptic curve.","The scalar field of this elliptic curve.","A trait that exposes additional operations related to …","Tables used for square root computation.","Inverse of $2$ in the field.","The value $(T-1)/2$ such that $2^S \\\\cdot T = p - 1$ with …","Element of multiplicative order $3$.","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) …","","","Returns the argument unchanged.","Returns the argument unchanged.","Obtains a field element that is congruent to the provided …","Obtains a field element congruent to the integer v.","Obtains a point given $(x, y)$, failing if it is not on the","Obtains a Coordinates value given $(x, y)$, failing if it …","Gets the lower 128 bits of this field element when …","Gets the lower 32 bits of this field element when expressed","Adds rhs to this group element.","Scales this group element by a scalar.","Subtracts rhs from this group element.","Returns the additive identity of the group.","Requests a hasher that accepts messages and returns …","","","Calls U::from(self).","Calls U::from(self).","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 …","Build tables given parameters for the perfect hash.","Obtains a point given Jacobian coordinates $X : Y : Z$, …","Returns the one element of the field, the multiplicative …","This simple utility function will parallelize an operation …","Exponentiates self by by, where by is a little-endian order","Raise this field element to the power Self::T_MINUS1_OVER2.","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()).","Same as sqrt_ratio(u, one()) but more efficient.","Computes:","Computes:","Squares this element.","","","","","","","","Returns the u-coordinate.","Returns the v-coordinate.","","","Returns the x-coordinate.","Returns the y-coordinate.","Returns the zero element of the field, the additive …","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 lookup table in the circuit.","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.","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 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.","","","","","","","","","","","","","","","","","","","","","","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.","Takes each element in the Iterator: if it is …","Gets the “root” of this assignment, bypassing the …","","","","","","","","","","","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 …","","","","","","","","","","","Enters into a namespace.","","Exits out of the existing namespace.","","Creates a new (sub)namespace and enters into it.","","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","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).","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 used in an active gate was not assigned to.","","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 …","The reasons why a particular circuit is not satisfied.","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 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).","Marks cells involved in equality constraints, in red.","Metadata about circuits.","","","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 …","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 permutation is not satisfied.","The index of the lookup that is not satisfied. These …","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.","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 …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","This is a trait that circuits provide implementations for …","A column with an index and type","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 …","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 …","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","The output type of this verification strategy after …","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","A selector, representing a fixed boolean value per row of …","This is a virtual selector","A verifier that checks a single proof at a time.","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.","Transcript error","A value that does not require inversion to evaluate.","Trait representing a strategy for verifying Halo 2 proofs.","This is a verifying key which allows for the verification …","Exposes the “virtual cells” that can be queried while …","The field element zero.","","","","","","","","","","Adds a proof to the batch.","Allocate a new advice column","Assign an advice column value (witness)","Assign a fixed value","Compute the number of blinding factors necessary to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Type of this column.","Allocate a new complex selector that can appear anywhere …","The circuit is given an opportunity to describe the exact …","Assign two cells to have the same value","Creates a new gate.","This creates a proof for the provided circuit when given …","Cubes this element.","","","Compute the degree of this polynomial","Compute the degree of the constraint system (the maximum …","Returns the denominator, if non-trivial.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Doubles this element.","","","","","","","","","","","","","","","","","","","","","","","","Enable this selector at the given offset within the given …","Enables this fixed column to be used for global constant …","Enable equality on this TableColumn.","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 …","Exits the current region.","Fills a fixed column starting from the given row with …","Finalizes the batch and checks its validity.","Allocate a new fixed column","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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.","Get the underlying EvaluationDomain.","Get the underlying VerifyingKey.","","","","","","","","Hashes a verification key into a transcript.","","","","","","","","","","","","","","","","","","","","","","","","Allocate a new instance column","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.","Add a lookup argument for some input expressions and table …","Allocates a new fixed column that can be used in a lookup …","Returns the minimum necessary rows that need to exist in …","","","","","","","","","","","","Constructs a new batch verifier.","Constructs a new single proof verifier.","Returns the numerator.","","","Obtain a pinned version of this constraint system; a …","Obtains a pinned representation of this verification key …","Exits out of the existing namespace.","Obtains an MSM from the verifier strategy and yields back …","","","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","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.","Allocate a new (simple) selector. Simple selectors cannot …","Sets the minimum degree required by the circuit, which can …","","Squares this element.","Square this expression.","","","","","","","","","","Given the provided cs, synthesize the given circuit.","Given the provided cs, synthesize the circuit. The …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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 …","","","","","","The current value of k being used.","","","","","","","","","","","","","","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 …","The polynomial is defined as coefficients of Lagrange …","OpeningProof is not well-formed","Represents the minimal parameters that determine an …","Represents a univariate polynomial defined over a field …","Describes the relative rotation of a vector. Negative …","Caller needs to re-sample a point","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Obtains a polynomial in coefficient form when given a …","This takes us from an n-length coefficient vector into a …","This module contains an implementation of the polynomial …","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","This takes us from the extended evaluation domain and gets …","","","","","","","","","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).","Iterate over the values, which are either in coefficient …","Iterate over the values mutably, which are either in …","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 …","","This module contains an optimisation of the polynomial …","This constructs a new evaluation domain object based on …","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","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 …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An accumulator instance consisting of an evaluation claim …","Wrapper type around a blinding factor.","A guard returned by the verifier","A multiscalar multiplication in the polynomial commitment …","These are the public parameters for the polynomial …","","","","Add a value to the first entry of g_scalars.","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","Add arbitrary term (the scalar and the point)","","","","","","","","","","","","","","","","","","","","","This computes a commitment to a polynomial described by …","This commits to a polynomial using its evaluations over …","Computes G = ⟨s, params.g⟩","Create a polynomial commitment opening proof for the …","","","","","","","","","","","","","","","","","Generates an empty multiscalar multiplication struct using …","","Perform multiexp and check that it results in zero","","","","","","Returns the argument unchanged.","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 …","Getter for g generators","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Create a new, empty MSM using the provided parameters.","Initializes parameters for the curve, given a random …","Reads params from a buffer.","Scale all scalars in the MSM by some scaling factor","","","","","","","","","","","","","","","","","","","","","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","Checks to see if the proof represented within transcript …","","","","","","Writes params to a buffer.","A polynomial query at a point","A polynomial query at a point","blinding factor of polynomial","","","","","","","","","Create a multi-opening proof","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Create a new verifier query based on a commitment","Create a new verifier query based on a linear combination …","point at which polynomial is queried","coefficients of polynomial","","","","","","","","","Verify a multi-opening proof","","","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 …","Generic transcript view (from either the prover or verifier…","Transcript view from the perspective of a verifier that …","Transcript view from the perspective of a prover that has …","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 …","","","","","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.","","","","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":[0,0,0,0,0,0,0,132,132,81,132,0,0,0,81,19,0,0,0,19,19,62,132,81,0,0,19,133,19,132,81,132,81,0,0,2,10,2,10,2,2,0,2,81,3,2,2,10,2,10,3,2,10,132,0,2,10,2,10,19,19,81,2,19,133,62,62,62,62,132,2,10,2,10,3,132,81,3,3,132,0,0,10,132,3,0,19,133,3,3,0,0,3,133,10,133,10,3,2,2,10,2,10,2,10,2,2,2,10,2,2,3,0,0,0,134,0,134,0,0,0,0,37,0,0,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,28,28,28,34,28,37,38,37,38,26,44,40,41,39,31,28,34,38,26,44,40,41,39,31,28,34,38,31,26,40,41,39,31,26,40,41,39,31,26,26,134,28,28,37,38,26,26,31,26,26,26,44,40,40,41,41,39,31,28,34,38,26,44,40,41,39,31,28,34,38,26,26,44,40,41,39,31,28,34,38,38,41,26,26,31,0,26,44,40,41,39,31,28,34,38,26,26,44,40,40,41,41,39,31,28,28,34,34,38,26,37,38,26,44,40,41,39,31,28,34,38,26,44,40,41,39,31,28,34,38,26,26,26,0,134,26,26,26,26,26,26,26,26,26,26,26,37,26,37,38,37,38,26,26,26,26,26,26,26,26,26,26,26,44,26,26,40,41,39,31,26,26,26,44,40,41,39,31,28,34,38,26,44,40,41,39,31,28,34,38,26,44,40,41,39,31,28,34,38,26,26,31,31,26,44,40,41,39,31,28,34,38,26,0,0,52,52,53,52,53,52,52,53,52,53,52,53,52,53,52,53,52,52,53,52,53,52,52,52,53,53,52,53,52,53,52,53,52,56,0,0,0,56,0,45,55,45,55,45,55,46,45,55,55,56,55,56,55,56,55,56,56,55,45,55,45,55,55,56,55,56,55,56,45,55,56,55,56,55,56,56,56,56,55,56,45,55,55,56,55,56,55,55,55,56,55,56,55,56,55,56,55,56,135,136,66,0,0,0,66,66,0,65,66,66,0,65,66,0,61,61,61,65,66,63,64,61,65,66,63,64,61,0,63,61,0,64,65,66,63,64,61,65,66,63,64,61,65,66,63,64,61,61,61,65,66,61,61,65,65,66,66,63,63,64,61,65,66,63,64,61,65,66,63,64,61,65,66,63,64,61,64,0,61,61,63,61,64,61,64,64,65,66,63,65,66,63,64,61,65,66,63,64,61,65,66,63,64,61,61,64,64,65,66,63,64,61,137,137,138,139,140,141,142,139,143,140,141,140,141,139,144,142,144,140,140,141,141,0,0,0,72,73,74,72,73,74,72,73,74,72,73,74,72,73,74,72,73,74,72,73,74,72,73,74,72,73,74,72,72,72,72,73,74,72,73,74,72,73,74,72,73,74,0,0,0,0,0,75,77,78,79,76,75,77,78,79,76,75,76,75,76,75,77,75,77,78,79,76,75,77,78,79,76,75,77,78,79,76,75,77,78,79,76,75,75,77,77,78,78,79,79,76,76,75,75,75,77,77,77,78,78,79,79,76,76,76,75,77,78,79,76,75,77,78,79,76,75,77,75,76,75,77,78,79,76,75,77,78,79,76,75,77,78,79,76,75,77,78,79,76,75,77,78,79,76,0,60,80,0,0,0,0,0,32,0,0,32,0,71,80,0,0,32,0,0,0,0,60,80,0,0,71,0,60,80,0,32,32,80,32,32,32,108,0,0,80,0,25,80,0,80,0,80,32,0,32,25,0,0,0,25,25,25,25,25,25,25,80,25,25,82,84,51,51,84,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,25,30,29,36,33,60,59,86,87,88,35,80,84,89,90,25,30,29,36,33,60,59,86,87,88,35,80,84,89,90,30,60,30,84,71,51,84,0,25,84,82,80,84,25,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,25,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,59,84,35,84,51,51,25,30,29,36,33,60,59,35,25,80,51,51,82,84,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,32,82,99,89,100,90,25,25,25,25,25,30,30,30,30,29,36,33,60,60,60,60,59,86,87,88,35,80,95,95,95,96,84,97,98,32,32,82,99,89,100,90,89,90,30,29,36,33,60,59,35,89,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,84,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,96,25,59,25,0,0,84,84,84,25,25,25,25,80,80,25,25,25,25,80,82,99,25,30,60,84,89,51,108,99,32,51,98,98,98,51,98,98,84,84,32,25,80,25,25,25,25,25,25,80,25,25,145,71,25,30,29,36,33,60,59,86,87,88,35,80,84,89,90,32,25,30,30,30,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,0,25,30,29,36,33,60,59,86,87,88,35,80,95,96,84,97,98,32,82,99,89,100,90,96,71,146,147,147,148,149,150,151,152,153,154,155,156,157,158,159,157,158,159,106,0,0,0,0,0,0,115,0,0,0,115,110,102,114,115,111,112,113,110,106,102,114,115,111,112,113,110,106,102,111,112,113,110,106,102,111,112,113,110,106,102,102,0,102,102,106,102,114,115,111,112,113,110,110,106,102,114,115,111,112,113,110,110,106,102,102,114,115,111,112,113,110,106,102,102,102,106,102,102,102,114,115,111,112,113,110,106,102,114,115,111,112,113,110,106,102,102,102,102,110,110,110,110,110,110,102,114,115,111,112,113,110,106,102,114,115,111,112,113,110,106,110,110,102,102,102,110,0,102,106,110,102,106,110,102,102,102,111,112,113,110,106,102,114,115,111,112,113,110,106,102,114,115,111,112,113,110,106,102,114,115,111,112,113,110,106,102,114,115,111,112,113,110,106,119,0,0,0,0,0,119,119,119,120,120,120,120,120,120,120,122,123,91,119,120,122,123,91,119,120,122,123,91,119,120,122,123,91,119,91,91,122,0,119,120,122,123,91,119,120,122,123,91,119,120,122,123,91,119,91,119,120,120,122,123,91,119,120,122,123,91,119,123,91,120,122,123,91,119,120,122,123,91,119,119,119,119,120,91,91,120,120,122,123,91,119,120,122,123,91,119,120,122,123,91,119,120,122,123,91,119,123,122,122,0,120,122,123,91,119,91,0,0,124,124,125,124,125,124,125,124,125,0,124,125,124,125,124,125,124,125,124,125,124,125,124,125,125,125,124,124,124,125,124,125,124,125,124,125,0,124,125,0,0,0,0,0,121,0,0,0,121,128,130,126,131,128,130,126,131,128,130,126,131,128,130,126,131,160,128,130,160,128,130,128,130,126,126,131,131,128,130,126,131,128,130,126,131,130,128,130,126,131,128,130,126,131,121,131,128,128,130,130,126,131,128,130,126,131,121,131,161,128,161,128,160,128,130,160,128,130,126,131,126,128,130,126,131,128,130,126,131,128,130,126,131,128,130,126,131,162,130,162,130],"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,0,0,[[]],[[]],[[]],[[]],[1],[[]],[[]],[[]],[[]],[[]],[2,2],[[]],[[],3],[[2,2,4],2],[[],[[5,[2]]]],[[]],[[],2],[6],[6],[6],[6],[[]],[6],[6],[[]],[3,3],[[2,7],[[9,[8]]]],[[10,7],[[9,[8]]]],[[]],[[]],[[]],[11],[[],5],[[],[[5,[2]]]],[[],11],[[],1],[[]],[[]],[[]],[[]],[12,[[15,[13,14]]]],[[],6],[[],6],[[]],[[]],[[],5],[[],4],[[],4],[[],4],[[],16],[[]],[[17,3],[[18,[3]]]],[[],[[18,[19]]]],[[1,6],10],[[],5],[[]],[[[0,[13,20,21,22]]]],[[]],[[]],[[]],[23],[[6,6]],[[]],[[],5],[[]],[10],[[]],[10],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[2],[2],[[]],[[]],[2],[2],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[26,[[25,[3]]]],[26,[3]]]],[[[26,[[25,[3]]]],3]],[[[26,[25]],[26,[3]]]],[[26,26]],[[26,26]],[[[26,[25]],3]],[[26,26]],[[26,26]],[[26,26]],[[26,26]],[[26,27],26],[26,26],[26,26],[[26,27]],[[[28,[3]],[30,[29]],6],[[9,[[31,[3]],32]]]],[[[28,[3]],[30,[29]],6],[[9,[[31,[3]],32]]]],[[[28,[3]],[30,[33]],6,[30,[29]],6],[[9,[[31,[3,3]],32]]]],[[[34,[3]],35,6],[[9,[32]]]],[[[28,[3]],[30,[36]],6],[[9,[[31,[3]],32]]]],[[],[[9,[32]]]],[[[38,[3,[37,[3]]]]],[[9,[32]]]],[[],[[9,[32]]]],[[[38,[3,[37,[3]]]]],[[9,[32]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[31,[3]]],39],[[[26,[22]]],[[26,[22]]]],[40,40],[41,41],[39,39],[[[31,[22,[0,[22,3]]]]],[[31,[22,[0,[22,3]]]]]],[[]],[[]],[[]],[[]],[[]],[26,26],[26,26],[[]],[[[28,[3]],39],[[9,[32]]]],[[[28,[3]],39,39],[[9,[32]]]],[[39,[30,[33]],6],[[9,[32]]]],[[[38,[3,[37,[3]]]],39,[30,[33]],6],[[9,[32]]]],[26,26],[26,26],[[[31,[22,3]],28,[30,[29]],6],[[9,[[31,[22,3]],32]]]],[26,[[26,[[25,[3]]]]]],[[],26],[6],[6],[40],[6],[41],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[26,[[26,[[25,[3]]]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[[38,[3,[37,[3]]]]]],[[41,41],16],[[26,27],[[9,[32]]]],[[[26,[[25,[3]]]]],[[26,[3]]]],[[[31,[[25,[3]],3]]],[[31,[3,3]]]],0,[[[26,[42]],7],43],[[44,7],43],[[40,7],43],[[41,7],43],[[39,7],43],[[[31,[42,[0,[42,3]]]],7],43],[[[28,[[0,[42,3]]]],7],43],[[[34,[[0,[42,3]]]],7],43],[[[38,[[0,[42,3]],[0,[42,[37,[[0,[42,3]]]]]]]],7],43],[[]],[[[26,[3]]],[[26,[[25,[3]]]]]],[[]],[[]],[6,40],[[]],[6,41],[[]],[[]],[45,[[28,[3]]]],[[]],[[]],[46,[[34,[3]]]],[[]],[17,[[26,[47]]]],[[]],[[[38,[3,[37,[3]]]]]],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[26,[[26,[[25,[3]]]]]],[26,[[26,[[25,[3]]]]]],[[],26],0,[[]],[[26,27],26],[[26,26]],[[26,26]],[[26,26]],[[26,26]],[[26,26]],[[26,26]],[[[26,[[25,[3]]]],[26,[3]]]],[[[26,[[25,[3]]]],3]],[[[26,[25]],[26,[3]]]],[[[26,[25]],3]],[[],38],[[[26,[48]]]],[[[50,[49]]]],[[[38,[3,[37,[3]]]],[50,[49]]]],[[]],[[[38,[3,[37,[3]]]]]],[26,[[26,[[25,[3]]]]]],[[[26,[[25,[3]]]],3]],[[[26,[[25,[3]]]],[26,[3]]]],[[26,26]],[[[26,[25]],[26,[3]]]],[[26,26]],[[26,26]],[[26,26]],[[26,26]],[[[26,[25]],3]],[[26,26]],[[[18,[[30,[36]]]]],[[9,[32]]]],[26,[[26,[[25,[3]]]]]],[[]],[[]],[[]],[[]],[[]],[26],[[26,6],[[18,[26]]]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],26],[26],[[[31,[3]]],26],[[[31,[3]]],[[26,[[25,[3]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[26,26],26],0,0,[[[52,[3,[51,[3]]]]],[[9,[32]]]],[[[52,[3,[51,[3]]]]],[[9,[32]]]],[[]],[[]],[[]],[[]],[[[52,[3,[51,[3]]]],39,[30,[33]],6],[[9,[32]]]],[6],[6],[6],[6],[6],[6],[[53,7],43],[[[52,[[0,[42,3]],[0,[42,[51,[[0,[42,3]]]]]]]],7],43],[[]],[[]],[[[52,[3,[51,[3]]]]]],[[],6],[[],6],[[]],[[]],[[[52,[3,[51,[3]]]],[50,[49]]]],[[[52,[3,[51,[3]]]]]],[[[18,[[30,[36]]]]],[[9,[32]]]],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[]],[[]],0,0,0,0,0,0,[[13,[30,[29]],6,54],[[9,[39,32]]]],[[55,13,[30,[29]],6,54],[[9,[39,32]]]],[[13,[30,[29]],6,25],[[9,[39,32]]]],[[55,13,[30,[29]],6,[25,[3]]],[[9,[39,32]]]],[[13,[30,[33]],6,[30,[29]],6],[[9,[32]]]],[[55,13,[30,[33]],6,[30,[29]],6],[[9,[32]]]],[[13,35,6,54],[[9,[32]]]],[[13,[30,[36]],6,54],[[9,[39,32]]]],[[55,13,[30,[36]],6,54],[[9,[39,32]]]],[[]],[[]],[[]],[[]],[55,55],[56,56],[[]],[[]],[[56,56],57],[55,58],[[39,25],[[9,[32]]]],[[55,39,[25,[3]]],[[9,[32]]]],[[39,39],[[9,[32]]]],[[55,39,39],[[9,[32]]]],[6],[6],[6],[6],[6],[6],[[13,59,6],[[9,[32]]]],[[55,13,59,6],[[9,[32]]]],[[56,56],16],[[55,7],43],[[56,7],43],[[]],[[[30,[60]]],56],[[]],[59,56],[56],[[],6],[[],6],[[[30,[33]],6],[[9,[26,32]]]],[[55,[30,[33]],6],[[9,[[26,[3]],32]]]],[[]],[[]],[40,55],[[56,56],[[50,[57]]]],[55,40],[55,6],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[61,[19]]]],[[[61,[[0,[3,62]]]],[30,[29]],6],[[9,[32]]]],[[[61,[[0,[3,62]]]],[30,[36]],6],[[9,[32]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],49],[[],63],[[[61,[[0,[3,62]]]],[30,[60]],6,[30,[60]],6],[[9,[32]]]],0,[[],64],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[[61,[[0,[3,62]]]],59,6],[[9,[32]]]],[[[61,[[0,[3,62]]]]]],[[65,65],16],[[66,66],16],[[[61,[[0,[3,62]]]]]],[[[61,[[0,[3,62]]]],[30,[36]],6,[26,[[25,[[0,[3,62]]]]]]],[[9,[32]]]],[[65,7],43],[[65,7],43],[[66,7],43],[[66,7],43],[[63,7],[[9,[8]]]],[[63,7],43],[[64,7],43],[[[61,[[0,[42,62,3]]]],7],43],[[]],[[]],[[]],[[]],[[]],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[64,16],64],0,[[[61,[[0,[3,62]]]],[50,[49]]]],[[[61,[[0,[3,62]]]]]],[63,49],[[[61,[[0,[3,62]]]],[30,[33]],6],[[9,[[26,[[0,[3,62]]]],32]]]],[[64,1,67],[[9,[68]]]],[[1,[18,[[18,[19]]]]],[[9,[[61,[19]],32]]]],[[64,16],64],[[64,16],64],[[],49],[[],49],[[],49],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[],24],[[[61,[19]]],[[9,[[18,[66]]]]]],[[64,[69,[6]]],64],[[64,[69,[6]]],64],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[[72,[[0,[42,70]],[0,[42,71]]]],7],43],[[[73,[[0,[42,70]]]],7],43],[[[74,[[0,[42,70]]]],7],43],[[]],[[]],[[]],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[[72,[70,71]]],[[73,[70]]]],[1,[[72,[70,71]]]],[[[72,[70,71]],6],[[74,[70]]]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[]],[[]],[[]],0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[75,75],[76,76],[[]],[[]],[[75,75],57],[[77,77],57],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[75,75],16],[[77,77],16],[[78,78],16],[[79,79],16],[[76,76],16],[[75,7],43],[[75,7],43],[[77,7],43],[[77,7],43],[[78,7],43],[[78,7],43],[[79,7],43],[[79,7],43],[[76,7],43],[[76,7],43],[[[30,[60]]],75],[[]],[[],75],[[],77],[[],77],[[]],[[],78],[[]],[[],79],[[]],[[]],[[],76],[[],76],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[75,75],[[50,[57]]]],[[77,77],[[50,[57]]]],[[]],[[]],[[],49],[[],49],[[],49],[[],49],[[],49],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[],24],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[25,[3]],[25,[3]]],[[25,[3]]]],[[[25,[3]],3],[[25,[3]]]],[[[25,[3]],[25,[3]]],[[25,[3]]]],[[25,3],[[25,[3]]]],[[25,[25,[3]]],[[25,[3]]]],[[25,25],[[25,[3]]]],[[[80,[3]],[80,[3]]],[[80,[3]]]],[[[25,[3]],[25,[3]]]],[[[25,[3]],[25,[3]]]],[[[82,[81]],[18,[[18,[18]]]],[18,[83]]]],[[[84,[3]]],[[30,[29]]]],[[[30,[29]],6],[[9,[32]]]],[[[30,[36]],6],[[9,[32]]]],[[[84,[3]]],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[25,[22]]],[[25,[22]]]],[[[30,[[0,[22,85]]]]],[[30,[[0,[22,85]]]]]],[29,29],[36,36],[33,33],[60,60],[59,59],[86,86],[87,87],[88,88],[35,35],[[[80,[22]]],[[80,[22]]]],[[[84,[[0,[22,3]]]]],[[84,[[0,[22,3]]]]]],[[[89,[[0,[22,81]]]]],[[89,[[0,[22,81]]]]]],[[[90,[[0,[22,81]]]]],[[90,[[0,[22,81]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[30,[85]],[30,[85]]],57],[[60,60],57],[[[30,[85]]]],[[[84,[3]]],59],[84],[[[30,[60]],6,[30,[60]],6],[[9,[32]]]],[[[84,[3]],12,27]],[[91,90,23],[[9,[32]]]],[[[25,[3]]],[[25,[3]]]],[[],[[84,[3]]]],[[],[[82,[[0,[92,81]]]]]],[[[80,[3]]],6],[[[84,[3]]],6],[[[25,[3]]],[[50,[3]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[[25,[3]]],[[25,[3]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[59,28,6],[[9,[32]]]],[[[84,[3]],[30,[36]]]],[[35,84]],[[[84,[3]],[93,[[30,[60]]]]]],[[59,6],[[9,[32]]]],[[]],[[[25,[3]],[25,[3]]],16],[[[30,[[0,[94,85]]]],30],16],[[29,29],16],[[36,36],16],[[33,33],16],[[60,60],16],[[59,59],16],[[35,35],16],[[[25,[3]]],3],[[[80,[3]]]],[[]],[[[30,[36]],6,[26,[25]]],[[9,[32]]]],[[[82,[81]],91,89],16],[[[84,[3]]],[[30,[36]]]],[[[25,[42]],7],43],[[[30,[[0,[42,85]]]],7],43],[[29,7],43],[[36,7],43],[[33,7],43],[[60,7],43],[[59,7],43],[[86,7],43],[[87,7],43],[[88,7],43],[[35,7],43],[[[80,[42]],7],43],[[[95,[[0,[42,3]]]],7],43],[[[96,[[0,[42,3]],[0,[42,[93,[[95,[[0,[42,3]]]]]]]],[0,[42,17]]]],7],43],[[[84,[[0,[42,3]]]],7],43],[[[97,[[0,[42,3]]]],7],43],[[[98,[[0,[42,3]]]],7],43],[[32,7],43],[[32,7],43],[[[82,[[0,[42,81]]]],7],43],[[[99,[[0,[42,81]]]],7],43],[[[89,[[0,[42,81]]]],7],43],[[[100,[[0,[42,81]]]],7],43],[[[90,[[0,[42,81]]]],7],43],[[],[[25,[3]]]],[3,[[25,[3]]]],[[],[[25,[3]]]],[25,[[25,[3]]]],[[]],[[[30,[36]]],[[30,[60]]]],[[[30,[29]]],[[30,[60]]]],[[[30,[33]]],[[30,[60]]]],[[]],[[]],[[]],[[]],[29,60],[36,60],[33,60],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[95,[3]]]],[[[80,[3]]],[[95,[3]]]],[[]],[[]],[[]],[[]],[[]],[101,32],[[]],[[]],[[]],[[]],[[]],[[]],[[[89,[81]]],102],[[[90,[81]]],89],[[[30,[[0,[103,85]]]]]],[29],[36],[33],[60],[59],[35],[[[89,[81]]],104],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[[84,[3]]],[[30,[33]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[96,[3,[93,[[95,[3]]]],17]]]],[[[25,[3]]],[[25,[3]]]],[59,16],[[[25,[3]]],16],[[91,89],[[9,[90,32]]]],[91,[[9,[89,32]]]],[[[84,[3]],27],6],[[[84,[3]]],35],[[[84,[3]]],6],[[[25,[3]],25],[[25,[3]]]],[[[25,[3]],[25,[3]]],[[25,[3]]]],[[[25,[3]],3],[[25,[3]]]],[[25,3],[[25,[3]]]],[[[80,[3]],3],[[80,[3]]]],[[[80,[3]],[80,[3]]],[[80,[3]]]],[[[25,[3]],[25,[3]]]],[[[25,[3]],[25,[3]]]],[25],[[[25,[3]]]],[[[80,[3]]]],[[],[[82,[81]]]],[91,[[99,[81]]]],[[[25,[3]]],3],[[[30,[85]],[30,[85]]],[[50,[57]]]],[[60,60],[[50,[57]]]],[[[84,[3]]],[[97,[3]]]],[[[89,[81]]],[[100,[81]]]],[[[50,[49]]]],[27,[[9,[32]]]],[[[99,[81]],27],[[9,[32]]]],[105],[[]],[[[98,[3]],[30,[29]],106],[[80,[3]]]],[[[98,[3]],[93,[[30,[60]]]],106],[[80,[3]]]],[[[98,[3]],[30,[36]],106],[[80,[3]]]],[[[30,[33]],6],[[9,[26,32]]]],[[[98,[3]],[30,[33]],106],[[80,[3]]]],[[[98,[3]],59],[[80,[3]]]],[[[84,[3]]],59],[[[84,[3]],6]],[32,[[50,[107]]]],[[[25,[3]]],[[25,[3]]]],[[[80,[3]]],[[80,[3]]]],[[25,3],[[25,[3]]]],[[[25,[3]],[25,[3]]],[[25,[3]]]],[[25,25],[[25,[3]]]],[[25,[25,[3]]],[[25,[3]]]],[[[25,[3]],[25,[3]]],[[25,[3]]]],[[[25,[3]],3],[[25,[3]]]],[[[80,[3]],[80,[3]]],[[80,[3]]]],[[[25,[3]],[25,[3]]]],[[[25,[3]],[25,[3]]]],[[[18,[[30,[36]]]]],[[9,[32]]]],[37,[[9,[32]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],49],[[],9],[[[30,[60]]],[[9,[[30,[33]]]]]],[[[30,[60]]],[[9,[[30,[36]]]]]],[[[30,[60]]],[[9,[[30,[29]]]]]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[91,89,[108,[81]]],[[9,[32]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[80,[3]],17],[[96,[3,[93,[[95,[3]]]],17]]]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[110,[3,109]],110],[[110,[3,109]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[102,[[0,[22,62]]]]],[[102,[[0,[22,62]]]]]],[111,111],[112,112],[113,113],[[[110,[22,22]]],[[110,[22,22]]]],[106,106],[[]],[[]],[[]],[[]],[[]],[[]],[[[102,[62]],[18,[62]]],[[110,[62,111]]]],[[[102,[62]],[110,[62,111]]],[[110,[62,113]]]],0,[[[102,[62]],62],[[110,[62,113]]]],[[[102,[62]],62],[[110,[62,112]]]],[[],106],[6],[6],[6],[6],[6],[6],[110],[6],[6],[6],[6],[6],[6],[6],[6],[6],[110],[6],[[[102,[62]],[110,[62,113]]],[[110,[62,113]]]],[6],[6],[6],[6],[6],[6],[6],[6],[[[102,[62]]],[[110,[62,111]]]],[[[102,[62]]],[[110,[62,113]]]],[[[102,[62]]],[[110,[62,112]]]],[[106,106],16],[[[102,[62]]],6],[[[102,[62]],[110,[62,113]]],[[18,[62]]]],[[[102,[[0,[42,62]]]],7],43],[[[114,[[0,[42,62]]]],7],43],[[115,7],43],[[111,7],43],[[112,7],43],[[113,7],43],[[[110,[42,42]],7],43],[[106,7],43],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[102,[62]]]],[[[102,[62]]]],[[[102,[62]]]],[[[102,[62]]],6],[[110,116]],[[110,6]],[[110,[117,[6]]]],[[110,6]],[[110,[117,[6]]]],[[110,116]],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[110,118],[110,118],[[[102,[62]],[0,[17,22]]],18],[[[102,[62]],[18,[62]]],[[110,[62,112]]]],[[[102,[62]],[110,[62,112]]],[[110,[62,111]]]],[[[110,[3,109]],3],[[110,[3,109]]]],0,[[1,1],[[102,[62]]]],[[],106],[110,6],[[[102,[62]]],[[114,[62]]]],[[],106],[[[110,[3,112]],106],[[110,[3,112]]]],[[[102,[62]],110,106],[[110,[62,113]]]],[[[102,[62]],106]],[[]],[[]],[[]],[[]],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,[[[119,[19]],[119,[19]]],[[119,[19]]]],[[[119,[19]],[119,[19]]]],[[[119,[19]],19]],[[[120,[81]]]],[[[120,[81]],[120,[81]]]],[[[120,[81]]]],[[[120,[81]]]],[[[120,[81]]]],[[[120,[81]],81]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[120,[[0,[22,81]]]]],[[120,[[0,[22,81]]]]]],[[[122,[[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]],[[122,[[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]]],[[[123,[[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]],[[123,[[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]]],[[[91,[[0,[22,81]]]]],[[91,[[0,[22,81]]]]]],[[[119,[22]]],[[119,[22]]]],[[]],[[]],[[]],[[]],[[]],[[[91,[81]],110,119]],[[[91,[81]],110,119]],[[[122,[81,[121,[81]]]]],81],[[91,23,110,119],104],[[],[[119,[19]]]],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[6],[[[91,[81]]],[[120,[81]]]],[[[119,[94]],119],16],[[[120,[81]]],16],[[[120,[[0,[42,81]]]],7],43],[[[122,[[0,[42,81]],[0,[42,[121,[[0,[42,81]]]]]]]],7],43],[[[123,[[0,[42,81]],[0,[42,[121,[[0,[42,81]]]]]]]],7],43],[[[91,[[0,[42,81]]]],7],43],[[[119,[42]],7],43],[[]],[[]],[[]],[[]],[[]],0,[[[91,[81]]],[[18,[81]]]],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[[119,[19]],[119,[19]]],[[119,[19]]]],[[[119,[19]],[119,[19]]]],[[[119,[19]],19]],[91,[[120,[81]]]],[1,[[91,[81]]]],[[],[[104,[[91,[81]]]]]],[[[120,[81]]]],[[]],[[]],[[]],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[],24],0,[[[122,[81,[121,[81]]]]],[[120,[81]]]],[[[122,[81,[121,[81]]]],81]],[[91,[120,[81]]],[[9,[[122,[81,[121,[81]]]],115]]]],[[]],[[]],[[]],[[]],[[]],[[[91,[81]]],104],0,0,0,[[]],[[]],[[]],[[]],[[[124,[[0,[22,81]]]]],[[124,[[0,[22,81]]]]]],[[[125,[[0,[22,81]]]]],[[125,[[0,[22,81]]]]]],[[]],[[]],[[91,23],104],[6],[6],[6],[6],[6],[6],[[[124,[[0,[42,81]]]],7],43],[[[125,[[0,[42,81]]]],7],43],[[]],[[]],[[],6],[[],6],[[]],[[]],[[],[[125,[81]]]],[120,[[125,[81]]]],0,0,[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[91,[120,[81]]],[[9,[[122,[81,[121,[81]]]],115]]]],[[]],[[]],0,0,0,0,0,0,0,0,0,[[],126],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[128,[[0,[22,127]],[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]],[[128,[[0,[22,127]],[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]]],[[[130,[[0,[22,129]],[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]],[[130,[[0,[22,129]],[0,[22,81]],[0,[22,[121,[[0,[22,81]]]]]]]]]],[[[126,[[0,[22,81]],22]]],[[126,[[0,[22,81]],22]]]],[[[131,[[0,[22,81]]]]],[[131,[[0,[22,81]]]]]],[[]],[[]],[[]],[[]],[[],104],[[[128,[127,81,[131,[81]]]],81],104],[[[130,[129,81,[131,[81]]]],81],104],[[],104],[[[128,[127,81,[131,[81]]]]],104],[[[130,[129,81,[131,[81]]]]],104],[6],[6],[6],[[[126,[81]]]],[6],[[[131,[81]]]],[6],[6],[6],[6],[6],[6],[6],[6],[[[130,[129,81,[121,[81]]]]],129],[[[128,[[0,[42,127]],[0,[42,81]],[0,[42,[121,[[0,[42,81]]]]]]]],7],43],[[[130,[[0,[42,129]],[0,[42,81]],[0,[42,[121,[[0,[42,81]]]]]]]],7],43],[[[126,[[0,[42,81]],42]],7],43],[[[131,[[0,[42,81]]]],7],43],[[]],[[]],[[]],[[]],[[]],[[[131,[81]]]],[127,[[128,[127,81,[121,[81]]]]]],[[],6],[129,[[130,[129,81,[121,[81]]]]]],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[],[[131,[81]]]],[[],104],[[[128,[127,81,[131,[81]]]]],[[104,[81]]]],[[],104],[[[128,[127,81,[131,[81]]]]],104],[[]],[[[128,[127,81,[131,[81]]]]],[[131,[81]]]],[[[130,[129,81,[131,[81]]]]],[[131,[81]]]],[[],126],[[]],[[]],[[]],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],24],[[],24],[[],24],[[],24],[[]],[[]],[[]],[[]],[[],104],[[[130,[129,81,[131,[81]]]],81],104],[[],104],[[[130,[129,81,[131,[81]]]]],104]],"p":[[15,"u32"],[3,"Coordinates"],[8,"Field"],[3,"Choice"],[3,"CtOption"],[15,"usize"],[3,"Formatter"],[3,"Error"],[4,"Result"],[3,"SqrtTables"],[15,"u128"],[15,"str"],[8,"Fn"],[3,"Global"],[3,"Box"],[15,"bool"],[8,"IntoIterator"],[3,"Vec"],[8,"FieldExt"],[8,"Send"],[8,"Sync"],[8,"Clone"],[8,"RngCore"],[3,"TypeId"],[4,"Assigned"],[3,"Value"],[8,"FnOnce"],[3,"Region"],[3,"Advice"],[3,"Column"],[3,"AssignedCell"],[4,"Error"],[3,"Instance"],[3,"Table"],[3,"TableColumn"],[3,"Fixed"],[8,"Layouter"],[3,"NamespacedLayouter"],[3,"Cell"],[3,"RegionIndex"],[3,"RegionStart"],[8,"Debug"],[6,"Result"],[3,"SimpleFloorPlanner"],[8,"RegionLayouter"],[8,"TableLayouter"],[8,"FromIterator"],[8,"Neg"],[3,"String"],[4,"Option"],[8,"Assignment"],[3,"V1Pass"],[3,"V1"],[8,"FnMut"],[3,"RegionShape"],[4,"RegionColumn"],[4,"Ordering"],[3,"HashSet"],[3,"Selector"],[4,"Any"],[3,"MockProver"],[8,"Group"],[3,"CircuitGates"],[3,"CircuitLayout"],[4,"FailureLocation"],[4,"VerifyFailure"],[3,"DrawingArea"],[4,"DrawingAreaErrorKind"],[3,"Range"],[8,"PrimeGroup"],[8,"Circuit"],[3,"CircuitCost"],[3,"MarginalProofSize"],[3,"ProofSize"],[3,"Column"],[3,"Region"],[3,"VirtualCell"],[3,"Gate"],[3,"Constraint"],[4,"Expression"],[8,"CurveAffine"],[3,"BatchVerifier"],[15,"u8"],[3,"ConstraintSystem"],[8,"ColumnType"],[3,"FixedQuery"],[3,"AdviceQuery"],[3,"InstanceQuery"],[3,"VerifyingKey"],[3,"ProvingKey"],[3,"Params"],[8,"Default"],[8,"Into"],[8,"PartialEq"],[3,"Constraint"],[3,"Constraints"],[3,"PinnedConstraintSystem"],[3,"VirtualCells"],[3,"SingleVerifier"],[3,"PinnedVerificationKey"],[3,"Error"],[3,"EvaluationDomain"],[8,"Hash"],[6,"Result"],[3,"Demand"],[3,"Rotation"],[8,"Error"],[8,"VerificationStrategy"],[8,"Basis"],[3,"Polynomial"],[3,"Coeff"],[3,"LagrangeCoeff"],[3,"ExtendedLagrangeCoeff"],[3,"PinnedEvaluationDomain"],[4,"Error"],[3,"RangeFull"],[3,"RangeFrom"],[8,"Iterator"],[3,"Blind"],[3,"MSM"],[8,"EncodedChallenge"],[3,"Guard"],[3,"Accumulator"],[3,"ProverQuery"],[3,"VerifierQuery"],[3,"ChallengeScalar"],[8,"Read"],[3,"Blake2bRead"],[8,"Write"],[3,"Blake2bWrite"],[3,"Challenge255"],[8,"CurveExt"],[8,"SqrtRatio"],[8,"Chip"],[13,"Column"],[13,"Selector"],[13,"InRegion"],[13,"OutsideRegion"],[13,"ConstraintNotSatisfied"],[13,"CellNotAssigned"],[13,"InstanceCellNotAssigned"],[13,"Permutation"],[13,"ConstraintPoisoned"],[13,"Lookup"],[8,"FloorPlanner"],[13,"Trivial"],[13,"Rational"],[13,"Transcript"],[13,"ColumnNotInPermutation"],[13,"NotEnoughRowsAvailable"],[13,"Constant"],[13,"Selector"],[13,"Fixed"],[13,"Advice"],[13,"Instance"],[13,"Negated"],[13,"Sum"],[13,"Product"],[13,"Scaled"],[8,"Transcript"],[8,"TranscriptRead"],[8,"TranscriptWrite"]]}\ }'); if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; diff --git a/rustdoc/latest/settings.html b/rustdoc/latest/settings.html index 5ca7d64d..f2235a60 100644 --- a/rustdoc/latest/settings.html +++ b/rustdoc/latest/settings.html @@ -13,4 +13,4 @@ }); }); -

Rustdoc settings

Back
\ No newline at end of file +

Rustdoc settings

Back
\ No newline at end of file diff --git a/rustdoc/latest/src/halo2_proofs/dev/cost.rs.html b/rustdoc/latest/src/halo2_proofs/dev/cost.rs.html index c47b04dc..5d79632f 100644 --- a/rustdoc/latest/src/halo2_proofs/dev/cost.rs.html +++ b/rustdoc/latest/src/halo2_proofs/dev/cost.rs.html @@ -391,9 +391,138 @@ 376 377 378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506
//! Developer tools for investigating the cost of a circuit.
 
 use std::{
+    cmp,
     collections::{HashMap, HashSet},
     iter,
     marker::PhantomData,
@@ -404,7 +533,7 @@
 use group::prime::PrimeGroup;
 
 use crate::{
-    circuit::Value,
+    circuit::{layouter::RegionColumn, Value},
     plonk::{
         Advice, Any, Assigned, Assignment, Circuit, Column, ConstraintSystem, Error, Fixed,
         FloorPlanner, Instance, Selector,
@@ -416,7 +545,7 @@
 #[derive(Debug)]
 pub struct CircuitCost<G: PrimeGroup, ConcreteCircuit: Circuit<G::Scalar>> {
     /// Power-of-2 bound on the number of rows in the circuit.
-    k: usize,
+    k: u32,
     /// Maximum degree of the circuit.
     max_deg: usize,
     /// Number of advice columns.
@@ -431,34 +560,145 @@
     permutation_cols: usize,
     /// Number of distinct sets of points in the multiopening argument.
     point_sets: usize,
+    /// Maximum rows used over all columns
+    max_rows: usize,
+    /// Maximum rows used over all advice columns
+    max_advice_rows: usize,
+    /// Maximum rows used over all fixed columns
+    max_fixed_rows: usize,
+    num_fixed_columns: usize,
+    num_advice_columns: usize,
+    num_instance_columns: usize,
+    num_total_columns: usize,
 
     _marker: PhantomData<(G, ConcreteCircuit)>,
 }
 
-struct Assembly {
-    selectors: Vec<Vec<bool>>,
+/// Region implementation used by Layout
+#[derive(Debug)]
+pub(crate) struct LayoutRegion {
+    /// The name of the region. Not required to be unique.
+    pub(crate) name: String,
+    /// The columns used by this region.
+    pub(crate) columns: HashSet<RegionColumn>,
+    /// The row that this region starts on, if known.
+    pub(crate) offset: Option<usize>,
+    /// The number of rows that this region takes up.
+    pub(crate) rows: usize,
+    /// The cells assigned in this region.
+    pub(crate) cells: Vec<(RegionColumn, usize)>,
 }
 
-impl<F: Field> Assignment<F> for Assembly {
-    fn enter_region<NR, N>(&mut self, _: N)
+/// Cost and graphing layouter
+#[derive(Default, Debug)]
+pub(crate) struct Layout {
+    /// k = 1 << n
+    pub(crate) k: u32,
+    /// Regions of the layout
+    pub(crate) regions: Vec<LayoutRegion>,
+    current_region: Option<usize>,
+    /// Total row count
+    pub(crate) total_rows: usize,
+    /// Total advice rows
+    pub(crate) total_advice_rows: usize,
+    /// Total fixed rows
+    pub(crate) total_fixed_rows: usize,
+    /// Any cells assigned outside of a region.
+    pub(crate) loose_cells: Vec<(RegionColumn, usize)>,
+    /// Pairs of cells between which we have equality constraints.
+    pub(crate) equality: Vec<(Column<Any>, usize, Column<Any>, usize)>,
+    /// Selector assignments used for optimization pass
+    pub(crate) selectors: Vec<Vec<bool>>,
+}
+
+impl Layout {
+    /// Creates a empty layout
+    pub fn new(k: u32, n: usize, num_selectors: usize) -> Self {
+        Layout {
+            k,
+            regions: vec![],
+            current_region: None,
+            total_rows: 0,
+            total_advice_rows: 0,
+            total_fixed_rows: 0,
+            /// Any cells assigned outside of a region.
+            loose_cells: vec![],
+            /// Pairs of cells between which we have equality constraints.
+            equality: vec![],
+            /// Selector assignments used for optimization pass
+            selectors: vec![vec![false; n]; num_selectors],
+        }
+    }
+
+    /// Update layout metadata
+    pub fn update(&mut self, column: RegionColumn, row: usize) {
+        self.total_rows = cmp::max(self.total_rows, row + 1);
+
+        if let RegionColumn::Column(col) = column {
+            match col.column_type() {
+                Any::Advice => self.total_advice_rows = cmp::max(self.total_advice_rows, row + 1),
+                Any::Fixed => self.total_fixed_rows = cmp::max(self.total_fixed_rows, row + 1),
+                _ => {}
+            }
+        }
+
+        if let Some(region) = self.current_region {
+            let region = &mut self.regions[region];
+            region.columns.insert(column);
+
+            // The region offset is the earliest row assigned to.
+            let mut offset = region.offset.unwrap_or(row);
+            if row < offset {
+                // The first row assigned was not at offset 0 within the region.
+                region.rows += offset - row;
+                offset = row;
+            }
+            // The number of rows in this region is the gap between the earliest and
+            // latest rows assigned.
+            region.rows = cmp::max(region.rows, row - offset + 1);
+            region.offset = Some(offset);
+
+            region.cells.push((column, row));
+        } else {
+            self.loose_cells.push((column, row));
+        }
+    }
+}
+
+impl<F: Field> Assignment<F> for Layout {
+    fn enter_region<NR, N>(&mut self, name_fn: N)
     where
         NR: Into<String>,
         N: FnOnce() -> NR,
     {
-        // Do nothing; we don't care about regions in this context.
-    }
+        assert!(self.current_region.is_none());
+        self.current_region = Some(self.regions.len());
+        self.regions.push(LayoutRegion {
+            name: name_fn().into(),
+            columns: HashSet::default(),
+            offset: None,
+            rows: 0,
+            cells: vec![],
+        })
+    }
 
     fn exit_region(&mut self) {
-        // Do nothing; we don't care about regions in this context.
-    }
+        assert!(self.current_region.is_some());
+        self.current_region = None;
+    }
 
     fn enable_selector<A, AR>(&mut self, _: A, selector: &Selector, row: usize) -> Result<(), Error>
     where
         A: FnOnce() -> AR,
         AR: Into<String>,
     {
-        self.selectors[selector.0][row] = true;
+        if let Some(cell) = self.selectors[selector.0].get_mut(row) {
+            *cell = true;
+        } else {
+            return Err(Error::not_enough_rows_available(self.k));
+        }
 
+        self.update((*selector).into(), row);
         Ok(())
     }
 
@@ -469,8 +709,8 @@
     fn assign_advice<V, VR, A, AR>(
         &mut self,
         _: A,
-        _: Column<Advice>,
-        _: usize,
+        column: Column<Advice>,
+        row: usize,
         _: V,
     ) -> Result<(), Error>
     where
@@ -479,14 +719,15 @@
         A: FnOnce() -> AR,
         AR: Into<String>,
     {
+        self.update(Column::<Any>::from(column).into(), row);
         Ok(())
     }
 
     fn assign_fixed<V, VR, A, AR>(
         &mut self,
         _: A,
-        _: Column<Fixed>,
-        _: usize,
+        column: Column<Fixed>,
+        row: usize,
         _: V,
     ) -> Result<(), Error>
     where
@@ -495,10 +736,18 @@
         A: FnOnce() -> AR,
         AR: Into<String>,
     {
+        self.update(Column::<Any>::from(column).into(), row);
         Ok(())
     }
 
-    fn copy(&mut self, _: Column<Any>, _: usize, _: Column<Any>, _: usize) -> Result<(), Error> {
+    fn copy(
+        &mut self,
+        l_col: Column<Any>,
+        l_row: usize,
+        r_col: Column<Any>,
+        r_row: usize,
+    ) -> Result<(), crate::plonk::Error> {
+        self.equality.push((l_col, l_row, r_col, r_row));
         Ok(())
     }
 
@@ -528,21 +777,19 @@
     /// Measures a circuit with parameter constant `k`.
     ///
     /// Panics if `k` is not large enough for the circuit.
-    pub fn measure(k: usize, circuit: &ConcreteCircuit) -> Self {
+    pub fn measure(k: u32, circuit: &ConcreteCircuit) -> Self {
         // Collect the layout details.
         let mut cs = ConstraintSystem::default();
         let config = ConcreteCircuit::configure(&mut cs);
-        let mut assembly = Assembly {
-            selectors: vec![vec![false; 1 << k]; cs.num_selectors],
-        };
+        let mut layout = Layout::new(k, 1 << k, cs.num_selectors);
         ConcreteCircuit::FloorPlanner::synthesize(
-            &mut assembly,
+            &mut layout,
             circuit,
             config,
             cs.constants.clone(),
         )
         .unwrap();
-        let (cs, _) = cs.compress_selectors(assembly.selectors);
+        let (cs, _) = cs.compress_selectors(layout.selectors);
 
         assert!((1 << k) >= cs.minimum_rows());
 
@@ -598,6 +845,15 @@
             permutation_cols,
             point_sets: point_sets.len(),
             _marker: PhantomData::default(),
+            max_rows: layout.total_rows,
+            max_advice_rows: layout.total_advice_rows,
+            max_fixed_rows: layout.total_fixed_rows,
+            num_advice_columns: cs.num_advice_columns,
+            num_fixed_columns: cs.num_fixed_columns,
+            num_instance_columns: cs.num_instance_columns,
+            num_total_columns: cs.num_instance_columns
+                + cs.num_advice_columns
+                + cs.num_fixed_columns,
         }
     }
 
@@ -669,7 +925,7 @@
             // - inner product argument (2 * k round commitments)
             // - a
             // - xi
-            polycomm: ProofContribution::new(1 + 2 * self.k, 2),
+            polycomm: ProofContribution::new((1 + 2 * self.k).try_into().unwrap(), 2),
 
             _marker: PhantomData::default(),
         }
diff --git a/rustdoc/latest/src/halo2_proofs/dev/graph/layout.rs.html b/rustdoc/latest/src/halo2_proofs/dev/graph/layout.rs.html
index aa10fc99..1a47d11c 100644
--- a/rustdoc/latest/src/halo2_proofs/dev/graph/layout.rs.html
+++ b/rustdoc/latest/src/halo2_proofs/dev/graph/layout.rs.html
@@ -333,205 +333,18 @@
 318
 319
 320
-321
-322
-323
-324
-325
-326
-327
-328
-329
-330
-331
-332
-333
-334
-335
-336
-337
-338
-339
-340
-341
-342
-343
-344
-345
-346
-347
-348
-349
-350
-351
-352
-353
-354
-355
-356
-357
-358
-359
-360
-361
-362
-363
-364
-365
-366
-367
-368
-369
-370
-371
-372
-373
-374
-375
-376
-377
-378
-379
-380
-381
-382
-383
-384
-385
-386
-387
-388
-389
-390
-391
-392
-393
-394
-395
-396
-397
-398
-399
-400
-401
-402
-403
-404
-405
-406
-407
-408
-409
-410
-411
-412
-413
-414
-415
-416
-417
-418
-419
-420
-421
-422
-423
-424
-425
-426
-427
-428
-429
-430
-431
-432
-433
-434
-435
-436
-437
-438
-439
-440
-441
-442
-443
-444
-445
-446
-447
-448
-449
-450
-451
-452
-453
-454
-455
-456
-457
-458
-459
-460
-461
-462
-463
-464
-465
-466
-467
-468
-469
-470
-471
-472
-473
-474
-475
-476
-477
-478
-479
-480
-481
-482
-483
-484
-485
-486
-487
-488
-489
-490
-491
-492
-493
-494
-495
-496
-497
-498
-499
-500
-501
-502
-503
-504
 
use ff::Field;
 use plotters::{
     coord::Shift,
     prelude::{DrawingArea, DrawingAreaErrorKind, DrawingBackend},
 };
-use std::cmp;
 use std::collections::HashSet;
 use std::ops::Range;
 
 use crate::{
-    circuit::{layouter::RegionColumn, Value},
-    plonk::{
-        Advice, Any, Assigned, Assignment, Circuit, Column, ConstraintSystem, Error, Fixed,
-        FloorPlanner, Instance, Selector,
-    },
+    circuit::layouter::RegionColumn,
+    dev::cost::Layout,
+    plonk::{Any, Circuit, Column, ConstraintSystem, FloorPlanner},
 };
 
 /// Graphical renderer for circuit layouts.
@@ -840,186 +653,5 @@
         Ok(())
     }
 }
-
-#[derive(Debug)]
-struct Region {
-    /// The name of the region. Not required to be unique.
-    name: String,
-    /// The columns used by this region.
-    columns: HashSet<RegionColumn>,
-    /// The row that this region starts on, if known.
-    offset: Option<usize>,
-    /// The number of rows that this region takes up.
-    rows: usize,
-    /// The cells assigned in this region. We store this as a `Vec` so that if any cells
-    /// are double-assigned, they will be visibly darker.
-    cells: Vec<(RegionColumn, usize)>,
-}
-
-#[derive(Default)]
-struct Layout {
-    k: u32,
-    regions: Vec<Region>,
-    current_region: Option<usize>,
-    total_rows: usize,
-    /// Any cells assigned outside of a region. We store this as a `Vec` so that if any
-    /// cells are double-assigned, they will be visibly darker.
-    loose_cells: Vec<(RegionColumn, usize)>,
-    /// Pairs of cells between which we have equality constraints.
-    equality: Vec<(Column<Any>, usize, Column<Any>, usize)>,
-    /// Selector assignments used for optimization pass
-    selectors: Vec<Vec<bool>>,
-}
-
-impl Layout {
-    fn new(k: u32, n: usize, num_selectors: usize) -> Self {
-        Layout {
-            k,
-            regions: vec![],
-            current_region: None,
-            total_rows: 0,
-            /// Any cells assigned outside of a region. We store this as a `Vec` so that if any
-            /// cells are double-assigned, they will be visibly darker.
-            loose_cells: vec![],
-            /// Pairs of cells between which we have equality constraints.
-            equality: vec![],
-            /// Selector assignments used for optimization pass
-            selectors: vec![vec![false; n]; num_selectors],
-        }
-    }
-
-    fn update(&mut self, column: RegionColumn, row: usize) {
-        self.total_rows = cmp::max(self.total_rows, row + 1);
-
-        if let Some(region) = self.current_region {
-            let region = &mut self.regions[region];
-            region.columns.insert(column);
-
-            // The region offset is the earliest row assigned to.
-            let mut offset = region.offset.unwrap_or(row);
-            if row < offset {
-                // The first row assigned was not at offset 0 within the region.
-                region.rows += offset - row;
-                offset = row;
-            }
-            // The number of rows in this region is the gap between the earliest and
-            // latest rows assigned.
-            region.rows = cmp::max(region.rows, row - offset + 1);
-            region.offset = Some(offset);
-
-            region.cells.push((column, row));
-        } else {
-            self.loose_cells.push((column, row));
-        }
-    }
-}
-
-impl<F: Field> Assignment<F> for Layout {
-    fn enter_region<NR, N>(&mut self, name_fn: N)
-    where
-        NR: Into<String>,
-        N: FnOnce() -> NR,
-    {
-        assert!(self.current_region.is_none());
-        self.current_region = Some(self.regions.len());
-        self.regions.push(Region {
-            name: name_fn().into(),
-            columns: HashSet::default(),
-            offset: None,
-            rows: 0,
-            cells: vec![],
-        })
-    }
-
-    fn exit_region(&mut self) {
-        assert!(self.current_region.is_some());
-        self.current_region = None;
-    }
-
-    fn enable_selector<A, AR>(&mut self, _: A, selector: &Selector, row: usize) -> Result<(), Error>
-    where
-        A: FnOnce() -> AR,
-        AR: Into<String>,
-    {
-        if let Some(cell) = self.selectors[selector.0].get_mut(row) {
-            *cell = true;
-        } else {
-            return Err(Error::not_enough_rows_available(self.k));
-        }
-
-        self.update((*selector).into(), row);
-        Ok(())
-    }
-
-    fn query_instance(&self, _: Column<Instance>, _: usize) -> Result<Value<F>, Error> {
-        Ok(Value::unknown())
-    }
-
-    fn assign_advice<V, VR, A, AR>(
-        &mut self,
-        _: A,
-        column: Column<Advice>,
-        row: usize,
-        _: V,
-    ) -> Result<(), Error>
-    where
-        V: FnOnce() -> Value<VR>,
-        VR: Into<Assigned<F>>,
-        A: FnOnce() -> AR,
-        AR: Into<String>,
-    {
-        self.update(Column::<Any>::from(column).into(), row);
-        Ok(())
-    }
-
-    fn assign_fixed<V, VR, A, AR>(
-        &mut self,
-        _: A,
-        column: Column<Fixed>,
-        row: usize,
-        _: V,
-    ) -> Result<(), Error>
-    where
-        V: FnOnce() -> Value<VR>,
-        VR: Into<Assigned<F>>,
-        A: FnOnce() -> AR,
-        AR: Into<String>,
-    {
-        self.update(Column::<Any>::from(column).into(), row);
-        Ok(())
-    }
-
-    fn copy(
-        &mut self,
-        l_col: Column<Any>,
-        l_row: usize,
-        r_col: Column<Any>,
-        r_row: usize,
-    ) -> Result<(), crate::plonk::Error> {
-        self.equality.push((l_col, l_row, r_col, r_row));
-        Ok(())
-    }
-
-    fn fill_from_row(
-        &mut self,
-        _: Column<Fixed>,
-        _: usize,
-        _: Value<Assigned<F>>,
-    ) -> Result<(), Error> {
-        Ok(())
-    }
-
-    fn push_namespace<NR, N>(&mut self, _: N)
-    where
-        NR: Into<String>,
-        N: FnOnce() -> NR,
-    {
-        // Do nothing; we don't care about namespaces in this context.
-    }
-
-    fn pop_namespace(&mut self, _: Option<String>) {
-        // Do nothing; we don't care about namespaces in this context.
-    }
-}
 
\ No newline at end of file