diff --git a/backend/README.md b/backend/README.md index 19b6aaa6..8a0e79c2 100644 --- a/backend/README.md +++ b/backend/README.md @@ -50,7 +50,7 @@ cargo test --release -- --nocapture ### Generating and updating verifier contract for Backend -The verifier contract in the backend were generated using a predefined set of parameters: `N_CURRENCIES = 2` and `N_BYTES=14`, as indicated [here](https://github.com/summa-dev/summa-solvency/blob/master/zk_prover/examples/gen_inclusion_verifier.rs#L21-L22). +The verifier contract in the backend were generated using a predefined set of parameters: `N_CURRENCIES = 2` and `N_BYTES=8`, as indicated [here](https://github.com/summa-dev/summa-solvency/blob/master/zk_prover/examples/gen_inclusion_verifier.rs#L21-L22). If you intend to work with different parameters, you'll need to adjust these hard-coded values and then generate new verifier contract. The process described below assists in both generating the verifier and updating the Summa contract, which integrates the new verifier as constructors. diff --git a/backend/examples/summa_solvency_flow.rs b/backend/examples/summa_solvency_flow.rs index 6093f41d..bff04b84 100644 --- a/backend/examples/summa_solvency_flow.rs +++ b/backend/examples/summa_solvency_flow.rs @@ -63,7 +63,7 @@ async fn main() -> Result<(), Box> { // Using the `round` instance, the commitment is dispatched to the Summa contract with the `dispatch_commitment` method. let timestamp = 1u64; - let mut round = Round::<4, 2, 14>::new(&signer, Box::new(mst), params_path, timestamp).unwrap(); + let mut round = Round::<4, 2, 8>::new(&signer, Box::new(mst), params_path, timestamp).unwrap(); // Sends the commitment, which should ideally complete without errors. round.dispatch_commitment().await?; diff --git a/backend/src/contracts/abi/InclusionVerifier.json b/backend/src/contracts/abi/InclusionVerifier.json index 13edd235..9e0b1508 100644 --- a/backend/src/contracts/abi/InclusionVerifier.json +++ b/backend/src/contracts/abi/InclusionVerifier.json @@ -1 +1 @@ -{"_format":"hh-sol-artifact-1","contractName":"Verifier","sourceName":"src/InclusionVerifier.sol","abi":[{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[]","name":"instances","type":"uint256[]"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x6080806040523461001657614b95908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c631e8e1e131461002857600080fd5b346100a05760403660031901126100a05767ffffffffffffffff6004358181116100a357366023820112156100a35780600401358281116100ab57369101602401116100a7576024358181116100a357366023820112156100a35780600401359182116100a357602490369260051b010111156104b5575b80fd5b8280fd5b5080fd5b8380fd5b9290604080918035956020820135907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4780600381808c80098c0908818480091491818410918a10161616968652602086015201920190565b602091600020600080516020614ac0833981519152810682526000520190602090565b602090600182536021600020600080516020614ac0833981519152810682526000520190565b91909182610f2091825190610f40925b601f19810184106102145750600080516020614ac0833981519152809284519009602087526020808801526020604088015260608701527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808701528160a087015260208660c08160055afa1694805192601f19809201905b80610f40106101fa5750505080610f4051830991835190099152610f4052565b8280918580855189099782519009968152019101906101da565b959291600080516020614ac08339815191529083519009918284526020809101930195610160565b90610180916000516020915b61016083106102f957600080516020614ac0833981519152809284519009602086526020808701526020604087015260608601527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808601528160a086015260208560c08160055afa1693805192601f19809201905b806020106102df5750505080602051830991600051900990600052602052565b8280918580855189099782519009968152019101906102bf565b9391906020600080516020614ac08339815191528192845190099283855201920193610248565b9060a0916000516020915b608083106103db57600080516020614ac0833981519152809284519009602086526020808701526020604087015260608601527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808601528160a086015260208560c08160055afa1693805192601f19809201905b806020106103c15750505080602051830991600051900990600052602052565b8280918580855189099782519009968152019101906103a1565b9391906020600080516020614ac0833981519152819284519009928385520192019361032b565b91906040526060526040600060808160065afa1690565b906040526040600060608160075afa1690565b919060c05260e05260406080808060065afa1690565b9060c0526040608060608160075afa1690565b9392919060005260205261086051604052610880516060526108a0516080526108c05160a05260c05260e0526108e05161010052610900516101205261092051610140526109405161016052602060006101808160085afa166000511690565b60017f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f36106c052600b6106e0527f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610700527f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610720527f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610740527f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026107605260046107805260006107a05260006107c05260006107e052600061080052600161082052600261084052610860907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed610880527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6108a0527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6108c0527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6108e0527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e610900527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145610920527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff610940527f17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e610960527f1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b610980527f05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd0566109a0527f2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c6109c0527f299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a906109e0527f21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a95610a00527f19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a3610a20527f2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b6610a40527f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4610a60527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0610a80527f19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8610aa0527f0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78610ac0527f1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5610ae0527f1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098610b00527f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b610b20527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097610b40527f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91610b60527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd610b80527f09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa610ba0527f13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289610bc0527f08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f81743610be0527f08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c610c00527f25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe610c20527f2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a610c40527f07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad610c60527f255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960610c80527f136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d22610ca0527f0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac610cc0527f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974610ce0527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3610d00527f1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e610d20527f050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb610d40527f1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf0610d60527f0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb391610d80526108c435600414916044351416167f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f36000526020906108e45b6109648110614a7957506064915b6101248310614a66576000908120600080516020614ac08339815191528106610da0529052610dc0916020608082015b808310614a4f5750610c4090610c4794610107565b939061012a565b926101008201935b848310614a3a5790610c6091610107565b610140830193915b848410614a295790610c7991610107565b929061046082015b808310614a005750610ca7610cb692610ca0610cbe96610cad94610107565b929061012a565b946100af565b90929193610107565b9290506100af565b5050806107a051614900575b508015614688576106e051610e20519081906000905b8082106148e25750506107205192610f2061078051926006840160051b80830194156148d6575b50610760515b8483106148b157505050610d5a600080516020614ac08339815191527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000008508918284526020840190610150565b93600080516020614ac0833981519152610f209261070051900991610760515b84821061488b5750505050610f4051610f60915b610fe0831061486b576000926108e4906107805160051b8201905b818310614843575050505191610f205191610fe0519085610f205284610f405283610f605280610f805281610fa05282610fc052610e00519283809281610de0519381610dc0519381610e2051600080516020614ac083398151915290870999818d600080516020614ac08339815191526108043581036107e43508600080516020614ac08339815191526108243581036107e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152908608600080516020614ac083398151915203600080516020614ac08339815191529060010890600080516020614ac083398151915291099d81600080516020614ac08339815191526108243581036107e43508600080516020614ac08339815191529085099d600080516020614ac08339815191528d61054435088b600080516020614ac08339815191526101006104243509600080516020614ac08339815191529081036103e43508600080516020614ac083398151915290610564350990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac0833981519152906107a43509600080516020614ac0833981519152038d6108243590600080516020614ac08339815191529108600080516020614ac08339815191528d6107e4350890600080516020614ac08339815191529109600080516020614ac0833981519152906107c4350990600080516020614ac08339815191529108600080516020614ac0833981519152848908600080516020614ac083398151915203600080516020614ac08339815191529060010890600080516020614ac083398151915291099c6107a435600080516020614ac083398151915281810391800990600080516020614ac08339815191529108600080516020614ac08339815191529085099b600080516020614ac08339815191526107a43581038809600080516020614ac08339815191529088089a600080516020614ac08339815191528a870883600080516020614ac0833981519152600080516020614b408339815191528709600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290840890600080516020614ac0833981519152910884600080516020614ac0833981519152600080516020614b408339815191528809600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610764350990600080516020614ac08339815191529109600080516020614ac083398151915203846106e435600080516020614ac0833981519152908609600080516020614ac083398151915290850890600080516020614ac0833981519152910885600080516020614ac08339815191526106c4358709600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610784350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac083398151915203908380600080516020614ac0833981519152600080516020614b408339815191528809600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290840890600080516020614ac0833981519152910881600080516020614ac0833981519152600080516020614b408339815191528909600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610764350990600080516020614ac08339815191529109600080516020614ac083398151915203916106e435600080516020614ac0833981519152908609600080516020614ac0833981519152910890600080516020614ac0833981519152910884600080516020614ac08339815191526106c4358609600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610784350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910898600080516020614ac083398151915290860882600080516020614ac0833981519152600080516020614b408339815191528609600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac0833981519152906104e4350890600080516020614ac0833981519152910883600080516020614ac0833981519152600080516020614b408339815191528709600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610404350890600080516020614ac0833981519152910884600080516020614ac0833981519152600080516020614b408339815191528809600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910885600080516020614ac0833981519152886104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610704350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ac083398151915203836106a435600080516020614ac0833981519152908509600080516020614ac0833981519152906104e4350890600080516020614ac0833981519152910884600080516020614ac0833981519152610684358609600080516020614ac083398151915290610404350890600080516020614ac0833981519152910885600080516020614ac0833981519152610664358709600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910886600080516020614ac0833981519152610644358809600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610724350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac0833981519152039282600080516020614ac0833981519152600080516020614b408339815191528309600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac0833981519152906104e4350890600080516020614ac083398151915291089083600080516020614ac0833981519152600080516020614b408339815191528309600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610404350890600080516020614ac08339815191529108908480600080516020614ac0833981519152600080516020614b408339815191528409600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910891600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610704350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ac08339815191520391806106a435600080516020614ac0833981519152908409600080516020614ac0833981519152906104e4350890600080516020614ac083398151915291089181600080516020614ac0833981519152610684358309600080516020614ac083398151915290610404350890600080516020614ac083398151915291089180600080516020614ac0833981519152610664358409600080516020614ac0833981519152906103e4350890600080516020614ac083398151915291089161064435600080516020614ac08339815191529109600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610724350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac083398151915291089381600080516020614ac08339815191526107443581036107643508600080516020614ac08339815191529083099361076435600080516020614ac083398151915281810391800990600080516020614ac08339815191529108600080516020614ac0833981519152910991600080516020614ac0833981519152610704358209600080516020614ac083398151915203600080516020614ac083398151915291088161046435600080516020614ac083398151915203610404356103e43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161046435600080516020614ac083398151915203610404356103e43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161044435600080516020614ac083398151915203610404356104643561040435600080516020614ac0833981519152036103e43590600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e435610464356103e435600080516020614ac0833981519152036104043590600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac083398151915261046435810360010861046435600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191526104443581036104843508600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e4356104a43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191527f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6104443509600080516020614ac08339815191527f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104e435610524356104043590600080516020614ac08339815191529108600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614b00833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac083398151915290610604350981600080516020614ac08339815191527f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6104443509600080516020614ac08339815191527f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104c435610524356104043590600080516020614ac08339815191529108600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac08339815191529061060435098161046435600080516020614ac083398151915203610504356103e43590600080516020614ac08339815191529108600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac08339815191529061060435098161044435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b00833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105e435098161042435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614aa0833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105e4350981600080516020614ac08339815191526104443581036104843508600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e4356104a43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191527f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6104443509600080516020614ac08339815191527f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104e435610524356104043590600080516020614ac08339815191529108600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614b00833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105c4350981600080516020614ac08339815191527f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6104443509600080516020614ac08339815191527f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104c435610524356104043590600080516020614ac08339815191529108600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac0833981519152906105c435098161046435600080516020614ac083398151915203610504356103e43590600080516020614ac08339815191529108600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac0833981519152906105c435098161044435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b00833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105a435098161042435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614aa0833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105a4350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109610fe0526103a4356000526103c435602052610364905b816102641061481b57826000516110005260205161102052600080516020614ac08339815191528080610e205181808061072051816107405180988188819997829896839709610420528061040052828282096103e0520909090909096103c052610e80516104406103c0905b6104c081106147f757836104605161048051906104a05180600080516020614ac083398151915284840990600080516020614ac083398151915291096104c0526104405191826104e0528260005281600080516020614ac083398151915282850990600080516020614ac08339815191529109610500528061052052600080516020614ac083398151915281840961054052600080516020614ac0833981519152828409610560526103e0519161040051938161042051918483600080516020614ac083398151915203600080516020614ac0833981519152908808600080516020614ac0833981519152898103890890600080516020614ac0833981519152910990600080516020614ac0833981519152910960205287600080516020614ac08339815191528481038908600080516020614ac08339815191528881038a0890600080516020614ac0833981519152910990600080516020614ac0833981519152910960405281600080516020614ac08339815191528881038508600080516020614ac0833981519152888103860890600080516020614ac0833981519152910990600080516020614ac08339815191529109606052600080516020614ac0833981519152886001096080526103c05190600080516020614ac08339815191528481038308600080516020614ac0833981519152898103840890600080516020614ac0833981519152910990600080516020614ac0833981519152910960a052600080516020614ac0833981519152038783600080516020614ac083398151915203600080516020614ac0833981519152908908600080516020614ac0833981519152838a0890600080516020614ac0833981519152910990600080516020614ac0833981519152910960c052600080516020614ac0833981519152878103840890600080516020614ac083398151915290840890600080516020614ac0833981519152910990600080516020614ac0833981519152910960e05285600080516020614ac0833981519152828103870890600080516020614ac083398151915291096101005284600080516020614ac083398151915203600080516020614ac0833981519152910890600080516020614ac0833981519152910961012052600080516020614ac0833981519152838103830890600080516020614ac0833981519152910961014052600080516020614ac083398151915203600080516020614ac0833981519152910890600080516020614ac0833981519152910961016052613fff9061023c565b600051806104e0526105005b61058081106147d957610e40516020516040516060518693600080516020614ac083398151915280610424358409818681868187818b81806103e43583099781808080806104a43586099a610444359009956104043590099261048435900960000808080908080861058052608051600080516020614ac083398151915280610fe05183098184818061062435870960000809086106e45b80610624106147b457506106045b806104a41061478f575061050051908380600080516020614ac083398151915261046435860992600080516020614ac083398151915261082435870991600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac083398151915291096105a05260a05160c05160e051926105205161072435600080516020614ac0833981519152908609600080516020614ac0833981519152610704358509600080516020614ac0833981519152610744358709600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096105c05261010051956101205195610540519061078435600080516020614ac083398151915290890990600080516020614ac0833981519152610764358b0990600080516020614ac08339815191526107c4358b09600080516020614ac08339815191526107a4358d09600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096105e05261014051986101605198610560516107e435600080516020614ac0833981519152908c09600080516020614ac0833981519152610804358e09600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910961060052600080516020614ac0833981519152910890600080516020614ac083398151915291086106205261064052600080516020614ac0833981519152910890600080516020614ac0833981519152910861066052600080516020614ac0833981519152910861068052600080516020614ac083398151915291086106a05261062060005b60a0811061477f576143c483610320565b600080516020614ac08339815191526106005160805109610e6051919060606105e05b60a08210614754578461444c61443d61442561441888886110405260a43560005260c435602052610e405190610419565b6084359060643590610402565b610264356080526102843560a052610e405190610442565b6110205190611000519061042c565b610d605b80610a201061472a5761467861461961453c6145f161453c6145c961453c89600080516020614ac0833981519152806145a861453c61459b61458c8f61456c61453c8761454961453c8c8361452f6145216144db6145126144db6145036144db6144f4889f6144e56144db6144cc6144db93610e405190610442565b6109c051906109a0519061042c565b610e405190610442565b6109805190610960519061042c565b610a405190610a20519061042c565b610a0051906109e0519061042c565b6101843590610164359061042c565b610104359060e4359061042c565b9161050051900990610442565b60a0519060805190610402565b9a610e60519009996101a4356080526101c43560a05283610520518c0990610442565b97610e6051900996610224356080526102443560a052610e405190610442565b61020435906101e4359061042c565b8361054051870990610442565b92610e60519009610124356080526101443560a05261056051900990610442565b610820516080526108405160a05261104051600080516020614ac08339815191520390610442565b610844356080526108643560a0526104c051600080516020614ac08339815191520390610442565b610884358060805261463a61453c6108a435938460a052610e805190610442565b906000519161106091838352602051611080948186526110a0968388526110c0938185526107a05161468d575b505050505193519251915190610455565b1561468857600160005260206000f35b600080fd5b9161470b9391614716959693610ea051600052610ec051602052610ee0938451604052610f0093845160605260805260a05260c05260e0526146f36146e8600080516020614ac0833981519152610100600020068095610419565b895190895190610402565b91600051885260205189525160005251602052610419565b825190865190610402565b906000518552602051815286808080614667565b9061473c61474a91610e405190610442565b60208301519083519061042c565b90603f1901614450565b9091600080516020614ac083398151915290818681855187510992090891601f1990810191016143e7565b81518152602091820191016143b3565b90600080516020614ac0833981519152908185818535870992090890601f19016140b1565b90600080516020614ac0833981519152908185818535870992090890601f19016140a3565b80600080516020614ac083398151915283602093510981520161400b565b60208091600080516020614ac0833981519152845181038608815201910190613c56565b909161482a8261483892610419565b602084013590843590610402565b91603f190190613be9565b9091946020600080516020614ac0833981519152819281893586510990089601929101610da9565b9190600080516020614ac083398151915260209183519008910191610d8e565b600080516020614ac0833981519152838282806020958751098809855209910190610d7a565b60209087600080516020614ac083398151915291828181038608865209920191610d0d565b610f4001935086610d07565b9092600080516020614ac08339815191528160019209930190610ce0565b90506107e0519061080051916107c05160051b806108e401918235926108e48260051b840101356108e48360061b85010135906108e460038560051b02860101359588965b846108e48760051b89010181101561499957906020808c93019384358b1b0194818960051b890101358b1b0195818960061b890101358b1b019660038960051b02010135891b019701969392919093614945565b50979450975093509350507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4790816003818087800987090882868009149180600381808a80098a09089084800914161693610ea052610ec052610ee052610f005281610cca565b9160208181923595600080516020614ac083398151915287101695875201940191939193610c81565b92614a33926100af565b9092610c68565b9291614a45926100af565b9192909190610c4f565b939291614a5b926100af565b929391929091610c2b565b9091614a71926100af565b919091610bfb565b9060208091600080516020614ac083398151915284351016928035855201920191610bed56fe066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad530644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000011274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c80cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff92b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e809226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2a264697066735822122039310bb8e31d3c3f921d67604b2b37e972cbb381d1708e36447f4c8b27d321d764736f6c63430008120033","deployedBytecode":"0x6080604052600436101561001257600080fd5b6000803560e01c631e8e1e131461002857600080fd5b346100a05760403660031901126100a05767ffffffffffffffff6004358181116100a357366023820112156100a35780600401358281116100ab57369101602401116100a7576024358181116100a357366023820112156100a35780600401359182116100a357602490369260051b010111156104b5575b80fd5b8280fd5b5080fd5b8380fd5b9290604080918035956020820135907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4780600381808c80098c0908818480091491818410918a10161616968652602086015201920190565b602091600020600080516020614ac0833981519152810682526000520190602090565b602090600182536021600020600080516020614ac0833981519152810682526000520190565b91909182610f2091825190610f40925b601f19810184106102145750600080516020614ac0833981519152809284519009602087526020808801526020604088015260608701527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808701528160a087015260208660c08160055afa1694805192601f19809201905b80610f40106101fa5750505080610f4051830991835190099152610f4052565b8280918580855189099782519009968152019101906101da565b959291600080516020614ac08339815191529083519009918284526020809101930195610160565b90610180916000516020915b61016083106102f957600080516020614ac0833981519152809284519009602086526020808701526020604087015260608601527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808601528160a086015260208560c08160055afa1693805192601f19809201905b806020106102df5750505080602051830991600051900990600052602052565b8280918580855189099782519009968152019101906102bf565b9391906020600080516020614ac08339815191528192845190099283855201920193610248565b9060a0916000516020915b608083106103db57600080516020614ac0833981519152809284519009602086526020808701526020604087015260608601527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808601528160a086015260208560c08160055afa1693805192601f19809201905b806020106103c15750505080602051830991600051900990600052602052565b8280918580855189099782519009968152019101906103a1565b9391906020600080516020614ac0833981519152819284519009928385520192019361032b565b91906040526060526040600060808160065afa1690565b906040526040600060608160075afa1690565b919060c05260e05260406080808060065afa1690565b9060c0526040608060608160075afa1690565b9392919060005260205261086051604052610880516060526108a0516080526108c05160a05260c05260e0526108e05161010052610900516101205261092051610140526109405161016052602060006101808160085afa166000511690565b60017f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f36106c052600b6106e0527f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610700527f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610720527f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610740527f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026107605260046107805260006107a05260006107c05260006107e052600061080052600161082052600261084052610860907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed610880527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6108a0527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6108c0527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6108e0527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e610900527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145610920527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff610940527f17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e610960527f1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b610980527f05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd0566109a0527f2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c6109c0527f299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a906109e0527f21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a95610a00527f19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a3610a20527f2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b6610a40527f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4610a60527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0610a80527f19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8610aa0527f0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78610ac0527f1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5610ae0527f1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098610b00527f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b610b20527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097610b40527f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91610b60527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd610b80527f09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa610ba0527f13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289610bc0527f08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f81743610be0527f08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c610c00527f25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe610c20527f2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a610c40527f07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad610c60527f255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960610c80527f136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d22610ca0527f0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac610cc0527f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974610ce0527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3610d00527f1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e610d20527f050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb610d40527f1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf0610d60527f0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb391610d80526108c435600414916044351416167f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f36000526020906108e45b6109648110614a7957506064915b6101248310614a66576000908120600080516020614ac08339815191528106610da0529052610dc0916020608082015b808310614a4f5750610c4090610c4794610107565b939061012a565b926101008201935b848310614a3a5790610c6091610107565b610140830193915b848410614a295790610c7991610107565b929061046082015b808310614a005750610ca7610cb692610ca0610cbe96610cad94610107565b929061012a565b946100af565b90929193610107565b9290506100af565b5050806107a051614900575b508015614688576106e051610e20519081906000905b8082106148e25750506107205192610f2061078051926006840160051b80830194156148d6575b50610760515b8483106148b157505050610d5a600080516020614ac08339815191527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000008508918284526020840190610150565b93600080516020614ac0833981519152610f209261070051900991610760515b84821061488b5750505050610f4051610f60915b610fe0831061486b576000926108e4906107805160051b8201905b818310614843575050505191610f205191610fe0519085610f205284610f405283610f605280610f805281610fa05282610fc052610e00519283809281610de0519381610dc0519381610e2051600080516020614ac083398151915290870999818d600080516020614ac08339815191526108043581036107e43508600080516020614ac08339815191526108243581036107e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152908608600080516020614ac083398151915203600080516020614ac08339815191529060010890600080516020614ac083398151915291099d81600080516020614ac08339815191526108243581036107e43508600080516020614ac08339815191529085099d600080516020614ac08339815191528d61054435088b600080516020614ac08339815191526101006104243509600080516020614ac08339815191529081036103e43508600080516020614ac083398151915290610564350990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac0833981519152906107a43509600080516020614ac0833981519152038d6108243590600080516020614ac08339815191529108600080516020614ac08339815191528d6107e4350890600080516020614ac08339815191529109600080516020614ac0833981519152906107c4350990600080516020614ac08339815191529108600080516020614ac0833981519152848908600080516020614ac083398151915203600080516020614ac08339815191529060010890600080516020614ac083398151915291099c6107a435600080516020614ac083398151915281810391800990600080516020614ac08339815191529108600080516020614ac08339815191529085099b600080516020614ac08339815191526107a43581038809600080516020614ac08339815191529088089a600080516020614ac08339815191528a870883600080516020614ac0833981519152600080516020614b408339815191528709600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290840890600080516020614ac0833981519152910884600080516020614ac0833981519152600080516020614b408339815191528809600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610764350990600080516020614ac08339815191529109600080516020614ac083398151915203846106e435600080516020614ac0833981519152908609600080516020614ac083398151915290850890600080516020614ac0833981519152910885600080516020614ac08339815191526106c4358709600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610784350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac083398151915203908380600080516020614ac0833981519152600080516020614b408339815191528809600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290840890600080516020614ac0833981519152910881600080516020614ac0833981519152600080516020614b408339815191528909600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610764350990600080516020614ac08339815191529109600080516020614ac083398151915203916106e435600080516020614ac0833981519152908609600080516020614ac0833981519152910890600080516020614ac0833981519152910884600080516020614ac08339815191526106c4358609600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610784350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910898600080516020614ac083398151915290860882600080516020614ac0833981519152600080516020614b408339815191528609600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac0833981519152906104e4350890600080516020614ac0833981519152910883600080516020614ac0833981519152600080516020614b408339815191528709600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610404350890600080516020614ac0833981519152910884600080516020614ac0833981519152600080516020614b408339815191528809600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910885600080516020614ac0833981519152886104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610704350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ac083398151915203836106a435600080516020614ac0833981519152908509600080516020614ac0833981519152906104e4350890600080516020614ac0833981519152910884600080516020614ac0833981519152610684358609600080516020614ac083398151915290610404350890600080516020614ac0833981519152910885600080516020614ac0833981519152610664358709600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910886600080516020614ac0833981519152610644358809600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610724350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac0833981519152039282600080516020614ac0833981519152600080516020614b408339815191528309600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac0833981519152906104e4350890600080516020614ac083398151915291089083600080516020614ac0833981519152600080516020614b408339815191528309600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610404350890600080516020614ac08339815191529108908480600080516020614ac0833981519152600080516020614b408339815191528409600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910891600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610704350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ac08339815191520391806106a435600080516020614ac0833981519152908409600080516020614ac0833981519152906104e4350890600080516020614ac083398151915291089181600080516020614ac0833981519152610684358309600080516020614ac083398151915290610404350890600080516020614ac083398151915291089180600080516020614ac0833981519152610664358409600080516020614ac0833981519152906103e4350890600080516020614ac083398151915291089161064435600080516020614ac08339815191529109600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610724350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac083398151915291089381600080516020614ac08339815191526107443581036107643508600080516020614ac08339815191529083099361076435600080516020614ac083398151915281810391800990600080516020614ac08339815191529108600080516020614ac0833981519152910991600080516020614ac0833981519152610704358209600080516020614ac083398151915203600080516020614ac083398151915291088161046435600080516020614ac083398151915203610404356103e43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161046435600080516020614ac083398151915203610404356103e43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161044435600080516020614ac083398151915203610404356104643561040435600080516020614ac0833981519152036103e43590600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e435610464356103e435600080516020614ac0833981519152036104043590600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac083398151915261046435810360010861046435600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191526104443581036104843508600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e4356104a43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191527f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6104443509600080516020614ac08339815191527f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104e435610524356104043590600080516020614ac08339815191529108600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614b00833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac083398151915290610604350981600080516020614ac08339815191527f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6104443509600080516020614ac08339815191527f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104c435610524356104043590600080516020614ac08339815191529108600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac08339815191529061060435098161046435600080516020614ac083398151915203610504356103e43590600080516020614ac08339815191529108600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac08339815191529061060435098161044435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b00833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105e435098161042435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614aa0833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105e4350981600080516020614ac08339815191526104443581036104843508600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e4356104a43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191527f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6104443509600080516020614ac08339815191527f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104e435610524356104043590600080516020614ac08339815191529108600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614b00833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105c4350981600080516020614ac08339815191527f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6104443509600080516020614ac08339815191527f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104c435610524356104043590600080516020614ac08339815191529108600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac0833981519152906105c435098161046435600080516020614ac083398151915203610504356103e43590600080516020614ac08339815191529108600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac0833981519152906105c435098161044435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b00833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105a435098161042435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614aa0833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105a4350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109610fe0526103a4356000526103c435602052610364905b816102641061481b57826000516110005260205161102052600080516020614ac08339815191528080610e205181808061072051816107405180988188819997829896839709610420528061040052828282096103e0520909090909096103c052610e80516104406103c0905b6104c081106147f757836104605161048051906104a05180600080516020614ac083398151915284840990600080516020614ac083398151915291096104c0526104405191826104e0528260005281600080516020614ac083398151915282850990600080516020614ac08339815191529109610500528061052052600080516020614ac083398151915281840961054052600080516020614ac0833981519152828409610560526103e0519161040051938161042051918483600080516020614ac083398151915203600080516020614ac0833981519152908808600080516020614ac0833981519152898103890890600080516020614ac0833981519152910990600080516020614ac0833981519152910960205287600080516020614ac08339815191528481038908600080516020614ac08339815191528881038a0890600080516020614ac0833981519152910990600080516020614ac0833981519152910960405281600080516020614ac08339815191528881038508600080516020614ac0833981519152888103860890600080516020614ac0833981519152910990600080516020614ac08339815191529109606052600080516020614ac0833981519152886001096080526103c05190600080516020614ac08339815191528481038308600080516020614ac0833981519152898103840890600080516020614ac0833981519152910990600080516020614ac0833981519152910960a052600080516020614ac0833981519152038783600080516020614ac083398151915203600080516020614ac0833981519152908908600080516020614ac0833981519152838a0890600080516020614ac0833981519152910990600080516020614ac0833981519152910960c052600080516020614ac0833981519152878103840890600080516020614ac083398151915290840890600080516020614ac0833981519152910990600080516020614ac0833981519152910960e05285600080516020614ac0833981519152828103870890600080516020614ac083398151915291096101005284600080516020614ac083398151915203600080516020614ac0833981519152910890600080516020614ac0833981519152910961012052600080516020614ac0833981519152838103830890600080516020614ac0833981519152910961014052600080516020614ac083398151915203600080516020614ac0833981519152910890600080516020614ac0833981519152910961016052613fff9061023c565b600051806104e0526105005b61058081106147d957610e40516020516040516060518693600080516020614ac083398151915280610424358409818681868187818b81806103e43583099781808080806104a43586099a610444359009956104043590099261048435900960000808080908080861058052608051600080516020614ac083398151915280610fe05183098184818061062435870960000809086106e45b80610624106147b457506106045b806104a41061478f575061050051908380600080516020614ac083398151915261046435860992600080516020614ac083398151915261082435870991600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac083398151915291096105a05260a05160c05160e051926105205161072435600080516020614ac0833981519152908609600080516020614ac0833981519152610704358509600080516020614ac0833981519152610744358709600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096105c05261010051956101205195610540519061078435600080516020614ac083398151915290890990600080516020614ac0833981519152610764358b0990600080516020614ac08339815191526107c4358b09600080516020614ac08339815191526107a4358d09600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096105e05261014051986101605198610560516107e435600080516020614ac0833981519152908c09600080516020614ac0833981519152610804358e09600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910961060052600080516020614ac0833981519152910890600080516020614ac083398151915291086106205261064052600080516020614ac0833981519152910890600080516020614ac0833981519152910861066052600080516020614ac0833981519152910861068052600080516020614ac083398151915291086106a05261062060005b60a0811061477f576143c483610320565b600080516020614ac08339815191526106005160805109610e6051919060606105e05b60a08210614754578461444c61443d61442561441888886110405260a43560005260c435602052610e405190610419565b6084359060643590610402565b610264356080526102843560a052610e405190610442565b6110205190611000519061042c565b610d605b80610a201061472a5761467861461961453c6145f161453c6145c961453c89600080516020614ac0833981519152806145a861453c61459b61458c8f61456c61453c8761454961453c8c8361452f6145216144db6145126144db6145036144db6144f4889f6144e56144db6144cc6144db93610e405190610442565b6109c051906109a0519061042c565b610e405190610442565b6109805190610960519061042c565b610a405190610a20519061042c565b610a0051906109e0519061042c565b6101843590610164359061042c565b610104359060e4359061042c565b9161050051900990610442565b60a0519060805190610402565b9a610e60519009996101a4356080526101c43560a05283610520518c0990610442565b97610e6051900996610224356080526102443560a052610e405190610442565b61020435906101e4359061042c565b8361054051870990610442565b92610e60519009610124356080526101443560a05261056051900990610442565b610820516080526108405160a05261104051600080516020614ac08339815191520390610442565b610844356080526108643560a0526104c051600080516020614ac08339815191520390610442565b610884358060805261463a61453c6108a435938460a052610e805190610442565b906000519161106091838352602051611080948186526110a0968388526110c0938185526107a05161468d575b505050505193519251915190610455565b1561468857600160005260206000f35b600080fd5b9161470b9391614716959693610ea051600052610ec051602052610ee0938451604052610f0093845160605260805260a05260c05260e0526146f36146e8600080516020614ac0833981519152610100600020068095610419565b895190895190610402565b91600051885260205189525160005251602052610419565b825190865190610402565b906000518552602051815286808080614667565b9061473c61474a91610e405190610442565b60208301519083519061042c565b90603f1901614450565b9091600080516020614ac083398151915290818681855187510992090891601f1990810191016143e7565b81518152602091820191016143b3565b90600080516020614ac0833981519152908185818535870992090890601f19016140b1565b90600080516020614ac0833981519152908185818535870992090890601f19016140a3565b80600080516020614ac083398151915283602093510981520161400b565b60208091600080516020614ac0833981519152845181038608815201910190613c56565b909161482a8261483892610419565b602084013590843590610402565b91603f190190613be9565b9091946020600080516020614ac0833981519152819281893586510990089601929101610da9565b9190600080516020614ac083398151915260209183519008910191610d8e565b600080516020614ac0833981519152838282806020958751098809855209910190610d7a565b60209087600080516020614ac083398151915291828181038608865209920191610d0d565b610f4001935086610d07565b9092600080516020614ac08339815191528160019209930190610ce0565b90506107e0519061080051916107c05160051b806108e401918235926108e48260051b840101356108e48360061b85010135906108e460038560051b02860101359588965b846108e48760051b89010181101561499957906020808c93019384358b1b0194818960051b890101358b1b0195818960061b890101358b1b019660038960051b02010135891b019701969392919093614945565b50979450975093509350507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4790816003818087800987090882868009149180600381808a80098a09089084800914161693610ea052610ec052610ee052610f005281610cca565b9160208181923595600080516020614ac083398151915287101695875201940191939193610c81565b92614a33926100af565b9092610c68565b9291614a45926100af565b9192909190610c4f565b939291614a5b926100af565b929391929091610c2b565b9091614a71926100af565b919091610bfb565b9060208091600080516020614ac083398151915284351016928035855201920191610bed56fe066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad530644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000011274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c80cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff92b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e809226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2a264697066735822122039310bb8e31d3c3f921d67604b2b37e972cbb381d1708e36447f4c8b27d321d764736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file +{"_format":"hh-sol-artifact-1","contractName":"Verifier","sourceName":"src/InclusionVerifier.sol","abi":[{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[]","name":"instances","type":"uint256[]"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x6080806040523461001657614b95908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c631e8e1e131461002857600080fd5b346100a05760403660031901126100a05767ffffffffffffffff6004358181116100a357366023820112156100a35780600401358281116100ab57369101602401116100a7576024358181116100a357366023820112156100a35780600401359182116100a357602490369260051b010111156104b5575b80fd5b8280fd5b5080fd5b8380fd5b9290604080918035956020820135907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4780600381808c80098c0908818480091491818410918a10161616968652602086015201920190565b602091600020600080516020614ac0833981519152810682526000520190602090565b602090600182536021600020600080516020614ac0833981519152810682526000520190565b91909182610f2091825190610f40925b601f19810184106102145750600080516020614ac0833981519152809284519009602087526020808801526020604088015260608701527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808701528160a087015260208660c08160055afa1694805192601f19809201905b80610f40106101fa5750505080610f4051830991835190099152610f4052565b8280918580855189099782519009968152019101906101da565b959291600080516020614ac08339815191529083519009918284526020809101930195610160565b90610180916000516020915b61016083106102f957600080516020614ac0833981519152809284519009602086526020808701526020604087015260608601527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808601528160a086015260208560c08160055afa1693805192601f19809201905b806020106102df5750505080602051830991600051900990600052602052565b8280918580855189099782519009968152019101906102bf565b9391906020600080516020614ac08339815191528192845190099283855201920193610248565b9060a0916000516020915b608083106103db57600080516020614ac0833981519152809284519009602086526020808701526020604087015260608601527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808601528160a086015260208560c08160055afa1693805192601f19809201905b806020106103c15750505080602051830991600051900990600052602052565b8280918580855189099782519009968152019101906103a1565b9391906020600080516020614ac0833981519152819284519009928385520192019361032b565b91906040526060526040600060808160065afa1690565b906040526040600060608160075afa1690565b919060c05260e05260406080808060065afa1690565b9060c0526040608060608160075afa1690565b9392919060005260205261086051604052610880516060526108a0516080526108c05160a05260c05260e0526108e05161010052610900516101205261092051610140526109405161016052602060006101808160085afa166000511690565b60017f10f28bc710a8bdd00dd701df2f5fc4f5ccdb260238eba6f819db692f79dc3dc96106c052600b6106e0527f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610700527f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610720527f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610740527f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026107605260046107805260006107a05260006107c05260006107e052600061080052600161082052600261084052610860907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed610880527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6108a0527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6108c0527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6108e0527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e610900527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145610920527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff610940527f010920a3471867216dc9dd6b478c16842fb5aca434fe6c9bf1622c4abd70381a610960527f300e30930f1a05253b28b6b139f2c38025d99b7a54e641f1d6ff2797d113c118610980527f05e7899750f7abeae5d19c16666c47618fce810326b125d253dd41fb817dd65a6109a0527f1e0e399ce46f208ab3f43aad0222f4dd37b8327b9f7afffa9cf9ee214e2460dd6109c0527f22274e4efd4197dd6515994652d5beafcc7af94313d33e049cf5a1e464b523956109e0527f0ebb470e19409fcd84c0358c04300dc38cba0240141ddeb899ad9cca90167a64610a00527f162baf6245e2cec59bc93bc2302527d299cdb50e100f14895f170f316a2a2643610a20527f172a6f183e2ddc0607d23fd3daf4b23110b81d8a9d0a4e8d3d07ba24a007e04b610a40527f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4610a60527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0610a80527f01021a51384124c6844f2ba0e40e2545f26f280a79745c9164b0a56f1ee54d56610aa0527f2533607ba6f153a0126a8450a3cf47946933c93eaf69c996236b45603179c914610ac0527f1f59be81b3fd7d290930430d204c1a866937862306d75be70fedfe13e565ce0b610ae0527f05931c531cd08b4aa937245293af81c4532fc4c01387d5b539d29f6c4ae00031610b00527f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b610b20527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097610b40527f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91610b60527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd610b80527f2aaba546cdd9969ef0aecc85b2aaa19b6e9639879962661415c8f0df426bac0c610ba0527f12b15327bcfbe7d9e9de1bc648ba3bdf910087362179a0b403cf70bad1c093c8610bc0527f25909db723a8021ffe088c50525d6d260f9157be7a7c194b6f315386a46cdab8610be0527f25cbeae8ec2a8a2f74844f5e3276ed94079907bed6d7b1b26ed695328fe7bcae610c00527f26bffd26dd8f5f7679281f8d1a432690e07b15cbdf684fe456aa1277515e1730610c20527f015a3f09c82a770a69d67583d7049d83d69b7b8e03d38484497215cdc5979556610c40527f1ee4241e91ac391756b0b9893ac1e34ea95c6dd689e7dca12c62a6ce943960f1610c60527f10ad75f199bf1fb9335b91c20db6cd8958dcb2fe11983bc77cdb4036e57e59ca610c80527f05eb5d19e589c11e0bb2200d66da829955545481885cfbc9099ec6a53e266ed2610ca0527f25ac1d9849f9f448cecc7ead7d48670f66bbfe7df8e248bd818a954df6936c27610cc0527f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974610ce0527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3610d00527f1b95c5dc9bae0fb3f8208684042e57e0fcfbc3774af9ae0903ab9e9ddb4f89fd610d20527f1e8564e01419713739871224ce15f4c4b51e6af161d6e07a178e6545879035bf610d40527f1cefc889639cf98f94d831ea41c356929f9317778dda05ba0c5885401638db67610d60527f1e0466deb22a86d9122bc7180b7d293e47288244abf1450a5cd63a3289a457ca610d80526108c435600414916044351416167f10f28bc710a8bdd00dd701df2f5fc4f5ccdb260238eba6f819db692f79dc3dc96000526020906108e45b6109648110614a7957506064915b6101248310614a66576000908120600080516020614ac08339815191528106610da0529052610dc0916020608082015b808310614a4f5750610c4090610c4794610107565b939061012a565b926101008201935b848310614a3a5790610c6091610107565b610140830193915b848410614a295790610c7991610107565b929061046082015b808310614a005750610ca7610cb692610ca0610cbe96610cad94610107565b929061012a565b946100af565b90929193610107565b9290506100af565b5050806107a051614900575b508015614688576106e051610e20519081906000905b8082106148e25750506107205192610f2061078051926006840160051b80830194156148d6575b50610760515b8483106148b157505050610d5a600080516020614ac08339815191527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000008508918284526020840190610150565b93600080516020614ac0833981519152610f209261070051900991610760515b84821061488b5750505050610f4051610f60915b610fe0831061486b576000926108e4906107805160051b8201905b818310614843575050505191610f205191610fe0519085610f205284610f405283610f605280610f805281610fa05282610fc052610e00519283809281610de0519381610dc0519381610e2051600080516020614ac083398151915290870999818d600080516020614ac08339815191526108043581036107e43508600080516020614ac08339815191526108243581036107e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152908608600080516020614ac083398151915203600080516020614ac08339815191529060010890600080516020614ac083398151915291099d81600080516020614ac08339815191526108243581036107e43508600080516020614ac08339815191529085099d600080516020614ac08339815191528d61054435088b600080516020614ac08339815191526101006104243509600080516020614ac08339815191529081036103e43508600080516020614ac083398151915290610564350990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac0833981519152906107a43509600080516020614ac0833981519152038d6108243590600080516020614ac08339815191529108600080516020614ac08339815191528d6107e4350890600080516020614ac08339815191529109600080516020614ac0833981519152906107c4350990600080516020614ac08339815191529108600080516020614ac0833981519152848908600080516020614ac083398151915203600080516020614ac08339815191529060010890600080516020614ac083398151915291099c6107a435600080516020614ac083398151915281810391800990600080516020614ac08339815191529108600080516020614ac08339815191529085099b600080516020614ac08339815191526107a43581038809600080516020614ac08339815191529088089a600080516020614ac08339815191528a870883600080516020614ac0833981519152600080516020614b408339815191528709600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290840890600080516020614ac0833981519152910884600080516020614ac0833981519152600080516020614b408339815191528809600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610764350990600080516020614ac08339815191529109600080516020614ac083398151915203846106e435600080516020614ac0833981519152908609600080516020614ac083398151915290850890600080516020614ac0833981519152910885600080516020614ac08339815191526106c4358709600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610784350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac083398151915203908380600080516020614ac0833981519152600080516020614b408339815191528809600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290840890600080516020614ac0833981519152910881600080516020614ac0833981519152600080516020614b408339815191528909600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610764350990600080516020614ac08339815191529109600080516020614ac083398151915203916106e435600080516020614ac0833981519152908609600080516020614ac0833981519152910890600080516020614ac0833981519152910884600080516020614ac08339815191526106c4358609600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610784350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910898600080516020614ac083398151915290860882600080516020614ac0833981519152600080516020614b408339815191528609600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac0833981519152906104e4350890600080516020614ac0833981519152910883600080516020614ac0833981519152600080516020614b408339815191528709600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610404350890600080516020614ac0833981519152910884600080516020614ac0833981519152600080516020614b408339815191528809600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910885600080516020614ac0833981519152886104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610704350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ac083398151915203836106a435600080516020614ac0833981519152908509600080516020614ac0833981519152906104e4350890600080516020614ac0833981519152910884600080516020614ac0833981519152610684358609600080516020614ac083398151915290610404350890600080516020614ac0833981519152910885600080516020614ac0833981519152610664358709600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910886600080516020614ac0833981519152610644358809600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610724350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac0833981519152039282600080516020614ac0833981519152600080516020614b408339815191528309600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac0833981519152906104e4350890600080516020614ac083398151915291089083600080516020614ac0833981519152600080516020614b408339815191528309600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610404350890600080516020614ac08339815191529108908480600080516020614ac0833981519152600080516020614b408339815191528409600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910891600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610704350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ac08339815191520391806106a435600080516020614ac0833981519152908409600080516020614ac0833981519152906104e4350890600080516020614ac083398151915291089181600080516020614ac0833981519152610684358309600080516020614ac083398151915290610404350890600080516020614ac083398151915291089180600080516020614ac0833981519152610664358409600080516020614ac0833981519152906103e4350890600080516020614ac083398151915291089161064435600080516020614ac08339815191529109600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610724350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac083398151915291089381600080516020614ac08339815191526107443581036107643508600080516020614ac08339815191529083099361076435600080516020614ac083398151915281810391800990600080516020614ac08339815191529108600080516020614ac0833981519152910991600080516020614ac0833981519152610704358209600080516020614ac083398151915203600080516020614ac083398151915291088161046435600080516020614ac083398151915203610404356103e43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161046435600080516020614ac083398151915203610404356103e43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161044435600080516020614ac083398151915203610404356104643561040435600080516020614ac0833981519152036103e43590600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e435610464356103e435600080516020614ac0833981519152036104043590600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac083398151915261046435810360010861046435600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191526104443581036104843508600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e4356104a43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191527f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6104443509600080516020614ac08339815191527f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104e435610524356104043590600080516020614ac08339815191529108600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614b00833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac083398151915290610604350981600080516020614ac08339815191527f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6104443509600080516020614ac08339815191527f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104c435610524356104043590600080516020614ac08339815191529108600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac08339815191529061060435098161046435600080516020614ac083398151915203610504356103e43590600080516020614ac08339815191529108600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac08339815191529061060435098161044435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b00833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105e435098161042435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614aa0833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105e4350981600080516020614ac08339815191526104443581036104843508600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e4356104a43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191527f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6104443509600080516020614ac08339815191527f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104e435610524356104043590600080516020614ac08339815191529108600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614b00833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105c4350981600080516020614ac08339815191527f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6104443509600080516020614ac08339815191527f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104c435610524356104043590600080516020614ac08339815191529108600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac0833981519152906105c435098161046435600080516020614ac083398151915203610504356103e43590600080516020614ac08339815191529108600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac0833981519152906105c435098161044435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b00833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105a435098161042435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614aa0833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105a4350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109610fe0526103a4356000526103c435602052610364905b816102641061481b57826000516110005260205161102052600080516020614ac08339815191528080610e205181808061072051816107405180988188819997829896839709610420528061040052828282096103e0520909090909096103c052610e80516104406103c0905b6104c081106147f757836104605161048051906104a05180600080516020614ac083398151915284840990600080516020614ac083398151915291096104c0526104405191826104e0528260005281600080516020614ac083398151915282850990600080516020614ac08339815191529109610500528061052052600080516020614ac083398151915281840961054052600080516020614ac0833981519152828409610560526103e0519161040051938161042051918483600080516020614ac083398151915203600080516020614ac0833981519152908808600080516020614ac0833981519152898103890890600080516020614ac0833981519152910990600080516020614ac0833981519152910960205287600080516020614ac08339815191528481038908600080516020614ac08339815191528881038a0890600080516020614ac0833981519152910990600080516020614ac0833981519152910960405281600080516020614ac08339815191528881038508600080516020614ac0833981519152888103860890600080516020614ac0833981519152910990600080516020614ac08339815191529109606052600080516020614ac0833981519152886001096080526103c05190600080516020614ac08339815191528481038308600080516020614ac0833981519152898103840890600080516020614ac0833981519152910990600080516020614ac0833981519152910960a052600080516020614ac0833981519152038783600080516020614ac083398151915203600080516020614ac0833981519152908908600080516020614ac0833981519152838a0890600080516020614ac0833981519152910990600080516020614ac0833981519152910960c052600080516020614ac0833981519152878103840890600080516020614ac083398151915290840890600080516020614ac0833981519152910990600080516020614ac0833981519152910960e05285600080516020614ac0833981519152828103870890600080516020614ac083398151915291096101005284600080516020614ac083398151915203600080516020614ac0833981519152910890600080516020614ac0833981519152910961012052600080516020614ac0833981519152838103830890600080516020614ac0833981519152910961014052600080516020614ac083398151915203600080516020614ac0833981519152910890600080516020614ac0833981519152910961016052613fff9061023c565b600051806104e0526105005b61058081106147d957610e40516020516040516060518693600080516020614ac083398151915280610424358409818681868187818b81806103e43583099781808080806104a43586099a610444359009956104043590099261048435900960000808080908080861058052608051600080516020614ac083398151915280610fe05183098184818061062435870960000809086106e45b80610624106147b457506106045b806104a41061478f575061050051908380600080516020614ac083398151915261046435860992600080516020614ac083398151915261082435870991600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac083398151915291096105a05260a05160c05160e051926105205161072435600080516020614ac0833981519152908609600080516020614ac0833981519152610704358509600080516020614ac0833981519152610744358709600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096105c05261010051956101205195610540519061078435600080516020614ac083398151915290890990600080516020614ac0833981519152610764358b0990600080516020614ac08339815191526107c4358b09600080516020614ac08339815191526107a4358d09600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096105e05261014051986101605198610560516107e435600080516020614ac0833981519152908c09600080516020614ac0833981519152610804358e09600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910961060052600080516020614ac0833981519152910890600080516020614ac083398151915291086106205261064052600080516020614ac0833981519152910890600080516020614ac0833981519152910861066052600080516020614ac0833981519152910861068052600080516020614ac083398151915291086106a05261062060005b60a0811061477f576143c483610320565b600080516020614ac08339815191526106005160805109610e6051919060606105e05b60a08210614754578461444c61443d61442561441888886110405260a43560005260c435602052610e405190610419565b6084359060643590610402565b610264356080526102843560a052610e405190610442565b6110205190611000519061042c565b610d605b80610a201061472a5761467861461961453c6145f161453c6145c961453c89600080516020614ac0833981519152806145a861453c61459b61458c8f61456c61453c8761454961453c8c8361452f6145216144db6145126144db6145036144db6144f4889f6144e56144db6144cc6144db93610e405190610442565b6109c051906109a0519061042c565b610e405190610442565b6109805190610960519061042c565b610a405190610a20519061042c565b610a0051906109e0519061042c565b6101843590610164359061042c565b610104359060e4359061042c565b9161050051900990610442565b60a0519060805190610402565b9a610e60519009996101a4356080526101c43560a05283610520518c0990610442565b97610e6051900996610224356080526102443560a052610e405190610442565b61020435906101e4359061042c565b8361054051870990610442565b92610e60519009610124356080526101443560a05261056051900990610442565b610820516080526108405160a05261104051600080516020614ac08339815191520390610442565b610844356080526108643560a0526104c051600080516020614ac08339815191520390610442565b610884358060805261463a61453c6108a435938460a052610e805190610442565b906000519161106091838352602051611080948186526110a0968388526110c0938185526107a05161468d575b505050505193519251915190610455565b1561468857600160005260206000f35b600080fd5b9161470b9391614716959693610ea051600052610ec051602052610ee0938451604052610f0093845160605260805260a05260c05260e0526146f36146e8600080516020614ac0833981519152610100600020068095610419565b895190895190610402565b91600051885260205189525160005251602052610419565b825190865190610402565b906000518552602051815286808080614667565b9061473c61474a91610e405190610442565b60208301519083519061042c565b90603f1901614450565b9091600080516020614ac083398151915290818681855187510992090891601f1990810191016143e7565b81518152602091820191016143b3565b90600080516020614ac0833981519152908185818535870992090890601f19016140b1565b90600080516020614ac0833981519152908185818535870992090890601f19016140a3565b80600080516020614ac083398151915283602093510981520161400b565b60208091600080516020614ac0833981519152845181038608815201910190613c56565b909161482a8261483892610419565b602084013590843590610402565b91603f190190613be9565b9091946020600080516020614ac0833981519152819281893586510990089601929101610da9565b9190600080516020614ac083398151915260209183519008910191610d8e565b600080516020614ac0833981519152838282806020958751098809855209910190610d7a565b60209087600080516020614ac083398151915291828181038608865209920191610d0d565b610f4001935086610d07565b9092600080516020614ac08339815191528160019209930190610ce0565b90506107e0519061080051916107c05160051b806108e401918235926108e48260051b840101356108e48360061b85010135906108e460038560051b02860101359588965b846108e48760051b89010181101561499957906020808c93019384358b1b0194818960051b890101358b1b0195818960061b890101358b1b019660038960051b02010135891b019701969392919093614945565b50979450975093509350507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4790816003818087800987090882868009149180600381808a80098a09089084800914161693610ea052610ec052610ee052610f005281610cca565b9160208181923595600080516020614ac083398151915287101695875201940191939193610c81565b92614a33926100af565b9092610c68565b9291614a45926100af565b9192909190610c4f565b939291614a5b926100af565b929391929091610c2b565b9091614a71926100af565b919091610bfb565b9060208091600080516020614ac083398151915284351016928035855201920191610bed56fe066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad530644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000011274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c80cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff92b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e809226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2a2646970667358221220a0e58ae7dd3fb0f443e0d062395c088c727c1d4c080852f27a12ca461cdb486d64736f6c63430008120033","deployedBytecode":"0x6080604052600436101561001257600080fd5b6000803560e01c631e8e1e131461002857600080fd5b346100a05760403660031901126100a05767ffffffffffffffff6004358181116100a357366023820112156100a35780600401358281116100ab57369101602401116100a7576024358181116100a357366023820112156100a35780600401359182116100a357602490369260051b010111156104b5575b80fd5b8280fd5b5080fd5b8380fd5b9290604080918035956020820135907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4780600381808c80098c0908818480091491818410918a10161616968652602086015201920190565b602091600020600080516020614ac0833981519152810682526000520190602090565b602090600182536021600020600080516020614ac0833981519152810682526000520190565b91909182610f2091825190610f40925b601f19810184106102145750600080516020614ac0833981519152809284519009602087526020808801526020604088015260608701527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808701528160a087015260208660c08160055afa1694805192601f19809201905b80610f40106101fa5750505080610f4051830991835190099152610f4052565b8280918580855189099782519009968152019101906101da565b959291600080516020614ac08339815191529083519009918284526020809101930195610160565b90610180916000516020915b61016083106102f957600080516020614ac0833981519152809284519009602086526020808701526020604087015260608601527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808601528160a086015260208560c08160055afa1693805192601f19809201905b806020106102df5750505080602051830991600051900990600052602052565b8280918580855189099782519009968152019101906102bf565b9391906020600080516020614ac08339815191528192845190099283855201920193610248565b9060a0916000516020915b608083106103db57600080516020614ac0833981519152809284519009602086526020808701526020604087015260608601527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808601528160a086015260208560c08160055afa1693805192601f19809201905b806020106103c15750505080602051830991600051900990600052602052565b8280918580855189099782519009968152019101906103a1565b9391906020600080516020614ac0833981519152819284519009928385520192019361032b565b91906040526060526040600060808160065afa1690565b906040526040600060608160075afa1690565b919060c05260e05260406080808060065afa1690565b9060c0526040608060608160075afa1690565b9392919060005260205261086051604052610880516060526108a0516080526108c05160a05260c05260e0526108e05161010052610900516101205261092051610140526109405161016052602060006101808160085afa166000511690565b60017f10f28bc710a8bdd00dd701df2f5fc4f5ccdb260238eba6f819db692f79dc3dc96106c052600b6106e0527f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610700527f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610720527f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610740527f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026107605260046107805260006107a05260006107c05260006107e052600061080052600161082052600261084052610860907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed610880527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6108a0527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6108c0527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6108e0527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e610900527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145610920527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff610940527f010920a3471867216dc9dd6b478c16842fb5aca434fe6c9bf1622c4abd70381a610960527f300e30930f1a05253b28b6b139f2c38025d99b7a54e641f1d6ff2797d113c118610980527f05e7899750f7abeae5d19c16666c47618fce810326b125d253dd41fb817dd65a6109a0527f1e0e399ce46f208ab3f43aad0222f4dd37b8327b9f7afffa9cf9ee214e2460dd6109c0527f22274e4efd4197dd6515994652d5beafcc7af94313d33e049cf5a1e464b523956109e0527f0ebb470e19409fcd84c0358c04300dc38cba0240141ddeb899ad9cca90167a64610a00527f162baf6245e2cec59bc93bc2302527d299cdb50e100f14895f170f316a2a2643610a20527f172a6f183e2ddc0607d23fd3daf4b23110b81d8a9d0a4e8d3d07ba24a007e04b610a40527f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4610a60527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0610a80527f01021a51384124c6844f2ba0e40e2545f26f280a79745c9164b0a56f1ee54d56610aa0527f2533607ba6f153a0126a8450a3cf47946933c93eaf69c996236b45603179c914610ac0527f1f59be81b3fd7d290930430d204c1a866937862306d75be70fedfe13e565ce0b610ae0527f05931c531cd08b4aa937245293af81c4532fc4c01387d5b539d29f6c4ae00031610b00527f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b610b20527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097610b40527f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91610b60527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd610b80527f2aaba546cdd9969ef0aecc85b2aaa19b6e9639879962661415c8f0df426bac0c610ba0527f12b15327bcfbe7d9e9de1bc648ba3bdf910087362179a0b403cf70bad1c093c8610bc0527f25909db723a8021ffe088c50525d6d260f9157be7a7c194b6f315386a46cdab8610be0527f25cbeae8ec2a8a2f74844f5e3276ed94079907bed6d7b1b26ed695328fe7bcae610c00527f26bffd26dd8f5f7679281f8d1a432690e07b15cbdf684fe456aa1277515e1730610c20527f015a3f09c82a770a69d67583d7049d83d69b7b8e03d38484497215cdc5979556610c40527f1ee4241e91ac391756b0b9893ac1e34ea95c6dd689e7dca12c62a6ce943960f1610c60527f10ad75f199bf1fb9335b91c20db6cd8958dcb2fe11983bc77cdb4036e57e59ca610c80527f05eb5d19e589c11e0bb2200d66da829955545481885cfbc9099ec6a53e266ed2610ca0527f25ac1d9849f9f448cecc7ead7d48670f66bbfe7df8e248bd818a954df6936c27610cc0527f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974610ce0527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3610d00527f1b95c5dc9bae0fb3f8208684042e57e0fcfbc3774af9ae0903ab9e9ddb4f89fd610d20527f1e8564e01419713739871224ce15f4c4b51e6af161d6e07a178e6545879035bf610d40527f1cefc889639cf98f94d831ea41c356929f9317778dda05ba0c5885401638db67610d60527f1e0466deb22a86d9122bc7180b7d293e47288244abf1450a5cd63a3289a457ca610d80526108c435600414916044351416167f10f28bc710a8bdd00dd701df2f5fc4f5ccdb260238eba6f819db692f79dc3dc96000526020906108e45b6109648110614a7957506064915b6101248310614a66576000908120600080516020614ac08339815191528106610da0529052610dc0916020608082015b808310614a4f5750610c4090610c4794610107565b939061012a565b926101008201935b848310614a3a5790610c6091610107565b610140830193915b848410614a295790610c7991610107565b929061046082015b808310614a005750610ca7610cb692610ca0610cbe96610cad94610107565b929061012a565b946100af565b90929193610107565b9290506100af565b5050806107a051614900575b508015614688576106e051610e20519081906000905b8082106148e25750506107205192610f2061078051926006840160051b80830194156148d6575b50610760515b8483106148b157505050610d5a600080516020614ac08339815191527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000008508918284526020840190610150565b93600080516020614ac0833981519152610f209261070051900991610760515b84821061488b5750505050610f4051610f60915b610fe0831061486b576000926108e4906107805160051b8201905b818310614843575050505191610f205191610fe0519085610f205284610f405283610f605280610f805281610fa05282610fc052610e00519283809281610de0519381610dc0519381610e2051600080516020614ac083398151915290870999818d600080516020614ac08339815191526108043581036107e43508600080516020614ac08339815191526108243581036107e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152908608600080516020614ac083398151915203600080516020614ac08339815191529060010890600080516020614ac083398151915291099d81600080516020614ac08339815191526108243581036107e43508600080516020614ac08339815191529085099d600080516020614ac08339815191528d61054435088b600080516020614ac08339815191526101006104243509600080516020614ac08339815191529081036103e43508600080516020614ac083398151915290610564350990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac0833981519152906107a43509600080516020614ac0833981519152038d6108243590600080516020614ac08339815191529108600080516020614ac08339815191528d6107e4350890600080516020614ac08339815191529109600080516020614ac0833981519152906107c4350990600080516020614ac08339815191529108600080516020614ac0833981519152848908600080516020614ac083398151915203600080516020614ac08339815191529060010890600080516020614ac083398151915291099c6107a435600080516020614ac083398151915281810391800990600080516020614ac08339815191529108600080516020614ac08339815191529085099b600080516020614ac08339815191526107a43581038809600080516020614ac08339815191529088089a600080516020614ac08339815191528a870883600080516020614ac0833981519152600080516020614b408339815191528709600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290840890600080516020614ac0833981519152910884600080516020614ac0833981519152600080516020614b408339815191528809600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610764350990600080516020614ac08339815191529109600080516020614ac083398151915203846106e435600080516020614ac0833981519152908609600080516020614ac083398151915290850890600080516020614ac0833981519152910885600080516020614ac08339815191526106c4358709600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610784350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac083398151915203908380600080516020614ac0833981519152600080516020614b408339815191528809600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290840890600080516020614ac0833981519152910881600080516020614ac0833981519152600080516020614b408339815191528909600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610764350990600080516020614ac08339815191529109600080516020614ac083398151915203916106e435600080516020614ac0833981519152908609600080516020614ac0833981519152910890600080516020614ac0833981519152910884600080516020614ac08339815191526106c4358609600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610784350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910898600080516020614ac083398151915290860882600080516020614ac0833981519152600080516020614b408339815191528609600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac0833981519152906104e4350890600080516020614ac0833981519152910883600080516020614ac0833981519152600080516020614b408339815191528709600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610404350890600080516020614ac0833981519152910884600080516020614ac0833981519152600080516020614b408339815191528809600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910885600080516020614ac0833981519152886104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610704350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ac083398151915203836106a435600080516020614ac0833981519152908509600080516020614ac0833981519152906104e4350890600080516020614ac0833981519152910884600080516020614ac0833981519152610684358609600080516020614ac083398151915290610404350890600080516020614ac0833981519152910885600080516020614ac0833981519152610664358709600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910886600080516020614ac0833981519152610644358809600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610724350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac0833981519152039282600080516020614ac0833981519152600080516020614b408339815191528309600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac0833981519152906104e4350890600080516020614ac083398151915291089083600080516020614ac0833981519152600080516020614b408339815191528309600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610404350890600080516020614ac08339815191529108908480600080516020614ac0833981519152600080516020614b408339815191528409600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910891600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610704350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ac08339815191520391806106a435600080516020614ac0833981519152908409600080516020614ac0833981519152906104e4350890600080516020614ac083398151915291089181600080516020614ac0833981519152610684358309600080516020614ac083398151915290610404350890600080516020614ac083398151915291089180600080516020614ac0833981519152610664358409600080516020614ac0833981519152906103e4350890600080516020614ac083398151915291089161064435600080516020614ac08339815191529109600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610724350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac083398151915291089381600080516020614ac08339815191526107443581036107643508600080516020614ac08339815191529083099361076435600080516020614ac083398151915281810391800990600080516020614ac08339815191529108600080516020614ac0833981519152910991600080516020614ac0833981519152610704358209600080516020614ac083398151915203600080516020614ac083398151915291088161046435600080516020614ac083398151915203610404356103e43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161046435600080516020614ac083398151915203610404356103e43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161044435600080516020614ac083398151915203610404356104643561040435600080516020614ac0833981519152036103e43590600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e435610464356103e435600080516020614ac0833981519152036104043590600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac083398151915261046435810360010861046435600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191526104443581036104843508600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e4356104a43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191527f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6104443509600080516020614ac08339815191527f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104e435610524356104043590600080516020614ac08339815191529108600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614b00833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac083398151915290610604350981600080516020614ac08339815191527f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6104443509600080516020614ac08339815191527f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104c435610524356104043590600080516020614ac08339815191529108600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac08339815191529061060435098161046435600080516020614ac083398151915203610504356103e43590600080516020614ac08339815191529108600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac08339815191529061060435098161044435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b00833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105e435098161042435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614aa0833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105e4350981600080516020614ac08339815191526104443581036104843508600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e4356104a43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191527f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6104443509600080516020614ac08339815191527f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104e435610524356104043590600080516020614ac08339815191529108600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614b00833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105c4350981600080516020614ac08339815191527f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6104443509600080516020614ac08339815191527f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104c435610524356104043590600080516020614ac08339815191529108600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac0833981519152906105c435098161046435600080516020614ac083398151915203610504356103e43590600080516020614ac08339815191529108600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac0833981519152906105c435098161044435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b00833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105a435098161042435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614aa0833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105a4350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109610fe0526103a4356000526103c435602052610364905b816102641061481b57826000516110005260205161102052600080516020614ac08339815191528080610e205181808061072051816107405180988188819997829896839709610420528061040052828282096103e0520909090909096103c052610e80516104406103c0905b6104c081106147f757836104605161048051906104a05180600080516020614ac083398151915284840990600080516020614ac083398151915291096104c0526104405191826104e0528260005281600080516020614ac083398151915282850990600080516020614ac08339815191529109610500528061052052600080516020614ac083398151915281840961054052600080516020614ac0833981519152828409610560526103e0519161040051938161042051918483600080516020614ac083398151915203600080516020614ac0833981519152908808600080516020614ac0833981519152898103890890600080516020614ac0833981519152910990600080516020614ac0833981519152910960205287600080516020614ac08339815191528481038908600080516020614ac08339815191528881038a0890600080516020614ac0833981519152910990600080516020614ac0833981519152910960405281600080516020614ac08339815191528881038508600080516020614ac0833981519152888103860890600080516020614ac0833981519152910990600080516020614ac08339815191529109606052600080516020614ac0833981519152886001096080526103c05190600080516020614ac08339815191528481038308600080516020614ac0833981519152898103840890600080516020614ac0833981519152910990600080516020614ac0833981519152910960a052600080516020614ac0833981519152038783600080516020614ac083398151915203600080516020614ac0833981519152908908600080516020614ac0833981519152838a0890600080516020614ac0833981519152910990600080516020614ac0833981519152910960c052600080516020614ac0833981519152878103840890600080516020614ac083398151915290840890600080516020614ac0833981519152910990600080516020614ac0833981519152910960e05285600080516020614ac0833981519152828103870890600080516020614ac083398151915291096101005284600080516020614ac083398151915203600080516020614ac0833981519152910890600080516020614ac0833981519152910961012052600080516020614ac0833981519152838103830890600080516020614ac0833981519152910961014052600080516020614ac083398151915203600080516020614ac0833981519152910890600080516020614ac0833981519152910961016052613fff9061023c565b600051806104e0526105005b61058081106147d957610e40516020516040516060518693600080516020614ac083398151915280610424358409818681868187818b81806103e43583099781808080806104a43586099a610444359009956104043590099261048435900960000808080908080861058052608051600080516020614ac083398151915280610fe05183098184818061062435870960000809086106e45b80610624106147b457506106045b806104a41061478f575061050051908380600080516020614ac083398151915261046435860992600080516020614ac083398151915261082435870991600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac083398151915291096105a05260a05160c05160e051926105205161072435600080516020614ac0833981519152908609600080516020614ac0833981519152610704358509600080516020614ac0833981519152610744358709600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096105c05261010051956101205195610540519061078435600080516020614ac083398151915290890990600080516020614ac0833981519152610764358b0990600080516020614ac08339815191526107c4358b09600080516020614ac08339815191526107a4358d09600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096105e05261014051986101605198610560516107e435600080516020614ac0833981519152908c09600080516020614ac0833981519152610804358e09600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910961060052600080516020614ac0833981519152910890600080516020614ac083398151915291086106205261064052600080516020614ac0833981519152910890600080516020614ac0833981519152910861066052600080516020614ac0833981519152910861068052600080516020614ac083398151915291086106a05261062060005b60a0811061477f576143c483610320565b600080516020614ac08339815191526106005160805109610e6051919060606105e05b60a08210614754578461444c61443d61442561441888886110405260a43560005260c435602052610e405190610419565b6084359060643590610402565b610264356080526102843560a052610e405190610442565b6110205190611000519061042c565b610d605b80610a201061472a5761467861461961453c6145f161453c6145c961453c89600080516020614ac0833981519152806145a861453c61459b61458c8f61456c61453c8761454961453c8c8361452f6145216144db6145126144db6145036144db6144f4889f6144e56144db6144cc6144db93610e405190610442565b6109c051906109a0519061042c565b610e405190610442565b6109805190610960519061042c565b610a405190610a20519061042c565b610a0051906109e0519061042c565b6101843590610164359061042c565b610104359060e4359061042c565b9161050051900990610442565b60a0519060805190610402565b9a610e60519009996101a4356080526101c43560a05283610520518c0990610442565b97610e6051900996610224356080526102443560a052610e405190610442565b61020435906101e4359061042c565b8361054051870990610442565b92610e60519009610124356080526101443560a05261056051900990610442565b610820516080526108405160a05261104051600080516020614ac08339815191520390610442565b610844356080526108643560a0526104c051600080516020614ac08339815191520390610442565b610884358060805261463a61453c6108a435938460a052610e805190610442565b906000519161106091838352602051611080948186526110a0968388526110c0938185526107a05161468d575b505050505193519251915190610455565b1561468857600160005260206000f35b600080fd5b9161470b9391614716959693610ea051600052610ec051602052610ee0938451604052610f0093845160605260805260a05260c05260e0526146f36146e8600080516020614ac0833981519152610100600020068095610419565b895190895190610402565b91600051885260205189525160005251602052610419565b825190865190610402565b906000518552602051815286808080614667565b9061473c61474a91610e405190610442565b60208301519083519061042c565b90603f1901614450565b9091600080516020614ac083398151915290818681855187510992090891601f1990810191016143e7565b81518152602091820191016143b3565b90600080516020614ac0833981519152908185818535870992090890601f19016140b1565b90600080516020614ac0833981519152908185818535870992090890601f19016140a3565b80600080516020614ac083398151915283602093510981520161400b565b60208091600080516020614ac0833981519152845181038608815201910190613c56565b909161482a8261483892610419565b602084013590843590610402565b91603f190190613be9565b9091946020600080516020614ac0833981519152819281893586510990089601929101610da9565b9190600080516020614ac083398151915260209183519008910191610d8e565b600080516020614ac0833981519152838282806020958751098809855209910190610d7a565b60209087600080516020614ac083398151915291828181038608865209920191610d0d565b610f4001935086610d07565b9092600080516020614ac08339815191528160019209930190610ce0565b90506107e0519061080051916107c05160051b806108e401918235926108e48260051b840101356108e48360061b85010135906108e460038560051b02860101359588965b846108e48760051b89010181101561499957906020808c93019384358b1b0194818960051b890101358b1b0195818960061b890101358b1b019660038960051b02010135891b019701969392919093614945565b50979450975093509350507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4790816003818087800987090882868009149180600381808a80098a09089084800914161693610ea052610ec052610ee052610f005281610cca565b9160208181923595600080516020614ac083398151915287101695875201940191939193610c81565b92614a33926100af565b9092610c68565b9291614a45926100af565b9192909190610c4f565b939291614a5b926100af565b929391929091610c2b565b9091614a71926100af565b919091610bfb565b9060208091600080516020614ac083398151915284351016928035855201920191610bed56fe066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad530644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000011274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c80cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff92b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e809226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2a2646970667358221220a0e58ae7dd3fb0f443e0d062395c088c727c1d4c080852f27a12ca461cdb486d64736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file diff --git a/backend/src/contracts/generated/inclusion_verifier.rs b/backend/src/contracts/generated/inclusion_verifier.rs index d21ec2d3..00061bfc 100644 --- a/backend/src/contracts/generated/inclusion_verifier.rs +++ b/backend/src/contracts/generated/inclusion_verifier.rs @@ -1259,37 +1259,37 @@ pub mod inclusion_verifier { 1, 127, 16, - 30, - 50, - 32, - 159, - 188, - 42, - 253, - 218, - 46, - 171, - 8, - 238, - 211, - 227, - 233, - 50, - 62, - 205, - 146, - 229, - 198, - 185, - 80, - 130, - 4, - 185, - 72, - 222, - 26, - 229, - 243, + 242, + 139, + 199, + 16, + 168, + 189, + 208, + 13, + 215, + 1, + 223, + 47, + 95, + 196, + 245, + 204, + 219, + 38, + 2, + 56, + 235, + 166, + 248, + 25, + 219, + 105, + 47, + 121, + 220, + 61, + 201, 97, 6, 192, @@ -1789,297 +1789,297 @@ pub mod inclusion_verifier { 64, 82, 127, - 23, - 231, - 203, - 106, - 48, - 196, - 206, - 154, - 61, - 141, - 230, - 4, - 219, - 175, - 81, - 123, - 31, - 35, - 228, - 64, + 1, + 9, + 32, + 163, + 71, + 24, + 103, + 33, + 109, + 201, + 221, + 107, + 71, + 140, + 22, + 132, + 47, + 181, 172, - 185, - 231, + 164, 52, - 89, + 254, + 108, + 155, + 241, + 98, + 44, + 74, + 189, + 112, 56, - 255, - 91, - 36, - 90, - 64, - 62, + 26, 97, 9, 96, 82, 127, - 28, - 49, - 164, - 45, - 125, - 163, - 96, - 204, - 232, - 38, - 46, - 33, - 251, - 154, - 94, + 48, + 14, + 48, + 147, + 15, + 26, + 5, + 37, + 59, + 40, + 182, + 177, + 57, 242, - 106, - 35, - 235, - 188, - 246, - 153, - 92, - 202, - 184, - 154, - 238, - 64, - 12, - 46, - 153, - 75, + 195, + 128, + 37, + 217, + 155, + 122, + 84, + 230, + 65, + 241, + 214, + 255, + 39, + 151, + 209, + 19, + 193, + 24, 97, 9, 128, 82, 127, 5, - 89, - 28, - 127, - 170, - 44, - 158, - 175, - 28, - 149, - 115, - 168, - 75, - 221, - 236, - 48, - 50, - 25, + 231, + 137, + 151, + 80, + 247, 171, - 244, - 150, - 175, - 8, - 153, - 237, - 67, - 136, + 234, + 229, + 209, + 156, + 22, + 102, + 108, + 71, + 97, + 143, + 206, + 129, + 3, + 38, + 177, + 37, + 210, 83, - 34, + 221, + 65, + 251, + 129, 125, - 208, - 86, + 214, + 90, 97, 9, 160, 82, 127, - 44, + 30, + 14, + 57, + 156, + 228, + 111, + 32, + 138, + 179, + 244, + 58, + 173, + 2, + 34, + 244, + 221, + 55, + 184, + 50, + 123, + 159, + 122, + 255, 250, + 156, + 249, + 238, + 33, + 78, 36, - 253, - 229, - 118, - 117, - 11, - 64, - 54, - 223, - 254, - 64, - 16, - 94, - 107, - 114, - 68, - 246, - 56, - 67, - 236, - 116, - 217, - 208, - 170, - 212, - 139, - 164, - 19, - 40, - 124, + 96, + 221, 97, 9, 192, 82, 127, - 41, - 155, - 18, - 230, - 83, + 34, + 39, + 78, + 78, + 253, + 65, + 151, + 221, + 101, + 21, 153, - 220, - 234, - 63, - 30, - 12, - 224, 70, - 207, - 95, - 147, - 206, - 123, - 169, - 247, - 121, - 191, - 163, - 158, - 127, - 12, - 109, - 76, - 25, - 98, - 138, - 144, + 82, + 213, + 190, + 175, + 204, + 122, + 249, + 67, + 19, + 211, + 62, + 4, + 156, + 245, + 161, + 228, + 100, + 181, + 35, + 149, 97, 9, 224, 82, 127, - 33, - 197, - 119, - 18, - 42, - 61, - 31, - 77, - 1, - 155, - 147, - 231, - 36, - 217, - 129, - 176, - 101, - 62, - 217, - 79, - 73, - 46, - 175, - 236, - 80, - 148, - 82, - 49, - 147, - 95, - 154, - 149, + 14, + 187, + 71, + 14, + 25, + 64, + 159, + 205, + 132, + 192, + 53, + 140, + 4, + 48, + 13, + 195, + 140, + 186, + 2, + 64, + 20, + 29, + 222, + 184, + 153, + 173, + 156, + 202, + 144, + 22, + 122, + 100, 97, 10, 0, 82, 127, - 25, - 217, - 34, - 1, - 65, - 190, - 242, - 89, - 33, - 212, - 116, - 198, - 230, - 52, - 208, - 109, - 251, - 125, - 121, - 4, - 229, - 154, - 78, - 196, - 134, - 161, - 72, - 176, - 11, - 253, - 56, - 163, + 22, + 43, + 175, + 98, + 69, + 226, + 206, + 197, + 155, + 201, + 59, + 194, + 48, + 37, + 39, + 210, + 153, + 205, + 181, + 14, + 16, + 15, + 20, + 137, + 95, + 23, + 15, + 49, + 106, + 42, + 38, + 67, 97, 10, 32, 82, 127, - 47, - 56, - 81, - 30, - 83, - 104, - 128, - 86, - 182, - 147, - 200, - 78, - 246, - 154, - 122, - 226, - 185, - 171, - 72, - 41, - 6, - 220, - 70, - 174, - 157, - 149, - 34, - 253, - 60, + 23, + 42, + 111, + 24, + 62, + 45, + 220, + 6, + 7, + 210, + 63, + 211, + 218, + 244, + 178, + 49, + 16, + 184, + 29, + 138, + 157, + 10, + 78, + 141, + 61, + 7, + 186, + 36, + 160, + 7, 224, - 152, - 182, + 75, 97, 10, 64, @@ -2159,149 +2159,149 @@ pub mod inclusion_verifier { 128, 82, 127, - 25, - 32, - 107, - 235, - 197, - 204, - 74, - 91, - 105, - 44, - 88, - 188, - 97, - 231, - 174, + 1, + 2, + 26, + 81, + 56, + 65, + 36, 198, - 211, - 251, - 184, - 52, - 78, - 57, - 161, - 51, - 105, - 159, - 116, - 230, - 244, + 132, + 79, + 43, + 160, + 228, 14, - 194, - 168, + 37, + 69, + 242, + 111, + 40, + 10, + 121, + 116, + 92, + 145, + 100, + 176, + 165, + 111, + 30, + 229, + 77, + 86, 97, 10, 160, 82, 127, - 6, - 120, - 199, - 189, - 209, - 65, - 189, - 38, - 203, - 233, + 37, 51, - 111, - 93, + 96, + 123, + 166, + 241, + 83, + 160, + 18, + 106, + 132, + 80, + 163, 207, - 28, - 90, - 140, - 242, - 26, - 89, - 39, + 71, + 148, + 105, + 51, + 201, + 62, 175, - 209, - 178, - 243, - 147, - 21, - 46, - 224, - 42, - 106, - 120, + 105, + 201, + 150, + 35, + 107, + 69, + 96, + 49, + 121, + 201, + 20, 97, 10, 192, 82, 127, - 28, - 110, - 35, + 31, + 89, + 190, + 129, + 179, + 253, + 125, + 41, + 9, + 48, 67, - 51, + 13, + 32, + 76, + 26, + 134, + 105, 55, - 131, - 180, - 244, - 138, + 134, + 35, + 6, + 215, + 91, 231, - 210, - 104, - 26, - 251, - 60, - 223, - 106, - 77, - 251, - 200, - 58, - 80, - 12, - 176, - 109, - 179, - 38, - 90, - 211, + 15, + 237, + 254, + 19, 229, - 213, + 101, + 206, + 11, 97, 10, 224, 82, 127, - 26, - 61, - 131, - 109, - 67, - 37, - 255, - 48, - 20, - 76, - 30, - 32, - 56, - 164, - 212, - 2, - 95, + 5, + 147, + 28, + 83, + 28, 208, - 240, - 26, - 242, - 76, - 253, - 141, - 253, - 84, - 1, - 142, - 100, - 243, - 176, - 152, + 139, + 74, + 169, + 55, + 36, + 82, + 147, + 175, + 129, + 196, + 83, + 47, + 196, + 192, + 19, + 135, + 213, + 181, + 57, + 210, + 159, + 108, + 74, + 224, + 0, + 49, 97, 11, 0, @@ -2455,371 +2455,371 @@ pub mod inclusion_verifier { 128, 82, 127, - 9, - 227, - 48, - 50, - 69, - 227, - 176, - 10, - 202, - 137, - 78, - 159, - 186, - 61, - 81, - 132, - 255, - 55, - 57, - 198, - 100, - 227, - 99, - 242, - 5, - 212, - 47, - 238, - 227, - 39, - 182, + 42, + 171, + 165, + 70, + 205, + 217, + 150, + 158, + 240, + 174, + 204, + 133, + 178, 170, + 161, + 155, + 110, + 150, + 57, + 135, + 153, + 98, + 102, + 20, + 21, + 200, + 240, + 223, + 66, + 107, + 172, + 12, 97, 11, 160, 82, 127, - 19, - 206, - 146, - 40, - 60, + 18, + 177, + 83, + 39, + 188, + 251, + 231, + 217, + 233, + 222, + 27, 198, - 246, 72, - 189, - 218, - 134, - 24, - 45, + 186, + 59, + 223, 145, - 133, - 42, - 171, - 92, - 96, - 136, - 171, 0, - 141, - 156, - 219, - 85, - 34, - 252, - 191, - 92, - 98, - 137, + 135, + 54, + 33, + 121, + 160, + 180, + 3, + 207, + 112, + 186, + 209, + 192, + 147, + 200, 97, 11, 192, 82, 127, - 8, - 165, - 3, - 231, - 161, - 102, - 132, + 37, + 144, + 157, + 183, + 35, 168, - 25, - 145, - 219, - 252, - 94, - 200, - 76, - 159, - 75, - 15, - 122, + 2, + 31, + 254, + 8, + 140, 80, + 82, + 93, 109, - 223, 38, - 182, - 125, - 48, - 94, - 191, - 192, - 248, - 23, - 67, + 15, + 145, + 87, + 190, + 122, + 124, + 25, + 75, + 111, + 49, + 83, + 134, + 164, + 108, + 218, + 184, 97, 11, 224, 82, 127, - 8, - 162, - 216, - 225, + 37, + 203, + 234, + 232, + 236, + 42, + 138, + 47, + 116, + 132, + 79, + 94, + 50, 118, - 15, - 251, - 22, - 247, - 1, - 71, - 248, - 180, - 78, - 120, - 28, 237, - 101, - 161, - 230, - 119, - 167, - 134, - 205, - 216, - 188, - 159, 148, - 123, - 54, - 19, - 28, + 7, + 153, + 7, + 190, + 214, + 215, + 177, + 178, + 110, + 214, + 149, + 50, + 143, + 231, + 188, + 174, 97, 12, 0, 82, 127, - 37, - 99, - 43, - 200, - 1, - 44, - 108, - 188, - 109, + 38, + 191, + 253, + 38, 221, - 166, - 97, - 169, - 114, - 159, - 84, - 76, - 84, - 98, - 7, - 0, - 195, - 132, - 12, - 1, - 202, - 91, - 87, - 230, - 26, + 143, + 95, + 118, + 121, + 40, 31, - 254, + 141, + 26, + 67, + 38, + 144, + 224, + 123, + 21, + 203, + 223, + 104, + 79, + 228, + 86, + 170, + 18, + 119, + 81, + 94, + 23, + 48, 97, 12, 32, 82, 127, - 43, - 165, - 118, - 76, - 102, - 58, - 75, - 40, - 146, - 52, - 60, - 48, - 61, - 160, - 245, - 102, - 78, + 1, + 90, 63, - 98, - 13, + 9, + 200, + 42, + 119, + 10, + 105, 214, - 184, - 81, - 167, - 17, - 120, - 23, + 117, + 131, + 215, 4, - 41, - 47, - 209, - 26, + 157, + 131, + 214, + 155, + 123, + 142, + 3, + 211, + 132, + 132, + 73, + 114, + 21, + 205, + 197, + 151, + 149, + 86, 97, 12, 64, 82, 127, - 7, - 207, - 228, - 243, - 21, - 43, - 25, - 150, - 232, - 234, - 253, - 113, - 132, - 81, - 53, - 108, - 32, - 68, + 30, 228, - 194, + 36, + 30, + 145, + 172, 57, - 252, - 194, - 158, - 179, - 168, - 29, + 23, + 86, + 176, + 185, + 137, + 58, + 193, + 227, + 78, + 169, + 92, + 109, + 214, + 137, + 231, + 220, + 161, + 44, + 98, + 166, + 206, + 148, 57, - 46, - 27, - 68, - 173, + 96, + 241, 97, 12, 96, 82, 127, - 37, - 86, - 115, - 226, - 36, - 165, - 148, - 229, - 63, - 213, - 177, - 180, + 16, + 173, + 117, + 241, + 153, + 191, + 31, + 185, + 51, + 91, + 145, + 194, + 13, + 182, + 205, + 137, + 88, 220, - 212, - 99, - 41, - 231, - 42, - 4, - 225, - 96, - 86, - 222, - 163, - 213, - 161, + 178, + 254, + 17, + 152, + 59, + 199, + 124, + 219, + 64, + 54, + 229, 126, - 49, - 41, - 26, - 153, - 96, + 89, + 202, 97, 12, 128, 82, 127, - 19, - 108, - 177, - 75, - 53, - 31, - 59, - 67, - 181, - 230, - 24, - 197, - 196, - 144, - 34, - 88, - 142, - 221, - 72, - 85, - 15, - 78, - 125, - 105, - 48, - 148, - 66, - 232, - 184, - 61, + 5, + 235, + 93, + 25, + 229, + 137, + 193, + 30, + 11, + 178, + 32, 13, - 34, + 102, + 218, + 130, + 153, + 85, + 84, + 84, + 129, + 136, + 92, + 251, + 201, + 9, + 158, + 198, + 165, + 62, + 38, + 110, + 210, 97, 12, 160, 82, 127, - 14, - 233, - 187, - 223, + 37, + 172, + 29, + 152, + 73, + 249, + 244, + 72, 206, - 147, + 204, + 126, + 173, + 125, + 72, + 103, + 15, + 102, + 187, + 254, + 125, + 248, + 226, + 72, + 189, 129, - 94, - 121, - 170, - 191, - 197, - 236, - 146, - 165, - 35, - 70, - 196, - 106, - 69, - 225, - 123, - 197, - 188, - 154, - 216, - 21, - 94, - 152, - 44, - 156, - 172, + 138, + 149, + 77, + 246, + 147, + 108, + 39, 97, 12, 192, @@ -2899,149 +2899,149 @@ pub mod inclusion_verifier { 0, 82, 127, - 31, - 93, - 105, - 248, - 173, - 199, - 222, - 243, - 83, - 202, + 27, + 149, 197, - 48, - 19, - 49, - 246, - 106, - 106, - 161, - 44, - 59, 220, - 70, - 186, - 133, + 155, + 174, + 15, + 179, + 248, + 32, + 134, + 132, + 4, + 46, + 87, + 224, + 252, + 251, + 195, + 119, + 74, + 249, + 174, 9, - 216, - 28, - 25, - 34, - 148, - 76, - 30, + 3, + 171, + 158, + 157, + 219, + 79, + 137, + 253, 97, 13, 32, 82, 127, - 5, - 10, - 53, - 140, - 142, - 231, - 73, - 1, - 175, + 30, + 133, + 100, + 224, + 20, + 25, + 113, + 55, + 57, + 135, + 18, + 36, + 206, + 21, + 244, + 196, + 181, + 30, + 106, + 241, + 97, 214, - 190, - 189, - 218, + 224, + 122, + 23, + 142, + 101, + 69, + 135, + 144, 53, - 162, - 91, - 233, - 155, - 166, - 49, - 35, - 42, - 190, - 192, - 187, - 125, - 242, - 52, - 40, - 226, - 25, - 235, + 191, 97, 13, 64, 82, 127, - 29, - 219, - 249, 28, - 238, - 237, - 136, - 168, - 198, - 110, - 155, - 248, - 208, + 239, + 200, 137, - 179, - 9, + 99, + 156, + 249, + 143, + 148, + 216, + 49, + 234, + 65, + 195, + 86, + 146, + 159, + 147, + 23, + 119, 141, - 192, - 131, - 241, - 87, - 144, - 135, - 7, - 150, - 167, - 38, - 127, - 37, - 207, - 155, - 240, + 218, + 5, + 186, + 12, + 88, + 133, + 64, + 22, + 56, + 219, + 103, 97, 13, 96, 82, 127, - 10, - 180, - 232, - 11, - 0, - 145, - 205, - 64, - 7, - 2, - 148, - 247, - 84, - 229, - 75, + 30, + 4, + 102, + 222, + 178, + 42, + 134, + 217, 18, - 126, - 32, - 0, - 87, - 44, - 3, + 43, + 199, + 24, + 11, + 125, + 41, + 62, + 71, + 40, + 130, 68, - 194, - 131, - 138, - 238, - 175, - 37, - 30, - 179, - 145, + 171, + 241, + 69, + 10, + 92, + 214, + 58, + 50, + 137, + 164, + 87, + 202, 97, 13, 128, @@ -3062,37 +3062,37 @@ pub mod inclusion_verifier { 22, 127, 16, - 30, - 50, - 32, - 159, - 188, - 42, - 253, - 218, - 46, - 171, - 8, - 238, - 211, - 227, - 233, - 50, - 62, - 205, - 146, - 229, - 198, - 185, - 80, - 130, - 4, - 185, - 72, - 222, - 26, - 229, - 243, + 242, + 139, + 199, + 16, + 168, + 189, + 208, + 13, + 215, + 1, + 223, + 47, + 95, + 196, + 245, + 204, + 219, + 38, + 2, + 56, + 235, + 166, + 248, + 25, + 219, + 105, + 47, + 121, + 220, + 61, + 201, 96, 0, 82, @@ -19355,38 +19355,38 @@ pub mod inclusion_verifier { 34, 18, 32, - 57, - 49, - 11, - 184, - 227, - 29, - 60, + 160, + 229, + 138, + 231, + 221, 63, - 146, - 29, - 103, - 96, - 75, - 43, - 55, - 233, + 176, + 244, + 67, + 224, + 208, + 98, + 57, + 92, + 8, + 140, 114, - 203, - 179, - 129, - 209, - 112, - 142, - 54, - 68, - 127, + 124, + 29, 76, - 139, - 39, - 211, - 33, - 215, + 8, + 8, + 82, + 242, + 122, + 18, + 202, + 70, + 28, + 219, + 72, + 109, 100, 115, 111, @@ -20615,37 +20615,37 @@ pub mod inclusion_verifier { 1, 127, 16, - 30, - 50, - 32, - 159, - 188, - 42, - 253, - 218, - 46, - 171, - 8, - 238, - 211, - 227, - 233, - 50, - 62, - 205, - 146, - 229, - 198, - 185, - 80, - 130, - 4, - 185, - 72, - 222, - 26, - 229, - 243, + 242, + 139, + 199, + 16, + 168, + 189, + 208, + 13, + 215, + 1, + 223, + 47, + 95, + 196, + 245, + 204, + 219, + 38, + 2, + 56, + 235, + 166, + 248, + 25, + 219, + 105, + 47, + 121, + 220, + 61, + 201, 97, 6, 192, @@ -21145,297 +21145,297 @@ pub mod inclusion_verifier { 64, 82, 127, - 23, - 231, - 203, - 106, - 48, - 196, - 206, - 154, - 61, - 141, - 230, - 4, - 219, - 175, - 81, - 123, - 31, - 35, - 228, - 64, + 1, + 9, + 32, + 163, + 71, + 24, + 103, + 33, + 109, + 201, + 221, + 107, + 71, + 140, + 22, + 132, + 47, + 181, 172, - 185, - 231, + 164, 52, - 89, + 254, + 108, + 155, + 241, + 98, + 44, + 74, + 189, + 112, 56, - 255, - 91, - 36, - 90, - 64, - 62, + 26, 97, 9, 96, 82, 127, - 28, - 49, - 164, - 45, - 125, - 163, - 96, - 204, - 232, - 38, - 46, - 33, - 251, - 154, - 94, + 48, + 14, + 48, + 147, + 15, + 26, + 5, + 37, + 59, + 40, + 182, + 177, + 57, 242, - 106, - 35, - 235, - 188, - 246, - 153, - 92, - 202, - 184, - 154, - 238, - 64, - 12, - 46, - 153, - 75, + 195, + 128, + 37, + 217, + 155, + 122, + 84, + 230, + 65, + 241, + 214, + 255, + 39, + 151, + 209, + 19, + 193, + 24, 97, 9, 128, 82, 127, 5, - 89, - 28, - 127, - 170, - 44, - 158, - 175, - 28, - 149, - 115, - 168, - 75, - 221, - 236, - 48, - 50, - 25, + 231, + 137, + 151, + 80, + 247, 171, - 244, - 150, - 175, - 8, - 153, - 237, - 67, - 136, + 234, + 229, + 209, + 156, + 22, + 102, + 108, + 71, + 97, + 143, + 206, + 129, + 3, + 38, + 177, + 37, + 210, 83, - 34, + 221, + 65, + 251, + 129, 125, - 208, - 86, + 214, + 90, 97, 9, 160, 82, 127, - 44, + 30, + 14, + 57, + 156, + 228, + 111, + 32, + 138, + 179, + 244, + 58, + 173, + 2, + 34, + 244, + 221, + 55, + 184, + 50, + 123, + 159, + 122, + 255, 250, + 156, + 249, + 238, + 33, + 78, 36, - 253, - 229, - 118, - 117, - 11, - 64, - 54, - 223, - 254, - 64, - 16, - 94, - 107, - 114, - 68, - 246, - 56, - 67, - 236, - 116, - 217, - 208, - 170, - 212, - 139, - 164, - 19, - 40, - 124, + 96, + 221, 97, 9, 192, 82, 127, - 41, - 155, - 18, - 230, - 83, + 34, + 39, + 78, + 78, + 253, + 65, + 151, + 221, + 101, + 21, 153, - 220, - 234, - 63, - 30, - 12, - 224, 70, - 207, - 95, - 147, - 206, - 123, - 169, - 247, - 121, - 191, - 163, - 158, - 127, - 12, - 109, - 76, - 25, - 98, - 138, - 144, + 82, + 213, + 190, + 175, + 204, + 122, + 249, + 67, + 19, + 211, + 62, + 4, + 156, + 245, + 161, + 228, + 100, + 181, + 35, + 149, 97, 9, 224, 82, 127, - 33, - 197, - 119, - 18, - 42, - 61, - 31, - 77, - 1, - 155, - 147, - 231, - 36, - 217, - 129, - 176, - 101, - 62, - 217, - 79, - 73, - 46, - 175, - 236, - 80, - 148, - 82, - 49, - 147, - 95, - 154, - 149, + 14, + 187, + 71, + 14, + 25, + 64, + 159, + 205, + 132, + 192, + 53, + 140, + 4, + 48, + 13, + 195, + 140, + 186, + 2, + 64, + 20, + 29, + 222, + 184, + 153, + 173, + 156, + 202, + 144, + 22, + 122, + 100, 97, 10, 0, 82, 127, - 25, - 217, - 34, - 1, - 65, - 190, - 242, - 89, - 33, - 212, - 116, - 198, - 230, - 52, - 208, - 109, - 251, - 125, - 121, - 4, - 229, - 154, - 78, - 196, - 134, - 161, - 72, - 176, - 11, - 253, - 56, - 163, + 22, + 43, + 175, + 98, + 69, + 226, + 206, + 197, + 155, + 201, + 59, + 194, + 48, + 37, + 39, + 210, + 153, + 205, + 181, + 14, + 16, + 15, + 20, + 137, + 95, + 23, + 15, + 49, + 106, + 42, + 38, + 67, 97, 10, 32, 82, 127, - 47, - 56, - 81, - 30, - 83, - 104, - 128, - 86, - 182, - 147, - 200, - 78, - 246, - 154, - 122, - 226, - 185, - 171, - 72, - 41, - 6, + 23, + 42, + 111, + 24, + 62, + 45, 220, - 70, - 174, + 6, + 7, + 210, + 63, + 211, + 218, + 244, + 178, + 49, + 16, + 184, + 29, + 138, 157, - 149, - 34, - 253, - 60, + 10, + 78, + 141, + 61, + 7, + 186, + 36, + 160, + 7, 224, - 152, - 182, + 75, 97, 10, 64, @@ -21515,149 +21515,149 @@ pub mod inclusion_verifier { 128, 82, 127, - 25, - 32, - 107, - 235, - 197, - 204, - 74, - 91, - 105, - 44, - 88, - 188, - 97, - 231, - 174, + 1, + 2, + 26, + 81, + 56, + 65, + 36, 198, - 211, - 251, - 184, - 52, - 78, - 57, - 161, - 51, - 105, - 159, - 116, - 230, - 244, + 132, + 79, + 43, + 160, + 228, 14, - 194, - 168, + 37, + 69, + 242, + 111, + 40, + 10, + 121, + 116, + 92, + 145, + 100, + 176, + 165, + 111, + 30, + 229, + 77, + 86, 97, 10, 160, 82, 127, - 6, - 120, - 199, - 189, - 209, - 65, - 189, - 38, - 203, - 233, + 37, 51, - 111, - 93, + 96, + 123, + 166, + 241, + 83, + 160, + 18, + 106, + 132, + 80, + 163, 207, - 28, - 90, - 140, - 242, - 26, - 89, - 39, + 71, + 148, + 105, + 51, + 201, + 62, 175, - 209, - 178, - 243, - 147, - 21, - 46, - 224, - 42, - 106, - 120, + 105, + 201, + 150, + 35, + 107, + 69, + 96, + 49, + 121, + 201, + 20, 97, 10, 192, 82, 127, - 28, - 110, - 35, + 31, + 89, + 190, + 129, + 179, + 253, + 125, + 41, + 9, + 48, 67, - 51, + 13, + 32, + 76, + 26, + 134, + 105, 55, - 131, - 180, - 244, - 138, + 134, + 35, + 6, + 215, + 91, 231, - 210, - 104, - 26, - 251, - 60, - 223, - 106, - 77, - 251, - 200, - 58, - 80, - 12, - 176, - 109, - 179, - 38, - 90, - 211, + 15, + 237, + 254, + 19, 229, - 213, + 101, + 206, + 11, 97, 10, 224, 82, 127, - 26, - 61, - 131, - 109, - 67, - 37, - 255, - 48, - 20, - 76, - 30, - 32, - 56, - 164, - 212, - 2, - 95, + 5, + 147, + 28, + 83, + 28, 208, - 240, - 26, - 242, - 76, - 253, - 141, - 253, - 84, - 1, - 142, - 100, - 243, - 176, - 152, + 139, + 74, + 169, + 55, + 36, + 82, + 147, + 175, + 129, + 196, + 83, + 47, + 196, + 192, + 19, + 135, + 213, + 181, + 57, + 210, + 159, + 108, + 74, + 224, + 0, + 49, 97, 11, 0, @@ -21811,371 +21811,371 @@ pub mod inclusion_verifier { 128, 82, 127, - 9, - 227, - 48, - 50, - 69, - 227, - 176, - 10, - 202, - 137, - 78, - 159, - 186, - 61, - 81, - 132, - 255, - 55, - 57, - 198, - 100, - 227, - 99, - 242, - 5, - 212, - 47, - 238, - 227, - 39, - 182, + 42, + 171, + 165, + 70, + 205, + 217, + 150, + 158, + 240, + 174, + 204, + 133, + 178, 170, - 97, - 11, - 160, - 82, - 127, - 19, - 206, - 146, - 40, - 60, + 161, + 155, + 110, + 150, + 57, + 135, + 153, + 98, + 102, + 20, + 21, + 200, + 240, + 223, + 66, + 107, + 172, + 12, + 97, + 11, + 160, + 82, + 127, + 18, + 177, + 83, + 39, + 188, + 251, + 231, + 217, + 233, + 222, + 27, 198, - 246, 72, - 189, - 218, - 134, - 24, - 45, + 186, + 59, + 223, 145, - 133, - 42, - 171, - 92, - 96, - 136, - 171, 0, - 141, - 156, - 219, - 85, - 34, - 252, - 191, - 92, - 98, - 137, + 135, + 54, + 33, + 121, + 160, + 180, + 3, + 207, + 112, + 186, + 209, + 192, + 147, + 200, 97, 11, 192, 82, 127, - 8, - 165, - 3, - 231, - 161, - 102, - 132, + 37, + 144, + 157, + 183, + 35, 168, - 25, - 145, - 219, - 252, - 94, - 200, - 76, - 159, - 75, - 15, - 122, + 2, + 31, + 254, + 8, + 140, 80, + 82, + 93, 109, - 223, 38, - 182, - 125, - 48, - 94, - 191, - 192, - 248, - 23, - 67, + 15, + 145, + 87, + 190, + 122, + 124, + 25, + 75, + 111, + 49, + 83, + 134, + 164, + 108, + 218, + 184, 97, 11, 224, 82, 127, - 8, - 162, - 216, - 225, + 37, + 203, + 234, + 232, + 236, + 42, + 138, + 47, + 116, + 132, + 79, + 94, + 50, 118, - 15, - 251, - 22, - 247, - 1, - 71, - 248, - 180, - 78, - 120, - 28, 237, - 101, - 161, - 230, - 119, - 167, - 134, - 205, - 216, - 188, - 159, 148, - 123, - 54, - 19, - 28, + 7, + 153, + 7, + 190, + 214, + 215, + 177, + 178, + 110, + 214, + 149, + 50, + 143, + 231, + 188, + 174, 97, 12, 0, 82, 127, - 37, - 99, - 43, - 200, - 1, - 44, - 108, - 188, - 109, + 38, + 191, + 253, + 38, 221, - 166, - 97, - 169, - 114, - 159, - 84, - 76, - 84, - 98, - 7, - 0, - 195, - 132, - 12, - 1, - 202, - 91, - 87, - 230, - 26, + 143, + 95, + 118, + 121, + 40, 31, - 254, + 141, + 26, + 67, + 38, + 144, + 224, + 123, + 21, + 203, + 223, + 104, + 79, + 228, + 86, + 170, + 18, + 119, + 81, + 94, + 23, + 48, 97, 12, 32, 82, 127, - 43, - 165, - 118, - 76, - 102, - 58, - 75, - 40, - 146, - 52, - 60, - 48, - 61, - 160, - 245, - 102, - 78, + 1, + 90, 63, - 98, - 13, + 9, + 200, + 42, + 119, + 10, + 105, 214, - 184, - 81, - 167, - 17, - 120, - 23, + 117, + 131, + 215, 4, - 41, - 47, - 209, - 26, + 157, + 131, + 214, + 155, + 123, + 142, + 3, + 211, + 132, + 132, + 73, + 114, + 21, + 205, + 197, + 151, + 149, + 86, 97, 12, 64, 82, 127, - 7, - 207, - 228, - 243, - 21, - 43, - 25, - 150, - 232, - 234, - 253, - 113, - 132, - 81, - 53, - 108, - 32, - 68, + 30, 228, - 194, + 36, + 30, + 145, + 172, 57, - 252, - 194, - 158, - 179, - 168, - 29, + 23, + 86, + 176, + 185, + 137, + 58, + 193, + 227, + 78, + 169, + 92, + 109, + 214, + 137, + 231, + 220, + 161, + 44, + 98, + 166, + 206, + 148, 57, - 46, - 27, - 68, - 173, + 96, + 241, 97, 12, 96, 82, 127, - 37, - 86, - 115, - 226, - 36, - 165, - 148, - 229, - 63, - 213, - 177, - 180, + 16, + 173, + 117, + 241, + 153, + 191, + 31, + 185, + 51, + 91, + 145, + 194, + 13, + 182, + 205, + 137, + 88, 220, - 212, - 99, - 41, - 231, - 42, - 4, - 225, - 96, - 86, - 222, - 163, - 213, - 161, + 178, + 254, + 17, + 152, + 59, + 199, + 124, + 219, + 64, + 54, + 229, 126, - 49, - 41, - 26, - 153, - 96, + 89, + 202, 97, 12, 128, 82, 127, - 19, - 108, - 177, - 75, - 53, - 31, - 59, - 67, - 181, - 230, - 24, - 197, - 196, - 144, - 34, - 88, - 142, - 221, - 72, - 85, - 15, - 78, - 125, - 105, - 48, - 148, - 66, - 232, - 184, - 61, + 5, + 235, + 93, + 25, + 229, + 137, + 193, + 30, + 11, + 178, + 32, 13, - 34, + 102, + 218, + 130, + 153, + 85, + 84, + 84, + 129, + 136, + 92, + 251, + 201, + 9, + 158, + 198, + 165, + 62, + 38, + 110, + 210, 97, 12, 160, 82, 127, - 14, - 233, - 187, - 223, + 37, + 172, + 29, + 152, + 73, + 249, + 244, + 72, 206, - 147, + 204, + 126, + 173, + 125, + 72, + 103, + 15, + 102, + 187, + 254, + 125, + 248, + 226, + 72, + 189, 129, - 94, - 121, - 170, - 191, - 197, - 236, - 146, - 165, - 35, - 70, - 196, - 106, - 69, - 225, - 123, - 197, - 188, - 154, - 216, - 21, - 94, - 152, - 44, - 156, - 172, + 138, + 149, + 77, + 246, + 147, + 108, + 39, 97, 12, 192, @@ -22255,149 +22255,149 @@ pub mod inclusion_verifier { 0, 82, 127, - 31, - 93, - 105, - 248, - 173, - 199, - 222, - 243, - 83, - 202, + 27, + 149, 197, - 48, - 19, - 49, - 246, - 106, - 106, - 161, - 44, - 59, 220, - 70, - 186, - 133, + 155, + 174, + 15, + 179, + 248, + 32, + 134, + 132, + 4, + 46, + 87, + 224, + 252, + 251, + 195, + 119, + 74, + 249, + 174, 9, - 216, - 28, - 25, - 34, - 148, - 76, - 30, + 3, + 171, + 158, + 157, + 219, + 79, + 137, + 253, 97, 13, 32, 82, 127, - 5, - 10, - 53, - 140, - 142, - 231, - 73, - 1, - 175, + 30, + 133, + 100, + 224, + 20, + 25, + 113, + 55, + 57, + 135, + 18, + 36, + 206, + 21, + 244, + 196, + 181, + 30, + 106, + 241, + 97, 214, - 190, - 189, - 218, + 224, + 122, + 23, + 142, + 101, + 69, + 135, + 144, 53, - 162, - 91, - 233, - 155, - 166, - 49, - 35, - 42, - 190, - 192, - 187, - 125, - 242, - 52, - 40, - 226, - 25, - 235, + 191, 97, 13, 64, 82, 127, - 29, - 219, - 249, 28, - 238, - 237, - 136, - 168, - 198, - 110, - 155, - 248, - 208, + 239, + 200, 137, - 179, - 9, + 99, + 156, + 249, + 143, + 148, + 216, + 49, + 234, + 65, + 195, + 86, + 146, + 159, + 147, + 23, + 119, 141, - 192, - 131, - 241, - 87, - 144, - 135, - 7, - 150, - 167, - 38, - 127, - 37, - 207, - 155, - 240, + 218, + 5, + 186, + 12, + 88, + 133, + 64, + 22, + 56, + 219, + 103, 97, 13, 96, 82, 127, - 10, - 180, - 232, - 11, - 0, - 145, - 205, - 64, - 7, - 2, - 148, - 247, - 84, - 229, - 75, + 30, + 4, + 102, + 222, + 178, + 42, + 134, + 217, 18, - 126, - 32, - 0, - 87, - 44, - 3, + 43, + 199, + 24, + 11, + 125, + 41, + 62, + 71, + 40, + 130, 68, - 194, - 131, - 138, - 238, - 175, - 37, - 30, - 179, - 145, + 171, + 241, + 69, + 10, + 92, + 214, + 58, + 50, + 137, + 164, + 87, + 202, 97, 13, 128, @@ -22418,37 +22418,37 @@ pub mod inclusion_verifier { 22, 127, 16, - 30, - 50, - 32, - 159, - 188, - 42, - 253, - 218, - 46, - 171, - 8, - 238, - 211, - 227, - 233, - 50, - 62, - 205, - 146, - 229, - 198, - 185, - 80, - 130, - 4, - 185, - 72, - 222, - 26, - 229, - 243, + 242, + 139, + 199, + 16, + 168, + 189, + 208, + 13, + 215, + 1, + 223, + 47, + 95, + 196, + 245, + 204, + 219, + 38, + 2, + 56, + 235, + 166, + 248, + 25, + 219, + 105, + 47, + 121, + 220, + 61, + 201, 96, 0, 82, @@ -38711,38 +38711,38 @@ pub mod inclusion_verifier { 34, 18, 32, - 57, - 49, - 11, - 184, - 227, - 29, - 60, + 160, + 229, + 138, + 231, + 221, 63, - 146, - 29, - 103, - 96, - 75, - 43, - 55, - 233, + 176, + 244, + 67, + 224, + 208, + 98, + 57, + 92, + 8, + 140, 114, - 203, - 179, - 129, - 209, - 112, - 142, - 54, - 68, - 127, + 124, + 29, 76, - 139, - 39, - 211, - 33, - 215, + 8, + 8, + 82, + 242, + 122, + 18, + 202, + 70, + 28, + 219, + 72, + 109, 100, 115, 111, diff --git a/backend/src/tests.rs b/backend/src/tests.rs index dbf1980c..8373c7cb 100644 --- a/backend/src/tests.rs +++ b/backend/src/tests.rs @@ -76,7 +76,7 @@ pub async fn initialize_test_env( //The number of cryptocurrencies supported by the Merkle sum tree let currencies_count = 2; // The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree - let balance_byte_range = 14; + let balance_byte_range = 8; let args: &[Token] = &[ Token::Address(inclusion_verifier_contract.address()), @@ -93,7 +93,6 @@ pub async fn initialize_test_env( time::sleep(Duration::from_secs(3)).await; - (anvil, cex_addr_1, cex_addr_2, client, summa_contract) } @@ -162,8 +161,8 @@ mod test { let mst = MerkleSumTree::from_csv(entry_csv).unwrap(); let mut round_one = - Round::<4, 2, 14>::new(&signer, Box::new(mst.clone()), params_path, 1).unwrap(); - let mut round_two = Round::<4, 2, 14>::new(&signer, Box::new(mst), params_path, 2).unwrap(); + Round::<4, 2, 8>::new(&signer, Box::new(mst.clone()), params_path, 1).unwrap(); + let mut round_two = Round::<4, 2, 8>::new(&signer, Box::new(mst), params_path, 2).unwrap(); // Checking block number before sending transaction of liability commitment let outer_provider: Provider = Provider::try_from(anvil.endpoint().as_str())?; @@ -240,7 +239,7 @@ mod test { let entry_csv = "../csv/entry_16.csv"; let mst = MerkleSumTree::from_csv(entry_csv).unwrap(); - let mut round = Round::<4, 2, 14>::new(&signer, Box::new(mst), params_path, 1).unwrap(); + let mut round = Round::<4, 2, 8>::new(&signer, Box::new(mst), params_path, 1).unwrap(); let mut liability_commitment_logs = summa_contract .liabilities_commitment_submitted_filter() diff --git a/contracts/scripts/deploy.ts b/contracts/scripts/deploy.ts index 969517ab..56bfacf7 100644 --- a/contracts/scripts/deploy.ts +++ b/contracts/scripts/deploy.ts @@ -20,7 +20,7 @@ async function main() { //The number of cryptocurrencies supported by the Merkle sum tree const currenciesCount = 2; // The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree - const balanceByteRange = 14; + const balanceByteRange = 8; const summa = await ethers.deployContract("Summa", [ inclusionVerifier.address, mstLevels, diff --git a/contracts/src/InclusionVerifier.sol b/contracts/src/InclusionVerifier.sol index 5e1033b9..7016ec8a 100644 --- a/contracts/src/InclusionVerifier.sol +++ b/contracts/src/InclusionVerifier.sol @@ -214,7 +214,7 @@ contract Verifier { { // Load vk into memory - mstore(0x06c0, 0x101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f3) // vk_digest + mstore(0x06c0, 0x10f28bc710a8bdd00dd701df2f5fc4f5ccdb260238eba6f819db692f79dc3dc9) // vk_digest mstore(0x06e0, 0x000000000000000000000000000000000000000000000000000000000000000b) // k mstore(0x0700, 0x305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001) // n_inv mstore(0x0720, 0x14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f) // omega @@ -235,40 +235,40 @@ contract Verifier { mstore(0x0900, 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) // neg_s_g2_x_2 mstore(0x0920, 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) // neg_s_g2_y_1 mstore(0x0940, 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff) // neg_s_g2_y_2 - mstore(0x0960, 0x17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e) // fixed_comms[0].x - mstore(0x0980, 0x1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b) // fixed_comms[0].y - mstore(0x09a0, 0x05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056) // fixed_comms[1].x - mstore(0x09c0, 0x2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c) // fixed_comms[1].y - mstore(0x09e0, 0x299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a90) // fixed_comms[2].x - mstore(0x0a00, 0x21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a95) // fixed_comms[2].y - mstore(0x0a20, 0x19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a3) // fixed_comms[3].x - mstore(0x0a40, 0x2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b6) // fixed_comms[3].y + mstore(0x0960, 0x010920a3471867216dc9dd6b478c16842fb5aca434fe6c9bf1622c4abd70381a) // fixed_comms[0].x + mstore(0x0980, 0x300e30930f1a05253b28b6b139f2c38025d99b7a54e641f1d6ff2797d113c118) // fixed_comms[0].y + mstore(0x09a0, 0x05e7899750f7abeae5d19c16666c47618fce810326b125d253dd41fb817dd65a) // fixed_comms[1].x + mstore(0x09c0, 0x1e0e399ce46f208ab3f43aad0222f4dd37b8327b9f7afffa9cf9ee214e2460dd) // fixed_comms[1].y + mstore(0x09e0, 0x22274e4efd4197dd6515994652d5beafcc7af94313d33e049cf5a1e464b52395) // fixed_comms[2].x + mstore(0x0a00, 0x0ebb470e19409fcd84c0358c04300dc38cba0240141ddeb899ad9cca90167a64) // fixed_comms[2].y + mstore(0x0a20, 0x162baf6245e2cec59bc93bc2302527d299cdb50e100f14895f170f316a2a2643) // fixed_comms[3].x + mstore(0x0a40, 0x172a6f183e2ddc0607d23fd3daf4b23110b81d8a9d0a4e8d3d07ba24a007e04b) // fixed_comms[3].y mstore(0x0a60, 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) // fixed_comms[4].x mstore(0x0a80, 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0) // fixed_comms[4].y - mstore(0x0aa0, 0x19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8) // fixed_comms[5].x - mstore(0x0ac0, 0x0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78) // fixed_comms[5].y - mstore(0x0ae0, 0x1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5) // fixed_comms[6].x - mstore(0x0b00, 0x1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098) // fixed_comms[6].y + mstore(0x0aa0, 0x01021a51384124c6844f2ba0e40e2545f26f280a79745c9164b0a56f1ee54d56) // fixed_comms[5].x + mstore(0x0ac0, 0x2533607ba6f153a0126a8450a3cf47946933c93eaf69c996236b45603179c914) // fixed_comms[5].y + mstore(0x0ae0, 0x1f59be81b3fd7d290930430d204c1a866937862306d75be70fedfe13e565ce0b) // fixed_comms[6].x + mstore(0x0b00, 0x05931c531cd08b4aa937245293af81c4532fc4c01387d5b539d29f6c4ae00031) // fixed_comms[6].y mstore(0x0b20, 0x203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b) // fixed_comms[7].x mstore(0x0b40, 0x04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097) // fixed_comms[7].y mstore(0x0b60, 0x20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91) // fixed_comms[8].x mstore(0x0b80, 0x2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd) // fixed_comms[8].y - mstore(0x0ba0, 0x09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa) // fixed_comms[9].x - mstore(0x0bc0, 0x13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289) // fixed_comms[9].y - mstore(0x0be0, 0x08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f81743) // fixed_comms[10].x - mstore(0x0c00, 0x08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c) // fixed_comms[10].y - mstore(0x0c20, 0x25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe) // permutation_comms[0].x - mstore(0x0c40, 0x2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a) // permutation_comms[0].y - mstore(0x0c60, 0x07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad) // permutation_comms[1].x - mstore(0x0c80, 0x255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960) // permutation_comms[1].y - mstore(0x0ca0, 0x136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d22) // permutation_comms[2].x - mstore(0x0cc0, 0x0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac) // permutation_comms[2].y + mstore(0x0ba0, 0x2aaba546cdd9969ef0aecc85b2aaa19b6e9639879962661415c8f0df426bac0c) // fixed_comms[9].x + mstore(0x0bc0, 0x12b15327bcfbe7d9e9de1bc648ba3bdf910087362179a0b403cf70bad1c093c8) // fixed_comms[9].y + mstore(0x0be0, 0x25909db723a8021ffe088c50525d6d260f9157be7a7c194b6f315386a46cdab8) // fixed_comms[10].x + mstore(0x0c00, 0x25cbeae8ec2a8a2f74844f5e3276ed94079907bed6d7b1b26ed695328fe7bcae) // fixed_comms[10].y + mstore(0x0c20, 0x26bffd26dd8f5f7679281f8d1a432690e07b15cbdf684fe456aa1277515e1730) // permutation_comms[0].x + mstore(0x0c40, 0x015a3f09c82a770a69d67583d7049d83d69b7b8e03d38484497215cdc5979556) // permutation_comms[0].y + mstore(0x0c60, 0x1ee4241e91ac391756b0b9893ac1e34ea95c6dd689e7dca12c62a6ce943960f1) // permutation_comms[1].x + mstore(0x0c80, 0x10ad75f199bf1fb9335b91c20db6cd8958dcb2fe11983bc77cdb4036e57e59ca) // permutation_comms[1].y + mstore(0x0ca0, 0x05eb5d19e589c11e0bb2200d66da829955545481885cfbc9099ec6a53e266ed2) // permutation_comms[2].x + mstore(0x0cc0, 0x25ac1d9849f9f448cecc7ead7d48670f66bbfe7df8e248bd818a954df6936c27) // permutation_comms[2].y mstore(0x0ce0, 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) // permutation_comms[3].x mstore(0x0d00, 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3) // permutation_comms[3].y - mstore(0x0d20, 0x1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e) // permutation_comms[4].x - mstore(0x0d40, 0x050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb) // permutation_comms[4].y - mstore(0x0d60, 0x1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf0) // permutation_comms[5].x - mstore(0x0d80, 0x0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb391) // permutation_comms[5].y + mstore(0x0d20, 0x1b95c5dc9bae0fb3f8208684042e57e0fcfbc3774af9ae0903ab9e9ddb4f89fd) // permutation_comms[4].x + mstore(0x0d40, 0x1e8564e01419713739871224ce15f4c4b51e6af161d6e07a178e6545879035bf) // permutation_comms[4].y + mstore(0x0d60, 0x1cefc889639cf98f94d831ea41c356929f9317778dda05ba0c5885401638db67) // permutation_comms[5].x + mstore(0x0d80, 0x1e0466deb22a86d9122bc7180b7d293e47288244abf1450a5cd63a3289a457ca) // permutation_comms[5].y // Check valid length of proof success := and(success, eq(0x0860, calldataload(PROOF_LEN_CPTR))) diff --git a/contracts/test/Summa.ts b/contracts/test/Summa.ts index 562c86ae..9f7f4073 100644 --- a/contracts/test/Summa.ts +++ b/contracts/test/Summa.ts @@ -61,7 +61,7 @@ describe("Summa Contract", () => { inclusionVerifier.address, 4, // The number of levels of the Merkle sum tree 2, // The number of cryptocurrencies supported by the Merkle sum tree - 14, // The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree + 8, // The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree ]); await summa.deployed(); diff --git a/zk_prover/Cargo.lock b/zk_prover/Cargo.lock index 2b51de78..7c2620cd 100644 --- a/zk_prover/Cargo.lock +++ b/zk_prover/Cargo.lock @@ -25,9 +25,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -51,24 +51,70 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" dependencies = [ "cfg-if", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "alloy-primitives" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "hex-literal 0.4.1", + "itoa", + "ruint", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d58d9f5da7b40e9bfff0b7e7816700be4019db97d4b6359fe7f94a9e22e42ac" +dependencies = [ + "alloy-rlp-derive", + "arrayvec 0.7.4", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a047897373be4bbb0224c1afdabca92648dc57a9c9ef6e7b0be3aff7a859c83" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "android-tzdata" version = "0.1.1" @@ -86,9 +132,113 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint 0.4.4", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.4", + "num-traits", + "paste", + "rustc_version 0.4.0", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint 0.4.4", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.4", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.4", +] [[package]] name = "ark-std" @@ -101,6 +251,16 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + [[package]] name = "arrayref" version = "0.3.7" @@ -140,9 +300,9 @@ dependencies = [ [[package]] name = "askama_derive" -version = "0.12.2" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a0fc7dcf8bd4ead96b1d36b41df47c14beedf7b0301fc543d8f2384e66a2ec0" +checksum = "19fe8d6cb13c4714962c072ea496f3392015f0989b1a2847bb4b2d9effd71d83" dependencies = [ "askama_parser", "basic-toml", @@ -151,7 +311,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] @@ -162,22 +322,22 @@ checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" [[package]] name = "askama_parser" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c268a96e01a4c47c8c5c2472aaa570707e006a875ea63e819f75474ceedaf7b4" +checksum = "acb1161c6b64d1c3d83108213c2a2533a342ac225aabd0bda218278c2ddb00c0" dependencies = [ "nom", ] [[package]] name = "async-trait" -version = "0.1.69" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2d0f03b3640e3a630367e40c468cb7f309529c708ed1d88597047b0e7c6ef7" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] @@ -222,9 +382,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -249,30 +409,30 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.2" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" -version = "1.0.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "basic-toml" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f2139706359229bfa8f19142ac1155b4b80beafb7a60471ac5dd109d4a19778" +checksum = "2db21524cad41c5591204d22d75e1970a2d1f71060214ca931dc7d5afe2c14e5" dependencies = [ "serde", ] [[package]] name = "bech32" -version = "0.7.3" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dabbe35f96fb9507f7330793dc490461b2962659ac5d427181e451a623751d1" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" [[package]] name = "bellperson" @@ -281,7 +441,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93eaee4b4753554139ae52ecf0e8b8c128cbc561b32e1bfaa32f70cba8518c1f" dependencies = [ "bincode", - "blake2s_simd 1.0.1", + "blake2s_simd 1.0.2", "blstrs", "byteorder", "crossbeam-channel", @@ -298,7 +458,7 @@ dependencies = [ "rayon", "rustversion", "serde", - "sha2 0.10.7", + "sha2", "thiserror", ] @@ -311,6 +471,29 @@ dependencies = [ "serde", ] +[[package]] +name = "bindgen" +version = "0.66.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" +dependencies = [ + "bitflags 2.4.2", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "log", + "peeking_take_while", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.48", + "which", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -334,19 +517,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" - -[[package]] -name = "bitvec" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" -dependencies = [ - "either", - "radium 0.3.0", -] +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "bitvec" @@ -355,20 +528,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", - "radium 0.7.0", + "radium", "tap", "wyz", ] [[package]] name = "blake2b_simd" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bc" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" dependencies = [ "arrayref", "arrayvec 0.7.4", - "constant_time_eq 0.2.6", + "constant_time_eq 0.3.0", ] [[package]] @@ -384,13 +557,13 @@ dependencies = [ [[package]] name = "blake2s_simd" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6637f448b9e61dfadbdcbae9a885fadee1f3eaffb1f8d3c1965d3ade8bdfd44f" +checksum = "94230421e395b9920d23df13ea5d77a20e1725331f90fbbf6df6040b33f756ae" dependencies = [ "arrayref", "arrayvec 0.7.4", - "constant_time_eq 0.2.6", + "constant_time_eq 0.3.0", ] [[package]] @@ -400,7 +573,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ "block-padding", - "generic-array", + "generic-array 0.14.7", ] [[package]] @@ -409,7 +582,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array", + "generic-array 0.14.7", ] [[package]] @@ -448,18 +621,19 @@ dependencies = [ [[package]] name = "bs58" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" dependencies = [ - "sha2 0.9.9", + "sha2", + "tinyvec", ] [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byte-slice-cast" @@ -469,52 +643,67 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" dependencies = [ "serde", ] +[[package]] +name = "c-kzg" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac926d808fb72fe09ebf471a091d6d72918876ccf0b4989766093d2d0d24a0ef" +dependencies = [ + "bindgen", + "blst", + "cc", + "glob", + "hex", + "libc", + "serde", +] + [[package]] name = "camino" -version = "1.1.4" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c530edf18f37068ac2d977409ed5cd50d53d73bc653c7647b48eb78976ac9ae2" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" dependencies = [ "serde", ] [[package]] name = "cargo-platform" -version = "0.1.2" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27" +checksum = "ceed8ef69d8518a5dda55c07425450b58a4e1946f4951eab6d7191ee86c2443d" dependencies = [ "serde", ] [[package]] name = "cargo_metadata" -version = "0.15.4" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.17", + "semver 1.0.21", "serde", "serde_json", "thiserror", @@ -528,9 +717,21 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] [[package]] name = "cfg-if" @@ -540,17 +741,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", - "time", "wasm-bindgen", - "winapi", + "windows-targets 0.48.5", ] [[package]] @@ -563,6 +763,17 @@ dependencies = [ "inout", ] +[[package]] +name = "clang-sys" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" version = "2.34.0" @@ -574,67 +785,54 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "cmake" -version = "0.1.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" -dependencies = [ - "cc", -] - [[package]] name = "coins-bip32" -version = "0.8.3" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30a84aab436fcb256a2ab3c80663d8aec686e6bae12827bb05fef3e1e439c9f" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" dependencies = [ - "bincode", "bs58", "coins-core", "digest 0.10.7", - "getrandom", "hmac", "k256", - "lazy_static", "serde", - "sha2 0.10.7", + "sha2", "thiserror", ] [[package]] name = "coins-bip39" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f4d04ee18e58356accd644896aeb2094ddeafb6a713e056cef0c0a8e468c15" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" dependencies = [ - "bitvec 0.17.4", + "bitvec", "coins-bip32", - "getrandom", "hmac", "once_cell", - "pbkdf2 0.12.1", + "pbkdf2 0.12.2", "rand 0.8.5", - "sha2 0.10.7", + "sha2", "thiserror", ] [[package]] name = "coins-core" -version = "0.8.3" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b949a1c63fb7eb591eb7ba438746326aedf0ae843e51ec92ba6bec5bb382c4f" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" dependencies = [ - "base64 0.21.2", + "base64 0.21.7", "bech32", "bs58", "digest 0.10.7", - "generic-array", + "generic-array 0.14.7", "hex", "ripemd", "serde", "serde_derive", - "sha2 0.10.7", + "sha2", "sha3 0.10.8", "thiserror", ] @@ -647,13 +845,12 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colored" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" dependencies = [ - "atty", "lazy_static", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -662,11 +859,24 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed3d0b5ff30645a68f35ece8cea4556ca14ef8a1651455f789a099a0513532a6" +[[package]] +name = "const-hex" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5104de16b218eddf8e34ffe2f86f74bfa4e61e95a1b89732fccf6325efd0557" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + [[package]] name = "const-oid" -version = "0.9.2" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "constant_time_eq" @@ -676,9 +886,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "constant_time_eq" -version = "0.2.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "convert_case" @@ -688,9 +898,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -698,9 +908,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-graphics" @@ -717,9 +927,9 @@ dependencies = [ [[package]] name = "core-graphics-types" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -740,9 +950,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.8" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -794,46 +1004,37 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crunchy" @@ -843,11 +1044,11 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-bigint" -version = "0.5.2" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ - "generic-array", + "generic-array 0.14.7", "rand_core 0.6.4", "subtle", "zeroize", @@ -859,15 +1060,15 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array", + "generic-array 0.14.7", "typenum", ] [[package]] name = "csv" -version = "1.2.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" dependencies = [ "csv-core", "itoa", @@ -877,9 +1078,9 @@ dependencies = [ [[package]] name = "csv-core" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" dependencies = [ "memchr", ] @@ -930,14 +1131,34 @@ dependencies = [ [[package]] name = "der" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56acb310e15652100da43d130af8d97b509e95af61aab1c5a7939ef24337ee17" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" dependencies = [ "const-oid", "zeroize", ] +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "derive_builder" version = "0.9.0" @@ -988,7 +1209,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array", + "generic-array 0.14.7", ] [[package]] @@ -1003,14 +1224,35 @@ dependencies = [ "subtle", ] +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs-next" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ - "cfg-if", - "dirs-sys-next", + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", ] [[package]] @@ -1063,7 +1305,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "892df2aa20abec5b816e15d5d6383892ca142077708efa3067dd3ac44b75c664" dependencies = [ - "bitvec 1.0.1", + "bitvec", "crossbeam-channel", "ec-gpu", "execute", @@ -1074,16 +1316,16 @@ dependencies = [ "num_cpus", "once_cell", "rayon", - "sha2 0.10.7", + "sha2", "thiserror", "yastl", ] [[package]] name = "ecdsa" -version = "0.16.7" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0997c976637b606099b9985693efa3581e84e41f5c11ba5255f88711058ad428" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der", "digest 0.10.7", @@ -1095,21 +1337,21 @@ dependencies = [ [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "elliptic-curve" -version = "0.13.5" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct", "crypto-bigint", "digest 0.10.7", "ff", - "generic-array", + "generic-array 0.14.7", "group", "pkcs8", "rand_core 0.6.4", @@ -1129,20 +1371,20 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] [[package]] name = "enr" -version = "0.8.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf56acd72bb22d2824e66ae8e9e5ada4d0de17a69c7fd35569dde2ada8ec9116" +checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" dependencies = [ - "base64 0.13.1", + "base64 0.21.7", "bytes", "hex", "k256", @@ -1156,40 +1398,29 @@ dependencies = [ [[package]] name = "enumn" -version = "0.1.8" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48016319042fb7c87b78d2993084a831793a897a5cd1a2a67cab9d1eeb4b7d76" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "equivalent" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -1208,7 +1439,7 @@ dependencies = [ "scrypt", "serde", "serde_json", - "sha2 0.10.7", + "sha2", "sha3 0.10.8", "thiserror", "uuid", @@ -1264,9 +1495,9 @@ dependencies = [ [[package]] name = "ethers" -version = "2.0.7" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a58ce802c65cf3d0756dee5a61094a92cde53c1583b246e9ee5b37226c7fc15" +checksum = "1a5344eea9b20effb5efeaad29418215c4d27017639fd1f908260f59cbbd226e" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -1280,9 +1511,9 @@ dependencies = [ [[package]] name = "ethers-addressbook" -version = "2.0.7" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b856b7b8ff5c961093cb8efe151fbcce724b451941ce20781de11a531ccd578" +checksum = "9bf35eb7d2e2092ad41f584951e08ec7c077b142dba29c4f1b8f52d2efddc49c" dependencies = [ "ethers-core", "once_cell", @@ -1292,16 +1523,16 @@ dependencies = [ [[package]] name = "ethers-contract" -version = "2.0.7" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e066a0d9cfc70c454672bf16bb433b0243427420076dc5b2f49c448fb5a10628" +checksum = "0111ead599d17a7bff6985fd5756f39ca7033edc79a31b23026a8d5d64fa95cd" dependencies = [ + "const-hex", "ethers-contract-abigen", "ethers-contract-derive", "ethers-core", "ethers-providers", "futures-util", - "hex", "once_cell", "pin-project", "serde", @@ -1311,56 +1542,56 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" -version = "2.0.7" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c113e3e86b6bc16d98484b2c3bb2d01d6fed9f489fe2e592e5cc87c3024d616b" +checksum = "bbdfb952aafd385b31d316ed80d7b76215ce09743c172966d840e96924427e0c" dependencies = [ "Inflector", + "const-hex", "dunce", "ethers-core", "eyre", - "hex", "prettyplease", "proc-macro2", "quote", "regex", "serde", "serde_json", - "syn 2.0.32", + "syn 2.0.48", "toml", "walkdir", ] [[package]] name = "ethers-contract-derive" -version = "2.0.7" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3fb5adee25701c79ec58fcf2c63594cd8829bc9ad6037ff862d5a111101ed2" +checksum = "7465c814a2ecd0de0442160da13584205d1cdc08f4717a6511cad455bd5d7dc4" dependencies = [ "Inflector", + "const-hex", "ethers-contract-abigen", "ethers-core", - "hex", "proc-macro2", "quote", "serde_json", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "ethers-core" -version = "2.0.7" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6da5fa198af0d3be20c19192df2bd9590b92ce09a8421e793bec8851270f1b05" +checksum = "918b1a9ba585ea61022647def2f27c29ba19f6d2a4a4c8f68a9ae97fd5769737" dependencies = [ "arrayvec 0.7.4", "bytes", "cargo_metadata", "chrono", + "const-hex", "elliptic-curve", "ethabi", - "generic-array", - "hex", + "generic-array 0.14.7", "k256", "num_enum", "once_cell", @@ -1370,7 +1601,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.32", + "syn 2.0.48", "tempfile", "thiserror", "tiny-keccak", @@ -1379,14 +1610,15 @@ dependencies = [ [[package]] name = "ethers-etherscan" -version = "2.0.7" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84ebb401ba97c6f5af278c2c9936c4546cad75dec464b439ae6df249906f4caa" +checksum = "facabf8551b4d1a3c08cb935e7fca187804b6c2525cc0dafb8e5a6dd453a24de" dependencies = [ + "chrono", "ethers-core", "ethers-solc", "reqwest", - "semver 1.0.17", + "semver 1.0.21", "serde", "serde_json", "thiserror", @@ -1395,15 +1627,14 @@ dependencies = [ [[package]] name = "ethers-middleware" -version = "2.0.7" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740f4a773c19dd6d6a68c8c2e0996c096488d38997d524e21dc612c55da3bd24" +checksum = "681ece6eb1d10f7cf4f873059a77c04ff1de4f35c63dd7bccde8f438374fcb93" dependencies = [ "async-trait", "auto_impl", "ethers-contract", "ethers-core", - "ethers-etherscan", "ethers-providers", "ethers-signers", "futures-channel", @@ -1422,23 +1653,24 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "2.0.7" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56b498fd2a6c019d023e43e83488cd1fb0721f299055975aa6bac8dbf1e95f2c" +checksum = "25d6c0c9455d93d4990c06e049abf9b30daf148cf461ee939c11d88907c60816" dependencies = [ "async-trait", "auto_impl", - "base64 0.21.2", + "base64 0.21.7", "bytes", + "const-hex", "enr", "ethers-core", "futures-core", "futures-timer", "futures-util", "hashers", - "hex", "http", "instant", + "jsonwebtoken", "once_cell", "pin-project", "reqwest", @@ -1457,34 +1689,35 @@ dependencies = [ [[package]] name = "ethers-signers" -version = "2.0.7" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c4b7e15f212fa7cc2e1251868320221d4ff77a3d48068e69f47ce1c491df2d" +checksum = "0cb1b714e227bbd2d8c53528adb580b203009728b17d0d0e4119353aa9bc5532" dependencies = [ "async-trait", "coins-bip32", "coins-bip39", + "const-hex", "elliptic-curve", "eth-keystore", "ethers-core", - "hex", "rand 0.8.5", - "sha2 0.10.7", + "sha2", "thiserror", "tracing", ] [[package]] name = "ethers-solc" -version = "2.0.7" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a81c89f121595cf8959e746045bb8b25a6a38d72588561e1a3b7992fc213f674" +checksum = "cc2e46e3ec8ef0c986145901fa9864205dc4dcee701f9846be2d56112d34bdea" dependencies = [ "cfg-if", + "const-hex", + "dirs", "dunce", "ethers-core", "glob", - "hex", "home", "md-5", "num_cpus", @@ -1492,7 +1725,7 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.17", + "semver 1.0.21", "serde", "serde_json", "solang-parser", @@ -1506,46 +1739,46 @@ dependencies = [ [[package]] name = "execute" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d9a9ea4c04632c16bc5c71a2fcc63d308481f7fc67eb1a1ce6315c44a426ae" +checksum = "3a82608ee96ce76aeab659e9b8d3c2b787bffd223199af88c674923d861ada10" dependencies = [ "execute-command-macro", "execute-command-tokens", - "generic-array", + "generic-array 1.0.0", ] [[package]] name = "execute-command-macro" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5fbc65a0cf735106743f4c38c9a3671c1e734b5c2c20d21a3c93c696daa3157" +checksum = "90dec53d547564e911dc4ff3ecb726a64cf41a6fa01a2370ebc0d95175dd08bd" dependencies = [ "execute-command-macro-impl", ] [[package]] name = "execute-command-macro-impl" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55a9a55d1dab3b07854648d48e366f684aefe2ac78ae28cec3bf65e3cd53d9a3" +checksum = "ce8cd46a041ad005ab9c71263f9a0ff5b529eac0fe4cc9b4a20f4f0765d8cf4b" dependencies = [ "execute-command-tokens", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "execute-command-tokens" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba569491c70ec8471e34aa7e9c0b9e82bb5d2464c0398442d17d3c4af814e5a" +checksum = "69dc321eb6be977f44674620ca3aa21703cb20ffbe560e1ae97da08401ffbcad" [[package]] name = "eyre" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" +checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799" dependencies = [ "indenter", "once_cell", @@ -1553,18 +1786,26 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.9.0" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "fastrlp" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" dependencies = [ - "instant", + "arrayvec 0.7.4", + "auto_impl", + "bytes", ] [[package]] name = "fdeflate" -version = "0.3.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" dependencies = [ "simd-adler32", ] @@ -1575,7 +1816,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "bitvec 1.0.1", + "bitvec", "byteorder", "ff_derive", "rand_core 0.6.4", @@ -1644,9 +1885,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -1715,18 +1956,18 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "freetype" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee38378a9e3db1cc693b4f88d166ae375338a0ff75cb8263e1c601d51f35dc6" +checksum = "efc8599a3078adf8edeb86c71e9f8fa7d88af5ca31e806a867756081f90f5d83" dependencies = [ "freetype-sys", "libc", @@ -1734,11 +1975,11 @@ dependencies = [ [[package]] name = "freetype-sys" -version = "0.13.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a" +checksum = "66ee28c39a43d89fbed8b4798fb4ba56722cfd2b5af81f9326c27614ba88ecd5" dependencies = [ - "cmake", + "cc", "libc", "pkg-config", ] @@ -1757,9 +1998,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1772,9 +2013,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1782,15 +2023,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1799,9 +2040,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-locks" @@ -1815,26 +2056,26 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -1848,9 +2089,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1884,16 +2125,25 @@ dependencies = [ "zeroize", ] +[[package]] +name = "generic-array" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe739944a5406424e080edccb6add95685130b9f160d5407c639c7df0c5836b0" +dependencies = [ + "typenum", +] + [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] @@ -1909,9 +2159,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "glob" @@ -1946,9 +2196,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.20" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", @@ -1956,7 +2206,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap", "slab", "tokio", "tokio-util", @@ -1975,7 +2225,7 @@ version = "0.2.0" source = "git+https://github.com/summa-dev/halo2#8386d6e64fc33baccf626869123185890b8284dc" dependencies = [ "arrayvec 0.7.4", - "bitvec 1.0.1", + "bitvec", "ff", "group", "halo2_proofs", @@ -2029,7 +2279,7 @@ dependencies = [ "ff", "group", "lazy_static", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", "pasta_curves", "paste", @@ -2043,25 +2293,14 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.13.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ "ahash", + "allocator-api2", ] -[[package]] -name = "hashbrown" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" - [[package]] name = "hashers" version = "1.0.1" @@ -2088,18 +2327,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" [[package]] name = "hex" @@ -2133,18 +2363,18 @@ dependencies = [ [[package]] name = "home" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -2153,9 +2383,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -2170,15 +2400,15 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", @@ -2200,16 +2430,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -2229,9 +2459,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -2239,15 +2469,14 @@ dependencies = [ [[package]] name = "image" -version = "0.24.6" +version = "0.24.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" +checksum = "034bbe799d1909622a74d1193aa50147769440040ff36cb2baa947609b0a4e23" dependencies = [ "bytemuck", "byteorder", "color_quant", "jpeg-decoder", - "num-rational", "num-traits", "png", ] @@ -2298,22 +2527,12 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "indexmap" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown", ] [[package]] @@ -2322,7 +2541,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ - "generic-array", + "generic-array 0.14.7", ] [[package]] @@ -2334,32 +2553,21 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys", -] - [[package]] name = "ipnet" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is-terminal" -version = "0.4.8" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24fddda5af7e54bf7da53067d6e802dbcc381d0a8eef629df528e3ebf68755cb" +checksum = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455" dependencies = [ - "hermit-abi 0.3.1", - "rustix 0.38.11", - "windows-sys", + "hermit-abi 0.3.4", + "rustix", + "windows-sys 0.52.0", ] [[package]] @@ -2400,53 +2608,67 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jpeg-decoder" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem", + "ring", + "serde", + "serde_json", + "simple_asn1", +] + [[package]] name = "k256" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", "once_cell", - "sha2 0.10.7", + "sha2", "signature", ] [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] [[package]] name = "lalrpop" -version = "0.19.12" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a1cbf952127589f2851ab2046af368fd20645491bb4b376f04b7f94d7a9837b" +checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" dependencies = [ "ascii-canvas", "bit-set", @@ -2457,7 +2679,7 @@ dependencies = [ "lalrpop-util", "petgraph", "regex", - "regex-syntax 0.6.29", + "regex-syntax 0.7.5", "string_cache", "term", "tiny-keccak", @@ -2466,9 +2688,9 @@ dependencies = [ [[package]] name = "lalrpop-util" -version = "0.19.12" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3c48237b9604c5a4702de6b824e02006c3214327564636aef27c1028a8fa0ed" +checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" [[package]] name = "lazy_static" @@ -2479,39 +2701,56 @@ dependencies = [ "spin 0.5.2", ] +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" -version = "0.2.147" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libloading" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d580318f95776505201b28cf98eb1fa5e4be3b689633ba6a3e6cd880ff22d8cb" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] -name = "linux-raw-sys" -version = "0.3.8" +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.2", + "libc", + "redox_syscall", +] [[package]] name = "linux-raw-sys" -version = "0.4.3" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -2519,9 +2758,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "maybe-rayon" @@ -2535,18 +2774,19 @@ dependencies = [ [[package]] name = "md-5" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ + "cfg-if", "digest 0.10.7", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "memmap2" @@ -2557,15 +2797,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] - [[package]] name = "mime" version = "0.3.17" @@ -2600,13 +2831,13 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", + "wasi", + "windows-sys 0.48.0", ] [[package]] @@ -2620,7 +2851,7 @@ dependencies = [ "blstrs", "byteorder", "ff", - "generic-array", + "generic-array 0.14.7", "itertools 0.8.2", "log", "pasta_curves", @@ -2647,7 +2878,7 @@ dependencies = [ [[package]] name = "nova-scotia" version = "0.5.0" -source = "git+https://github.com/nalinbhardwaj/Nova-Scotia#00085ece0e16c29a12f61866fa3588649620d7f7" +source = "git+https://github.com/nalinbhardwaj/Nova-Scotia#54f2bdbb78aad841d8714f7e2d0344bcc593a922" dependencies = [ "anyhow", "bellperson", @@ -2657,7 +2888,7 @@ dependencies = [ "itertools 0.9.0", "js-sys", "nova-snark", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", "pasta_curves", "rayon", @@ -2676,17 +2907,17 @@ checksum = "9e12911ac9672ad436acfc992f09e26a5960513bbe81d1572005cadd8c1be8f4" dependencies = [ "bellperson", "bincode", - "bitvec 1.0.1", + "bitvec", "byteorder", "digest 0.10.7", "ff", "flate2", - "generic-array", + "generic-array 0.14.7", "getrandom", "halo2curves", "itertools 0.11.0", "neptune", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-integer", "num-traits", "pasta-msm", @@ -2702,11 +2933,11 @@ dependencies = [ [[package]] name = "num" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" dependencies = [ - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-complex", "num-integer", "num-iter", @@ -2738,9 +2969,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -2751,9 +2982,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" dependencies = [ "num-traits", ] @@ -2786,65 +3017,66 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", + "libm", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.4", "libc", ] [[package]] name = "num_enum" -version = "0.6.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.6.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "object" -version = "0.31.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" @@ -2883,6 +3115,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "pairing" version = "0.23.0" @@ -2894,12 +3132,12 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.1" +version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2287753623c76f953acd29d15d8100bcab84d29db78fb6f352adb3c53e83b967" +checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" dependencies = [ "arrayvec 0.7.4", - "bitvec 1.0.1", + "bitvec", "byte-slice-cast", "impl-trait-for-tuples", "parity-scale-codec-derive", @@ -2908,11 +3146,11 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.6.1" +version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b6937b5e67bfba3351b87b040d48352a2fcb6ad72f81855412ce97b45c8f110" +checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 2.0.0", "proc-macro2", "quote", "syn 1.0.109", @@ -2930,15 +3168,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -2973,9 +3211,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "path-slash" @@ -2995,11 +3233,11 @@ dependencies = [ [[package]] name = "pathfinder_simd" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39fe46acc5503595e5949c17b818714d26fdf9b4920eacf3b2947f0199f4a6ff" +checksum = "0444332826c70dc47be74a7c6a5fc44e23a7905ad6858d4162b658320455ef93" dependencies = [ - "rustc_version 0.3.3", + "rustc_version 0.4.0", ] [[package]] @@ -3013,38 +3251,54 @@ dependencies = [ [[package]] name = "pbkdf2" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0ca0b5a68607598bf3bad68f32227a8164f6254833f84eafaac409cd6746c31" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest 0.10.7", "hmac", ] +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.0" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73935e4d55e2abf7f130186537b19e7a4abc886a0252380b59248af473a3fc9" +checksum = "1f200d8d83c44a45b21764d1916299752ca035d15ecd46faca3e9a2a2bf6ad06" dependencies = [ + "memchr", "thiserror", "ucd-trie", ] [[package]] name = "petgraph" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 1.9.3", + "indexmap", ] [[package]] @@ -3087,7 +3341,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] @@ -3110,29 +3364,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -3152,9 +3406,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" [[package]] name = "plotters" @@ -3204,9 +3458,9 @@ dependencies = [ [[package]] name = "png" -version = "0.17.9" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" +checksum = "1f6c3c3e617595665b8ea2ff95a86066be38fb121ff920a9c0eb282abcd1da5a" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -3225,6 +3479,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -3239,19 +3499,19 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.9" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9825a04601d60621feed79c4e6b56d65db77cdca55cef43b46b0de1096d1c282" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" dependencies = [ "proc-macro2", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "primitive-types" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", @@ -3268,7 +3528,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +dependencies = [ + "toml_edit 0.20.7", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.0", ] [[package]] @@ -3297,27 +3575,37 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] -name = "quote" -version = "1.0.28" +name = "proptest" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ - "proc-macro2", + "bitflags 2.4.2", + "lazy_static", + "num-traits", + "rand 0.8.5", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.2", + "unarray", ] [[package]] -name = "radium" -version = "0.3.0" +name = "quote" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] [[package]] name = "radium" @@ -3394,22 +3682,24 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" dependencies = [ "either", "rayon-core", + "wasm_sync", ] [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", + "wasm_sync", ] [[package]] @@ -3423,63 +3713,66 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] -name = "redox_syscall" -version = "0.3.5" +name = "redox_users" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ - "bitflags 1.3.2", + "getrandom", + "libredox", + "thiserror", ] [[package]] -name = "redox_users" -version = "0.4.3" +name = "regex" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ - "getrandom", - "redox_syscall 0.2.16", - "thiserror", + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax 0.8.2", ] [[package]] -name = "regex" -version = "1.8.4" +name = "regex-automata" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.2", + "regex-syntax 0.8.2", ] [[package]] name = "regex-syntax" -version = "0.6.29" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "regex-syntax" -version = "0.7.2" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ - "base64 0.21.2", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -3498,6 +3791,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tower-service", "url", @@ -3509,9 +3803,9 @@ dependencies = [ [[package]] name = "revm" -version = "3.3.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f293f351c4c203d321744e54ed7eed3d2b6eef4c140228910dde3ac9a5ea8031" +checksum = "68f4ca8ae0345104523b4af1a8a7ea97cfa1865cdb7a7c25d23c1a18d9b48598" dependencies = [ "auto_impl", "revm-interpreter", @@ -3520,52 +3814,46 @@ dependencies = [ [[package]] name = "revm-interpreter" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53980a26f9b5a66d13511c35074d4b53631e157850a1d7cf1af4efc2c2b72c9" +checksum = "f959cafdf64a7f89b014fa73dc2325001cf654b3d9400260b212d19a2ebe3da0" dependencies = [ - "derive_more", - "enumn", "revm-primitives", - "sha3 0.10.8", ] [[package]] name = "revm-precompile" -version = "2.0.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41320af3bd6a65153d38eb1d3638ba89104cc9513c7feedb2d8510e8307dab29" +checksum = "4d360a88223d85709d2e95d4609eb1e19c649c47e28954bfabae5e92bb37e83e" dependencies = [ + "c-kzg", "k256", "num", "once_cell", "revm-primitives", "ripemd", "secp256k1", - "sha2 0.10.7", - "sha3 0.10.8", + "sha2", "substrate-bn", ] [[package]] name = "revm-primitives" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "304d998f466ffef72d76c7f20b05bf08a96801736a6fb1fdef47d49a292618df" +checksum = "51187b852d9e458816a2e19c81f1dd6c924077e1a8fccd16e4f044f865f299d7" dependencies = [ + "alloy-primitives", + "alloy-rlp", "auto_impl", - "bitvec 1.0.1", - "bytes", - "derive_more", + "bitflags 2.4.2", + "bitvec", + "c-kzg", "enumn", - "fixed-hash", - "hashbrown 0.13.2", + "hashbrown", "hex", - "hex-literal 0.4.1", - "primitive-types", - "rlp", - "ruint", - "sha3 0.10.8", + "once_cell", ] [[package]] @@ -3578,6 +3866,21 @@ dependencies = [ "subtle", ] +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted", + "web-sys", + "winapi", +] + [[package]] name = "ripemd" version = "0.1.3" @@ -3611,23 +3914,33 @@ dependencies = [ [[package]] name = "ruint" -version = "1.8.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d470e29e933dac4101180fd6574971892315c414cf2961a192729089687cc9b" +checksum = "608a5726529f2f0ef81b8fde9873c4bb829d6b5b5ca6be4d97345ddf0749c825" dependencies = [ - "derive_more", + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint 0.4.4", + "num-traits", + "parity-scale-codec", "primitive-types", + "proptest", + "rand 0.8.5", "rlp", "ruint-macro", - "rustc_version 0.4.0", - "thiserror", + "serde", + "valuable", + "zeroize", ] [[package]] name = "ruint-macro" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62cc5760263ea229d367e7dff3c0cbf09e4797a125bd87059a6c095804f3b2d1" +checksum = "e666a5496a0b2186dbcd0ff6106e29e093c15591bde62c20d3842007c6978a09" [[package]] name = "rustc-demangle" @@ -3635,6 +3948,12 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc-hex" version = "2.1.0" @@ -3656,47 +3975,33 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.17", -] - -[[package]] -name = "rustix" -version = "0.37.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8818fa822adcc98b18fedbb3632a6a33213c070556b5aa7c4c8cc21cff565c4c" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys", + "semver 1.0.21", ] [[package]] name = "rustix" -version = "0.38.11" +version = "0.38.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0c3dde1fc030af041adc40e79c0e7fbcf431dd24870053d187d7c66e4b87453" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.2", "errno", "libc", - "linux-raw-sys 0.4.3", - "windows-sys", + "linux-raw-sys", + "windows-sys 0.52.0", ] [[package]] name = "rustversion" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "salsa20" @@ -3718,9 +4023,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.8.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad560913365790f17cbf12479491169f01b9d46d29cfc7422bf8c64bdc61b731" +checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60" dependencies = [ "cfg-if", "derive_more", @@ -3730,11 +4035,11 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.8.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19df9bd9ace6cc2fe19387c96ce677e823e07d017ceed253e7bb3d1d1bd9c73b" +checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -3742,9 +4047,9 @@ dependencies = [ [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scrypt" @@ -3755,18 +4060,18 @@ dependencies = [ "hmac", "pbkdf2 0.11.0", "salsa20", - "sha2 0.10.7", + "sha2", ] [[package]] name = "sec1" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct", "der", - "generic-array", + "generic-array 0.14.7", "pkcs8", "subtle", "zeroize", @@ -3811,9 +4116,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.17" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" dependencies = [ "serde", ] @@ -3841,9 +4146,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] @@ -3869,20 +4174,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.99" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" +checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" dependencies = [ "itoa", "ryu", @@ -3891,9 +4196,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" dependencies = [ "serde", ] @@ -3912,22 +4217,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - -[[package]] -name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -3956,11 +4248,17 @@ dependencies = [ "keccak", ] +[[package]] +name = "shlex" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" + [[package]] name = "signature" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", "rand_core 0.6.4", @@ -3968,48 +4266,60 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.5" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simple_asn1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint 0.4.4", + "num-traits", + "thiserror", + "time", +] [[package]] name = "siphasher" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" -version = "0.4.9" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", - "winapi", + "windows-sys 0.48.0", ] [[package]] name = "solang-parser" -version = "0.3.0" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a94494913728908efa7a25a2dd2e4f037e714897985c24273c40596638ed909" +checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" dependencies = [ - "itertools 0.10.5", + "itertools 0.11.0", "lalrpop", "lalrpop-util", "phf", @@ -4034,20 +4344,14 @@ dependencies = [ [[package]] name = "spki" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der", ] -[[package]] -name = "spmc" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02a8428da277a8e3a15271d79943e80ccc2ef254e78813a166a08d65e4c3ece5" - [[package]] name = "sppark" version = "0.1.5" @@ -4085,24 +4389,24 @@ checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" [[package]] name = "strum" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.24.3" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" dependencies = [ "heck", "proc-macro2", "quote", "rustversion", - "syn 1.0.109", + "syn 2.0.48", ] [[package]] @@ -4128,7 +4432,7 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" name = "summa-solvency" version = "0.1.0" dependencies = [ - "ark-std", + "ark-std 0.3.0", "criterion", "csv", "ethers", @@ -4140,7 +4444,7 @@ dependencies = [ "itertools 0.11.0", "nova-scotia", "nova-snark", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", "num_cpus", "plotters", @@ -4166,15 +4470,36 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.32" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tabbycat" version = "0.1.2" @@ -4194,16 +4519,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.6.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" dependencies = [ - "autocfg", "cfg-if", "fastrand", - "redox_syscall 0.3.5", - "rustix 0.37.22", - "windows-sys", + "redox_syscall", + "rustix", + "windows-sys 0.52.0", ] [[package]] @@ -4228,22 +4552,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] @@ -4257,13 +4581,31 @@ dependencies = [ [[package]] name = "time" -version = "0.1.45" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "deranged", + "itoa", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" +dependencies = [ + "time-core", ] [[package]] @@ -4302,11 +4644,10 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.29.1" +version = "1.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" dependencies = [ - "autocfg", "backtrace", "bytes", "libc", @@ -4314,14 +4655,14 @@ dependencies = [ "num_cpus", "pin-project-lite", "socket2", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -4333,32 +4674,54 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebafdf5ad1220cb59e7d17cf4d2c72015297b75b19a10472f99b89225089240" +checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_edit 0.21.0", ] [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.11" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ - "indexmap 2.0.0", + "indexmap", "serde", "serde_spanned", "toml_datetime", @@ -4373,11 +4736,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -4385,20 +4747,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", ] @@ -4426,9 +4788,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "ttf-parser" @@ -4438,15 +4800,15 @@ checksum = "375812fa44dab6df41c195cd2f7fecb488f6c09fbaafb62807488cefab642bff" [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "uint" @@ -4460,6 +4822,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + [[package]] name = "unicase" version = "2.7.0" @@ -4471,15 +4839,15 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -4492,9 +4860,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -4502,11 +4870,17 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + [[package]] name = "url" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -4523,6 +4897,12 @@ dependencies = [ "serde", ] +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + [[package]] name = "version_check" version = "0.9.4" @@ -4531,9 +4911,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -4548,12 +4928,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -4562,9 +4936,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" dependencies = [ "cfg-if", "serde", @@ -4574,24 +4948,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" dependencies = [ "cfg-if", "js-sys", @@ -4601,9 +4975,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4611,40 +4985,51 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-rayon" -version = "1.0.3" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df87c67450805c305d3ae44a3ac537b0253d029153c25afc3ecd2edc36ccafb1" +checksum = "c9e02b7785fe15de188657b7d3a234ef042bfd8da10822016915e06d4e29cba7" dependencies = [ + "crossbeam-channel", "js-sys", "rayon", - "spmc", "wasm-bindgen", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" + +[[package]] +name = "wasm_sync" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "cff360cade7fec41ff0e9d2cda57fe58258c5f16def0e21302394659e6bbb0ea" +dependencies = [ + "js-sys", + "wasm-bindgen", + "web-sys", +] [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" dependencies = [ "js-sys", "wasm-bindgen", @@ -4665,7 +5050,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.11", + "rustix", ] [[package]] @@ -4686,9 +5071,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -4700,12 +5085,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets", + "windows-targets 0.52.0", ] [[package]] @@ -4714,82 +5099,149 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.4.7" +version = "0.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" +checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys 0.48.0", ] [[package]] @@ -4857,11 +5309,31 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "zeroize" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" dependencies = [ "zeroize_derive", ] @@ -4874,5 +5346,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] diff --git a/zk_prover/README.md b/zk_prover/README.md index f2324f8a..28e4f5d8 100644 --- a/zk_prover/README.md +++ b/zk_prover/README.md @@ -34,7 +34,7 @@ cargo run --release --example gen_inclusion_verifier The script will generate a new `InclusionVerifier.sol` and `InclusionVerifier.yul` contracts in `contracts/src`. -Note that the generic parameters of the circuits `LEVELS`, `N_CURRENCIES` and `N_BYTES` are set to `4`, `2` and `14`. This means that the circuit is tuned to verify the proof of inclusion for an exchange with a userbase of 4 levels (2^4 = 16 users), 2 currencies and a balances in a range of 14 bytes. These parameters can be changed in the script. +Note that the generic parameters of the circuits `LEVELS`, `N_CURRENCIES` and `N_BYTES` are set to `4`, `2` and `8`. This means that the circuit is tuned to verify the proof of inclusion for an exchange with a userbase of 4 levels (2^4 = 16 users), 2 currencies and a balances in a range of 8 bytes. These parameters can be changed in the script. The verifier are generated based on a trusted setup located at `backend/ptau/hermez-raw-11`. Note that setting different generic parameters may require a bigger trusted setup. More details on how to generate a trusted setup can be found [here](https://summa.gitbook.io/summa-book/backend/summa-solvency#3.-generate-verifier-contract). @@ -50,7 +50,7 @@ The script can be run as follows: cargo run --release --example gen_commitment ``` -Note that the generic parameters of the Merkle Sum Tree `N_CURRENCIES` and `N_BYTES` are set to `2` and `14`. This means that this should go in pair with a Inclusion Verifier Circuit tuned to the same generic parameters. +Note that the generic parameters of the Merkle Sum Tree `N_CURRENCIES` and `N_BYTES` are set to `2` and `8`. This means that this should go in pair with a Inclusion Verifier Circuit tuned to the same generic parameters. ## Build an Inclusion Proof @@ -62,7 +62,7 @@ cargo run --release --example gen_inclusion_proof This generated proof is saved in `inclusion_proof_solidity_calldata.json`. The file contains some testing calldata to be used within `contracts` to test the verifier. -In the example, the proof is generated based on the `../csv/entry_16.csv` file for a specific `user_index`, which is set to 0 by default. The setup parameters are set to `LEVELS = 4`, `N_CURRENCIES = 2` and `N_BYTES = 14`. The ptau file is located at `backend/ptau/hermez-raw-11`. Note that these parameters should go in pair with the ones used to generate Inclusion Verifier Circuit and the Commtiment in order to generate a valid proof. +In the example, the proof is generated based on the `../csv/entry_16.csv` file for a specific `user_index`, which is set to 0 by default. The setup parameters are set to `LEVELS = 4`, `N_CURRENCIES = 2` and `N_BYTES = 8`. The ptau file is located at `backend/ptau/hermez-raw-11`. Note that these parameters should go in pair with the ones used to generate Inclusion Verifier Circuit and the Commtiment in order to generate a valid proof. ## Incremental Nova Verifier @@ -119,20 +119,4 @@ Furthermore the benchmarking function `verify_zk_proof_benchmark` will also prin ## Current Benches -Run on AWS m7a.8xlarge with 32 vcores and 128GB RAM - -2^20 entries (1048576) users, 1 currency - -| MST init | -| -------- | -| 24.272 s | - -| MST init (sorted) | -| -------- | -| 25.480 s | - -For Merkle Sum Tree Proof of Inclusion circuit - -| VK Gen | Pk Gen | Proof Generation | Proof Verification | Proof Size (bytes) | -| ------------------ | ------------------- | ------------------- | ------------------- | ------------------ | -| 87.78 ms | 123.86 ms | 380.86 ms | 3.7287 ms | 1632 | +Benchmark results are available at [Summa Gitbook](https://summa.gitbook.io/summa-book/backend/summa-solvency/benchmarks) diff --git a/zk_prover/benches/full_solvency_flow.rs b/zk_prover/benches/full_solvency_flow.rs index 255ff7b6..6d21b64a 100644 --- a/zk_prover/benches/full_solvency_flow.rs +++ b/zk_prover/benches/full_solvency_flow.rs @@ -13,7 +13,7 @@ use summa_solvency::{ const SAMPLE_SIZE: usize = 10; const LEVELS: usize = 20; const N_CURRENCIES: usize = 1; -const N_BYTES: usize = 14; +const N_BYTES: usize = 8; fn build_mstree(_c: &mut Criterion) { let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); diff --git a/zk_prover/examples/gen_commitment.rs b/zk_prover/examples/gen_commitment.rs index c805de2a..7c841e13 100644 --- a/zk_prover/examples/gen_commitment.rs +++ b/zk_prover/examples/gen_commitment.rs @@ -9,7 +9,7 @@ use summa_solvency::{ }; const N_CURRENCIES: usize = 2; -const N_BYTES: usize = 14; +const N_BYTES: usize = 8; fn main() { let merkle_sum_tree = diff --git a/zk_prover/examples/gen_inclusion_proof.rs b/zk_prover/examples/gen_inclusion_proof.rs index b5447a7e..1069fb2d 100644 --- a/zk_prover/examples/gen_inclusion_proof.rs +++ b/zk_prover/examples/gen_inclusion_proof.rs @@ -17,7 +17,7 @@ use summa_solvency::{ const LEVELS: usize = 4; const N_CURRENCIES: usize = 2; -const N_BYTES: usize = 14; +const N_BYTES: usize = 8; fn main() { let merkle_sum_tree = diff --git a/zk_prover/examples/gen_inclusion_verifier.rs b/zk_prover/examples/gen_inclusion_verifier.rs index 2b0b7e07..ca1b1dc7 100644 --- a/zk_prover/examples/gen_inclusion_verifier.rs +++ b/zk_prover/examples/gen_inclusion_verifier.rs @@ -11,7 +11,7 @@ use summa_solvency::circuits::{merkle_sum_tree::MstInclusionCircuit, WithInstanc const LEVELS: usize = 4; const N_CURRENCIES: usize = 2; -const N_BYTES: usize = 14; +const N_BYTES: usize = 8; fn main() { // Assert that there is no risk of overflow in the Merkle Root given the combination of `N_BYTES` and `LEVELS` diff --git a/zk_prover/examples/inclusion_proof_solidity_calldata.json b/zk_prover/examples/inclusion_proof_solidity_calldata.json index f2773745..1d918312 100644 --- a/zk_prover/examples/inclusion_proof_solidity_calldata.json +++ b/zk_prover/examples/inclusion_proof_solidity_calldata.json @@ -1,5 +1,5 @@ { - "proof": "0x11db46985c3a320749cfdc7677d97e0d712a984932a4de6e48552868967dc965078c7a6e38ece5ae9468acdfd2519775283e9a5d5b9672ea44413873f19aae37183bae8da7ea271e7b0693b055f18fef422333b4397b8bcc4d4d0bf45ff8fecf0c0869996d0cc750c1b0aab143c71432c48d4931db69f3f7e24af6535a16d5aa2b00c00bbd0bb1fd92971b34af166ce61f75950be955e77df674aef00957af96190258b40d0b35d7053d336ade8fbbdd050e0bd18003f8157fa241802bc8eaed237f721580569b325eaf3e6a984c0b2ec723e45df9d24999fed689a611411ca302f6e11f7917c66937269970d43194003eb953f821d347a2f43af1df64d5cefb12856d997c050ad6e296cda707c68b936cdf66e5aafc743e39ef59b348267e85229e75b1b9742baeeeb235c89eae028c9cd9e539c4b6572a50c84d3e987795c70505d5b74353a5cba67936f30ccb46e01c2ed3953b798653e24469b6a3240f7c15d503df912367ccb89f6a290d8c3bb6dde40865cdf9e6b562675c5bf714aac51d9f7cb32b9741676526282ea54c8149a89037fad131704197f97fbf9764ed72271990216347ed317e670bcef1dbc670f1969dd2c2555c4bf7ad99fb10cd58a3144049f42ac50047b0d87b81625ae41fb1b2134a4d7358768fc820b398d73bf0130f2cfe15e3188391a583ad3372060c63cc302c3c4ed722b9eef869ede8f22c261991b84228063915f234d20f30c56cdb57d96dd5cc9b525a76e7b857f9b80407cf4aa41e3d40c2e7220b76c47c843f84b17f043fce3b7c4ccc9f004f3bae5329ecd23410a6a92782caec09eae4b4f2c41000335eb3e744a534a62b1fd0b9a5103594331a46bf175435d598f6ddf7c846ca7240a8fac8f276b83a5c285b0ade1345ab65ba02c0365d49f24522215e558f87ea30f6b8350c8afae5f50b71961b03fd576f11779f2dcfc77c3b4c16d5a9be1bff5dc12bcbac85a5556d0b9ac7071a15d47e8a703ae6a3354eca38acbe5deb34c64da8ba16a0ba163c3256c91800182e52047494e3c83a91ce3f8933341f3701f6bcdcfc6b4880f06526a23c311e210020bab76c34cd7de9ff680ecf44ebf1e664623ab3b20339d4a982103742671ea8c7849a3c70f6498a9cdfde90b849445da8c26c5c1e45de1031c21647e605286cbe4727a6b116e990cc7d0a6dbcf41138f0c99339cf29259c451b9633ec1e22db646ad86b9713238b8cf79a1064a24f60911d7025385c3a1230702b76c23729a27053a30783f7caf4f00c52a22d73a1da284274cbff482d0e22c9032fb72c203a71ea3550396523c06bb2d3ece8a145e83de54eb9d3634d2257ef7792fc14096aaf3fa3d5a0db12241be0eac3306f4c8614f7f2b8a838acfb77b201e4e3e42a945dc7863c7f12ccc1aa92dbc6208dd296732b0b356229e3743848281af4132ce386b8cd63e5cee90cca4928c3fafb34fcc9b56e57455ee10b1d05f721f6451f97f31b16919afe57faee7954cc7da3c01b6c7a4bb0e34e3e28859acf4b7cbe1f5683413470bacb0a01b5ef4b9b6707b9815f1416f2e1687a0800bef2072fbc1897d6acfc20b236d20f443c511426476cf11d78d0bb9d99f1031716100c9eda1c0ab1c03a5f5919ba3253d0f49c5d2a319b0a090072e73c42115cc232d2264c263077dc0b5a2fc94646156b2c1b3d6856153dedb1af160a9ae559a2269408312d4079f051f8e3799666a4622a06aa3bf566dc0cffecc98dc23fb2c78ef470c12cf8a515aea407fa0f744c979b94ec7f9dfa89bfc96399cd892cea77174e87ed0c53c30128a15410143a9858d7f7c8b393ae4fc4f75408f9b87be2a36458771415f06890f304a7c5825875b0ead218da3d9404f477de57632961fe0165d60f9a1d3c7528a0d09a95a1b9c424ee463a124db3c0be061ff4db756321bd3b06fdf72c70f779f93120c5920a38cb504f6ee51fdcb28e7ea6e61f234503667ceccfaa1ea3c9056a504308231bd0f11fb55779d8075a7bded38960c4dcfcd68ed72d1629559a5cdf0db45d84ba7a3c1c157435cc6c34c5e3f39f2cae4cd70385c852c510d3062d0c13cbf758e26e5f4b5c5a865813d8ca56e8fde25cd304972a53410309eade98c7b932da4d7b2ea9c400a1d5e653d34f66fa9c0ddbdee3ee4ecbd61b2126dec54c5304a679cab3b7e5077b017af4b88a666247d8cbfd92a6f22173a3141f1d1a9ba4569338c4e5c038f371279ae81963d356ca511b2fdf637b49f6dc2e1b15c6feebb9a0ea5c010e24757b384e6f63299987c8ae4ef95254f61e5e010690042de02ba17108eb0b9d351e688abcc89c0790795e6459fb1d10d30a33b626d77b34e02bb9abfa8fe94a103cf2af182638018a94d5733b87266737bd18e817305734e4fa986db8579f127865876ce2a3215d2c62cb748df8039a9f4d04cf0392e9606cb3b02db2e61bbca1b06655e50a3ce3acfebd9f2b3b337c2e06b0061ed5c3660bdb2cd0493f4b8080d9752b0dcdbae1ffb6023887b7f831890d7c942a73fa59d5f9f5ca05ab217836665719e50c752b262fd4897df44ba3cd59959c1c2bc5bc31e2e4869763d130f299bba57b6a7d892b3d613db7eecd41b69a0f02154188030f04be9c192fbaad8d92ff2082b2afcc464f89998c4b55d1472f0dfa06d4cfb4709eb80b2290e745011adf578cabbdba0ade032611443dec4f059ddf24dc560c4e394083a68b7422053bffa8da521dff93b8cf1bc6cba96b4eb588ca2bbff4ca0f0f1c9dcc927aba9d251f0dfcb689a784415cd0db7fc86cc5cec35d0bfa5cd0f71d64f7a53c48d29bfac4ee4c0ccc488e98b2b1ca81ca07d3db65772ccfbfda450809059c59807ee8a5eb1197f19fbe1a92f03f307ba9e680ce015d061dfdc6fd004be085587d54dbc02500fbc20059fbaacae3008f5a88ce1a3ac9196bf63b231d617367502c72886ad5b218e88e1c420f90c4827447c10a0967d729a5750722b0065307d7e5893f5219dc6083112f7ddb6f84a3ae6a0942492343", + "proof": "0x099b655a72ad66888e1964305886c4c7993003b17ede68bc0546df28b077383701a9ff5f760f73c77ca2f768f10dfaced92fa87024be1d601470a35e1793f899012d48bcd264318f9739ded71a1177157ad18f37539b2dba5941aee67c955a9410f8f04a49c0ad9033fd8f96512abf2800ab36c333a73012b8da2ec5244923650b80abae3df7952513e169ce514bf7103062adf5c514b1889990a1f64f0e0981239bebd5877800a3a03b79832f426290cdb4da8aac2144139102bad984f4b94a159ccbadd7cfe525f5d6f48af294e4a8c1ebe342119273aafe1e986dbbaef6ea28f6d5db9a2e79ee2dcdff182b46b87457233de006ef08a1e2c2e168dad8d6bf305e4b48cbe8b3a793f80f9c1562c7abce178ea8672a45c0446d2c228e22464f2a28a38007d658d42426e790b193c38216c6df6494ee7c159b5e1ea006770f6424e48b02b4989c61743c8fe3d82e84581022f5100dbccdeed3257f24c6a1d47910a94b83a006c3b30d63933aee5176f5543761c7752175f82844e731324713560e4853fd3805e5765c719a73fb95f73a3a86eb597b41bb59a0798ae3a4061a212b85163e0c310af30d02a575a98ac81e4900ce5f4b899536301d8e75288f6748266b81397f57a9af767ba06f567336897f1395a3a8301e56604ffc04f7e762260616e31fb24b6caf2a581a5729921f6099996ef398c3f65fe59b50c3474d2cb30712a7500f4aeb7944268209de779ee3549bc088665c8d37e8ef0205123454ff2980dd7a99e4f8b665ca7d1e5199ddef3f1dda49e7d5bf5d4a0e1b3e43ab88952a88d12a96d037e5b7adab8991fc91abd56dafbd481fc9b1515f5cfeb06d922b03a6c89deda321893ab7414258d7424ed06d95e3c5ba140c3450e9605315dbaa041cfbf78d5a531fb20ed973b10a078fd9c0fa61cfdfc44275a4de2488fe2aa11fd6df19d45b2fb315d11c4635b16b09937d7a64c9980f0b80442fa163f5d13f0135c4ea16e5b160ed0ace73e9304702fe2c89230e194eeb17f15ad34218cf920ef036144cbc71a1d5af606f69a0199b3c95aaa3f7b76d4acc43930f23855fe3080110255a5f74dbc664f90550f0e2cba1c7abee1cedee6c957335ac529837f1281f96debb692df148c384c3601a62316cf660efc3aaa9aeda7541a6f9e1780d008c006cabd4c71f88f586bbe3dcaaff491a4d64e711720826de1e917ecc843b160e76eb81806c35439a995562e8c98bd29d23d2ccbfbb576ea3a068626886da1f0f6af74d39cd467882f75cd14aeb9dbaf6c04fb386019f69f9d052d9073ee72f65c01f4e37ef15eccd33ef3f374775be266c5a2ea9185ada549c88fdbb2e0e2d70a0d1a6f6477556d7bf092b85820409c9f9812b14b53d000aba9be503791106a8f2a5808ccecca9334e0df14dedf6c504e0e36fa3f55e616afd6f2fbf67382efefcf5369e6ec9b3e00a37d1f124a147628722f473157a51b1f4133e2238bd015b1508d310e271cdd0b7ab682472188d81dbdcbd264effe5b4aeebd6656b8108d1ce33d75443c58930c7425f2ffa70babf419324fadba2085f1fe5345382231eb87a3c22d4144b4a2137f2cc9968ddbbe084b42fbed844dfbb8ca04a0f84c62fd3d65fd20fcb93e63b8fa1db8c35fabd21dc360fec5ca772f307d8a3498586278bc26ceb63026c98e5a57b9e6216ac1946f2d018778120818f7b42501b05432f0c6b21e6f63b9e9000becb7a037c7412e676d422104f9ff9433a4233a2755114b9c50057a56a70007dc7db332d79f8e5b4f2ea45d62463506e604c78b9454a2a2a7837fe4312126f1688b7a5cf827fc154edc6fe930af78610989c855dacb510554f398e173ed85ede46c81cdb7e6ce57df43ad2541bd13963ea4a9184193922b185af0c568067002240986a58a3da91afe735b6aa6ce129d867bcce89ef0802d592d61d4cb0ba6255c3505e1f63db8e74510100566050b29f7cc66c460e9317cffb65833fc7c9b415ca470dde83008f77ec06768fa743637eca387ce7b87a09c5f2c0d1e2bf04811348d2a2d2a7f790f3d1e3fb957e58946828074acc61441ea08a3328c7254f9ac4dd788c7cc481fd23c9224ace6c0527c5878bb4ede7eb0c2f456f511b00f4bc99fc16085608d91b6bd596f83066a481aac412ac12446423fa9fb974f4adf0ab3ca154eab827b58a5dcb2a0532bc209acc2f0f315d0b141cb14eb278a8d44aca7e782fb57a29fe3a57e53a3e036d33201c7e9d443b46410491bb8fbe0783fb9850ca0944adee63f5cec918cd2eb1d9af5e04a337151edb24297a314c4e0d44f53e2f1039c4ffb2ccac9982e18d499570884e612bdb72fa275575c9d407c23a13052f364109d9513e32bc814df584c7dcd1b749749693240f5926f172bcfa64969b5120b70396c3888d6181e5d07d6e3acf1cbde2676ea922822d7abb9e832becb2f0e454e785bab709dc0e1628a7db40dfa2eec66805fb1abf5190c075be19afb87bcc0ad8e721ba4e0214c2c2bdfd88c00b5761842d090b2b8742864c7e5ef173f39786a6fbda94e129c40969efffaa979c32b7e915752b9bf1d5137b5028383dccadf48a7403b1d97d4d3832ab5a6abadf1d9bae36db2d30bcf77f36804a9e9c70e81eb5922fa813fd0fe831b7370846c2ee2a56d4f12e29f6e5935b7917b5e18bbfbf299da681fc9e75582a067624633a8ce3dc7f4608589fdb8e608e84ddba2d8a23d68aa2373563bb01f890c6af1a035ba954e5e90813ffc1bdf750ccd8eecdc2d968569185813698decf2e6d7271c7a038aeffe92b94951a8944e8e1385aac2bb16a6045ac341ec4ba78f52d28ba441645046c8b08a2e9fdc9b7fe53d5ef98bc24057709b7f04d4b34def8946d2a9dc32ae6cdcd0d72cee5d4b6c6e5b8780a96fd81250d950640450eb102a785a67808566725d626e5ff264c0ec0a72c072067b7034b2520e1d8f69ff3c60f02aac6c4ed42721b05f053b92ee64e7d7b942ab86e0abaf207f472255424ca1119493daa2c2e2601", "public_inputs": [ "0xe113acd03b98f0bab0ef6f577245d5d008cbcc19ef2dab3608aa4f37f72a407", "0x18d6ab953235a811edffa4cead74ea045e7cd2085771a2269d59dca054c955b1", diff --git a/zk_prover/prints/mst-inclusion-layout.png b/zk_prover/prints/mst-inclusion-layout.png index 5db063d4..61d9394d 100644 Binary files a/zk_prover/prints/mst-inclusion-layout.png and b/zk_prover/prints/mst-inclusion-layout.png differ diff --git a/zk_prover/src/chips/merkle_sum_tree.rs b/zk_prover/src/chips/merkle_sum_tree.rs index cfbb0a54..349e107b 100644 --- a/zk_prover/src/chips/merkle_sum_tree.rs +++ b/zk_prover/src/chips/merkle_sum_tree.rs @@ -179,28 +179,23 @@ impl MerkleSumTreeChip { /// /// | a | b | c | /// | ------------ | ------------- | ---------- | - /// | `current_balance` | `element_balance` | `0` | /// | `current_balance` | `element_balance` | `sum` | /// - /// At row 0 bool_and_swap_selector is enabled. - /// At row 1 sum_selector is enabled - /// If swap_bit is 0, the values will remain the same on the next row - /// If swap_bit is 1, the values will be swapped on the next row - pub fn swap_balances_per_level( + /// At row 0 sum_selector is enabled. + pub fn sum_balances_per_level( &self, mut layouter: impl Layouter, current_balance: &AssignedCell, element_balance: &AssignedCell, - swap_bit_assigned: &AssignedCell, ) -> Result, Error> { layouter.assign_region( - || "assign nodes balances per currency", + || "sum nodes balances per currency", |mut region| { - // enable the bool_and_swap_selector at row 0 - self.config.bool_and_swap_selector.enable(&mut region, 0)?; + // enable the sum_selector at row 0 + self.config.sum_selector.enable(&mut region, 0)?; // copy the current_balances to the column self.config.advice[0] at offset 0 - let l1 = current_balance.copy_advice( + let current_balance = current_balance.copy_advice( || "copy current balance from prev level", &mut region, self.config.advice[0], @@ -208,57 +203,23 @@ impl MerkleSumTreeChip { )?; // assign the element_balance to the column self.config.advice[1] at offset 0 - let r1 = element_balance.copy_advice( + let element_balance = element_balance.copy_advice( || "element balance", &mut region, self.config.advice[1], 0, )?; - // assign the swap_bit to the column self.config.advice[2] at offset 0 - let swap_bit = swap_bit_assigned.copy_advice( - || "swap bit", - &mut region, - self.config.advice[2], - 0, - )?; - - // Extract the value from the cell - let mut l1_val = l1.value().copied(); - let mut r1_val = r1.value().copied(); - - // perform the swap according to the swap bit - // if swap_bit is 0 return (l1, r1) else return (r1, l1) - swap_bit.value().copied().map(|x| { - (l1_val, r1_val) = if x == Fp::zero() { - (l1_val, r1_val) - } else { - (r1_val, l1_val) - }; - }); - - // Perform the assignment according to the swap at offset 1 - let _left_currency_balance = region.assign_advice( - || "assign left balance after swap", - self.config.advice[0], - 1, - || l1_val, - )?; - - let _right_currency_balance = region.assign_advice( - || "assign right balance after swap", - self.config.advice[1], - 1, - || r1_val, - )?; - - // enable the sum_selector at offset 1 - self.config.sum_selector.enable(&mut region, 1)?; + // Extract the values from the cell + let current_balance_val = current_balance.value().copied(); + let element_balance_val = element_balance.value().copied(); - // compute the sum of the two balances and assign it to the column self.config.advice[2] at offset 1 - let sum = l1_val.zip(r1_val).map(|(a, b)| a + b); + // compute the sum of the two balances and assign it to the column self.config.advice[2] at offset 0 + let sum = current_balance_val + .zip(element_balance_val) + .map(|(a, b)| a + b); let sum_cell = - region.assign_advice(|| "sum of balances", self.config.advice[2], 1, || sum)?; + region.assign_advice(|| "sum of balances", self.config.advice[2], 0, || sum)?; Ok(sum_cell) }, diff --git a/zk_prover/src/circuits/merkle_sum_tree.rs b/zk_prover/src/circuits/merkle_sum_tree.rs index 9787eb21..24846e9c 100644 --- a/zk_prover/src/circuits/merkle_sum_tree.rs +++ b/zk_prover/src/circuits/merkle_sum_tree.rs @@ -459,18 +459,17 @@ where let mut next_balances = vec![]; - // For every level, perform the swap of the balances (between `current_balances` and `sibling_balances`) according to the swap bit + // For every level, perform sum the balances `current_balances` and `sibling_balances` for currency in 0..N_CURRENCIES { - let next_balance = merkle_sum_tree_chip.swap_balances_per_level( + let next_balance = merkle_sum_tree_chip.sum_balances_per_level( layouter.namespace(|| { format!( - "{}: currency {}: assign nodes balance", + "{}: currency {}: perform balance sum", namespace_prefix, currency ) }), ¤t_balances[currency], &sibling_balances[currency], - &swap_bit_level, )?; next_balances.push(next_balance); diff --git a/zk_prover/src/circuits/tests.rs b/zk_prover/src/circuits/tests.rs index e5f4bc71..cab5e154 100644 --- a/zk_prover/src/circuits/tests.rs +++ b/zk_prover/src/circuits/tests.rs @@ -19,7 +19,7 @@ mod test { const N_CURRENCIES: usize = 2; const LEVELS: usize = 4; - const N_BYTES: usize = 14; + const N_BYTES: usize = 8; const K: u32 = 11; #[test] @@ -198,15 +198,15 @@ mod test { VerifyFailure::Permutation { column: (Any::advice(), 2).into(), location: FailureLocation::InRegion { - region: (111, "assign nodes balances per currency").into(), - offset: 1 + region: (111, "sum nodes balances per currency").into(), + offset: 0 } }, VerifyFailure::Permutation { column: (Any::advice(), 2).into(), location: FailureLocation::InRegion { - region: (112, "assign nodes balances per currency").into(), - offset: 1 + region: (112, "sum nodes balances per currency").into(), + offset: 0 } }, VerifyFailure::Permutation { @@ -292,7 +292,7 @@ mod test { column: (Any::advice(), 0).into(), location: FailureLocation::InRegion { region: (21, "assign value to perform range check").into(), - offset: 14 + offset: 8 } }, ]) @@ -330,22 +330,6 @@ mod test { }, cell_values: vec![(((Any::advice(), 2).into(), 0).into(), "0x2".to_string()),] }, - VerifyFailure::ConstraintNotSatisfied { - constraint: ((6, "bool constraint").into(), 0, "").into(), - location: FailureLocation::InRegion { - region: (27, "assign nodes balances per currency").into(), - offset: 0 - }, - cell_values: vec![(((Any::advice(), 2).into(), 0).into(), "0x2".to_string()),] - }, - VerifyFailure::ConstraintNotSatisfied { - constraint: ((6, "bool constraint").into(), 0, "").into(), - location: FailureLocation::InRegion { - region: (28, "assign nodes balances per currency").into(), - offset: 0 - }, - cell_values: vec![(((Any::advice(), 2).into(), 0).into(), "0x2".to_string()),] - }, VerifyFailure::ConstraintNotSatisfied { constraint: ((7, "swap constraint").into(), 0, "").into(), location: FailureLocation::InRegion { @@ -396,58 +380,6 @@ mod test { (((Any::advice(), 2).into(), 0).into(), "0x2".to_string()), ] }, - VerifyFailure::ConstraintNotSatisfied { - constraint: ((7, "swap constraint").into(), 0, "").into(), - location: FailureLocation::InRegion { - region: (27, "assign nodes balances per currency").into(), - offset: 0 - }, - cell_values: vec![ - (((Any::advice(), 0).into(), 0).into(), "0x2e70".to_string()), - (((Any::advice(), 0).into(), 1).into(), "0x108ef".to_string()), - (((Any::advice(), 1).into(), 0).into(), "0x108ef".to_string()), - (((Any::advice(), 2).into(), 0).into(), "0x2".to_string()), - ] - }, - VerifyFailure::ConstraintNotSatisfied { - constraint: ((7, "swap constraint").into(), 1, "").into(), - location: FailureLocation::InRegion { - region: (27, "assign nodes balances per currency").into(), - offset: 0 - }, - cell_values: vec![ - (((Any::advice(), 0).into(), 0).into(), "0x2e70".to_string()), - (((Any::advice(), 1).into(), 0).into(), "0x108ef".to_string()), - (((Any::advice(), 1).into(), 1).into(), "0x2e70".to_string()), - (((Any::advice(), 2).into(), 0).into(), "0x2".to_string()), - ] - }, - VerifyFailure::ConstraintNotSatisfied { - constraint: ((7, "swap constraint").into(), 0, "").into(), - location: FailureLocation::InRegion { - region: (28, "assign nodes balances per currency").into(), - offset: 0 - }, - cell_values: vec![ - (((Any::advice(), 0).into(), 0).into(), "0xa0cb".to_string()), - (((Any::advice(), 0).into(), 1).into(), "0x48db".to_string()), - (((Any::advice(), 1).into(), 0).into(), "0x48db".to_string()), - (((Any::advice(), 2).into(), 0).into(), "0x2".to_string()), - ] - }, - VerifyFailure::ConstraintNotSatisfied { - constraint: ((7, "swap constraint").into(), 1, "").into(), - location: FailureLocation::InRegion { - region: (28, "assign nodes balances per currency").into(), - offset: 0 - }, - cell_values: vec![ - (((Any::advice(), 0).into(), 0).into(), "0xa0cb".to_string()), - (((Any::advice(), 1).into(), 0).into(), "0x48db".to_string()), - (((Any::advice(), 1).into(), 1).into(), "0xa0cb".to_string()), - (((Any::advice(), 2).into(), 0).into(), "0x2".to_string()), - ] - }, VerifyFailure::Permutation { column: (Any::advice(), 0).into(), location: FailureLocation::InRegion {