From 82f8ed3fabee5c3001b0b900cda1608413e621f8 Mon Sep 17 00:00:00 2001 From: Zhang Zhuo Date: Fri, 22 Nov 2024 21:29:09 +0800 Subject: [PATCH] add circuit-assets.txt (#354) * add circuit-assets.txt * v0.13.1 * rename as md * sym link not works well * split checksum --- circuit-assets.md | 45 + params-sha256sum | 5 + release-v0.12.0/evm_verifier.bin | Bin 14050 -> 0 bytes release-v0.12.0/evm_verifier.yul | 1248 ----------------- release-v0.12.0/pi.data | Bin 416 -> 0 bytes release-v0.12.0/preprocessed_digest.hex | 1 - release-v0.12.0/proof.data | Bin 1632 -> 0 bytes release-v0.12.0/sha256sum | 15 - release-v0.12.0/vk_batch.vkey | Bin 296 -> 0 bytes release-v0.12.0/vk_bundle.vkey | Bin 232 -> 0 bytes release-v0.13.0/chunk.protocol | 1 - release-v0.13.0/layer1.config | 14 - release-v0.13.0/layer2.config | 14 - release-v0.13.0/layer3.config | 14 - release-v0.13.0/layer4.config | 14 - release-v0.13.0/layer5.config | 14 - release-v0.13.0/layer6.config | 14 - release-v0.13.0/vk_chunk.vkey | Bin 232 -> 0 bytes .../chunk.protocol | 0 .../evm_verifier.bin | Bin .../evm_verifier.yul | 0 .../layer1.config | 0 .../layer2.config | 0 .../layer3.config | 0 .../layer4.config | 0 .../layer5.config | 0 .../layer6.config | 0 {release-v0.13.0 => release-v0.13.1}/pi.data | Bin .../preprocessed_digest.hex | 0 .../proof.data | Bin .../sha256sum | 0 .../vk_batch.vkey | Bin .../vk_bundle.vkey | Bin .../vk_chunk.vkey | Bin release.sh | 56 +- 35 files changed, 85 insertions(+), 1370 deletions(-) create mode 100644 circuit-assets.md create mode 100644 params-sha256sum delete mode 100644 release-v0.12.0/evm_verifier.bin delete mode 100644 release-v0.12.0/evm_verifier.yul delete mode 100644 release-v0.12.0/pi.data delete mode 100644 release-v0.12.0/preprocessed_digest.hex delete mode 100644 release-v0.12.0/proof.data delete mode 100644 release-v0.12.0/sha256sum delete mode 100644 release-v0.12.0/vk_batch.vkey delete mode 100644 release-v0.12.0/vk_bundle.vkey delete mode 100644 release-v0.13.0/chunk.protocol delete mode 100644 release-v0.13.0/layer1.config delete mode 100644 release-v0.13.0/layer2.config delete mode 100644 release-v0.13.0/layer3.config delete mode 100644 release-v0.13.0/layer4.config delete mode 100644 release-v0.13.0/layer5.config delete mode 100644 release-v0.13.0/layer6.config delete mode 100644 release-v0.13.0/vk_chunk.vkey rename {release-v0.12.0 => release-v0.13.1}/chunk.protocol (100%) rename {release-v0.13.0 => release-v0.13.1}/evm_verifier.bin (100%) rename {release-v0.13.0 => release-v0.13.1}/evm_verifier.yul (100%) rename {release-v0.12.0 => release-v0.13.1}/layer1.config (100%) rename {release-v0.12.0 => release-v0.13.1}/layer2.config (100%) rename {release-v0.12.0 => release-v0.13.1}/layer3.config (100%) rename {release-v0.12.0 => release-v0.13.1}/layer4.config (100%) rename {release-v0.12.0 => release-v0.13.1}/layer5.config (100%) rename {release-v0.12.0 => release-v0.13.1}/layer6.config (100%) rename {release-v0.13.0 => release-v0.13.1}/pi.data (100%) rename {release-v0.13.0 => release-v0.13.1}/preprocessed_digest.hex (100%) rename {release-v0.13.0 => release-v0.13.1}/proof.data (100%) rename {release-v0.13.0 => release-v0.13.1}/sha256sum (100%) rename {release-v0.13.0 => release-v0.13.1}/vk_batch.vkey (100%) rename {release-v0.13.0 => release-v0.13.1}/vk_bundle.vkey (100%) rename {release-v0.12.0 => release-v0.13.1}/vk_chunk.vkey (100%) diff --git a/circuit-assets.md b/circuit-assets.md new file mode 100644 index 000000000..137171f55 --- /dev/null +++ b/circuit-assets.md @@ -0,0 +1,45 @@ + + +## Circuit Setup Files + +Setup files are not related to circuit versions. Available in Scroll S3 or PSE S3: + +``` +for degree in 20 21 24 25 26 +do + wget https://circuit-release.s3.us-west-2.amazonaws.com/setup/params${degree} + # or + # wget https://trusted-setup-halo2kzg.s3.eu-central-1.amazonaws.com/perpetual-powers-of-tau-raw-${degree} -O params${degree} +done +``` + +Checksum can be found [here](./params-sha256sum) + +To know more about how these files are generated, see [here](https://github.com/han0110/halo2-kzg-srs?tab=readme-ov-file#download-the-converted-srs) + + +## Circuit Assets Files (VKs) + + +Assets files are related to circuit versions. Available in Github [v0.13.1 assets](./release-v0.13.1) and S3: + +``` + +VERSION="v0.13.1" +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/sha256sum +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/chunk.protocol +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/evm_verifier.bin +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/evm_verifier.yul +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/layer1.config +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/layer2.config +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/layer3.config +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/layer4.config +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/layer5.config +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/layer6.config +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/pi.data +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/preprocessed_digest.hex +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/proof.data +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/vk_batch.vkey +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/vk_bundle.vkey +wget https://circuit-release.s3.us-west-2.amazonaws.com/release-v${VERSION}/vk_chunk.vkey +``` diff --git a/params-sha256sum b/params-sha256sum new file mode 100644 index 000000000..65751864d --- /dev/null +++ b/params-sha256sum @@ -0,0 +1,5 @@ +54ef75911da76d7a6b7ea341998aaf66cb06c679c53e0a88a4fe070dd3add963 params20 +486e044cf98704e07f41137d2b89698dc03d1fbf34d13b60902fea19a6013b4b params21 +f94fa4afa2f5147680f907d4dd96a8826206c26bd3328cd379feaed614b234de params24 +dec49a69893fbcd66cd06296b2d936a6aceb431c130b2e52675fe4274b504f57 params25 +b198a51d48b88181508d8e4ea9dea39db285e4585663b29b7e4ded0c22a94875 params26 diff --git a/release-v0.12.0/evm_verifier.bin b/release-v0.12.0/evm_verifier.bin deleted file mode 100644 index 6fb17893b96d0ff516b99e41e3073b47e8b2c55b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14050 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 diff --git a/release-v0.12.0/evm_verifier.yul b/release-v0.12.0/evm_verifier.yul deleted file mode 100644 index e6dbe3fe9..000000000 --- a/release-v0.12.0/evm_verifier.yul +++ /dev/null @@ -1,1248 +0,0 @@ - - object "plonk_verifier" { - code { - function allocate(size) -> ptr { - ptr := mload(0x40) - if eq(ptr, 0) { ptr := 0x60 } - mstore(0x40, add(ptr, size)) - } - let size := datasize("Runtime") - let offset := allocate(size) - datacopy(offset, dataoffset("Runtime"), size) - return(offset, size) - } - object "Runtime" { - code { - let success:bool := true - let f_p := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 - let f_q := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 - function validate_ec_point(x, y) -> valid:bool { - { - let x_lt_p:bool := lt(x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let y_lt_p:bool := lt(y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - valid := and(x_lt_p, y_lt_p) - } - { - let x_is_zero:bool := eq(x, 0) - let y_is_zero:bool := eq(y, 0) - let x_or_y_is_zero:bool := or(x_is_zero, y_is_zero) - let x_and_y_is_not_zero:bool := not(x_or_y_is_zero) - valid := and(x_and_y_is_not_zero, valid) - } - { - let y_square := mulmod(y, y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let x_square := mulmod(x, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let x_cube := mulmod(x_square, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let x_cube_plus_3 := addmod(x_cube, 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let y_square_eq_x_cube_plus_3:bool := eq(x_cube_plus_3, y_square) - valid := and(y_square_eq_x_cube_plus_3, valid) - } - } - mstore(0x20, mod(calldataload(0x0), f_q)) -mstore(0x40, mod(calldataload(0x20), f_q)) -mstore(0x60, mod(calldataload(0x40), f_q)) -mstore(0x80, mod(calldataload(0x60), f_q)) -mstore(0xa0, mod(calldataload(0x80), f_q)) -mstore(0xc0, mod(calldataload(0xa0), f_q)) -mstore(0xe0, mod(calldataload(0xc0), f_q)) -mstore(0x100, mod(calldataload(0xe0), f_q)) -mstore(0x120, mod(calldataload(0x100), f_q)) -mstore(0x140, mod(calldataload(0x120), f_q)) -mstore(0x160, mod(calldataload(0x140), f_q)) -mstore(0x180, mod(calldataload(0x160), f_q)) -mstore(0x1a0, mod(calldataload(0x180), f_q)) -mstore(0x1c0, mod(calldataload(0x1a0), f_q)) -mstore(0x1e0, mod(calldataload(0x1c0), f_q)) -mstore(0x200, mod(calldataload(0x1e0), f_q)) -mstore(0x220, mod(calldataload(0x200), f_q)) -mstore(0x240, mod(calldataload(0x220), f_q)) -mstore(0x260, mod(calldataload(0x240), f_q)) -mstore(0x280, mod(calldataload(0x260), f_q)) -mstore(0x2a0, mod(calldataload(0x280), f_q)) -mstore(0x2c0, mod(calldataload(0x2a0), f_q)) -mstore(0x2e0, mod(calldataload(0x2c0), f_q)) -mstore(0x300, mod(calldataload(0x2e0), f_q)) -mstore(0x320, mod(calldataload(0x300), f_q)) -mstore(0x0, 9936093397899228933306311304390164297340834794229559090671084174731626976461) - - { - let x := calldataload(0x320) - mstore(0x340, x) - let y := calldataload(0x340) - mstore(0x360, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0x380, keccak256(0x0, 896)) -{ - let hash := mload(0x380) - mstore(0x3a0, mod(hash, f_q)) - mstore(0x3c0, hash) - } - - { - let x := calldataload(0x360) - mstore(0x3e0, x) - let y := calldataload(0x380) - mstore(0x400, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0x420, keccak256(0x3c0, 96)) -{ - let hash := mload(0x420) - mstore(0x440, mod(hash, f_q)) - mstore(0x460, hash) - } -mstore8(1152, 1) -mstore(0x480, keccak256(0x460, 33)) -{ - let hash := mload(0x480) - mstore(0x4a0, mod(hash, f_q)) - mstore(0x4c0, hash) - } - - { - let x := calldataload(0x3a0) - mstore(0x4e0, x) - let y := calldataload(0x3c0) - mstore(0x500, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x3e0) - mstore(0x520, x) - let y := calldataload(0x400) - mstore(0x540, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x420) - mstore(0x560, x) - let y := calldataload(0x440) - mstore(0x580, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0x5a0, keccak256(0x4c0, 224)) -{ - let hash := mload(0x5a0) - mstore(0x5c0, mod(hash, f_q)) - mstore(0x5e0, hash) - } - - { - let x := calldataload(0x460) - mstore(0x600, x) - let y := calldataload(0x480) - mstore(0x620, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x4a0) - mstore(0x640, x) - let y := calldataload(0x4c0) - mstore(0x660, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x4e0) - mstore(0x680, x) - let y := calldataload(0x500) - mstore(0x6a0, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x520) - mstore(0x6c0, x) - let y := calldataload(0x540) - mstore(0x6e0, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0x700, keccak256(0x5e0, 288)) -{ - let hash := mload(0x700) - mstore(0x720, mod(hash, f_q)) - mstore(0x740, hash) - } -mstore(0x760, mod(calldataload(0x560), f_q)) -mstore(0x780, mod(calldataload(0x580), f_q)) -mstore(0x7a0, mod(calldataload(0x5a0), f_q)) -mstore(0x7c0, mod(calldataload(0x5c0), f_q)) -mstore(0x7e0, mod(calldataload(0x5e0), f_q)) -mstore(0x800, mod(calldataload(0x600), f_q)) -mstore(0x820, mod(calldataload(0x620), f_q)) -mstore(0x840, mod(calldataload(0x640), f_q)) -mstore(0x860, mod(calldataload(0x660), f_q)) -mstore(0x880, mod(calldataload(0x680), f_q)) -mstore(0x8a0, mod(calldataload(0x6a0), f_q)) -mstore(0x8c0, mod(calldataload(0x6c0), f_q)) -mstore(0x8e0, mod(calldataload(0x6e0), f_q)) -mstore(0x900, mod(calldataload(0x700), f_q)) -mstore(0x920, mod(calldataload(0x720), f_q)) -mstore(0x940, mod(calldataload(0x740), f_q)) -mstore(0x960, mod(calldataload(0x760), f_q)) -mstore(0x980, keccak256(0x740, 576)) -{ - let hash := mload(0x980) - mstore(0x9a0, mod(hash, f_q)) - mstore(0x9c0, hash) - } -mstore8(2528, 1) -mstore(0x9e0, keccak256(0x9c0, 33)) -{ - let hash := mload(0x9e0) - mstore(0xa00, mod(hash, f_q)) - mstore(0xa20, hash) - } - - { - let x := calldataload(0x780) - mstore(0xa40, x) - let y := calldataload(0x7a0) - mstore(0xa60, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0xa80, keccak256(0xa20, 96)) -{ - let hash := mload(0xa80) - mstore(0xaa0, mod(hash, f_q)) - mstore(0xac0, hash) - } - - { - let x := calldataload(0x7c0) - mstore(0xae0, x) - let y := calldataload(0x7e0) - mstore(0xb00, y) - success := and(validate_ec_point(x, y), success) - } -{ - let x := mload(0x20) -x := add(x, shl(88, mload(0x40))) -x := add(x, shl(176, mload(0x60))) -mstore(2848, x) -let y := mload(0x80) -y := add(y, shl(88, mload(0xa0))) -y := add(y, shl(176, mload(0xc0))) -mstore(2880, y) - - success := and(validate_ec_point(x, y), success) - } -{ - let x := mload(0xe0) -x := add(x, shl(88, mload(0x100))) -x := add(x, shl(176, mload(0x120))) -mstore(2912, x) -let y := mload(0x140) -y := add(y, shl(88, mload(0x160))) -y := add(y, shl(176, mload(0x180))) -mstore(2944, y) - - success := and(validate_ec_point(x, y), success) - } -mstore(0xba0, mulmod(mload(0x720), mload(0x720), f_q)) -mstore(0xbc0, mulmod(mload(0xba0), mload(0xba0), f_q)) -mstore(0xbe0, mulmod(mload(0xbc0), mload(0xbc0), f_q)) -mstore(0xc00, mulmod(mload(0xbe0), mload(0xbe0), f_q)) -mstore(0xc20, mulmod(mload(0xc00), mload(0xc00), f_q)) -mstore(0xc40, mulmod(mload(0xc20), mload(0xc20), f_q)) -mstore(0xc60, mulmod(mload(0xc40), mload(0xc40), f_q)) -mstore(0xc80, mulmod(mload(0xc60), mload(0xc60), f_q)) -mstore(0xca0, mulmod(mload(0xc80), mload(0xc80), f_q)) -mstore(0xcc0, mulmod(mload(0xca0), mload(0xca0), f_q)) -mstore(0xce0, mulmod(mload(0xcc0), mload(0xcc0), f_q)) -mstore(0xd00, mulmod(mload(0xce0), mload(0xce0), f_q)) -mstore(0xd20, mulmod(mload(0xd00), mload(0xd00), f_q)) -mstore(0xd40, mulmod(mload(0xd20), mload(0xd20), f_q)) -mstore(0xd60, mulmod(mload(0xd40), mload(0xd40), f_q)) -mstore(0xd80, mulmod(mload(0xd60), mload(0xd60), f_q)) -mstore(0xda0, mulmod(mload(0xd80), mload(0xd80), f_q)) -mstore(0xdc0, mulmod(mload(0xda0), mload(0xda0), f_q)) -mstore(0xde0, mulmod(mload(0xdc0), mload(0xdc0), f_q)) -mstore(0xe00, mulmod(mload(0xde0), mload(0xde0), f_q)) -mstore(0xe20, mulmod(mload(0xe00), mload(0xe00), f_q)) -mstore(0xe40, mulmod(mload(0xe20), mload(0xe20), f_q)) -mstore(0xe60, mulmod(mload(0xe40), mload(0xe40), f_q)) -mstore(0xe80, mulmod(mload(0xe60), mload(0xe60), f_q)) -mstore(0xea0, mulmod(mload(0xe80), mload(0xe80), f_q)) -mstore(0xec0, mulmod(mload(0xea0), mload(0xea0), f_q)) -mstore(0xee0, addmod(mload(0xec0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) -mstore(0xf00, mulmod(mload(0xee0), 21888242545679039938882419398440172875981108180010270949818755658014750055173, f_q)) -mstore(0xf20, mulmod(mload(0xf00), 20399963857427891121373969697480515951916080097087921832172879765607926713957, f_q)) -mstore(0xf40, addmod(mload(0x720), 1488279014411384100872436047776759136632284303328112511525324420967881781660, f_q)) -mstore(0xf60, mulmod(mload(0xf00), 16569469942529664681363945218228869388192121720036659574609237682362097667612, f_q)) -mstore(0xf80, addmod(mload(0x720), 5318772929309610540882460527028405700356242680379374769088966504213710828005, f_q)) -mstore(0xfa0, mulmod(mload(0xf00), 6047398202650739717314770882059679662647667807426525133977681644606291529311, f_q)) -mstore(0xfc0, addmod(mload(0x720), 15840844669188535504931634863197595425900696592989509209720522541969516966306, f_q)) -mstore(0xfe0, mulmod(mload(0xf00), 17329448237240114492580865744088056414251735686965494637158808787419781175510, f_q)) -mstore(0x1000, addmod(mload(0x720), 4558794634599160729665540001169218674296628713450539706539395399156027320107, f_q)) -mstore(0x1020, mulmod(mload(0xf00), 3693565015985198455139889557180396682968596245011005461846595820698933079918, f_q)) -mstore(0x1040, addmod(mload(0x720), 18194677855854076767106516188076878405579768155405028881851608365876875415699, f_q)) -mstore(0x1060, mulmod(mload(0xf00), 11377606117859914088982205826922132024839443553408109299929510653283289974216, f_q)) -mstore(0x1080, addmod(mload(0x720), 10510636753979361133264199918335143063708920847007925043768693533292518521401, f_q)) -mstore(0x10a0, mulmod(mload(0xf00), 14803907026430593724305438564799066516271154714737734572920456128449769927233, f_q)) -mstore(0x10c0, addmod(mload(0x720), 7084335845408681497940967180458208572277209685678299770777748058126038568384, f_q)) -mstore(0x10e0, mulmod(mload(0xf00), 1, f_q)) -mstore(0x1100, addmod(mload(0x720), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) -mstore(0x1120, mulmod(mload(0xf00), 13446667982376394161563610564587413125564757801019538732601045199901075958935, f_q)) -mstore(0x1140, addmod(mload(0x720), 8441574889462881060682795180669861962983606599396495611097158986674732536682, f_q)) -mstore(0x1160, mulmod(mload(0xf00), 6143038923529407703646399695489445107254060255791852207908457597807435305312, f_q)) -mstore(0x1180, addmod(mload(0x720), 15745203948309867518600006049767829981294304144624182135789746588768373190305, f_q)) -mstore(0x11a0, mulmod(mload(0xf00), 21813856626197829021720820945327074612555900476153638460378780375714815148448, f_q)) -mstore(0x11c0, addmod(mload(0x720), 74386245641446200525584799930200475992463924262395883319423810860993347169, f_q)) -mstore(0x11e0, mulmod(mload(0xf00), 11451405578697956743456240853980216273390554734748796433026540431386972584651, f_q)) -mstore(0x1200, addmod(mload(0x720), 10436837293141318478790164891277058815157809665667237910671663755188835910966, f_q)) -mstore(0x1220, mulmod(mload(0xf00), 2258791456229719674664876333845584462457126852136701862196747426485314788465, f_q)) -mstore(0x1240, addmod(mload(0x720), 19629451415609555547581529411411690626091237548279332481501456760090493707152, f_q)) -mstore(0x1260, mulmod(mload(0xf00), 16670521521732547392407716560529197273408943645332907966320731856743274895475, f_q)) -mstore(0x1280, addmod(mload(0x720), 5217721350106727829838689184728077815139420755083126377377472329832533600142, f_q)) -mstore(0x12a0, mulmod(mload(0xf00), 6973717477794544023251421539913937529504002186168239878624319939785647341572, f_q)) -mstore(0x12c0, addmod(mload(0x720), 14914525394044731198994984205343337559044362214247794465073884246790161154045, f_q)) -mstore(0x12e0, mulmod(mload(0xf00), 8374374965308410102411073611984011876711565317741801500439755773472076597347, f_q)) -mstore(0x1300, addmod(mload(0x720), 13513867906530865119835332133273263211836799082674232843258448413103731898270, f_q)) -mstore(0x1320, mulmod(mload(0xf00), 7644774028564064345188091774880429238758499926703297575879018755827411518744, f_q)) -mstore(0x1340, addmod(mload(0x720), 14243468843275210877058313970376845849789864473712736767819185430748396976873, f_q)) -mstore(0x1360, mulmod(mload(0xf00), 17041886618628883845743410343041491135676788197442345444346654338941897766515, f_q)) -mstore(0x1380, addmod(mload(0x720), 4846356253210391376502995402215783952871576202973688899351549847633910729102, f_q)) -mstore(0x13a0, mulmod(mload(0xf00), 20276212859876996965895067376549928325970197996069741985761123463478912375212, f_q)) -mstore(0x13c0, addmod(mload(0x720), 1612030011962278256351338368707346762578166404346292357937080723096896120405, f_q)) -mstore(0x13e0, mulmod(mload(0xf00), 21490807004895109926141140246143262403290679459142140821740925192625185504522, f_q)) -mstore(0x1400, addmod(mload(0x720), 397435866944165296105265499114012685257684941273893521957278993950622991095, f_q)) -mstore(0x1420, mulmod(mload(0xf00), 21856635360464150734248258901271514898436182748160009166613717095391832219001, f_q)) -mstore(0x1440, addmod(mload(0x720), 31607511375124487998146843985760190112181652256025177084487091183976276616, f_q)) -mstore(0x1460, mulmod(mload(0xf00), 4947689244094276630090796471410438387704819356682144196760515917874272844658, f_q)) -mstore(0x1480, addmod(mload(0x720), 16940553627744998592155609273846836700843545043733890146937688268701535650959, f_q)) -mstore(0x14a0, mulmod(mload(0xf00), 16070949257099864401214446952969046546611226673215562325034009111680440277863, f_q)) -mstore(0x14c0, addmod(mload(0x720), 5817293614739410821031958792288228541937137727200472018664195074895368217754, f_q)) -mstore(0x14e0, mulmod(mload(0xf00), 11211301017135681023579411905410872569206244553457844956874280139879520583390, f_q)) -mstore(0x1500, addmod(mload(0x720), 10676941854703594198666993839846402519342119846958189386823924046696287912227, f_q)) -mstore(0x1520, mulmod(mload(0xf00), 13950560640343059709470007801605358008980413716864447750775614801472024994001, f_q)) -mstore(0x1540, addmod(mload(0x720), 7937682231496215512776397943651917079567950683551586592922589385103783501616, f_q)) -mstore(0x1560, mulmod(mload(0xf00), 5264024894212359361117235356180248560912605977787414341366976252256241723081, f_q)) -mstore(0x1580, addmod(mload(0x720), 16624217977626915861129170389077026527635758422628620002331227934319566772536, f_q)) -mstore(0x15a0, mulmod(mload(0xf00), 3625492050666108396704456638133783157286349416935200203472288366641355665864, f_q)) -mstore(0x15c0, addmod(mload(0x720), 18262750821173166825541949107123491931262014983480834140225915819934452829753, f_q)) -mstore(0x15e0, mulmod(mload(0xf00), 18846108080730935585192484934247867403156699586319724728525857970312957475341, f_q)) -mstore(0x1600, addmod(mload(0x720), 3042134791108339637053920811009407685391664814096309615172346216262851020276, f_q)) -mstore(0x1620, mulmod(mload(0xf00), 6473332732845625289791651727472817517565982136597666101608581856093617811346, f_q)) -mstore(0x1640, addmod(mload(0x720), 15414910138993649932454754017784457570982382263818368242089622330482190684271, f_q)) -mstore(0x1660, mulmod(mload(0xf00), 14702679338564370535199761954906750181917994561807919001424434650417511039135, f_q)) -mstore(0x1680, addmod(mload(0x720), 7185563533274904687046643790350524906630369838608115342273769536158297456482, f_q)) -mstore(0x16a0, mulmod(mload(0xf00), 6001486148891510551408340246911394095022311837824516338589673764885721480362, f_q)) -mstore(0x16c0, addmod(mload(0x720), 15886756722947764670838065498345880993526052562591518005108530421690087015255, f_q)) -mstore(0x16e0, mulmod(mload(0xf00), 3615478808282855240548287271348143516886772452944084747768312988864436725401, f_q)) -mstore(0x1700, addmod(mload(0x720), 18272764063556419981698118473909131571661591947471949595929891197711371770216, f_q)) -{ - let prod := mload(0xf40) - - prod := mulmod(mload(0xf80), prod, f_q) - mstore(0x1720, prod) - - prod := mulmod(mload(0xfc0), prod, f_q) - mstore(0x1740, prod) - - prod := mulmod(mload(0x1000), prod, f_q) - mstore(0x1760, prod) - - prod := mulmod(mload(0x1040), prod, f_q) - mstore(0x1780, prod) - - prod := mulmod(mload(0x1080), prod, f_q) - mstore(0x17a0, prod) - - prod := mulmod(mload(0x10c0), prod, f_q) - mstore(0x17c0, prod) - - prod := mulmod(mload(0x1100), prod, f_q) - mstore(0x17e0, prod) - - prod := mulmod(mload(0x1140), prod, f_q) - mstore(0x1800, prod) - - prod := mulmod(mload(0x1180), prod, f_q) - mstore(0x1820, prod) - - prod := mulmod(mload(0x11c0), prod, f_q) - mstore(0x1840, prod) - - prod := mulmod(mload(0x1200), prod, f_q) - mstore(0x1860, prod) - - prod := mulmod(mload(0x1240), prod, f_q) - mstore(0x1880, prod) - - prod := mulmod(mload(0x1280), prod, f_q) - mstore(0x18a0, prod) - - prod := mulmod(mload(0x12c0), prod, f_q) - mstore(0x18c0, prod) - - prod := mulmod(mload(0x1300), prod, f_q) - mstore(0x18e0, prod) - - prod := mulmod(mload(0x1340), prod, f_q) - mstore(0x1900, prod) - - prod := mulmod(mload(0x1380), prod, f_q) - mstore(0x1920, prod) - - prod := mulmod(mload(0x13c0), prod, f_q) - mstore(0x1940, prod) - - prod := mulmod(mload(0x1400), prod, f_q) - mstore(0x1960, prod) - - prod := mulmod(mload(0x1440), prod, f_q) - mstore(0x1980, prod) - - prod := mulmod(mload(0x1480), prod, f_q) - mstore(0x19a0, prod) - - prod := mulmod(mload(0x14c0), prod, f_q) - mstore(0x19c0, prod) - - prod := mulmod(mload(0x1500), prod, f_q) - mstore(0x19e0, prod) - - prod := mulmod(mload(0x1540), prod, f_q) - mstore(0x1a00, prod) - - prod := mulmod(mload(0x1580), prod, f_q) - mstore(0x1a20, prod) - - prod := mulmod(mload(0x15c0), prod, f_q) - mstore(0x1a40, prod) - - prod := mulmod(mload(0x1600), prod, f_q) - mstore(0x1a60, prod) - - prod := mulmod(mload(0x1640), prod, f_q) - mstore(0x1a80, prod) - - prod := mulmod(mload(0x1680), prod, f_q) - mstore(0x1aa0, prod) - - prod := mulmod(mload(0x16c0), prod, f_q) - mstore(0x1ac0, prod) - - prod := mulmod(mload(0x1700), prod, f_q) - mstore(0x1ae0, prod) - - prod := mulmod(mload(0xee0), prod, f_q) - mstore(0x1b00, prod) - - } -mstore(0x1b40, 32) -mstore(0x1b60, 32) -mstore(0x1b80, 32) -mstore(0x1ba0, mload(0x1b00)) -mstore(0x1bc0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x1be0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x1b40, 0xc0, 0x1b20, 0x20), 1), success) -{ - - let inv := mload(0x1b20) - let v - - v := mload(0xee0) - mstore(3808, mulmod(mload(0x1ae0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1700) - mstore(5888, mulmod(mload(0x1ac0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x16c0) - mstore(5824, mulmod(mload(0x1aa0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1680) - mstore(5760, mulmod(mload(0x1a80), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1640) - mstore(5696, mulmod(mload(0x1a60), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1600) - mstore(5632, mulmod(mload(0x1a40), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x15c0) - mstore(5568, mulmod(mload(0x1a20), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1580) - mstore(5504, mulmod(mload(0x1a00), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1540) - mstore(5440, mulmod(mload(0x19e0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1500) - mstore(5376, mulmod(mload(0x19c0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x14c0) - mstore(5312, mulmod(mload(0x19a0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1480) - mstore(5248, mulmod(mload(0x1980), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1440) - mstore(5184, mulmod(mload(0x1960), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1400) - mstore(5120, mulmod(mload(0x1940), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x13c0) - mstore(5056, mulmod(mload(0x1920), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1380) - mstore(4992, mulmod(mload(0x1900), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1340) - mstore(4928, mulmod(mload(0x18e0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1300) - mstore(4864, mulmod(mload(0x18c0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x12c0) - mstore(4800, mulmod(mload(0x18a0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1280) - mstore(4736, mulmod(mload(0x1880), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1240) - mstore(4672, mulmod(mload(0x1860), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1200) - mstore(4608, mulmod(mload(0x1840), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x11c0) - mstore(4544, mulmod(mload(0x1820), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1180) - mstore(4480, mulmod(mload(0x1800), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1140) - mstore(4416, mulmod(mload(0x17e0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1100) - mstore(4352, mulmod(mload(0x17c0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x10c0) - mstore(4288, mulmod(mload(0x17a0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1080) - mstore(4224, mulmod(mload(0x1780), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1040) - mstore(4160, mulmod(mload(0x1760), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1000) - mstore(4096, mulmod(mload(0x1740), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xfc0) - mstore(4032, mulmod(mload(0x1720), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xf80) - mstore(3968, mulmod(mload(0xf40), inv, f_q)) - inv := mulmod(v, inv, f_q) - mstore(0xf40, inv) - - } -mstore(0x1c00, mulmod(mload(0xf20), mload(0xf40), f_q)) -mstore(0x1c20, mulmod(mload(0xf60), mload(0xf80), f_q)) -mstore(0x1c40, mulmod(mload(0xfa0), mload(0xfc0), f_q)) -mstore(0x1c60, mulmod(mload(0xfe0), mload(0x1000), f_q)) -mstore(0x1c80, mulmod(mload(0x1020), mload(0x1040), f_q)) -mstore(0x1ca0, mulmod(mload(0x1060), mload(0x1080), f_q)) -mstore(0x1cc0, mulmod(mload(0x10a0), mload(0x10c0), f_q)) -mstore(0x1ce0, mulmod(mload(0x10e0), mload(0x1100), f_q)) -mstore(0x1d00, mulmod(mload(0x1120), mload(0x1140), f_q)) -mstore(0x1d20, mulmod(mload(0x1160), mload(0x1180), f_q)) -mstore(0x1d40, mulmod(mload(0x11a0), mload(0x11c0), f_q)) -mstore(0x1d60, mulmod(mload(0x11e0), mload(0x1200), f_q)) -mstore(0x1d80, mulmod(mload(0x1220), mload(0x1240), f_q)) -mstore(0x1da0, mulmod(mload(0x1260), mload(0x1280), f_q)) -mstore(0x1dc0, mulmod(mload(0x12a0), mload(0x12c0), f_q)) -mstore(0x1de0, mulmod(mload(0x12e0), mload(0x1300), f_q)) -mstore(0x1e00, mulmod(mload(0x1320), mload(0x1340), f_q)) -mstore(0x1e20, mulmod(mload(0x1360), mload(0x1380), f_q)) -mstore(0x1e40, mulmod(mload(0x13a0), mload(0x13c0), f_q)) -mstore(0x1e60, mulmod(mload(0x13e0), mload(0x1400), f_q)) -mstore(0x1e80, mulmod(mload(0x1420), mload(0x1440), f_q)) -mstore(0x1ea0, mulmod(mload(0x1460), mload(0x1480), f_q)) -mstore(0x1ec0, mulmod(mload(0x14a0), mload(0x14c0), f_q)) -mstore(0x1ee0, mulmod(mload(0x14e0), mload(0x1500), f_q)) -mstore(0x1f00, mulmod(mload(0x1520), mload(0x1540), f_q)) -mstore(0x1f20, mulmod(mload(0x1560), mload(0x1580), f_q)) -mstore(0x1f40, mulmod(mload(0x15a0), mload(0x15c0), f_q)) -mstore(0x1f60, mulmod(mload(0x15e0), mload(0x1600), f_q)) -mstore(0x1f80, mulmod(mload(0x1620), mload(0x1640), f_q)) -mstore(0x1fa0, mulmod(mload(0x1660), mload(0x1680), f_q)) -mstore(0x1fc0, mulmod(mload(0x16a0), mload(0x16c0), f_q)) -mstore(0x1fe0, mulmod(mload(0x16e0), mload(0x1700), f_q)) -{ - let result := mulmod(mload(0x1ce0), mload(0x20), f_q) -result := addmod(mulmod(mload(0x1d00), mload(0x40), f_q), result, f_q) -result := addmod(mulmod(mload(0x1d20), mload(0x60), f_q), result, f_q) -result := addmod(mulmod(mload(0x1d40), mload(0x80), f_q), result, f_q) -result := addmod(mulmod(mload(0x1d60), mload(0xa0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1d80), mload(0xc0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1da0), mload(0xe0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1dc0), mload(0x100), f_q), result, f_q) -result := addmod(mulmod(mload(0x1de0), mload(0x120), f_q), result, f_q) -result := addmod(mulmod(mload(0x1e00), mload(0x140), f_q), result, f_q) -result := addmod(mulmod(mload(0x1e20), mload(0x160), f_q), result, f_q) -result := addmod(mulmod(mload(0x1e40), mload(0x180), f_q), result, f_q) -result := addmod(mulmod(mload(0x1e60), mload(0x1a0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1e80), mload(0x1c0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1ea0), mload(0x1e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1ec0), mload(0x200), f_q), result, f_q) -result := addmod(mulmod(mload(0x1ee0), mload(0x220), f_q), result, f_q) -result := addmod(mulmod(mload(0x1f00), mload(0x240), f_q), result, f_q) -result := addmod(mulmod(mload(0x1f20), mload(0x260), f_q), result, f_q) -result := addmod(mulmod(mload(0x1f40), mload(0x280), f_q), result, f_q) -result := addmod(mulmod(mload(0x1f60), mload(0x2a0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1f80), mload(0x2c0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1fa0), mload(0x2e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x1fc0), mload(0x300), f_q), result, f_q) -result := addmod(mulmod(mload(0x1fe0), mload(0x320), f_q), result, f_q) -mstore(8192, result) - } -mstore(0x2020, mulmod(mload(0x7a0), mload(0x780), f_q)) -mstore(0x2040, addmod(mload(0x760), mload(0x2020), f_q)) -mstore(0x2060, addmod(mload(0x2040), sub(f_q, mload(0x7c0)), f_q)) -mstore(0x2080, mulmod(mload(0x2060), mload(0x820), f_q)) -mstore(0x20a0, mulmod(mload(0x5c0), mload(0x2080), f_q)) -mstore(0x20c0, addmod(1, sub(f_q, mload(0x8e0)), f_q)) -mstore(0x20e0, mulmod(mload(0x20c0), mload(0x1ce0), f_q)) -mstore(0x2100, addmod(mload(0x20a0), mload(0x20e0), f_q)) -mstore(0x2120, mulmod(mload(0x5c0), mload(0x2100), f_q)) -mstore(0x2140, mulmod(mload(0x8e0), mload(0x8e0), f_q)) -mstore(0x2160, addmod(mload(0x2140), sub(f_q, mload(0x8e0)), f_q)) -mstore(0x2180, mulmod(mload(0x2160), mload(0x1c00), f_q)) -mstore(0x21a0, addmod(mload(0x2120), mload(0x2180), f_q)) -mstore(0x21c0, mulmod(mload(0x5c0), mload(0x21a0), f_q)) -mstore(0x21e0, addmod(1, sub(f_q, mload(0x1c00)), f_q)) -mstore(0x2200, addmod(mload(0x1c20), mload(0x1c40), f_q)) -mstore(0x2220, addmod(mload(0x2200), mload(0x1c60), f_q)) -mstore(0x2240, addmod(mload(0x2220), mload(0x1c80), f_q)) -mstore(0x2260, addmod(mload(0x2240), mload(0x1ca0), f_q)) -mstore(0x2280, addmod(mload(0x2260), mload(0x1cc0), f_q)) -mstore(0x22a0, addmod(mload(0x21e0), sub(f_q, mload(0x2280)), f_q)) -mstore(0x22c0, mulmod(mload(0x880), mload(0x440), f_q)) -mstore(0x22e0, addmod(mload(0x7e0), mload(0x22c0), f_q)) -mstore(0x2300, addmod(mload(0x22e0), mload(0x4a0), f_q)) -mstore(0x2320, mulmod(mload(0x8a0), mload(0x440), f_q)) -mstore(0x2340, addmod(mload(0x760), mload(0x2320), f_q)) -mstore(0x2360, addmod(mload(0x2340), mload(0x4a0), f_q)) -mstore(0x2380, mulmod(mload(0x2360), mload(0x2300), f_q)) -mstore(0x23a0, mulmod(mload(0x8c0), mload(0x440), f_q)) -mstore(0x23c0, addmod(mload(0x2000), mload(0x23a0), f_q)) -mstore(0x23e0, addmod(mload(0x23c0), mload(0x4a0), f_q)) -mstore(0x2400, mulmod(mload(0x23e0), mload(0x2380), f_q)) -mstore(0x2420, mulmod(mload(0x2400), mload(0x900), f_q)) -mstore(0x2440, mulmod(1, mload(0x440), f_q)) -mstore(0x2460, mulmod(mload(0x720), mload(0x2440), f_q)) -mstore(0x2480, addmod(mload(0x7e0), mload(0x2460), f_q)) -mstore(0x24a0, addmod(mload(0x2480), mload(0x4a0), f_q)) -mstore(0x24c0, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x440), f_q)) -mstore(0x24e0, mulmod(mload(0x720), mload(0x24c0), f_q)) -mstore(0x2500, addmod(mload(0x760), mload(0x24e0), f_q)) -mstore(0x2520, addmod(mload(0x2500), mload(0x4a0), f_q)) -mstore(0x2540, mulmod(mload(0x2520), mload(0x24a0), f_q)) -mstore(0x2560, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x440), f_q)) -mstore(0x2580, mulmod(mload(0x720), mload(0x2560), f_q)) -mstore(0x25a0, addmod(mload(0x2000), mload(0x2580), f_q)) -mstore(0x25c0, addmod(mload(0x25a0), mload(0x4a0), f_q)) -mstore(0x25e0, mulmod(mload(0x25c0), mload(0x2540), f_q)) -mstore(0x2600, mulmod(mload(0x25e0), mload(0x8e0), f_q)) -mstore(0x2620, addmod(mload(0x2420), sub(f_q, mload(0x2600)), f_q)) -mstore(0x2640, mulmod(mload(0x2620), mload(0x22a0), f_q)) -mstore(0x2660, addmod(mload(0x21c0), mload(0x2640), f_q)) -mstore(0x2680, mulmod(mload(0x5c0), mload(0x2660), f_q)) -mstore(0x26a0, mulmod(mload(0x920), mload(0x1ce0), f_q)) -mstore(0x26c0, addmod(mload(0x2680), mload(0x26a0), f_q)) -mstore(0x26e0, mulmod(mload(0x5c0), mload(0x26c0), f_q)) -mstore(0x2700, mulmod(mload(0x920), mload(0x1c00), f_q)) -mstore(0x2720, addmod(mload(0x26e0), mload(0x2700), f_q)) -mstore(0x2740, mulmod(mload(0x5c0), mload(0x2720), f_q)) -mstore(0x2760, addmod(mload(0x800), mload(0x440), f_q)) -mstore(0x2780, mulmod(mload(0x760), mload(0x840), f_q)) -mstore(0x27a0, addmod(mload(0x2780), mload(0x440), f_q)) -mstore(0x27c0, mulmod(mload(0x27a0), mload(0x2760), f_q)) -mstore(0x27e0, addmod(mload(0x940), sub(f_q, mload(0x920)), f_q)) -mstore(0x2800, mulmod(mload(0x27e0), mload(0x27c0), f_q)) -mstore(0x2820, mulmod(mload(0x27a0), mload(0x960), f_q)) -mstore(0x2840, addmod(mload(0x2760), sub(f_q, mload(0x2820)), f_q)) -mstore(0x2860, addmod(mload(0x2800), sub(f_q, mload(0x2840)), f_q)) -mstore(0x2880, mulmod(mload(0x2860), mload(0x22a0), f_q)) -mstore(0x28a0, addmod(mload(0x2740), mload(0x2880), f_q)) -mstore(0x28c0, mulmod(mload(0xec0), mload(0xec0), f_q)) -mstore(0x28e0, mulmod(mload(0x28c0), mload(0xec0), f_q)) -mstore(0x2900, mulmod(mload(0x28e0), mload(0xec0), f_q)) -mstore(0x2920, mulmod(1, mload(0xec0), f_q)) -mstore(0x2940, mulmod(1, mload(0x28c0), f_q)) -mstore(0x2960, mulmod(1, mload(0x28e0), f_q)) -mstore(0x2980, mulmod(mload(0x28a0), mload(0xee0), f_q)) -mstore(0x29a0, mulmod(mload(0xba0), mload(0x720), f_q)) -mstore(0x29c0, mulmod(mload(0x720), 1, f_q)) -mstore(0x29e0, addmod(mload(0xaa0), sub(f_q, mload(0x29c0)), f_q)) -mstore(0x2a00, mulmod(mload(0x720), 6143038923529407703646399695489445107254060255791852207908457597807435305312, f_q)) -mstore(0x2a20, addmod(mload(0xaa0), sub(f_q, mload(0x2a00)), f_q)) -mstore(0x2a40, mulmod(mload(0x720), 13446667982376394161563610564587413125564757801019538732601045199901075958935, f_q)) -mstore(0x2a60, addmod(mload(0xaa0), sub(f_q, mload(0x2a40)), f_q)) -mstore(0x2a80, mulmod(mload(0x720), 21813856626197829021720820945327074612555900476153638460378780375714815148448, f_q)) -mstore(0x2aa0, addmod(mload(0xaa0), sub(f_q, mload(0x2a80)), f_q)) -{ - let result := mulmod(mload(0xaa0), 21226454350967877604996201857734295406716648685573268075789461576572118204629, f_q) -result := addmod(mulmod(mload(0x720), 661788520871397617250203887522979681831715714842766267908742610003690290988, f_q), result, f_q) -mstore(10944, result) - } -{ - let result := mulmod(mload(0xaa0), 5861127194460807938380394597488182289255701836742860267379931784243223318895, f_q) -result := addmod(mulmod(mload(0x720), 3390128162633191074125945073253823994540311710737587304644639100065963932907, f_q), result, f_q) -mstore(10976, result) - } -{ - let result := mulmod(mload(0xaa0), 3390128162633191074125945073253823994540311710737587304644639100065963932907, f_q) -result := addmod(mulmod(mload(0x720), 90032813343344028270095592867940481147765329332774301746019309308684830918, f_q), result, f_q) -mstore(11008, result) - } -{ - let result := mulmod(mload(0xaa0), 6081264866030232838172298610738481044383077933941150375357654711302968300110, f_q) -result := addmod(mulmod(mload(0x720), 17149721552240364152242558882079404925549682875792813195623508753281175593761, f_q), result, f_q) -mstore(11040, result) - } -mstore(0x2b40, mulmod(1, mload(0x29e0), f_q)) -mstore(0x2b60, mulmod(mload(0x2b40), mload(0x2a60), f_q)) -mstore(0x2b80, mulmod(mload(0x2b60), mload(0x2a20), f_q)) -mstore(0x2ba0, mulmod(mload(0x2b80), mload(0x2aa0), f_q)) -{ - let result := mulmod(mload(0xaa0), 8441574889462881060682795180669861962983606599396495611097158986674732536683, f_q) -result := addmod(mulmod(mload(0x720), 13446667982376394161563610564587413125564757801019538732601045199901075958934, f_q), result, f_q) -mstore(11200, result) - } -{ - let result := mulmod(mload(0xaa0), 13446667982376394161563610564587413125564757801019538732601045199901075958934, f_q) -result := addmod(mulmod(mload(0x720), 7303629058846986457917210869097968018310697545227686524692587602093640653623, f_q), result, f_q) -mstore(11232, result) - } -{ - let result := mulmod(mload(0xaa0), 1, f_q) -result := addmod(mulmod(mload(0x720), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) -mstore(11264, result) - } -{ - let prod := mload(0x2ac0) - - prod := mulmod(mload(0x2ae0), prod, f_q) - mstore(0x2c20, prod) - - prod := mulmod(mload(0x2b00), prod, f_q) - mstore(0x2c40, prod) - - prod := mulmod(mload(0x2b20), prod, f_q) - mstore(0x2c60, prod) - - prod := mulmod(mload(0x2bc0), prod, f_q) - mstore(0x2c80, prod) - - prod := mulmod(mload(0x2be0), prod, f_q) - mstore(0x2ca0, prod) - - prod := mulmod(mload(0x2b60), prod, f_q) - mstore(0x2cc0, prod) - - prod := mulmod(mload(0x2c00), prod, f_q) - mstore(0x2ce0, prod) - - prod := mulmod(mload(0x2b40), prod, f_q) - mstore(0x2d00, prod) - - } -mstore(0x2d40, 32) -mstore(0x2d60, 32) -mstore(0x2d80, 32) -mstore(0x2da0, mload(0x2d00)) -mstore(0x2dc0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x2de0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x2d40, 0xc0, 0x2d20, 0x20), 1), success) -{ - - let inv := mload(0x2d20) - let v - - v := mload(0x2b40) - mstore(11072, mulmod(mload(0x2ce0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x2c00) - mstore(11264, mulmod(mload(0x2cc0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x2b60) - mstore(11104, mulmod(mload(0x2ca0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x2be0) - mstore(11232, mulmod(mload(0x2c80), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x2bc0) - mstore(11200, mulmod(mload(0x2c60), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x2b20) - mstore(11040, mulmod(mload(0x2c40), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x2b00) - mstore(11008, mulmod(mload(0x2c20), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x2ae0) - mstore(10976, mulmod(mload(0x2ac0), inv, f_q)) - inv := mulmod(v, inv, f_q) - mstore(0x2ac0, inv) - - } -{ - let result := mload(0x2ac0) -result := addmod(mload(0x2ae0), result, f_q) -result := addmod(mload(0x2b00), result, f_q) -result := addmod(mload(0x2b20), result, f_q) -mstore(11776, result) - } -mstore(0x2e20, mulmod(mload(0x2ba0), mload(0x2b60), f_q)) -{ - let result := mload(0x2bc0) -result := addmod(mload(0x2be0), result, f_q) -mstore(11840, result) - } -mstore(0x2e60, mulmod(mload(0x2ba0), mload(0x2b40), f_q)) -{ - let result := mload(0x2c00) -mstore(11904, result) - } -{ - let prod := mload(0x2e00) - - prod := mulmod(mload(0x2e40), prod, f_q) - mstore(0x2ea0, prod) - - prod := mulmod(mload(0x2e80), prod, f_q) - mstore(0x2ec0, prod) - - } -mstore(0x2f00, 32) -mstore(0x2f20, 32) -mstore(0x2f40, 32) -mstore(0x2f60, mload(0x2ec0)) -mstore(0x2f80, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x2fa0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x2f00, 0xc0, 0x2ee0, 0x20), 1), success) -{ - - let inv := mload(0x2ee0) - let v - - v := mload(0x2e80) - mstore(11904, mulmod(mload(0x2ea0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x2e40) - mstore(11840, mulmod(mload(0x2e00), inv, f_q)) - inv := mulmod(v, inv, f_q) - mstore(0x2e00, inv) - - } -mstore(0x2fc0, mulmod(mload(0x2e20), mload(0x2e40), f_q)) -mstore(0x2fe0, mulmod(mload(0x2e60), mload(0x2e80), f_q)) -mstore(0x3000, mulmod(mload(0x9a0), mload(0x9a0), f_q)) -mstore(0x3020, mulmod(mload(0x3000), mload(0x9a0), f_q)) -mstore(0x3040, mulmod(mload(0x3020), mload(0x9a0), f_q)) -mstore(0x3060, mulmod(mload(0x3040), mload(0x9a0), f_q)) -mstore(0x3080, mulmod(mload(0x3060), mload(0x9a0), f_q)) -mstore(0x30a0, mulmod(mload(0x3080), mload(0x9a0), f_q)) -mstore(0x30c0, mulmod(mload(0x30a0), mload(0x9a0), f_q)) -mstore(0x30e0, mulmod(mload(0x30c0), mload(0x9a0), f_q)) -mstore(0x3100, mulmod(mload(0x30e0), mload(0x9a0), f_q)) -mstore(0x3120, mulmod(mload(0xa00), mload(0xa00), f_q)) -mstore(0x3140, mulmod(mload(0x3120), mload(0xa00), f_q)) -{ - let result := mulmod(mload(0x760), mload(0x2ac0), f_q) -result := addmod(mulmod(mload(0x780), mload(0x2ae0), f_q), result, f_q) -result := addmod(mulmod(mload(0x7a0), mload(0x2b00), f_q), result, f_q) -result := addmod(mulmod(mload(0x7c0), mload(0x2b20), f_q), result, f_q) -mstore(12640, result) - } -mstore(0x3180, mulmod(mload(0x3160), mload(0x2e00), f_q)) -mstore(0x31a0, mulmod(sub(f_q, mload(0x3180)), 1, f_q)) -mstore(0x31c0, mulmod(mload(0x31a0), 1, f_q)) -mstore(0x31e0, mulmod(1, mload(0x2e20), f_q)) -{ - let result := mulmod(mload(0x8e0), mload(0x2bc0), f_q) -result := addmod(mulmod(mload(0x900), mload(0x2be0), f_q), result, f_q) -mstore(12800, result) - } -mstore(0x3220, mulmod(mload(0x3200), mload(0x2fc0), f_q)) -mstore(0x3240, mulmod(sub(f_q, mload(0x3220)), 1, f_q)) -mstore(0x3260, mulmod(mload(0x31e0), 1, f_q)) -{ - let result := mulmod(mload(0x920), mload(0x2bc0), f_q) -result := addmod(mulmod(mload(0x940), mload(0x2be0), f_q), result, f_q) -mstore(12928, result) - } -mstore(0x32a0, mulmod(mload(0x3280), mload(0x2fc0), f_q)) -mstore(0x32c0, mulmod(sub(f_q, mload(0x32a0)), mload(0x9a0), f_q)) -mstore(0x32e0, mulmod(mload(0x31e0), mload(0x9a0), f_q)) -mstore(0x3300, addmod(mload(0x3240), mload(0x32c0), f_q)) -mstore(0x3320, mulmod(mload(0x3300), mload(0xa00), f_q)) -mstore(0x3340, mulmod(mload(0x3260), mload(0xa00), f_q)) -mstore(0x3360, mulmod(mload(0x32e0), mload(0xa00), f_q)) -mstore(0x3380, addmod(mload(0x31c0), mload(0x3320), f_q)) -mstore(0x33a0, mulmod(1, mload(0x2e60), f_q)) -{ - let result := mulmod(mload(0x960), mload(0x2c00), f_q) -mstore(13248, result) - } -mstore(0x33e0, mulmod(mload(0x33c0), mload(0x2fe0), f_q)) -mstore(0x3400, mulmod(sub(f_q, mload(0x33e0)), 1, f_q)) -mstore(0x3420, mulmod(mload(0x33a0), 1, f_q)) -{ - let result := mulmod(mload(0x7e0), mload(0x2c00), f_q) -mstore(13376, result) - } -mstore(0x3460, mulmod(mload(0x3440), mload(0x2fe0), f_q)) -mstore(0x3480, mulmod(sub(f_q, mload(0x3460)), mload(0x9a0), f_q)) -mstore(0x34a0, mulmod(mload(0x33a0), mload(0x9a0), f_q)) -mstore(0x34c0, addmod(mload(0x3400), mload(0x3480), f_q)) -{ - let result := mulmod(mload(0x800), mload(0x2c00), f_q) -mstore(13536, result) - } -mstore(0x3500, mulmod(mload(0x34e0), mload(0x2fe0), f_q)) -mstore(0x3520, mulmod(sub(f_q, mload(0x3500)), mload(0x3000), f_q)) -mstore(0x3540, mulmod(mload(0x33a0), mload(0x3000), f_q)) -mstore(0x3560, addmod(mload(0x34c0), mload(0x3520), f_q)) -{ - let result := mulmod(mload(0x820), mload(0x2c00), f_q) -mstore(13696, result) - } -mstore(0x35a0, mulmod(mload(0x3580), mload(0x2fe0), f_q)) -mstore(0x35c0, mulmod(sub(f_q, mload(0x35a0)), mload(0x3020), f_q)) -mstore(0x35e0, mulmod(mload(0x33a0), mload(0x3020), f_q)) -mstore(0x3600, addmod(mload(0x3560), mload(0x35c0), f_q)) -{ - let result := mulmod(mload(0x840), mload(0x2c00), f_q) -mstore(13856, result) - } -mstore(0x3640, mulmod(mload(0x3620), mload(0x2fe0), f_q)) -mstore(0x3660, mulmod(sub(f_q, mload(0x3640)), mload(0x3040), f_q)) -mstore(0x3680, mulmod(mload(0x33a0), mload(0x3040), f_q)) -mstore(0x36a0, addmod(mload(0x3600), mload(0x3660), f_q)) -{ - let result := mulmod(mload(0x880), mload(0x2c00), f_q) -mstore(14016, result) - } -mstore(0x36e0, mulmod(mload(0x36c0), mload(0x2fe0), f_q)) -mstore(0x3700, mulmod(sub(f_q, mload(0x36e0)), mload(0x3060), f_q)) -mstore(0x3720, mulmod(mload(0x33a0), mload(0x3060), f_q)) -mstore(0x3740, addmod(mload(0x36a0), mload(0x3700), f_q)) -{ - let result := mulmod(mload(0x8a0), mload(0x2c00), f_q) -mstore(14176, result) - } -mstore(0x3780, mulmod(mload(0x3760), mload(0x2fe0), f_q)) -mstore(0x37a0, mulmod(sub(f_q, mload(0x3780)), mload(0x3080), f_q)) -mstore(0x37c0, mulmod(mload(0x33a0), mload(0x3080), f_q)) -mstore(0x37e0, addmod(mload(0x3740), mload(0x37a0), f_q)) -{ - let result := mulmod(mload(0x8c0), mload(0x2c00), f_q) -mstore(14336, result) - } -mstore(0x3820, mulmod(mload(0x3800), mload(0x2fe0), f_q)) -mstore(0x3840, mulmod(sub(f_q, mload(0x3820)), mload(0x30a0), f_q)) -mstore(0x3860, mulmod(mload(0x33a0), mload(0x30a0), f_q)) -mstore(0x3880, addmod(mload(0x37e0), mload(0x3840), f_q)) -mstore(0x38a0, mulmod(mload(0x2920), mload(0x2e60), f_q)) -mstore(0x38c0, mulmod(mload(0x2940), mload(0x2e60), f_q)) -mstore(0x38e0, mulmod(mload(0x2960), mload(0x2e60), f_q)) -{ - let result := mulmod(mload(0x2980), mload(0x2c00), f_q) -mstore(14592, result) - } -mstore(0x3920, mulmod(mload(0x3900), mload(0x2fe0), f_q)) -mstore(0x3940, mulmod(sub(f_q, mload(0x3920)), mload(0x30c0), f_q)) -mstore(0x3960, mulmod(mload(0x33a0), mload(0x30c0), f_q)) -mstore(0x3980, mulmod(mload(0x38a0), mload(0x30c0), f_q)) -mstore(0x39a0, mulmod(mload(0x38c0), mload(0x30c0), f_q)) -mstore(0x39c0, mulmod(mload(0x38e0), mload(0x30c0), f_q)) -mstore(0x39e0, addmod(mload(0x3880), mload(0x3940), f_q)) -{ - let result := mulmod(mload(0x860), mload(0x2c00), f_q) -mstore(14848, result) - } -mstore(0x3a20, mulmod(mload(0x3a00), mload(0x2fe0), f_q)) -mstore(0x3a40, mulmod(sub(f_q, mload(0x3a20)), mload(0x30e0), f_q)) -mstore(0x3a60, mulmod(mload(0x33a0), mload(0x30e0), f_q)) -mstore(0x3a80, addmod(mload(0x39e0), mload(0x3a40), f_q)) -mstore(0x3aa0, mulmod(mload(0x3a80), mload(0x3120), f_q)) -mstore(0x3ac0, mulmod(mload(0x3420), mload(0x3120), f_q)) -mstore(0x3ae0, mulmod(mload(0x34a0), mload(0x3120), f_q)) -mstore(0x3b00, mulmod(mload(0x3540), mload(0x3120), f_q)) -mstore(0x3b20, mulmod(mload(0x35e0), mload(0x3120), f_q)) -mstore(0x3b40, mulmod(mload(0x3680), mload(0x3120), f_q)) -mstore(0x3b60, mulmod(mload(0x3720), mload(0x3120), f_q)) -mstore(0x3b80, mulmod(mload(0x37c0), mload(0x3120), f_q)) -mstore(0x3ba0, mulmod(mload(0x3860), mload(0x3120), f_q)) -mstore(0x3bc0, mulmod(mload(0x3960), mload(0x3120), f_q)) -mstore(0x3be0, mulmod(mload(0x3980), mload(0x3120), f_q)) -mstore(0x3c00, mulmod(mload(0x39a0), mload(0x3120), f_q)) -mstore(0x3c20, mulmod(mload(0x39c0), mload(0x3120), f_q)) -mstore(0x3c40, mulmod(mload(0x3a60), mload(0x3120), f_q)) -mstore(0x3c60, addmod(mload(0x3380), mload(0x3aa0), f_q)) -mstore(0x3c80, mulmod(1, mload(0x2ba0), f_q)) -mstore(0x3ca0, mulmod(1, mload(0xaa0), f_q)) -mstore(0x3cc0, 0x0000000000000000000000000000000000000000000000000000000000000001) - mstore(0x3ce0, 0x0000000000000000000000000000000000000000000000000000000000000002) -mstore(0x3d00, mload(0x3c60)) -success := and(eq(staticcall(gas(), 0x7, 0x3cc0, 0x60, 0x3cc0, 0x40), 1), success) -mstore(0x3d20, mload(0x3cc0)) - mstore(0x3d40, mload(0x3ce0)) -mstore(0x3d60, mload(0x340)) - mstore(0x3d80, mload(0x360)) -success := and(eq(staticcall(gas(), 0x6, 0x3d20, 0x80, 0x3d20, 0x40), 1), success) -mstore(0x3da0, mload(0x4e0)) - mstore(0x3dc0, mload(0x500)) -mstore(0x3de0, mload(0x3340)) -success := and(eq(staticcall(gas(), 0x7, 0x3da0, 0x60, 0x3da0, 0x40), 1), success) -mstore(0x3e00, mload(0x3d20)) - mstore(0x3e20, mload(0x3d40)) -mstore(0x3e40, mload(0x3da0)) - mstore(0x3e60, mload(0x3dc0)) -success := and(eq(staticcall(gas(), 0x6, 0x3e00, 0x80, 0x3e00, 0x40), 1), success) -mstore(0x3e80, mload(0x520)) - mstore(0x3ea0, mload(0x540)) -mstore(0x3ec0, mload(0x3360)) -success := and(eq(staticcall(gas(), 0x7, 0x3e80, 0x60, 0x3e80, 0x40), 1), success) -mstore(0x3ee0, mload(0x3e00)) - mstore(0x3f00, mload(0x3e20)) -mstore(0x3f20, mload(0x3e80)) - mstore(0x3f40, mload(0x3ea0)) -success := and(eq(staticcall(gas(), 0x6, 0x3ee0, 0x80, 0x3ee0, 0x40), 1), success) -mstore(0x3f60, mload(0x3e0)) - mstore(0x3f80, mload(0x400)) -mstore(0x3fa0, mload(0x3ac0)) -success := and(eq(staticcall(gas(), 0x7, 0x3f60, 0x60, 0x3f60, 0x40), 1), success) -mstore(0x3fc0, mload(0x3ee0)) - mstore(0x3fe0, mload(0x3f00)) -mstore(0x4000, mload(0x3f60)) - mstore(0x4020, mload(0x3f80)) -success := and(eq(staticcall(gas(), 0x6, 0x3fc0, 0x80, 0x3fc0, 0x40), 1), success) -mstore(0x4040, 0x2f072d1fd929ed26c05266dad642a28afa3824498a0522aad2b3cbc45aa76c97) - mstore(0x4060, 0x20cc00e697c707e0817c16c8e4b3c3a70e67112943402896c4793c1454130102) -mstore(0x4080, mload(0x3ae0)) -success := and(eq(staticcall(gas(), 0x7, 0x4040, 0x60, 0x4040, 0x40), 1), success) -mstore(0x40a0, mload(0x3fc0)) - mstore(0x40c0, mload(0x3fe0)) -mstore(0x40e0, mload(0x4040)) - mstore(0x4100, mload(0x4060)) -success := and(eq(staticcall(gas(), 0x6, 0x40a0, 0x80, 0x40a0, 0x40), 1), success) -mstore(0x4120, 0x0fb05ccb81603592ce60bd6199890470ef6f9caca3c17570df7701d70a2dd957) - mstore(0x4140, 0x1cc1301d6d462edf2e79083532a337ef3f087fbf0b9516d08074784017e10c7e) -mstore(0x4160, mload(0x3b00)) -success := and(eq(staticcall(gas(), 0x7, 0x4120, 0x60, 0x4120, 0x40), 1), success) -mstore(0x4180, mload(0x40a0)) - mstore(0x41a0, mload(0x40c0)) -mstore(0x41c0, mload(0x4120)) - mstore(0x41e0, mload(0x4140)) -success := and(eq(staticcall(gas(), 0x6, 0x4180, 0x80, 0x4180, 0x40), 1), success) -mstore(0x4200, 0x1e69edc3b54a25a5be1efb7515b5eaa259569e44cf6e7b99887bd2015311104f) - mstore(0x4220, 0x293e037f34e8ad87a6ebea272575c751f96a1e0acbf05bf5774e0581c3cc3823) -mstore(0x4240, mload(0x3b20)) -success := and(eq(staticcall(gas(), 0x7, 0x4200, 0x60, 0x4200, 0x40), 1), success) -mstore(0x4260, mload(0x4180)) - mstore(0x4280, mload(0x41a0)) -mstore(0x42a0, mload(0x4200)) - mstore(0x42c0, mload(0x4220)) -success := and(eq(staticcall(gas(), 0x6, 0x4260, 0x80, 0x4260, 0x40), 1), success) -mstore(0x42e0, 0x0cf666852fd76b36f03572da1111ea68014217801887369fd35f9460f6bb1324) - mstore(0x4300, 0x230bb407465f3dcda6711ec136903711485b30046005c0dd769bd85d1cc8a567) -mstore(0x4320, mload(0x3b40)) -success := and(eq(staticcall(gas(), 0x7, 0x42e0, 0x60, 0x42e0, 0x40), 1), success) -mstore(0x4340, mload(0x4260)) - mstore(0x4360, mload(0x4280)) -mstore(0x4380, mload(0x42e0)) - mstore(0x43a0, mload(0x4300)) -success := and(eq(staticcall(gas(), 0x6, 0x4340, 0x80, 0x4340, 0x40), 1), success) -mstore(0x43c0, 0x2c2ef5dd4ea527c7b6a1adb979cf19e316cf50515b2225ecd040f40f46ad8fc6) - mstore(0x43e0, 0x2cd240820bffbbfa44c0832dfe16e8a40c4e75d800f58f7576733ca37a9c7369) -mstore(0x4400, mload(0x3b60)) -success := and(eq(staticcall(gas(), 0x7, 0x43c0, 0x60, 0x43c0, 0x40), 1), success) -mstore(0x4420, mload(0x4340)) - mstore(0x4440, mload(0x4360)) -mstore(0x4460, mload(0x43c0)) - mstore(0x4480, mload(0x43e0)) -success := and(eq(staticcall(gas(), 0x6, 0x4420, 0x80, 0x4420, 0x40), 1), success) -mstore(0x44a0, 0x1e2415bae32b721ff7b95b1766a3d0a4ea86d62fc8b4ed864092e8be29b375b4) - mstore(0x44c0, 0x0193d85fa914927d0567822f343ead8682e19e1948bdfe0d70e5ce64eaddf26a) -mstore(0x44e0, mload(0x3b80)) -success := and(eq(staticcall(gas(), 0x7, 0x44a0, 0x60, 0x44a0, 0x40), 1), success) -mstore(0x4500, mload(0x4420)) - mstore(0x4520, mload(0x4440)) -mstore(0x4540, mload(0x44a0)) - mstore(0x4560, mload(0x44c0)) -success := and(eq(staticcall(gas(), 0x6, 0x4500, 0x80, 0x4500, 0x40), 1), success) -mstore(0x4580, 0x02b01e53fe9c70fbc4e13606ffb809f58993a5b31d9e9a69e5c86b2833b52ac8) - mstore(0x45a0, 0x21fe9d89f5e7d29aa77fb345a045fabbcc5f2be8bbd2f571306475118175ae30) -mstore(0x45c0, mload(0x3ba0)) -success := and(eq(staticcall(gas(), 0x7, 0x4580, 0x60, 0x4580, 0x40), 1), success) -mstore(0x45e0, mload(0x4500)) - mstore(0x4600, mload(0x4520)) -mstore(0x4620, mload(0x4580)) - mstore(0x4640, mload(0x45a0)) -success := and(eq(staticcall(gas(), 0x6, 0x45e0, 0x80, 0x45e0, 0x40), 1), success) -mstore(0x4660, mload(0x600)) - mstore(0x4680, mload(0x620)) -mstore(0x46a0, mload(0x3bc0)) -success := and(eq(staticcall(gas(), 0x7, 0x4660, 0x60, 0x4660, 0x40), 1), success) -mstore(0x46c0, mload(0x45e0)) - mstore(0x46e0, mload(0x4600)) -mstore(0x4700, mload(0x4660)) - mstore(0x4720, mload(0x4680)) -success := and(eq(staticcall(gas(), 0x6, 0x46c0, 0x80, 0x46c0, 0x40), 1), success) -mstore(0x4740, mload(0x640)) - mstore(0x4760, mload(0x660)) -mstore(0x4780, mload(0x3be0)) -success := and(eq(staticcall(gas(), 0x7, 0x4740, 0x60, 0x4740, 0x40), 1), success) -mstore(0x47a0, mload(0x46c0)) - mstore(0x47c0, mload(0x46e0)) -mstore(0x47e0, mload(0x4740)) - mstore(0x4800, mload(0x4760)) -success := and(eq(staticcall(gas(), 0x6, 0x47a0, 0x80, 0x47a0, 0x40), 1), success) -mstore(0x4820, mload(0x680)) - mstore(0x4840, mload(0x6a0)) -mstore(0x4860, mload(0x3c00)) -success := and(eq(staticcall(gas(), 0x7, 0x4820, 0x60, 0x4820, 0x40), 1), success) -mstore(0x4880, mload(0x47a0)) - mstore(0x48a0, mload(0x47c0)) -mstore(0x48c0, mload(0x4820)) - mstore(0x48e0, mload(0x4840)) -success := and(eq(staticcall(gas(), 0x6, 0x4880, 0x80, 0x4880, 0x40), 1), success) -mstore(0x4900, mload(0x6c0)) - mstore(0x4920, mload(0x6e0)) -mstore(0x4940, mload(0x3c20)) -success := and(eq(staticcall(gas(), 0x7, 0x4900, 0x60, 0x4900, 0x40), 1), success) -mstore(0x4960, mload(0x4880)) - mstore(0x4980, mload(0x48a0)) -mstore(0x49a0, mload(0x4900)) - mstore(0x49c0, mload(0x4920)) -success := and(eq(staticcall(gas(), 0x6, 0x4960, 0x80, 0x4960, 0x40), 1), success) -mstore(0x49e0, mload(0x560)) - mstore(0x4a00, mload(0x580)) -mstore(0x4a20, mload(0x3c40)) -success := and(eq(staticcall(gas(), 0x7, 0x49e0, 0x60, 0x49e0, 0x40), 1), success) -mstore(0x4a40, mload(0x4960)) - mstore(0x4a60, mload(0x4980)) -mstore(0x4a80, mload(0x49e0)) - mstore(0x4aa0, mload(0x4a00)) -success := and(eq(staticcall(gas(), 0x6, 0x4a40, 0x80, 0x4a40, 0x40), 1), success) -mstore(0x4ac0, mload(0xa40)) - mstore(0x4ae0, mload(0xa60)) -mstore(0x4b00, sub(f_q, mload(0x3c80))) -success := and(eq(staticcall(gas(), 0x7, 0x4ac0, 0x60, 0x4ac0, 0x40), 1), success) -mstore(0x4b20, mload(0x4a40)) - mstore(0x4b40, mload(0x4a60)) -mstore(0x4b60, mload(0x4ac0)) - mstore(0x4b80, mload(0x4ae0)) -success := and(eq(staticcall(gas(), 0x6, 0x4b20, 0x80, 0x4b20, 0x40), 1), success) -mstore(0x4ba0, mload(0xae0)) - mstore(0x4bc0, mload(0xb00)) -mstore(0x4be0, mload(0x3ca0)) -success := and(eq(staticcall(gas(), 0x7, 0x4ba0, 0x60, 0x4ba0, 0x40), 1), success) -mstore(0x4c00, mload(0x4b20)) - mstore(0x4c20, mload(0x4b40)) -mstore(0x4c40, mload(0x4ba0)) - mstore(0x4c60, mload(0x4bc0)) -success := and(eq(staticcall(gas(), 0x6, 0x4c00, 0x80, 0x4c00, 0x40), 1), success) -mstore(0x4c80, mload(0x4c00)) - mstore(0x4ca0, mload(0x4c20)) -mstore(0x4cc0, mload(0xae0)) - mstore(0x4ce0, mload(0xb00)) -mstore(0x4d00, mload(0xb20)) - mstore(0x4d20, mload(0xb40)) -mstore(0x4d40, mload(0xb60)) - mstore(0x4d60, mload(0xb80)) -mstore(0x4d80, keccak256(0x4c80, 256)) -mstore(19872, mod(mload(19840), f_q)) -mstore(0x4dc0, mulmod(mload(0x4da0), mload(0x4da0), f_q)) -mstore(0x4de0, mulmod(1, mload(0x4da0), f_q)) -mstore(0x4e00, mload(0x4d00)) - mstore(0x4e20, mload(0x4d20)) -mstore(0x4e40, mload(0x4de0)) -success := and(eq(staticcall(gas(), 0x7, 0x4e00, 0x60, 0x4e00, 0x40), 1), success) -mstore(0x4e60, mload(0x4c80)) - mstore(0x4e80, mload(0x4ca0)) -mstore(0x4ea0, mload(0x4e00)) - mstore(0x4ec0, mload(0x4e20)) -success := and(eq(staticcall(gas(), 0x6, 0x4e60, 0x80, 0x4e60, 0x40), 1), success) -mstore(0x4ee0, mload(0x4d40)) - mstore(0x4f00, mload(0x4d60)) -mstore(0x4f20, mload(0x4de0)) -success := and(eq(staticcall(gas(), 0x7, 0x4ee0, 0x60, 0x4ee0, 0x40), 1), success) -mstore(0x4f40, mload(0x4cc0)) - mstore(0x4f60, mload(0x4ce0)) -mstore(0x4f80, mload(0x4ee0)) - mstore(0x4fa0, mload(0x4f00)) -success := and(eq(staticcall(gas(), 0x6, 0x4f40, 0x80, 0x4f40, 0x40), 1), success) -mstore(0x4fc0, mload(0x4e60)) - mstore(0x4fe0, mload(0x4e80)) -mstore(0x5000, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) - mstore(0x5020, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) - mstore(0x5040, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) - mstore(0x5060, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) -mstore(0x5080, mload(0x4f40)) - mstore(0x50a0, mload(0x4f60)) -mstore(0x50c0, 0x186282957db913abd99f91db59fe69922e95040603ef44c0bd7aa3adeef8f5ac) - mstore(0x50e0, 0x17944351223333f260ddc3b4af45191b856689eda9eab5cbcddbbe570ce860d2) - mstore(0x5100, 0x06d971ff4a7467c3ec596ed6efc674572e32fd6f52b721f97e35b0b3d3546753) - mstore(0x5120, 0x06ecdb9f9567f59ed2eee36e1e1d58797fd13cc97fafc2910f5e8a12f202fa9a) -success := and(eq(staticcall(gas(), 0x8, 0x4fc0, 0x180, 0x4fc0, 0x20), 1), success) -success := and(eq(mload(0x4fc0), 1), success) - - if not(success) { revert(0, 0) } - return(0, 0) - - } - } - } \ No newline at end of file diff --git a/release-v0.12.0/pi.data b/release-v0.12.0/pi.data deleted file mode 100644 index 74f16315fc59515d75831b54d071902aedfa8a52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 416 zcmXpAv|iY5^KfTmkNqn;FC!YO`K$n;Qut~6dyQP!nt!;JT+W$YI I%cJob0WN7##sB~S diff --git a/release-v0.12.0/preprocessed_digest.hex b/release-v0.12.0/preprocessed_digest.hex deleted file mode 100644 index 43480d200..000000000 --- a/release-v0.12.0/preprocessed_digest.hex +++ /dev/null @@ -1 +0,0 @@ -30513ba1873ce1b9598c4faf101dccd32498e93c39e1f31a423390cbb1f81f7a diff --git a/release-v0.12.0/proof.data b/release-v0.12.0/proof.data deleted file mode 100644 index 310250612e5f43bec9928180b4fd875618314b7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1632 zcmZwFc|6k%90%~t$_!&26rjlm3d8 zKCt^}{p*aC?+Rw_06ItnoH8DCP8X+?DP8^XHnk>kAW{2^9Ae~s9t{nRkHvPH*c`#m zq2zlDHKrAgJ-;!SnyH>jeig-eX0L+XUC^X(Ly(kF)Ll_;#kiOP z=0{^ZpW+L}xQ5AGmuy)(;o@N6eg3rIKM6PpiQ+Nu3~2oISDh|d5f|q63iWKsXwTP( z^ngBSAUOK5yu zUuMAcY;dya<{ak2;qrv2#*xNW**o(H5BdR|J)J8YmGT*fwEdO6BPTLkmDJZ~W)XM3 zNT5Gf*jo?T8n%`=cELC&@$NZ=kC=A(NTK+M>G;ti$#RX02uYuP*g*Di8lhyxAFM=5 ztv!?5{A5-!HwT`x_>Vc>svcZo$*VzlEaYe5;sg#?;SXJ8j!AAQL5%K?tXhIbIhpNs zrmM0dm1|mrjt&QzirR0Lq4OR6+V%n4m5SZh24Wt1dxt;{NPiJpW^68|%OFC`$a)%v zr7vKdDZZO}mPVbcql&swOzpuxoo!UuD1(Dvciq)li~wbbg)dkVZ8ed}Ym((L*IDVs z8!2{8qJz_4+$*BVre`{Er|3oe@}rb8aj}V#Ne56KRnCC8r0bO!G`pTzv4*Z5+iG4K z4J(8BAs$ug7*77U7#?@ejwfDpuuJy(g^bjke-Lft`gOlwMOunFPtO*xg#Cg-hPfZyUz3r4C+tcvdo)59%LJ=DLqfv~(&RS3{do6S zr~Ym@s++2y>i2AB5}_BD=|haPW(GEEx0vst#3{F)UuLy$gsR=0Y*;B$IG%HJFts^r zY=Xu>iT<<+BYqQooVKS7$;<7ASSH=b!sMT{+UovIa%WYf_!< zDWB#+b?xFhq#0`3ilRCQti;hbCW(Vxu=KRmj9hmXv)WP1hk<9A4Ku4ua#FO3CegcI z@ZqKZR;a8sUf(A-m7S56f%FqrHu()}<5f~;`FK-ef2{qu7eR3cWf7?~7b@|B?Is`i qGAUtuTvWo+XCj~pnwr|cQr%Z&7+?kvU!-pmTk_stHbwJk!v6z}(r(fK diff --git a/release-v0.12.0/sha256sum b/release-v0.12.0/sha256sum deleted file mode 100644 index 6a9084a77..000000000 --- a/release-v0.12.0/sha256sum +++ /dev/null @@ -1,15 +0,0 @@ -2f33295ea565250f46121be632735198d43ad082d55baa411ebefc619d23e0a7 chunk.protocol -cf5064411b19d5d7bb5d1e45ca828323029460f553cb3ee72779afa8039b6d35 evm_verifier.bin -1fc9e3e39cdd02da0c5572a4c41bd9f1bef0c746619454422c1e21bd35eab84a evm_verifier.yul -dc641fa235d2654e1c1e1e11d27a7b76cf672be1f723b5a0a931f278b24d96f9 layer1.config -fa75f6878faca890a4b95ac385b8ecc84c3f0ed1f3daf54a6d317e9698d2ebab layer2.config -30b9bf553fcb8e73ed653de4ce8543f4c730a3c4ee30901537bdf8f0b0d1653f layer3.config -24fa0bdad540e1c07c74f8e83221e101c415c490b56a008f5c0738fba6303cf3 layer4.config -58498ddf78d800cf2c509cc57dd7e772b5768a50723ab43822d2e5454ebe8cb6 layer5.config -4c66bbcb160735516ced9d0f5376dcfe92269ef7182d82ac705490324f67e307 layer6.config -1a66b1401178dc01877a823622686e4908269b79581b5b1d4b879b4159ddf8fc pi.data -b0b62e5b5543d89176accc21a010c1b8dfd941303a1587c11dcc9b56f40eb734 preprocessed_digest.hex -1b49f45dc6bf6a4b81be8a90b94373fc712826f5486b57dbc847c92324c87e7e proof.data -383e6642bb0f74892fbc579943f797eee2aa28fc21fdbf1a323ff38c7b0d75fc vk_batch.vkey -41d1b66f8359974e724068e9cd67f692aa5e5147246221d246ac9bc95bbcf3d6 vk_bundle.vkey -55c908f1adb48ad93fb21819b668a17b9fc9ed0ceced57e1068918008271c61b vk_chunk.vkey diff --git a/release-v0.12.0/vk_batch.vkey b/release-v0.12.0/vk_batch.vkey deleted file mode 100644 index b3540d0f7919d4657d8560b352e5c72d6598dbcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmV+@0oVQj000^Q000D6*)0m!0e9bUb-|;ooNw=N1c{kpy3OEL|nWxibG%)id=*ynTrdPV+tmQ`SUArChwU$P?>dQA! zip~yKmuQZp!oHWz;|POrR-Rl^(SKgM;RUrjqH>|!pkmA4Vp64Y19m!!A{m5YmIW)4 z1BT6jHVC0vDvWwvFMe7PC}>3PsWp3htUU1+gYzFkZaj{7oK6mfTJvRmEsy~yvlUwX u`!jG&J=jtH9vE%KkXU>2gwF>^Nl#Na_eghj1^q)93qvAc>1uuTQ-BDTXNf}q diff --git a/release-v0.12.0/vk_bundle.vkey b/release-v0.12.0/vk_bundle.vkey deleted file mode 100644 index df9ce5840baf4de786fc6a751c2bcb844f8184e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmVUZ=?J3zGEe9`85D`-W(tC)Rdv4D}o>p0+>a`Vh`yRff zB}%o!?P*>l6T9|clwZ@IHisC17eWDO>Jbszay9TaYu7J@X7)_RkF7=z^gz(;B_dl< zP|p_Q8P9pSt)aHZC#6o^^)76*b+akH=#oH&?X<`*)`se&(4%G-Te*KfN3 diff --git a/release-v0.13.0/chunk.protocol b/release-v0.13.0/chunk.protocol deleted file mode 100644 index cc4a8c3d1..000000000 --- a/release-v0.13.0/chunk.protocol +++ /dev/null @@ -1 +0,0 @@ -{"domain":{"k":25,"n":33554432,"n_inv":[0,0,0,549755813888],"gen":[13338605924273364442,11440449704248451096,16859609365912477452,3421252324365184758],"gen_inv":[2738242980467392064,8765460162850139420,6637814084492473216,1260493707339115276]},"preprocessed":[{"x":[4541478842587617678,7188475718571567728,239378696823010373,179342154257362491],"y":[2102960765482384605,18163083796572731063,17943480866217266774,85103875006328896]},{"x":[1541394190479662465,4562312136952983419,3788241223482253489,1599430736440842275],"y":[3728337320503902975,12483727791400366025,5262755013951840488,2642221915127500133]},{"x":[7101844747244496546,8008120421692633860,6063298771205485124,1386525521981746351],"y":[12199442545790741457,9462570394882845676,8749066902280499976,2127680477462772680]},{"x":[8355531890782583874,18350809629336219547,17455522793157446291,63185263426592802],"y":[2151734486223750160,207439545836131066,4102568562501770087,3363146312916347849]},{"x":[17947816695495615544,8530467689725664673,17724960609693060801,1155576769598010385],"y":[2984829142046772055,17521279544910862013,1952842372135886533,1349611915219994024]},{"x":[17947774933688024860,276594292776566561,3716851716728716817,3029062574279104356],"y":[15196196069009662006,1454190411229663059,18164541604420189369,3400934937572994028]},{"x":[5142763791322143985,8528581729225995736,12791506293512033724,2714155084188219863],"y":[18093543604541917915,14073000898511852041,1365578612964630067,3430975123211179011]}],"num_instance":[44],"num_witness":[1,1,3],"num_challenge":[1,2,1],"evaluations":[{"poly":8,"rotation":0},{"poly":8,"rotation":1},{"poly":8,"rotation":2},{"poly":8,"rotation":3},{"poly":1,"rotation":0},{"poly":0,"rotation":0},{"poly":2,"rotation":0},{"poly":3,"rotation":0},{"poly":12,"rotation":0},{"poly":4,"rotation":0},{"poly":5,"rotation":0},{"poly":6,"rotation":0},{"poly":10,"rotation":0},{"poly":10,"rotation":1},{"poly":11,"rotation":0},{"poly":11,"rotation":1},{"poly":9,"rotation":0}],"queries":[{"poly":8,"rotation":0},{"poly":8,"rotation":1},{"poly":8,"rotation":2},{"poly":8,"rotation":3},{"poly":10,"rotation":0},{"poly":10,"rotation":1},{"poly":11,"rotation":0},{"poly":11,"rotation":1},{"poly":9,"rotation":0},{"poly":1,"rotation":0},{"poly":0,"rotation":0},{"poly":2,"rotation":0},{"poly":3,"rotation":0},{"poly":4,"rotation":0},{"poly":5,"rotation":0},{"poly":6,"rotation":0},{"poly":13,"rotation":0},{"poly":12,"rotation":0}],"quotient":{"num_chunk":4,"chunk_degree":1,"numerator":{"DistributePowers":[[{"Product":[{"Polynomial":{"poly":2,"rotation":0}},{"Sum":[{"Sum":[{"Polynomial":{"poly":8,"rotation":0}},{"Product":[{"Polynomial":{"poly":8,"rotation":1}},{"Polynomial":{"poly":8,"rotation":2}}]}]},{"Negated":{"Polynomial":{"poly":8,"rotation":3}}}]}]},{"Product":[{"CommonPolynomial":{"Lagrange":0}},{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"Polynomial":{"poly":10,"rotation":0}}}]}]},{"Product":[{"CommonPolynomial":{"Lagrange":-7}},{"Sum":[{"Product":[{"Polynomial":{"poly":10,"rotation":0}},{"Polynomial":{"poly":10,"rotation":0}}]},{"Negated":{"Polynomial":{"poly":10,"rotation":0}}}]}]},{"Product":[{"Sum":[{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"CommonPolynomial":{"Lagrange":-7}}}]},{"Negated":{"Sum":[{"Sum":[{"Sum":[{"Sum":[{"Sum":[{"CommonPolynomial":{"Lagrange":-6}},{"CommonPolynomial":{"Lagrange":-5}}]},{"CommonPolynomial":{"Lagrange":-4}}]},{"CommonPolynomial":{"Lagrange":-3}}]},{"CommonPolynomial":{"Lagrange":-2}}]},{"CommonPolynomial":{"Lagrange":-1}}]}}]},{"Sum":[{"Product":[{"Polynomial":{"poly":10,"rotation":1}},{"Product":[{"Product":[{"Sum":[{"Sum":[{"Polynomial":{"poly":1,"rotation":0}},{"Product":[{"Challenge":1},{"Polynomial":{"poly":4,"rotation":0}}]}]},{"Challenge":2}]},{"Sum":[{"Sum":[{"Polynomial":{"poly":8,"rotation":0}},{"Product":[{"Challenge":1},{"Polynomial":{"poly":5,"rotation":0}}]}]},{"Challenge":2}]}]},{"Sum":[{"Sum":[{"Polynomial":{"poly":7,"rotation":0}},{"Product":[{"Challenge":1},{"Polynomial":{"poly":6,"rotation":0}}]}]},{"Challenge":2}]}]}]},{"Negated":{"Product":[{"Polynomial":{"poly":10,"rotation":0}},{"Product":[{"Product":[{"Sum":[{"Sum":[{"Polynomial":{"poly":1,"rotation":0}},{"Product":[{"Product":[{"Challenge":1},{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]}]},{"CommonPolynomial":"Identity"}]}]},{"Challenge":2}]},{"Sum":[{"Sum":[{"Polynomial":{"poly":8,"rotation":0}},{"Product":[{"Product":[{"Challenge":1},{"Constant":[11100302345850292309,5109383341788583484,6450182039226333095,2498166472155664813]}]},{"CommonPolynomial":"Identity"}]}]},{"Challenge":2}]}]},{"Sum":[{"Sum":[{"Polynomial":{"poly":7,"rotation":0}},{"Product":[{"Product":[{"Challenge":1},{"Constant":[11922143911221101039,4762855335879493275,9634852812984583437,2104342265551292894]}]},{"CommonPolynomial":"Identity"}]}]},{"Challenge":2}]}]}]}}]}]},{"Product":[{"CommonPolynomial":{"Lagrange":0}},{"Polynomial":{"poly":11,"rotation":0}}]},{"Product":[{"CommonPolynomial":{"Lagrange":-7}},{"Polynomial":{"poly":11,"rotation":0}}]},{"Product":[{"Sum":[{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"CommonPolynomial":{"Lagrange":-7}}}]},{"Negated":{"Sum":[{"Sum":[{"Sum":[{"Sum":[{"Sum":[{"CommonPolynomial":{"Lagrange":-6}},{"CommonPolynomial":{"Lagrange":-5}}]},{"CommonPolynomial":{"Lagrange":-4}}]},{"CommonPolynomial":{"Lagrange":-3}}]},{"CommonPolynomial":{"Lagrange":-2}}]},{"CommonPolynomial":{"Lagrange":-1}}]}}]},{"Sum":[{"Product":[{"Product":[{"Sum":[{"DistributePowers":[[{"Polynomial":{"poly":0,"rotation":0}}],{"Challenge":0}]},{"Challenge":1}]},{"Sum":[{"DistributePowers":[[{"Product":[{"Polynomial":{"poly":3,"rotation":0}},{"Polynomial":{"poly":8,"rotation":0}}]}],{"Challenge":0}]},{"Challenge":1}]}]},{"Sum":[{"Polynomial":{"poly":11,"rotation":1}},{"Negated":{"Polynomial":{"poly":11,"rotation":0}}}]}]},{"Negated":{"Sum":[{"Sum":[{"DistributePowers":[[{"Polynomial":{"poly":0,"rotation":0}}],{"Challenge":0}]},{"Challenge":1}]},{"Negated":{"Product":[{"Polynomial":{"poly":9,"rotation":0}},{"Sum":[{"DistributePowers":[[{"Product":[{"Polynomial":{"poly":3,"rotation":0}},{"Polynomial":{"poly":8,"rotation":0}}]}],{"Challenge":0}]},{"Challenge":1}]}]}}]}}]}]}],{"Challenge":3}]}},"transcript_initial_state":[12347828844076607968,3508860499254401522,14536133996531157714,3126323184451899813],"instance_committing_key":null,"linearization":null,"accumulator_indices":[[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11]]]} \ No newline at end of file diff --git a/release-v0.13.0/layer1.config b/release-v0.13.0/layer1.config deleted file mode 100644 index 0c40c6951..000000000 --- a/release-v0.13.0/layer1.config +++ /dev/null @@ -1,14 +0,0 @@ -{ - "strategy": "Simple", - "degree": 24, - "num_advice": [ - 15 - ], - "num_lookup_advice": [ - 2 - ], - "num_fixed": 1, - "lookup_bits": 20, - "limb_bits": 88, - "num_limbs": 3 -} diff --git a/release-v0.13.0/layer2.config b/release-v0.13.0/layer2.config deleted file mode 100644 index 736faa269..000000000 --- a/release-v0.13.0/layer2.config +++ /dev/null @@ -1,14 +0,0 @@ -{ - "strategy": "Simple", - "degree": 25, - "num_advice": [ - 1 - ], - "num_lookup_advice": [ - 1 - ], - "num_fixed": 1, - "lookup_bits": 24, - "limb_bits": 88, - "num_limbs": 3 -} diff --git a/release-v0.13.0/layer3.config b/release-v0.13.0/layer3.config deleted file mode 100644 index be4fea746..000000000 --- a/release-v0.13.0/layer3.config +++ /dev/null @@ -1,14 +0,0 @@ -{ - "strategy": "Simple", - "degree": 21, - "num_advice": [ - 63 - ], - "num_lookup_advice": [ - 8 - ], - "num_fixed": 2, - "lookup_bits": 20, - "limb_bits": 88, - "num_limbs": 3 -} diff --git a/release-v0.13.0/layer4.config b/release-v0.13.0/layer4.config deleted file mode 100644 index ec9ac98c2..000000000 --- a/release-v0.13.0/layer4.config +++ /dev/null @@ -1,14 +0,0 @@ -{ - "strategy": "Simple", - "degree": 26, - "num_advice": [ - 2 - ], - "num_lookup_advice": [ - 1 - ], - "num_fixed": 1, - "lookup_bits": 25, - "limb_bits": 88, - "num_limbs": 3 -} diff --git a/release-v0.13.0/layer5.config b/release-v0.13.0/layer5.config deleted file mode 100644 index dc976d773..000000000 --- a/release-v0.13.0/layer5.config +++ /dev/null @@ -1,14 +0,0 @@ -{ - "strategy": "Simple", - "degree": 21, - "num_advice": [ - 4 - ], - "num_lookup_advice": [ - 1 - ], - "num_fixed": 1, - "lookup_bits": 20, - "limb_bits" :88, - "num_limbs": 3 -} \ No newline at end of file diff --git a/release-v0.13.0/layer6.config b/release-v0.13.0/layer6.config deleted file mode 100644 index dd752cb3c..000000000 --- a/release-v0.13.0/layer6.config +++ /dev/null @@ -1,14 +0,0 @@ -{ - "strategy": "Simple", - "degree": 26, - "num_advice": [ - 1 - ], - "num_lookup_advice": [ - 1 - ], - "num_fixed": 1, - "lookup_bits": 25, - "limb_bits": 88, - "num_limbs": 3 -} diff --git a/release-v0.13.0/vk_chunk.vkey b/release-v0.13.0/vk_chunk.vkey deleted file mode 100644 index 7318195ddf8c74c66cebcdf74c47c16342b57282..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmVP000E?SU>?qvU-ICIsY=()&$zJzW3wVqMQ$FN&^z=0Nx)4N~$Rl zi0$Tg>Q|0DOdfKOwq@9W#o;9@<(Z$Bv*#gt>2le9QMlAIahs7MW{N!@OD4rxV#VJj zyQ*}h{HH;q@NYN3!cLhy%~ed4qFpf3RMhw(B2JOcpAc+JUBp?Xx3gQg$-|&p-CXp} ztnF!<1(Mi+1(*uy&g3G(EDB8-uz*SDB>cOQq31-dE^g>|90;X0k`cPjUY66i?_nmx iRI+5XxY3Av{`_ $OUT/preprocessed_digest.hex + # copy verifier contract binary + cp $IN/evm_verifier.bin $OUT/evm_verifier.bin + cp $IN/evm_verifier.yul $OUT/evm_verifier.yul -# copy config values for each proving layer -cp ./integration/configs/* $OUT + # copy public input and proof for the outermost circuit (recursive bundler) + cp $IN/pi_bundle_recursion.data $OUT/pi.data + cp $IN/proof_bundle_recursion.data $OUT/proof.data -cd $OUT; sha256sum * > sha256sum; cd .. + # dump the preprocessed digest into a separate hex file. + # preprocessed digest is the first 32 bytes of the public input. + xxd -l 32 -p $OUT/pi.data | tr -d '\n' | awk '{gsub("%", ""); print}' >$OUT/preprocessed_digest.hex -aws --profile default s3 cp $OUT s3://circuit-release/$OUT --recursive + # copy config values for each proving layer + cp ./integration/configs/* $OUT + + cd $OUT + sha256sum * > sha256sum + cd .. + + aws --profile default s3 cp $OUT s3://circuit-release/$OUT --recursive +} + +#upload_s3 +download_s3