From cc5d59f72da2e423ad60a92745b3d04420bfcd0e Mon Sep 17 00:00:00 2001 From: Filip Krawczyk Date: Sat, 10 Feb 2024 00:23:16 +0100 Subject: [PATCH] Adopt channel tests for keccak --- .../tests/test_random_felts_to_prover.cairo | 57 +- .../tests/test_random_uint256_to_prover.cairo | 134 ++- .../tests/test_read_felt_from_prover.cairo | 97 +- .../test_read_felt_vector_from_prover.cairo | 417 ++++--- .../tests/test_read_felts_from_prover.cairo | 1038 ++++++++++++++--- ...test_read_truncated_hash_from_prover.cairo | 94 +- .../tests/test_read_uint64_from_prover.cairo | 29 +- 7 files changed, 1507 insertions(+), 359 deletions(-) diff --git a/src/channel/tests/test_random_felts_to_prover.cairo b/src/channel/tests/test_random_felts_to_prover.cairo index 43bc2d703..cf1dae560 100644 --- a/src/channel/tests/test_random_felts_to_prover.cairo +++ b/src/channel/tests/test_random_felts_to_prover.cairo @@ -1,22 +1,57 @@ use cairo_verifier::channel::channel::ChannelTrait; +// === BLAKE ONLY BEGIN === +// #[test] +// #[available_gas(9999999999)] +// fn test_random_felts_to_prover() { +// let mut channel = ChannelTrait::new( +// u256 { low: 0xf7685ebd40e852b164633a4acbd3244c, high: 0xe8e77626586f73b955364c7b4bbf0bb7 } +// ); +// let random = channel.random_felts_to_prover(3); +// assert( +// *random[0] == 3199910790894706855027093840383592257502485581126271436027309705477370004002, +// 'invalid random felts[0]' +// ); +// assert( +// *random[1] == 2678311171676075552444787698918310126938416157877134200897080931937186268438, +// 'invalid random felts[1]' +// ); +// assert( +// *random[2] == 2409925148191156067407217062797240658947927224212800962983204460004996362724, +// 'invalid random felts[2]' +// ); +// } +// === BLAKE ONLY END === + +// === KECCAK ONLY BEGIN === #[test] #[available_gas(9999999999)] fn test_random_felts_to_prover() { - let mut channel = ChannelTrait::new( - u256 { low: 0xf7685ebd40e852b164633a4acbd3244c, high: 0xe8e77626586f73b955364c7b4bbf0bb7 } - ); - let random = channel.random_felts_to_prover(3); - assert( - *random[0] == 3199910790894706855027093840383592257502485581126271436027309705477370004002, - 'invalid random felts[0]' + let mut channel = ChannelTrait::new_with_counter( + u256 { low: 0x31221b7950614c65772c2993e6727561, high: 0xfaa5d980c70cbe78934e534c13eaf18a }, + 0x0 ); assert( - *random[1] == 2678311171676075552444787698918310126938416157877134200897080931937186268438, - 'invalid random felts[1]' + channel + .random_felts_to_prover( + 6 + ) == array![ + 0x414b15fa27add0f6811a50e1c8b9f15817894a0bbfe4f7f295197c1012dfb18, + 0x5e0bb5569c25cb8b8836880bab4e2ce6d4a4daa7884f6ca843d68cb2eebec0b, + 0x38a8e373b08e1edebe3a42c2ac362c3677b34831d0d99ae08961fe96518b7d4, + 0x2a56da11e2abe0a267e2ba40166bb50163c182ac042b88f75f681d6f30c8f37, + 0x1824b7b0c6c0036c4998f345f4b34e1548a03dc637480ff0c6f315d4eacac4a, + 0x39a70b321a5d31147bf5c3299bb5946da16db82658b25af58802bfe64d6fc74, + ], + 'invalid random felts' ); assert( - *random[2] == 2409925148191156067407217062797240658947927224212800962983204460004996362724, - 'invalid random felts[2]' + channel + .digest == u256 { + low: 0x31221b7950614c65772c2993e6727561, high: 0xfaa5d980c70cbe78934e534c13eaf18a + }, + 'Invalid value' ); + assert(channel.counter == 0x6, 'Invalid value'); } +// === KECCAK ONLY END === diff --git a/src/channel/tests/test_random_uint256_to_prover.cairo b/src/channel/tests/test_random_uint256_to_prover.cairo index e8e3f62be..7da706dcd 100644 --- a/src/channel/tests/test_random_uint256_to_prover.cairo +++ b/src/channel/tests/test_random_uint256_to_prover.cairo @@ -1,76 +1,152 @@ use cairo_verifier::channel::channel::ChannelTrait; +// === BLAKE ONLY BEGIN === +// #[test] +// #[available_gas(9999999999)] +// fn test_random_uint256_to_prover_0() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0xf59fd6b10ccc33fe2e1e1e94e3411f56, high: 0x6572033443ae2c5f7b83bfdcd817240e }, +// 0x0 +// ); +// assert( +// channel +// .random_uint256_to_prover() == u256 { +// low: 0x5f1758ec5d5517006c3eac3c624dcda2, high: 0xb24fe50c70859073b185937f3e1eb93d +// }, +// 'Invalid value' +// ); +// } + +// #[test] +// #[available_gas(9999999999)] +// fn test_random_uint256_to_prover_1() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0xf59fd6b10ccc33fe2e1e1e94e3411f56, high: 0x6572033443ae2c5f7b83bfdcd817240e }, +// 0x1 +// ); +// assert( +// channel +// .random_uint256_to_prover() == u256 { +// low: 0xad772a40c7f3c4e6f77db1daa5f8d8e, high: 0x96014698ef9d4df3438cf2da8aa483a4 +// }, +// 'Invalid value' +// ); +// } + +// #[test] +// #[available_gas(9999999999)] +// fn test_random_uint256_to_prover_2() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0x8823a41f7994f81c6453f4bc3cad1c10, high: 0x75f85ae3fd3ff6b5f63029a51040037e }, +// 0x0 +// ); +// assert( +// channel +// .random_uint256_to_prover() == u256 { +// low: 0xf1466cd5383c0644def10ee2658b7a05, high: 0x32f0741071fba06bdee46d938b942542 +// }, +// 'Invalid value' +// ); +// } + +// #[test] +// #[available_gas(9999999999)] +// fn test_random_uint256_to_prover_3() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0x89a405dfb23e546ad03d498e88dee3ba, high: 0xe614bdb3e56768f45a22fd34e999734c }, +// 0x0 +// ); +// assert( +// channel +// .random_uint256_to_prover() == u256 { +// low: 0x538dd6434921187f80b76fd1d804af3b, high: 0x1172f921f177f82f29a3d97f9cffd2df +// }, +// 'Invalid value' +// ); +// } + +// #[test] +// #[available_gas(9999999999)] +// fn test_random_uint256_to_prover_4() { +// let mut channel = ChannelTrait::new(0); +// let random = channel.random_uint256_to_prover(); +// assert( +// random == 0xae09db7cd54f42b490ef09b6bc541af688e4959bb8c53f359a6f56e38ab454a3, +// 'invalid random uint256' +// ); +// } +// === BLAKE ONLY END === + +// === KECCAK ONLY BEGIN === #[test] #[available_gas(9999999999)] fn test_random_uint256_to_prover_0() { let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0xf59fd6b10ccc33fe2e1e1e94e3411f56, high: 0x6572033443ae2c5f7b83bfdcd817240e }, + u256 { low: 0x31221b7950614c65772c2993e6727561, high: 0xfaa5d980c70cbe78934e534c13eaf18a }, 0x0 ); assert( channel .random_uint256_to_prover() == u256 { - low: 0x5f1758ec5d5517006c3eac3c624dcda2, high: 0xb24fe50c70859073b185937f3e1eb93d + low: 0x6249f523d42a9a89f8a41bbcffb837ee, high: 0x704fab98abe015f67ce8c5651141e746 + }, + 'Invalid value' + ); + assert( + channel + .digest == u256 { + low: 0x31221b7950614c65772c2993e6727561, high: 0xfaa5d980c70cbe78934e534c13eaf18a }, 'Invalid value' ); + assert(channel.counter == 0x1, 'Invalid value'); } #[test] #[available_gas(9999999999)] fn test_random_uint256_to_prover_1() { let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0xf59fd6b10ccc33fe2e1e1e94e3411f56, high: 0x6572033443ae2c5f7b83bfdcd817240e }, - 0x1 + u256 { low: 0x31221b7950614c65772c2993e6727561, high: 0xfaa5d980c70cbe78934e534c13eaf18a }, + 0x4 ); assert( channel .random_uint256_to_prover() == u256 { - low: 0xad772a40c7f3c4e6f77db1daa5f8d8e, high: 0x96014698ef9d4df3438cf2da8aa483a4 + low: 0x9dd4eacd6e611a8f0da6dfcb9c1206d6, high: 0x67cb6d23cfb26dc408dac8c0c6a71602 }, 'Invalid value' ); -} - -#[test] -#[available_gas(9999999999)] -fn test_random_uint256_to_prover_2() { - let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0x8823a41f7994f81c6453f4bc3cad1c10, high: 0x75f85ae3fd3ff6b5f63029a51040037e }, - 0x0 - ); assert( channel - .random_uint256_to_prover() == u256 { - low: 0xf1466cd5383c0644def10ee2658b7a05, high: 0x32f0741071fba06bdee46d938b942542 + .digest == u256 { + low: 0x31221b7950614c65772c2993e6727561, high: 0xfaa5d980c70cbe78934e534c13eaf18a }, 'Invalid value' ); + assert(channel.counter == 0x5, 'Invalid value'); } #[test] #[available_gas(9999999999)] -fn test_random_uint256_to_prover_3() { +fn test_random_uint256_to_prover_2() { let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0x89a405dfb23e546ad03d498e88dee3ba, high: 0xe614bdb3e56768f45a22fd34e999734c }, - 0x0 + u256 { low: 0x4ccd3b3aab8d3e3c4d99af0aa61de9d1, high: 0x8e5ef0503c12ab78b594db03b634546d }, + 0x3 ); assert( channel .random_uint256_to_prover() == u256 { - low: 0x538dd6434921187f80b76fd1d804af3b, high: 0x1172f921f177f82f29a3d97f9cffd2df + low: 0x4220300fcccb24c97922cba73e4bcaa3, high: 0x6c733c0f5ab453eff35531225ebfcf65 }, 'Invalid value' ); -} - -#[test] -#[available_gas(9999999999)] -fn test_random_uint256_to_prover_4() { - let mut channel = ChannelTrait::new(0); - let random = channel.random_uint256_to_prover(); assert( - random == 0xae09db7cd54f42b490ef09b6bc541af688e4959bb8c53f359a6f56e38ab454a3, - 'invalid random uint256' + channel + .digest == u256 { + low: 0x4ccd3b3aab8d3e3c4d99af0aa61de9d1, high: 0x8e5ef0503c12ab78b594db03b634546d + }, + 'Invalid value' ); + assert(channel.counter == 0x4, 'Invalid value'); } +// === KECCAK ONLY END === \ No newline at end of file diff --git a/src/channel/tests/test_read_felt_from_prover.cairo b/src/channel/tests/test_read_felt_from_prover.cairo index fcd89938a..0ff64f9b6 100644 --- a/src/channel/tests/test_read_felt_from_prover.cairo +++ b/src/channel/tests/test_read_felt_from_prover.cairo @@ -1,61 +1,100 @@ use cairo_verifier::channel::channel::ChannelTrait; -// test data from cairo0-verifier run on stone-prover generated proof -#[test] -#[available_gas(9999999999)] -fn test_read_felt_from_prover_0() { - let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0x89a405dfb23e546ad03d498e88dee3ba, high: 0xe614bdb3e56768f45a22fd34e999734c }, - 0x1 - ); - channel - .read_felt_from_prover(0x3a63c21f32409c9ec7614199b40102547e7f698f903bdbbffe56785684b7e04); - assert( - channel - .digest == u256 { - low: 0xc123a2db28e4f285115f8c72934264ea, high: 0x810c2a15f74c5a93239754103cde49b0 - }, - 'Invalid value' - ); - assert(channel.counter == 0, 'Invalid value'); -} +// === BLAKE ONLY BEGIN === +// #[test] +// #[available_gas(9999999999)] +// fn test_read_felt_from_prover_0() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0x89a405dfb23e546ad03d498e88dee3ba, high: 0xe614bdb3e56768f45a22fd34e999734c }, +// 0x1 +// ); +// channel +// .read_felt_from_prover(0x3a63c21f32409c9ec7614199b40102547e7f698f903bdbbffe56785684b7e04); +// assert( +// channel +// .digest == u256 { +// low: 0xc123a2db28e4f285115f8c72934264ea, high: 0x810c2a15f74c5a93239754103cde49b0 +// }, +// 'Invalid value' +// ); +// assert(channel.counter == 0, 'Invalid value'); +// } + +// #[test] +// #[available_gas(9999999999)] +// fn test_read_felt_from_prover_1() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0xc123a2db28e4f285115f8c72934264ea, high: 0x810c2a15f74c5a93239754103cde49b0 }, +// 0x0 +// ); +// channel +// .read_felt_from_prover(0x5652f216d992bbf255b97dd1b0a4dde72fab97f1bbcc4a4f53fde7fc50293c8); +// assert( +// channel +// .digest == u256 { +// low: 0x5f72255a95751e54a4f9704096d61310, high: 0x3c9277c30982b407ad5442334e7771d4 +// }, +// 'Invalid value' +// ); +// assert(channel.counter == 0, 'Invalid value'); +// } -// test data from cairo0-verifier run on stone-prover generated proof +// #[test] +// #[available_gas(9999999999)] +// fn test_read_felt_from_prover_2() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0xfc5a98310398b13c3218fdeb624ec8f8, high: 0x59dfc32f7867d987d2d504e264f97faa }, +// 0x0 +// ); +// channel +// .read_felt_from_prover(0x787521b50c17169b9729a4522e1a0e7bdc028fc8ffdd87c70147bd67c5595d3); +// assert( +// channel +// .digest == u256 { +// low: 0x746ca09ffaaea6826e10c1b343da771e, high: 0x24a6464484140e30a7f7497204b5abbe +// }, +// 'Invalid value' +// ); +// assert(channel.counter == 0, 'Invalid value'); +// } +// === BLAKE ONLY END === + +// === KECCAK ONLY BEGIN === #[test] #[available_gas(9999999999)] -fn test_read_felt_from_prover_1() { +fn test_read_felt_from_prover_0() { let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0xc123a2db28e4f285115f8c72934264ea, high: 0x810c2a15f74c5a93239754103cde49b0 }, + u256 { low: 0x6b78b49c94cbdf349708a9d94a799c14, high: 0x83fed9107fa49a64270e4e0060b93633 }, 0x0 ); channel - .read_felt_from_prover(0x5652f216d992bbf255b97dd1b0a4dde72fab97f1bbcc4a4f53fde7fc50293c8); + .read_felt_from_prover(0x2bfd93b32c219ece244588f15f8aae89867abc7da1a579bf84ca9544f969c53); assert( channel .digest == u256 { - low: 0x5f72255a95751e54a4f9704096d61310, high: 0x3c9277c30982b407ad5442334e7771d4 + low: 0xa55020e872dfef9f7999a8f22098dfdf, high: 0xaaaf25698614d5c0216e7d570510039f }, 'Invalid value' ); assert(channel.counter == 0, 'Invalid value'); } -// test data from cairo0-verifier run on stone-prover generated proof #[test] #[available_gas(9999999999)] -fn test_read_felt_from_prover_2() { +fn test_read_felt_from_prover_1() { let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0xfc5a98310398b13c3218fdeb624ec8f8, high: 0x59dfc32f7867d987d2d504e264f97faa }, + u256 { low: 0x9245c7cf213bdcb501bdf9cb543e29e2, high: 0x4186a538a62f83802cde11ec1f7f4d29 }, 0x0 ); channel - .read_felt_from_prover(0x787521b50c17169b9729a4522e1a0e7bdc028fc8ffdd87c70147bd67c5595d3); + .read_felt_from_prover(0x5ab21b56b09e48e84b089eb21cd476ccb00fa7963b089a9ba9df2a0a5f3e49d); assert( channel .digest == u256 { - low: 0x746ca09ffaaea6826e10c1b343da771e, high: 0x24a6464484140e30a7f7497204b5abbe + low: 0x64c793e5f748d5d8c75d73916db389cb, high: 0x3616f6f0bfece8772bedda20d54a3d34 }, 'Invalid value' ); assert(channel.counter == 0, 'Invalid value'); } +// === KECCAK ONLY END === \ No newline at end of file diff --git a/src/channel/tests/test_read_felt_vector_from_prover.cairo b/src/channel/tests/test_read_felt_vector_from_prover.cairo index a502e875a..c7cf62b0b 100644 --- a/src/channel/tests/test_read_felt_vector_from_prover.cairo +++ b/src/channel/tests/test_read_felt_vector_from_prover.cairo @@ -1,154 +1,307 @@ use cairo_verifier::channel::channel::ChannelTrait; -// test data from cairo0-verifier run on stone-prover generated proof +// === BLAKE ONLY BEGIN === +// #[test] +// #[available_gas(9999999999)] +// fn test_read_felt_vector_from_prover_0() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0x37c8da2f7715c81ecf0b49fa893caf44, high: 0xc02e765597000eceec5ae618a43c0a82 }, +// 0x1 +// ); +// channel +// .read_felt_vector_from_prover( +// array![ +// 0x3b844d8df7b26d71ddac95a77283731a044d0817799b93504c961643e7536fa, +// 0x6eb1a5ad1749834b2625684ee4f1fe4cdff6a2bef8433e7e4f0796d10c80cbd, +// 0x75dc13b4e8e554286a11e29269191a31454de9dd8bd1ff74453d3c8282b9c3e, +// 0x5d91e860db3002e93c93ded748b5c69b806914610831b81772a7c3c8582b492, +// 0x41e5b0b819808f3ee71e801dddd9332ce4bfe3344e1c4a1f98ef7bcc175a654, +// 0x68e0292ec793161aaca50432a7eff9844958933f3d1f0ef42ab4d59602eead2, +// 0x12ed5ff38e0af36126ae3dad7f8c9324b6295a4b5575332f1654b0eb5f2ba9f, +// 0xe748c2e562defed30bd2a97ddf372f8cdff72050ef2fb6d198ec7e26393030, +// 0x7f7703acf716b8a8baeea525fd786e6d758499c15543acc9b8b2543d4e9dc97, +// 0x606233fd51fb776eb76395b33de0e5b66363061ea0686173b7f2bd51120ecb9, +// 0x5aa88ea353d5bcbdcd25060e4dc1f543b5f517b13ded7be39f86f4588184f95, +// 0x696e7876c8317fc8c1b64ecd268bca82152ac03e1d67ecf85c58fdd27472eaa, +// 0x229795a82fc1785c5d1bcefc966d2d4327ffcf405a2fadedf006d6efe8f5d28, +// 0x5dbc9dfb4b87deeb82f1c989dab28eb8238bba970ac6d790bd2bd747150dded, +// 0x7dbf60320086c11016809745ab2aca3e78a857cc77adaa157f39e73cebd40ec, +// 0x7683f9ad2d57da120622c1831d2f2bc2a21c6c89db08a8dc99e4e2cb4db0a8a, +// 0x240d9b78177254aa4901e4d020c99f3f8c83800c46645c0d98781c89a889d9a, +// 0x63d07342b1248a884ed81d8ff276960982f30412232b5eb0e82bd2fee795dba, +// 0x138b1c827c50360ee6044e071af128a59244515e6f0d25711520cdcc73137ef, +// 0x3ef3ea7d0ed81a0fb837e9d978cafb1d50d9ff20eb0177cf67eefbf5e094c77, +// 0x644e69300f7345d84329457a43b888423a3d465b303078ad97694882347a708, +// 0xc3ba2e34998f165a1e9b6d39e326b840b9624455617ed6b3ab6797e79e7caf, +// 0x7dcff7dd27d1406d84e194d2a4a514375844327f4657f81c57c0a9780bdec7e, +// 0x5a7f0e7321ed0fd6002caa89e847e828625862739631c23eeb6b1608a6877e8, +// 0x7ec3aa585e55878ec09fc43a4c27fa9c6e1650e3a5f40a3f068a8c1edac55cf, +// 0x4485c63701197e83d82abc2005661d9caaaf16d06f79b554e8497343704650f, +// 0x7a5547e58a3c521e3f1aa05f9fe92ec5b67acf8160412ea40b124cd6abb409a, +// 0x61edcece581dfc7c362d5c68413a318a2a13067056735b6f25efa234a8de781, +// 0x52d5c55126361364bc851e93109aa850fa97b3c52ff2037943b286ee6945f24, +// 0x1874dc6edd4f2907f6d7853dd484138a1ff5dd970345616637b178180f72016, +// 0x5c13969e0080179173365d04a5291827a1867b9bb741bfc79fdeb18bdb127b, +// 0xc313755e3efe95b1719e3673079bb9a8e65abc715f4272c0ec82b05576a5d4, +// 0x70c40cd969fbb58e0ce8fb8156e75ec643198f1655756dd4345731bdda82457, +// 0x1ed92b204747f07d2d7d71b6b0c2c714deffd15630dded2baa4e3cd91d6a6, +// 0x207b8a3383d80b4e472b398348aed1c1d5d297a9f65ae3dcae1db0d6759b2c4, +// 0x54e9862b9031fc989203051d100afac6f79ca47b45b9a8dc7a489631098bc57, +// 0x58bcee8afb1cfa88accd584055bbd789dc3ae2078bc24b707a3cbf3d0b406a, +// 0x3db80e4ef29231ced584222388716ae2f1fe22a2ee2b0e78d7eec08a2fcc617, +// 0x372efeacd11ce8c0baa8181fac21e3a0b81bdbcbe9804fb049b049b157aab3c, +// 0x44cf712a574df01e17dadb8536051e939243d5a09653783fa8df7a2340bb0c7, +// 0x572b6bfa27ee798bc99814d57c0e3a6a3c1271ae0a15f21cfc879bbb0e1447c, +// 0x659e7542be990fd7964775bbb4ffd6312da031a8a75f58619b9fbcbb45ab862, +// 0x307c0e7fb6099f26ab78a02fec97a50ccc5af6f3352b06f95b983bd7d42216f, +// 0x4f3181ab68c2bfeed59c6581be75f03ceb1f75643627f31c0fbeedf86f42eb5, +// 0x19425c4b4d24775ec1d7af92a56152108b62cbb132dee8d55cf57abbe7fbefa, +// 0x4fd54238eb975cbc26dc0df31fbf9578f4343910edaba2763dcc0504ee34ccf, +// 0x6d948775eef790de896d9a2398764cce026083b1230727fb9d0ab1ded7f4078, +// 0x521fe547fd42527e366950ce2e03049be2af52f8014dda1c8c26726c07da0b6, +// 0x79ba9a8b07219cbbdadcc343a88ae06619214a2d889a4288e3803a16d9fa8d0, +// 0x4c02186dfe672284ecb4debe18262098a3d4da503fe0a3faba3b6a1b9cb24a0, +// 0x169cba5fc545966849d5ca4a04c6543274d8ce2062bac7b031905a236d34947, +// 0x5ca15ebaa6a4cabcd2ff1b57104f6016078caa2b7b75359f6dcd6768e20ffed, +// 0x6eebdabdc4004547e4d0b3498e482206e0b53aef4173833cdb9604206df874b, +// 0x73a44590298020a85aad91f4c24dc904858af2a4cb6db5deb48e08737cb6cd8, +// 0x2b730dea711f9e6c71bba2dc6f98a44f8b44ca7ada4def018e19d68523345a4, +// 0x60b9f200e5d6716a88a77906875f3e3bf36b72ce5f68d7daf71779e6b605768, +// 0x62d04931b023c1589b34cae1fb6deb5cfe9e94e1dc55d37dd75b6a3e7422888, +// 0x7cf7edb764e6c56c696a0a309825da406c5544f59a312c5be93b0af3f7b7b92, +// 0x1ff628b40a85fec511117f3b16dd2e4d85a736a27d0d7f3c522c0f4d12237eb, +// 0x531a594ceb7df07524258e025744818b45172044f4630da3af2dd204e45705f, +// 0x6cde7377d376d15ddd1644a4f0a01abd299b014a9d6b371be51bb693e47fba, +// 0x27fdaea9d45e8b4736145c45a1e6f28376aad57522e9db7d2c82b437aef410, +// 0x511cd012f11b52ff77b3176aa6989c1e3717134dbaf4ba25d1ecfddae6d1dd3, +// 0x6f4db519f699a96f0d7c31aed14fa67e5b4cf512b41a188dfd05ef2516d22fb, +// 0x383f290213017ea0c013f1f6f017313484607d086b1d532cfb01c75fa62bfdb, +// 0x63035854e7a9ece60ec27e05ee24b3e8e33fcd66f69f74072029c7cf888a708, +// 0x69687f44312ff1c549e15f217d7a05f5d8b730cf6ba2f0b79469ea2aab44fd2, +// 0x62d482089605df042e99352b47cb7b0b5745ef70f10ded966e8a2d870af38ca, +// 0x6becfa5e1ecf7017ffbc3dd18d59f2c35918bbebb03a8e733bd8e6a8e5a7153, +// 0x2dfdf010e2d014f0a2a0ddd980cf270538d4821737c7cffd5ae35879627c035, +// 0x93732663ebed60e68ede807f8c0376e38e093cbdce185e0e59470aac5b90ef, +// 0x980b7aa5e884a1d9d06c64c3529d7c4f8cd82344f57c58fb8f33e083379005, +// 0x7a01e04e34a5e2d6e1b81e433236a3c997933bd4e24329f2632eab796d14993, +// 0x407cd2e7882070607f7ac384adb97013b42140e2e86be3851c09e38185911a7, +// 0x7c96759b0eefa2ba71c5a83cd18aee4163f1823bfa56703b790c6107dbf8d55, +// 0x5f8b457e268f2c4cdd19e4cfee839de5d54263ca574a2a2c1a8a0fde6f680b1, +// 0xe45237d0e9527b8349ac30395b8b4edb39e9828b377a69fd1b028d127bc3cf, +// 0x4eb254a9333589162bdec968e7342ce56733d0cc3d1119414a38a8ef38f052a, +// 0x7c1ebdacaa499725b5b5066ae78dc73a730b6941aa5f89d9f064af4ead97294, +// 0x5ecbbeb0fd4df85b7a97cc1192dd59dfc5b483cd0d230274cc04e5ca063ca3a, +// 0x6fd5f158bdb22d4ba47967fce9032e20bdafc7f98a58620aa66a69f651be44f, +// 0x17a5acc1b4c2f74c9b7b21873837bfe355edc63b70aa7c748eee11d8de9f646, +// 0x1c111d2c257fb6a6fb826ead1f994971f528105bb2fd04b339759f5199f96ba, +// 0x51aaf4b65bfc8dace07fde3f9ea5966848a1c7ef96ac91dffbe3c6ecf39cec1, +// 0x5e33e6e50fa05337c6aaf111d3371a5869d1f3e418e84a8b92f9f6789bd6a98, +// 0x49ba34c8cbdc2818f4f09c4ca7484d9a0a2c7f8bce743f08ceac127dd17fbdb, +// 0x34b1417dd68894b89cfff52f89642bda9524de53e4fa22103aa3ee7f00366fb, +// 0x7664cbf6da8ad539b0b9ed7b9a86b06cc5f80f639e995c0973e285efdb779a8, +// 0x3108e8a3aa756c138343ae9a9676ed77f5e3da60cf519fe2863baf9f114c004, +// 0x371568ef4831cfff4baeeaa9142f749596b68202c3500fab27993fab77f94bb, +// 0x2013ab48977221f9b9861e0d721f563f7853c20222560ead2717f1d668d8e7c, +// 0x67b389022e2e540b2cb55ebee82d08b218e186c7169d8a4b99815ef7088738, +// 0x275d7eb58495f33c3e03a327146743ffe91eed27b0c7c3501b2c50e0a166ad5, +// 0x2cb9eb5d9cbe6495c048aa1eb6faf9f5c0246853832135009cbbec955027bf3, +// 0x635663b9e2ef0c57ae830064f0bece8f18d3276f6dd1242a91ed45f067918ce, +// 0x73a0767432cddef3e0654942d64bb8b4802334b795250ae4ebbf84200cd226, +// 0x65ee582c948b8c4ae64b2eb31affce5771d3fb6437d60e7e5669a0a12f59d21, +// 0x1ebb003fedab8cebd11c4e7fedffa3937e5888e1be2bf90b163c5392c6d00b1, +// 0x25a290f232a1bafb1c97efbfb4a5a7f6a2c2023b1ab3344b44ccca30f514eb4, +// 0x473aaf24106c820bf7a87d8e781626b0a534d674ed814df151ad31c1a7a2c4e, +// 0x4fd4711443d02452732fe7304ed5367472b24a37404d4203e552699df38e1e4, +// 0x27fca6dd6064dcadf604a7cd878dd6591c2eceacef36ac0f64bcdf8d50bc143, +// 0x51186a24a0768ddec0a2ab60164139499df0022ceab15e480fae9e3678f8a68, +// 0x7c563abd1420f288bf0b7dfb184af9c8c24017fe652d9e58d8caa3784b445cc, +// 0x2a7dff406b5c7b8e910676df491ce42202a037b4b1129b243040fa99a05a81a, +// 0x6f8512bf92c7b4a875abb184a245db46fd43cd2908ce912bda10762fd337d50, +// 0x51530afb2758fa99dafe378aaa89493d8631de864f53f3d423396ba2fc165c7, +// 0x39fe7a0520ea8d4dba51062dee07750a1b77a3e28dc7374f66c6eee8ac846ff, +// 0x6e1f1cd0082420e0c59b2d12d972dfe1d943d66670d4abdd355ce036382a691, +// 0x11aad3cdaba675421e2b3fba375eb2687306e6742cca1d03fe3371a1df217b5, +// 0x7722d41c190586dbc84ec13fdd5ec42d7702f158bc1cc29f08ef3ed19ac862f, +// 0x449eca9e55b688a369bf360d6096751456a33168c9ec38e986447c9895ef98, +// 0x65339aa37351112d383def9d140b3602cb88bb9decda842fdf1208a6a7f0a4d, +// 0x6630d06f5c63e320deafd2c6a4cc5bffbfddb614d347bf1d607d983d404f0b5, +// 0x1a4913a89f0fadaf62bd689eec4e9edb14213aaebfc307aa591c916c54b830a, +// 0x3a79548f79577c04dd286ad1db64b38dbf32f9b6fa937168c46d2e98dd76d32, +// 0x283055e9bf6b05db39cce849f8a6be5419b1ee2106316967b1514f5bea44c45, +// 0xf88adab6614d6d445db04fc7cad589cc19a67d6ba3500f64c3effcecfab112, +// 0x47c09554878d8fc2afcfa0b136cc3adc102cd6c790b7cfcbd4cc33932a720e, +// 0x4c9be49cff06dd947e1f8016f0e65ca839201072bb0ecf54f4e49023d2ca878, +// 0x3a57b0961dc7b48db58921d1f6532fc6ac7bd73b0713a80074c6f6b78cc7219, +// 0x7d2e0924dacacd0de5d7cd1d74e357fc90e83b28c964800011c2d3bb39f6ec4, +// 0x76d089ceb84af74183cf948602f3724a32783a669a61715c12e017ec3eca29, +// 0x7fa727777d52242828b4e0ac59ccabec6939789e90a6109882b57903cb1a88e, +// 0x58803b504852d9baae0acea9b94893808f8428d3f1b66fdc3e95b35e9231a3f, +// 0x32d904eca7ea63e7174ab1f19d0430ca1f8daddf03c7b400cee6380c4f4cd8, +// 0x5dfb739807b4cb1fe4387475630c52f0b44a2f92bdc2718e872273c4b4fa013, +// 0x733caba128dc8696c58e20e8f451c63dc8711ff6d6e4ec498b5de3b07f0bb47 +// ] +// .span() +// ); +// assert( +// channel +// .digest == u256 { +// low: 0x15aa9b8787d877d61588844c0cfe2fb9, high: 0x7cd36c3da65b8d57331341e661a86574 +// }, +// 'Invalid value' +// ); +// assert(channel.counter == 0, 'Invalid value'); +// } +// === BLAKE ONLY END === + +// === KECCAK ONLY BEGIN === #[test] #[available_gas(9999999999)] fn test_read_felt_vector_from_prover_0() { let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0x37c8da2f7715c81ecf0b49fa893caf44, high: 0xc02e765597000eceec5ae618a43c0a82 }, + u256 { low: 0x8e4cee6aca99678b0c48b0c760f65a0f, high: 0x9cbd8bef901d845a9c1322e1d1875440 }, 0x1 ); channel .read_felt_vector_from_prover( array![ - 0x3b844d8df7b26d71ddac95a77283731a044d0817799b93504c961643e7536fa, - 0x6eb1a5ad1749834b2625684ee4f1fe4cdff6a2bef8433e7e4f0796d10c80cbd, - 0x75dc13b4e8e554286a11e29269191a31454de9dd8bd1ff74453d3c8282b9c3e, - 0x5d91e860db3002e93c93ded748b5c69b806914610831b81772a7c3c8582b492, - 0x41e5b0b819808f3ee71e801dddd9332ce4bfe3344e1c4a1f98ef7bcc175a654, - 0x68e0292ec793161aaca50432a7eff9844958933f3d1f0ef42ab4d59602eead2, - 0x12ed5ff38e0af36126ae3dad7f8c9324b6295a4b5575332f1654b0eb5f2ba9f, - 0xe748c2e562defed30bd2a97ddf372f8cdff72050ef2fb6d198ec7e26393030, - 0x7f7703acf716b8a8baeea525fd786e6d758499c15543acc9b8b2543d4e9dc97, - 0x606233fd51fb776eb76395b33de0e5b66363061ea0686173b7f2bd51120ecb9, - 0x5aa88ea353d5bcbdcd25060e4dc1f543b5f517b13ded7be39f86f4588184f95, - 0x696e7876c8317fc8c1b64ecd268bca82152ac03e1d67ecf85c58fdd27472eaa, - 0x229795a82fc1785c5d1bcefc966d2d4327ffcf405a2fadedf006d6efe8f5d28, - 0x5dbc9dfb4b87deeb82f1c989dab28eb8238bba970ac6d790bd2bd747150dded, - 0x7dbf60320086c11016809745ab2aca3e78a857cc77adaa157f39e73cebd40ec, - 0x7683f9ad2d57da120622c1831d2f2bc2a21c6c89db08a8dc99e4e2cb4db0a8a, - 0x240d9b78177254aa4901e4d020c99f3f8c83800c46645c0d98781c89a889d9a, - 0x63d07342b1248a884ed81d8ff276960982f30412232b5eb0e82bd2fee795dba, - 0x138b1c827c50360ee6044e071af128a59244515e6f0d25711520cdcc73137ef, - 0x3ef3ea7d0ed81a0fb837e9d978cafb1d50d9ff20eb0177cf67eefbf5e094c77, - 0x644e69300f7345d84329457a43b888423a3d465b303078ad97694882347a708, - 0xc3ba2e34998f165a1e9b6d39e326b840b9624455617ed6b3ab6797e79e7caf, - 0x7dcff7dd27d1406d84e194d2a4a514375844327f4657f81c57c0a9780bdec7e, - 0x5a7f0e7321ed0fd6002caa89e847e828625862739631c23eeb6b1608a6877e8, - 0x7ec3aa585e55878ec09fc43a4c27fa9c6e1650e3a5f40a3f068a8c1edac55cf, - 0x4485c63701197e83d82abc2005661d9caaaf16d06f79b554e8497343704650f, - 0x7a5547e58a3c521e3f1aa05f9fe92ec5b67acf8160412ea40b124cd6abb409a, - 0x61edcece581dfc7c362d5c68413a318a2a13067056735b6f25efa234a8de781, - 0x52d5c55126361364bc851e93109aa850fa97b3c52ff2037943b286ee6945f24, - 0x1874dc6edd4f2907f6d7853dd484138a1ff5dd970345616637b178180f72016, - 0x5c13969e0080179173365d04a5291827a1867b9bb741bfc79fdeb18bdb127b, - 0xc313755e3efe95b1719e3673079bb9a8e65abc715f4272c0ec82b05576a5d4, - 0x70c40cd969fbb58e0ce8fb8156e75ec643198f1655756dd4345731bdda82457, - 0x1ed92b204747f07d2d7d71b6b0c2c714deffd15630dded2baa4e3cd91d6a6, - 0x207b8a3383d80b4e472b398348aed1c1d5d297a9f65ae3dcae1db0d6759b2c4, - 0x54e9862b9031fc989203051d100afac6f79ca47b45b9a8dc7a489631098bc57, - 0x58bcee8afb1cfa88accd584055bbd789dc3ae2078bc24b707a3cbf3d0b406a, - 0x3db80e4ef29231ced584222388716ae2f1fe22a2ee2b0e78d7eec08a2fcc617, - 0x372efeacd11ce8c0baa8181fac21e3a0b81bdbcbe9804fb049b049b157aab3c, - 0x44cf712a574df01e17dadb8536051e939243d5a09653783fa8df7a2340bb0c7, - 0x572b6bfa27ee798bc99814d57c0e3a6a3c1271ae0a15f21cfc879bbb0e1447c, - 0x659e7542be990fd7964775bbb4ffd6312da031a8a75f58619b9fbcbb45ab862, - 0x307c0e7fb6099f26ab78a02fec97a50ccc5af6f3352b06f95b983bd7d42216f, - 0x4f3181ab68c2bfeed59c6581be75f03ceb1f75643627f31c0fbeedf86f42eb5, - 0x19425c4b4d24775ec1d7af92a56152108b62cbb132dee8d55cf57abbe7fbefa, - 0x4fd54238eb975cbc26dc0df31fbf9578f4343910edaba2763dcc0504ee34ccf, - 0x6d948775eef790de896d9a2398764cce026083b1230727fb9d0ab1ded7f4078, - 0x521fe547fd42527e366950ce2e03049be2af52f8014dda1c8c26726c07da0b6, - 0x79ba9a8b07219cbbdadcc343a88ae06619214a2d889a4288e3803a16d9fa8d0, - 0x4c02186dfe672284ecb4debe18262098a3d4da503fe0a3faba3b6a1b9cb24a0, - 0x169cba5fc545966849d5ca4a04c6543274d8ce2062bac7b031905a236d34947, - 0x5ca15ebaa6a4cabcd2ff1b57104f6016078caa2b7b75359f6dcd6768e20ffed, - 0x6eebdabdc4004547e4d0b3498e482206e0b53aef4173833cdb9604206df874b, - 0x73a44590298020a85aad91f4c24dc904858af2a4cb6db5deb48e08737cb6cd8, - 0x2b730dea711f9e6c71bba2dc6f98a44f8b44ca7ada4def018e19d68523345a4, - 0x60b9f200e5d6716a88a77906875f3e3bf36b72ce5f68d7daf71779e6b605768, - 0x62d04931b023c1589b34cae1fb6deb5cfe9e94e1dc55d37dd75b6a3e7422888, - 0x7cf7edb764e6c56c696a0a309825da406c5544f59a312c5be93b0af3f7b7b92, - 0x1ff628b40a85fec511117f3b16dd2e4d85a736a27d0d7f3c522c0f4d12237eb, - 0x531a594ceb7df07524258e025744818b45172044f4630da3af2dd204e45705f, - 0x6cde7377d376d15ddd1644a4f0a01abd299b014a9d6b371be51bb693e47fba, - 0x27fdaea9d45e8b4736145c45a1e6f28376aad57522e9db7d2c82b437aef410, - 0x511cd012f11b52ff77b3176aa6989c1e3717134dbaf4ba25d1ecfddae6d1dd3, - 0x6f4db519f699a96f0d7c31aed14fa67e5b4cf512b41a188dfd05ef2516d22fb, - 0x383f290213017ea0c013f1f6f017313484607d086b1d532cfb01c75fa62bfdb, - 0x63035854e7a9ece60ec27e05ee24b3e8e33fcd66f69f74072029c7cf888a708, - 0x69687f44312ff1c549e15f217d7a05f5d8b730cf6ba2f0b79469ea2aab44fd2, - 0x62d482089605df042e99352b47cb7b0b5745ef70f10ded966e8a2d870af38ca, - 0x6becfa5e1ecf7017ffbc3dd18d59f2c35918bbebb03a8e733bd8e6a8e5a7153, - 0x2dfdf010e2d014f0a2a0ddd980cf270538d4821737c7cffd5ae35879627c035, - 0x93732663ebed60e68ede807f8c0376e38e093cbdce185e0e59470aac5b90ef, - 0x980b7aa5e884a1d9d06c64c3529d7c4f8cd82344f57c58fb8f33e083379005, - 0x7a01e04e34a5e2d6e1b81e433236a3c997933bd4e24329f2632eab796d14993, - 0x407cd2e7882070607f7ac384adb97013b42140e2e86be3851c09e38185911a7, - 0x7c96759b0eefa2ba71c5a83cd18aee4163f1823bfa56703b790c6107dbf8d55, - 0x5f8b457e268f2c4cdd19e4cfee839de5d54263ca574a2a2c1a8a0fde6f680b1, - 0xe45237d0e9527b8349ac30395b8b4edb39e9828b377a69fd1b028d127bc3cf, - 0x4eb254a9333589162bdec968e7342ce56733d0cc3d1119414a38a8ef38f052a, - 0x7c1ebdacaa499725b5b5066ae78dc73a730b6941aa5f89d9f064af4ead97294, - 0x5ecbbeb0fd4df85b7a97cc1192dd59dfc5b483cd0d230274cc04e5ca063ca3a, - 0x6fd5f158bdb22d4ba47967fce9032e20bdafc7f98a58620aa66a69f651be44f, - 0x17a5acc1b4c2f74c9b7b21873837bfe355edc63b70aa7c748eee11d8de9f646, - 0x1c111d2c257fb6a6fb826ead1f994971f528105bb2fd04b339759f5199f96ba, - 0x51aaf4b65bfc8dace07fde3f9ea5966848a1c7ef96ac91dffbe3c6ecf39cec1, - 0x5e33e6e50fa05337c6aaf111d3371a5869d1f3e418e84a8b92f9f6789bd6a98, - 0x49ba34c8cbdc2818f4f09c4ca7484d9a0a2c7f8bce743f08ceac127dd17fbdb, - 0x34b1417dd68894b89cfff52f89642bda9524de53e4fa22103aa3ee7f00366fb, - 0x7664cbf6da8ad539b0b9ed7b9a86b06cc5f80f639e995c0973e285efdb779a8, - 0x3108e8a3aa756c138343ae9a9676ed77f5e3da60cf519fe2863baf9f114c004, - 0x371568ef4831cfff4baeeaa9142f749596b68202c3500fab27993fab77f94bb, - 0x2013ab48977221f9b9861e0d721f563f7853c20222560ead2717f1d668d8e7c, - 0x67b389022e2e540b2cb55ebee82d08b218e186c7169d8a4b99815ef7088738, - 0x275d7eb58495f33c3e03a327146743ffe91eed27b0c7c3501b2c50e0a166ad5, - 0x2cb9eb5d9cbe6495c048aa1eb6faf9f5c0246853832135009cbbec955027bf3, - 0x635663b9e2ef0c57ae830064f0bece8f18d3276f6dd1242a91ed45f067918ce, - 0x73a0767432cddef3e0654942d64bb8b4802334b795250ae4ebbf84200cd226, - 0x65ee582c948b8c4ae64b2eb31affce5771d3fb6437d60e7e5669a0a12f59d21, - 0x1ebb003fedab8cebd11c4e7fedffa3937e5888e1be2bf90b163c5392c6d00b1, - 0x25a290f232a1bafb1c97efbfb4a5a7f6a2c2023b1ab3344b44ccca30f514eb4, - 0x473aaf24106c820bf7a87d8e781626b0a534d674ed814df151ad31c1a7a2c4e, - 0x4fd4711443d02452732fe7304ed5367472b24a37404d4203e552699df38e1e4, - 0x27fca6dd6064dcadf604a7cd878dd6591c2eceacef36ac0f64bcdf8d50bc143, - 0x51186a24a0768ddec0a2ab60164139499df0022ceab15e480fae9e3678f8a68, - 0x7c563abd1420f288bf0b7dfb184af9c8c24017fe652d9e58d8caa3784b445cc, - 0x2a7dff406b5c7b8e910676df491ce42202a037b4b1129b243040fa99a05a81a, - 0x6f8512bf92c7b4a875abb184a245db46fd43cd2908ce912bda10762fd337d50, - 0x51530afb2758fa99dafe378aaa89493d8631de864f53f3d423396ba2fc165c7, - 0x39fe7a0520ea8d4dba51062dee07750a1b77a3e28dc7374f66c6eee8ac846ff, - 0x6e1f1cd0082420e0c59b2d12d972dfe1d943d66670d4abdd355ce036382a691, - 0x11aad3cdaba675421e2b3fba375eb2687306e6742cca1d03fe3371a1df217b5, - 0x7722d41c190586dbc84ec13fdd5ec42d7702f158bc1cc29f08ef3ed19ac862f, - 0x449eca9e55b688a369bf360d6096751456a33168c9ec38e986447c9895ef98, - 0x65339aa37351112d383def9d140b3602cb88bb9decda842fdf1208a6a7f0a4d, - 0x6630d06f5c63e320deafd2c6a4cc5bffbfddb614d347bf1d607d983d404f0b5, - 0x1a4913a89f0fadaf62bd689eec4e9edb14213aaebfc307aa591c916c54b830a, - 0x3a79548f79577c04dd286ad1db64b38dbf32f9b6fa937168c46d2e98dd76d32, - 0x283055e9bf6b05db39cce849f8a6be5419b1ee2106316967b1514f5bea44c45, - 0xf88adab6614d6d445db04fc7cad589cc19a67d6ba3500f64c3effcecfab112, - 0x47c09554878d8fc2afcfa0b136cc3adc102cd6c790b7cfcbd4cc33932a720e, - 0x4c9be49cff06dd947e1f8016f0e65ca839201072bb0ecf54f4e49023d2ca878, - 0x3a57b0961dc7b48db58921d1f6532fc6ac7bd73b0713a80074c6f6b78cc7219, - 0x7d2e0924dacacd0de5d7cd1d74e357fc90e83b28c964800011c2d3bb39f6ec4, - 0x76d089ceb84af74183cf948602f3724a32783a669a61715c12e017ec3eca29, - 0x7fa727777d52242828b4e0ac59ccabec6939789e90a6109882b57903cb1a88e, - 0x58803b504852d9baae0acea9b94893808f8428d3f1b66fdc3e95b35e9231a3f, - 0x32d904eca7ea63e7174ab1f19d0430ca1f8daddf03c7b400cee6380c4f4cd8, - 0x5dfb739807b4cb1fe4387475630c52f0b44a2f92bdc2718e872273c4b4fa013, - 0x733caba128dc8696c58e20e8f451c63dc8711ff6d6e4ec498b5de3b07f0bb47 + 0xe2470d21d096af3e052c0acdc6e8ad0536f687a57696ac137bee14abcd9ae1, + 0x1540d17d0d63374f10075560b4abd1e58b0ce51e4d5609fcb7ba1533b8a910e, + 0x23b530db413d54c606ae6d67eaffa00f82543a490a25b46a9b1be73a3915898, + 0x1ddbcfaed0b6e5d0d63a29f77f823c5efe9fa5848b0c11decb0618d35405123, + 0x7cb4933e47bfaa631515a5b8aafd8283770953826dc0f2bcd03b819032dce07, + 0xbcbe93d4fc52d418ec5ec74ddb8f50947773ae9a5b74acde219d0d3df4ce4f, + 0x464b5840ae91979c0a9c07f1e404f6255661ba3a9c0966892f3a51febf66875, + 0x7bb54c81ca82a69e6ca94e9158c87fed83154dccd5e7398ab378e52d1bd87b1, + 0x73a6d999d4cb6782928d93bebf9ca8ecf3f8fc0f45ab5264580a6a0e3265560, + 0x5da0236cad8f9393dc6fe882a7a9485992e34596be496d4b571b8bc3c7149e8, + 0x22e988512ba3c4f4717aa221034e483b5e5f496b7d30837fed2b9011cd5e2c5, + 0x282c1185c0ded55a8bb6529b38836deb3e20b4e63b5b1f3820bbf2a485fb8ac, + 0x774075dfea2cd47e5c13af54e302faf607dff2252fb8d897b8e14d2f6451ec5, + 0x6b51d0297cb76919cc200b2492a29fb38566f4ce7c2efc89329bec401041446, + 0x34daeedff32671c70b2bd41e6d9a3d0c0ec7888d3a46d175105c24e48ecfdff, + 0x74f5386f824e8631d33da4e22527565527b15bfe4a89778afc5ef497ae1be68, + 0x57e419c71b95cc2405897a420ad00c12673c1e473da836e54feafd9cb7887c, + 0x78abac64a4c6dd9e8aaaff1d3bb4583d895fb5eb54db7fccd93f7d852750fcd, + 0x7eed254fcae8bafcf9db87725875724caf8fb5282de32829829112bcea8264a, + 0x4d65a5ba98c375621ad66d3e9883801dac50a5d2adb53ad2bc9eddc463a593d, + 0x155419128de06c3ed2822237f8493fbac2036e7418d4bccc67fe8f8703a3115, + 0x36e3af94fd16884822d78a644df102db224a7cd591c900a1658dbc52c853ef7, + 0x2a2161b2945c18e6d22924a02a5625b6377c0f68c40b61bece7ad55b8fefa55, + 0x26e365d65c76d7f5f5ffd730c4b05518c5b5eb0adbf66273a574e7b395c5f7a, + 0x1733be9c68633950bd3e79c03eea0183777e4866e842b7145938b20bd3c8622, + 0x7e011a436b401ab666b5b0e1ac194bb6454cd3f88d7de70c03e14d84bb2d8fc, + 0x617b1c0f64766c07ffd9bf7c0eed8bec66f8024a0bb309650095110993dbc76, + 0xf5c259c907c9cf111bcdb9050b3e737e5193a5ba65eab0ceff8b1b7edf7633, + 0x223f68bc8ee6cfc58aed327f8c3d33d552fce6defbc11ced1ef4a27c2089a0b, + 0xa7620e3a72ee9ab2663c4a2a6eaf3bef3f24582fc751d3c0f4aee0d000c826, + 0x518b632f274312a3343e95400edceaa0ed79424fdb5bb9108d6998fe8f24aa1, + 0x7470d9bad030a06248d5365184ec6d580dc4e24e1721ecb4f27a9c0e37b6a97, + 0x5f48014b033a2ba83d3f40ea904a530429d606a1854879d19acea79559e8f7a, + 0x4c1ccc9bd3675bbc562232f3a87a94808cbd3bc6a4563dc037c87d55a46a5f5, + 0x3156dd4e5be4c184162716e8097e6f19cf8a5eb454afcd5f36a88c6d9332883, + 0x31cf4462724e6c5f5a7670751e749541acee0e8061c003615582495b941a5f, + 0x59d3ce5574f18c6d817ae40b9f1d909d665645e602e22ff0ca58a864809a36e, + 0x6829d4908042988ab2225227486dd4a2d57fe8c85e818c671e81a8647e07ee3, + 0x79239120db10642b4763ff143b45ceae079f1887a03d375456204b1a252718, + 0x5f6db8b15ebceec528008a65215dcda77bdf3fdba30b82d63af90597d0a5de4, + 0x5446cc62329a7db3e15b2246b7c70697c1686d3d42b869d95d631c4e0842df6, + 0x1a628ed4c50af09f7eb94a763422b4bc1afbfd053ac60f8dbfcd068021e4157, + 0x71d7ffda5d9af0cf6b2937e8299c7a718551dea8478b8a8bea3127179c00340, + 0x3a5f51a8e9642c62078cd68b6492edc96ce1f44698d121de4533ff9d49254ee, + 0x2eaa1f06ee179308e745679a12ff408973822e3fe493fa2f8b231beb1ffe613, + 0x26e3447e6e8e8fbe6704d0181185df5520d3218ae4dc671c95b5619dd4ed7c, + 0x5230378761f39c569474219cc341556b59e8c096c38a1f2d8614b619bc02901, + 0x3256250facf1894391b631ec89e3223a4eb9ae796372d687bf07502b749b18, + 0x1fffa9e348bdb58d0168089d2287c6fc22de12fd1358fcff9551aa3ecbc98e8, + 0x55bf531f3f0ce3d5a17c25bb9b9b2e2dc03e88d2dcb8d4fe7886a1fcc14de81, + 0x3affd70b366743930366e01ceee9b7efd718a9cc832f11e5da3f7537df0a563, + 0x1d00f663e329bb6167998b08afcfa63f5e83a6bfd0b1977e3dca864b515a616, + 0x1de8ac1437154c6819e3bf623fd6c38e7576ad180d745da98e1fa8308ec17b2, + 0x64727d22bd59c565e8396d836e0359c1b61b7b635bab74dbcac8c568cfc4b8c, + 0x5315b4943a98c8d5b10054db7542a19c01cabc5e23b7c3623094a01b3e4956b, + 0x5f0a3930dcabb13f88824a86e255db7599cf02b64e9e927398dc9c2b1695d20, + 0x61610a9f080e6ef8c09bddec81f58541aa278ccc75323bf93486b3f11d0d94e, + 0x10e321e30890755cc72c3c365ba012933b718ca844e918ddca290a649b3f461, + 0x7164979939bd1984c8675f27ebbb00fdba984b5512b9245e7b5a5f8c321f751, + 0x7d75aab6b98d1060fe5e358e53152b968f522b1288a454f719c10e579ef0e48, + 0x71748fbb0feb483ce4bb5fa5cc1cd2099ef37f58086d67a9c660d8147ea6430, + 0x5450937097e3261cb7d8aa271a291ed0b6c876336138a2e6d519f2b5a3a6848, + 0x7c232de2f373d42e531d1b2c898700fcc71962032c5916e1c7068c059b11828, + 0x18c46abcb0fc50c930ba3e1dd9a72f6e9e9d84830cf3a2dba4946c8adac131, + 0x6d952b121991ed0e14635a60c3d13318b3534625a173a646aa1cc031025e315, + 0xd2ca0fdbdd5f2201ddc7a101648db88ae79a81abd3b7e2c1f051efb9fb2738, + 0x49e8b4a9267c87b311cb1ab599d654af51666fec8bc0a15833130d96a67ecc2, + 0x7e906fbfe18804a573e0ea05af609f70e1c273145578116a3b0a07540a0b1ae, + 0x5207931c8b8ec21334a4cd73042ae646d097500b4dd633843feb8b8a09c384c, + 0x492f8ae0750d4293446453a0a848f68c3333827191f481cdc98585a1d40c2f4, + 0x1a1ced13cb334fb0a1203e4e404c47e292f90a231d1fc518ead14bcd2f7d008, + 0x2738dd19736366adc65d640a64cb49a5b5ab42ef8ab573ed8ee81b51384c06, + 0x2c3ae350f80ab38149b81c444371345842352b07a38f5d45f6c56724cbe9e35, + 0x790146e39631a6e53672a06873a65ab363a6c71d9936556adf31206d5c8c2c4, + 0x6d85606d5acb0bd41a46f19c3ee0bbf64370059b48590f9a57961b7e5b457d, + 0xb3eeb58d5468759549e68c224101712be89d38df8e16c7b5ace53c2df8d4af, + 0xa4db0e34f42e699b7e0cac99b5800f95d973000592b24ca6a4d1c5129a2f3a, + 0x53a9633390a0de2152cd8e8a62bb08eadb99419dcf7b11c6b01f0d60e909537, + 0xbaf6a6b22c611b65d6c87d98aeadba821e7b64379d1f471a63dfa48bbd2299, + 0x16d372d6404286120cc07d83cf068fc45ada98a0bb421090a77d93fc615b7c6, + 0x5b80d50ef057a69f33bc09d85f92db3849ea0c8ef71f99cea7d0d31d3cf242d, + 0x5f0f396201501f31b4f3bdf82ba56242ed1e5a1512175f85900344188bebe4, + 0x18d3524c7d0e0d4889cc39dd92bffefa67c7ea2b4910118b76825093d125e7f, + 0x424e4ad45eae02216efe20cdf55944fc6a605c3bd55d845e4314708a72bcc4b, + 0x45cdfa5bf5208066596b18c23b6f73379b7d8e867e5123048997a4f4f59c3bc, + 0x317c94c9d1dff21fb3aecd3289c316a74b6070820feb73a390cc1d4624583b0, + 0x486759706bf98d17d4f66cbb16761f556621090bdf54a1aa657201f28a55a91, + 0x78ac0e52978867a2b9706eef1796584eb84422e087c5b7ba6e56e700ec5a655, + 0x50fb86b7207c24bb973c7b8947152abc189bdf201569b1dd50576d5c4d01cef, + 0xf2500af6e737837742b71b4581d9c7588b106c355888fbb17911b802d9147b, + 0x699b36a65b7d66e812901120f42f7c45cde672b983bbfa76af3e7f775440fc1, + 0x18b30c4d989119776f779750f7846a4b861e544afb960559d6700acfa402057, + 0x83249647ffb25a45093fd1a0f2e310931814ae984a097281733166306070c, + 0x19e04b3288c65971de73c21a19137e19a8edc5da39f8fbd3708a9707245b097, + 0x11020c49a9adddd327413fc28e2522b85209bb053881c3ed1c70e2494ec23de, + 0x399b81a454c0e21e93be8259178a2c8e25e1d21921cc14e29553f9b8bb3fc12, + 0x5521ae2254453e800860ac78f60c93ec9d0ed8f4e0fdea3557e5045663dd3c6, + 0x208e6a2fcb6f0a76649adc9e6d6348df0d4c5b51c41f0e7b6320474327ecb81, + 0x34644fd1c02aaec328c761e37c66c98b6fcdc17b544beae9caeb9d26dc9cddb, + 0x1617af322cd03d0dbd1a989f7ebaab9eaaebbe88b46c1c068ceb4c057c041d4, + 0x5ce69ce2494fa71e81212d9adee86841ebca8e7d104458b14c470038e69f10, + 0x6974cf175b66ecc768f5de740cec11066aa143ea8c7b62b93b6c6d5631010bc, + 0x77d88da87532678899f0b7074e692b92209a343950f650c68d185f49f57c78e, + 0x65a999f1e4252bf8927b45bdf8cc661925a80063b8f45e4661f995b1f25a7e8, + 0x31c92de72f93673fdd6443bbdb421e4263a3ac4cebd3f0bf6aa9ba81e41e0c5, + 0x4cad0b51b59a60ae328ab3f0d4620a508ffced7b6258b76921f40c2128f4fd, + 0x1b00667e875bd41fcfbc1fd6aef4efe33e21155acf1f6258f8146e8027fcaeb, + 0x4eb14632a89687e70a2b171c7d7b24557785cd43fc2bd737901a73d91687bf1, + 0x6c5b3bb23931b9c48f8470a6a83ddd9d851ea7457d84d8d6363a1b876ef6cd6, + 0x3176139413845ddedab8511badcbc6990eb87951dda8849df654addc9985056, + 0x274b2e183f25bd317a45c40f6a561127c05a9123f5fec55ad26c2b165b1537a, + 0x72add6a643545853ed50abba631e40dac037e38f917843d027f0730a1b698a3, + 0x184ca52edfb80c95c3e4700152c8d02f73e788427a026701e646328b80d6bf, + 0x66a4be384e44eed31b91a6931551bbe730ec40bf3a06906b06ec53b0a2fd228, + 0x6fea30bacd1850d8c6dd33f1ec1c5ddeb130a0f6a72f9ff6f8077facf0d1b9e, + 0x55da4dfa3093f5c929a264938d48a0039b139c98aab0b6ed23dad7489f0b00d, + 0x6cad7ffefb4054a2ddc874e58288a572ddfcca78af94ffbb850e5d15f909ce8, + 0x5fe5fe94f98acc1031e592e56a18b63d2086296fd47651b78aed14fb8fd1cca, + 0x408e1057300e85192e944cf8c63d390186d746ce8c14e7f11f76f678bd62d62, + 0x1097e4280c6c639d890e4d43466cb8b2c909de7fb51ebe87d3c8f054527ab1, + 0x6ecc41b7074ae11ea46b74790dda630a6c48f9c04ace3132ca1860952355cf7, + 0x7ec71e10de7f980b4abba830575ba3d316e9f973f417b696abc146e5df4a529, + 0x767607058a3d9552001809e212f5f0241e5775500f5e98987a46fa6a52ef3ae, + 0x7cb50c5134d4b637e21e1e26445c3448a5af48a1aefa5c7342971031bfe6604, + 0x3889243688fdd24aa9dc78343653a8d80752c4d4ea4bd3533a67a34599e29bd, + 0x62814582d3faa55dba44444f567970125450b0090758bbdf94db36e9e1f0f61, + 0x25be9526d70b32814621fbfa200251dfddeb5bfc9acd9ac9239cdef99864783, + 0x1f559f543c297be47f54d8a340556a8d273b4f700eca7a1323c002c9f3088e7, ] .span() ); assert( channel .digest == u256 { - low: 0x15aa9b8787d877d61588844c0cfe2fb9, high: 0x7cd36c3da65b8d57331341e661a86574 + low: 0x6308b38ae2841c18fb8c06c9acc9bcd5, high: 0x5d35fab3c11198da5f6fe41666993b16 }, 'Invalid value' ); assert(channel.counter == 0, 'Invalid value'); } - +// === KECCAK ONLY END === \ No newline at end of file diff --git a/src/channel/tests/test_read_felts_from_prover.cairo b/src/channel/tests/test_read_felts_from_prover.cairo index c4ef6f202..88739a39b 100644 --- a/src/channel/tests/test_read_felts_from_prover.cairo +++ b/src/channel/tests/test_read_felts_from_prover.cairo @@ -1,160 +1,920 @@ use cairo_verifier::channel::channel::ChannelTrait; -// test data from cairo0-verifier run on stone-prover generated proof +// === BLAKE ONLY BEGIN === +// #[test] +// #[available_gas(9999999999)] +// fn test_read_felts_from_prover_0() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0x89a405dfb23e546ad03d498e88dee3ba, high: 0xe614bdb3e56768f45a22fd34e999734c }, +// 0x1 +// ); +// channel +// .read_felts_from_prover( +// array![ +// 0x3a63c21f32409c9ec7614199b40102547e7f698f903bdbbffe56785684b7e04, +// 0x5652f216d992bbf255b97dd1b0a4dde72fab97f1bbcc4a4f53fde7fc50293c8, +// 0x7c096e451cd06aa80d11322e82a4f4a9eb62413fbc76044867c36090d416dd5, +// 0x787521b50c17169b9729a4522e1a0e7bdc028fc8ffdd87c70147bd67c5595d3, +// 0x3c329225074106c03d9385a2fbe9aa6a9eecd2b13c6e26884de5acca7251460, +// 0x31c7338a8e2a5b04693650792e9cac8f907a3a1c6bec9866889b0dd230b2b2c, +// 0x1d8edac47ced1b6fa8a00305efc527d90a5e2b3d31d6a5d3bf33354d0d77c1, +// 0x26dd3e59e2541dbe8a3aac06cc0262054f106cd409750e50fc08a32c5ed4947, +// 0x3808f487ede4ffb746a97f5621717e8c247e56c71e4b801a89ea134207447ad, +// 0x6787bf2159e5fe087900ca33c820ef7bd8ae0ac14fb2daf34c8db53624dbeeb, +// 0x649fba72665a03f0d5fe2b61b227501a5b8f7b7acebc4cbaf09380338761ea7, +// 0x5cd1c022d91173ff01b59e57f5ac27e0cc8cd06dc695c68fad795acad56331a, +// 0x3b17acce9df933e0f951fa2dc5881337d4637f3da2649b32f6d7cbcec76635d, +// 0x4ef09f53ec97c0ae427c01aa3138fc0ebb5fa0e0eff8aa88a58e24d0721566b, +// 0x66ba8fee46d58ef5821e2f805c760944899d083a5de8b568f7cb28ba5a5bab5, +// 0xab844aafcad2b0be5d1372f76be5f8af13117e83efdeba484c82f4b880d945, +// 0x7bc4eb9a0b0c62e4e1b025b3186bc4342f4c1a4dd4f8d906fa312bd94df4883, +// 0x30697d309839cef6817d37eff90b7e4e222ab8a7db1dd97097793065acf0b85, +// 0x2c1f7ce4803cbea74eef0f6302ab3036a399622ec730d5886de2dc2d07852c1, +// 0x2ee0fbc2c470ed13fba562a041682eefaeeff60b9ccf343b98a55135e3dc07d, +// 0x4ef8992548369e4218881ec2a87ac1f1236fae994793441faa9c1cb07d76a6e, +// 0x1bbd239d9bda4fdd8eb564a4b823b3b8a42c7f092910ba595712385f5844363, +// 0x7dd197fc9ed8d7ac52643249787eaddb76f8b70a8d9f8ac17cb333067e5405e, +// 0x6242725f5db1976d9d4df1c33e2ee59c5ee6d2f04d8a0938a78936f9969b315, +// 0x278f1df82d86f636feb36bfa6aaed961f02f83e00a65f036b7293b998da9a9d, +// 0x573e839f79edb998361136674befc4f14a438e32b6b058d44e1881db9a3e0ef, +// 0xc9e64e4dc62fba091213d48317a642af02cf3cd21bc1fa99cdf2ae390d76a9, +// 0x61bcca7e2434fe2845f1407142a4c2183531a741ac808368113af971fb3e3af, +// 0x30323fa36bc5c9f0a646e9c83cbeefe8400b769e415495ce785cc4ab1fe2c61, +// 0x6bb7fd058f8d69230d9407b2a6e9a319f26de238a612654858ece15d4056398, +// 0x2793a5b8852a2101eff784e4549ec9814d22fb5aaa855ed00aacc26cc16e27f, +// 0x416d2d8a6515bf82568ea0d3ba067ef2862ca0b60000fad3bbd148a6dc9aac7, +// 0x2e9fc14b4c0bd7efc3c8f9575c01b46c5c050d1a13777e027999264fa2703a5, +// 0x35222b20560ccdcf2b44cd9071fb1e74b5d8cdfb0bf3f306720a2dbd6a4131b, +// 0x4fa5a00c2c14bb62a783d0683dd6464fc8557b0c2727c2473c3dc1e502418ec, +// 0x53f6daaa6cfd4b45c3800ce6a533c547e0bd061fa53bff9cc300f296c1ac75, +// 0x579a8f58b31caf4bb0c0eb3c3ff3098d7c22dcdc12ed2b79015df21241e695d, +// 0x3662f88a8833549ef08ca409b7d03baae580acb5479db93bea215486116fab1, +// 0x72d89620b70f59d95533ceddeea9b42ad6e485ce82ae1e8fdbf909c915a21ab, +// 0x1a274e2239deacae84f78e0c032191394e53fef8cbd0ee901170aecf8b14bf1, +// 0x219c4fe98876996045a2b738a44dac48a0fbcfee5ada3791e91e899e36a48cf, +// 0x38337993a5467391468d056c453deb1184115877703f4bba33e326b8a5f777b, +// 0x5e903001774644d4d6b2bdef63c8d61496a86fb9c262e6e7b79d87114132166, +// 0x614dd4c24b2c903f07c669017861d7ea495463d63033a6d5253491b024e6124, +// 0x4a563d8494f0d712455c57b6944c2bdbf0e5a21ed1bca6adcc84dbab9461b05, +// 0x4a2aec687b7b78cd517bdd437d4ec61e855438fc9dfb1b37f6a20088f4f47bd, +// 0x208f098c8f25947dc9fd5b138a3fd816599f34eed1e2582301af377fbd66a9c, +// 0x5b1c2e1450b4e5027e13dad6ad6857e669f923c5c2f8ccea869a6af4d329259, +// 0x9a253af187dc262630e1c872b1291f57dc72580d5c95dd7d63d95c4cd04c91, +// 0x4641af946768cb50b17b0e13612b522b424226bb58cfa2881a8e1837e3b70ab, +// 0x3f644fbd8949c0cb2f9102e63ea60cb23a9183968d02636a59199e0d3684c62, +// 0x3cea05e4cfeef52d0a1b1c0e74179cc527f4b0ee46e5372560fe5b926f42b63, +// 0x2c9940c95f9a17a8e5fd12b49a8e2c47266b0e9a4cd467ea9d36d826c29ccf5, +// 0x432e8b4a079141d4a798ffd785d29ff0bd91deda0babb3f2b081029fcd750c2, +// 0x15c6cf8f973411c95c1311efc333322a9887c58d336382be9933e0167316ee3, +// 0x3f49f92f7a848997e79ee607088b0d88b72eaec8c0f0c929a7f28decf22e8ad, +// 0xec249e3194855eb2cc9d155c8dcd96fac4716adc4c7d0c61bbc441305aa747, +// 0xdf003cd1043ff595feddd0828c442a6c1e00a97157cfd328621a8c9d199c3f, +// 0x3239d14b92ddec576421cc7efd6d83d33892a7c1a7f6d191e688fc0071852fb, +// 0x6488a1054deb3e1a276884f5fac32701cf6c78688d9ccdef7c7e64e0d96676e, +// 0x20fa0bb45d2ab48b84945677b6948233bd32ea373354be935f24073cc323157, +// 0x5999f45d12cf8e4529e98bd152625421146584d60080d955dd5199da4a9f895, +// 0x167e3697aae192fd8936b7abe29976b802eb8cd635f97747751aae5dadbfc71, +// 0x14c7ee181752eaa201dfe4ff523bc8b85199148caebe219117b37d70f913fd2, +// 0x2103673965b8927c64b311f493514320b04faae92bd1c2e9bc608c2096773c, +// 0x4aa6d83f159484ff686fa304a011b5b89fb9916c8cfcf787f029cf82fcff6e1, +// 0x4e94bc0d77b9ee122fe9db048f2bcf67658bb34bd9e29d733bcdfd7ab99f289, +// 0x3d385bbefadaa470347c6ab25b66578ada66100f36fe96322b885b349a6d4ad, +// 0x51f803cd7449b1fe21b93e19eda29940c5053dedef9fe476ef20717192477b5, +// 0x6e251054f255ff83c8bde7d7c38c8148fed2797b5f390b8223a61150ce75c3c, +// 0x32d2e7c9da1da713eef599074ad5ebf45b69f5c59bd679196410c116a22391a, +// 0xc3e8650c42056870374d101b298c08c96c9ee5b0e36a07c7adeaff9726e36f, +// 0x219ff5bd061bae60b15652d7e1576db46b3e62e0516c0e1a5dc1c477a7b19b4, +// 0x2d35cbade6e664f8555dadc64a1d6a35e67f981f37673ddbbf4018cd6964488, +// 0xff4abb08af6a9e2e15c0db372c9f3ab678440f37f585907b92b9641b2c51e9, +// 0x1e561e46de019fd4a58e6ed9065d2431c573dcb9fc64fcae5259c7cda2eca9e, +// 0x3eba7c7b00ea052bd85d80fd0593114246bb3dfa7132593e8ca7dc5fb0b5443, +// 0x7370fb43eb926b47c873b168f95e695f988c0c0ecc360cb30cc4a7c52e3f705, +// 0x7eb81bf822ae7298d79a84af3db1d51686b669bc76448928529a90af30d3ef4, +// 0x3add254a71be450b03c0adc48aae3f50921a3c9f2c314992dc816c3c7b8a547, +// 0x5ed3690969bb9953f7c7e425fd357052398c7454632d7ee3b56a3f952056a50, +// 0x5f2da4667133d7a8fd61f0798eda83afbedd8b8091b588b5d671fce06c90f9b, +// 0x6ed3b623a6a56f9cd70870b41e14f39ade27b49032a01ce13d1ac1cf612a587, +// 0x2c48cd143e27713d6ed8a431f9f77fbc2e02acda139e82ad2e537d49bab51f6, +// 0x486933e036c569cef2e2e1e61105f38e68829090e920ca8db475c5b32453ef2, +// 0x7b24eaff77ac3967fccfccd3da6cd1cdccf6b226ea6d9614293a944f1dad6f, +// 0x754150aec4b9279797c70fbc410ba05a5b2c98e0d9d4621f3b1c98e4ba29b6c, +// 0x341ef6cbeae139dd3883a5a7fa64a886d95d99734682e151b542ebc5416cf97, +// 0x7cfa6ad883bdc66f63d7471fd6669e7257534d0f96f489d11fafaaf7e6783e0, +// 0x71aebca6d6527b6f0177c8a93dc927fbed6e4f95f38ec2ef0212cfe52cf09e3, +// 0x521681b827cb7dbc41977031d2240f791f3d6b4c9d3239de290111c840b7d1e, +// 0x1dfe4fcee6093e9d90760a96e4732be752a85bc08f37f9dbcddf7bba785441a, +// 0x53750e6013edf3eb9f914afd88e90a888a06ed6c26c6ae8bc47e430189ce568, +// 0x2237fc57788563e04e734b907860250c493970a176b9909c4bce453ca3645f3, +// 0x19b8aecbdf4f3f4bbcdf454aaf26af393e661d62a6761deb8f6479d9ffd19c3, +// 0x34219cf157543e6b906b2cfb94cde84adb067335b671fb76bb820cf8f4a2bcc, +// 0x104a69651259f8fc85041c46426951254d543203cd88b1c0ada870c351f5a5d, +// 0x6bad92813499115dcbc992ee7fc1a75c28927e4cd0e786206e73d5be67947f5, +// 0x49a1442ee229a58408244dfa9a57769bbf0fbe94f408d6e1386d80f88852b63, +// 0xc192d6e9d0610608b0a89b2a02e8bdccfb076f774e17a091292f8e01de3755, +// 0x1dc818657705c5c14194f7f883b8fb089cbe16482dc3d6a09c500a793b4db03, +// 0x41ff704a6c5350dceaa7f302a75f646a885cf43cb44bf4cdc32ee1995a51835, +// 0x7339ab6a29ec4a422e1a2d0cf60c0143fc2f6b78a790003964d9651a117e14c, +// 0x7f0c9b103d9a004aeed6794bdda1823394ea9e6ad3acc3231eab419d2e3d2ad, +// 0x3aae3b74214ef0e905c7457f3a3356cac77a6cfe6c013be1049113a1102fbc5, +// 0x145c5870e344304ff0ae0456bcad46b727d3b2b589e8c7172025a0a5af13f40, +// 0x3ba3deb76229bbfc3430674974249fa1fc416d6d79752201cf0d5cde98f7fc8, +// 0x35b6de4051317e1e9f695447296b379b059bf0968143ae6f74c209bcc6c74c5, +// 0x5e72ce3b4c78931a7eb01506be85068c4eff95a3e525662d6f2aca1eb0bef64, +// 0x56dc47a1d6d3bdaa3ed59c561fbaaffac9576585b50714befe427155c74e7a5, +// 0x6319ae5cbe6441bce0e23c8ec453fd5c37841989016b70a4ae96b64cbe6bb30, +// 0x4ce80cb618c9d0ab3b58882cbd464954f42009520811b0d13071c5a059b74b3, +// 0x5a826d43a69e8dd1f27bfd81b2c582063a69974e3c1de990b750bf7224dc220, +// 0xda9651967f8fcaa4c84c821613af32d366aa34792fad690753773b83b201d0, +// 0x626dc09f285c1002cc62a885560070ff41c1618c3eee05c45caabc666a9e2bd, +// 0x1cd0e87c51f7f03529f3b5ff4470367a610ddc2602383f68275b4e0c4752d27, +// 0x1bfb3b574221791a65cbeb296a59bd10a6f7986d99981a0d6fd85b17265775, +// 0x1a9ca90e2baadb83d11267f1be82f40b05864338252abfdb886696c670ab313, +// 0x54c3d82cde7698537d4042fb17935160b63cb01d2d40e96ffe1f2ab6766f5e5, +// 0x27e58a4c01305deff7bd3648ecec5fdec89105e6ca2697bbbde71dd1ade3ebc, +// 0x70200f287b5a6e43528bfbd1177841468d3431e63cd673db3532ef92a7b5600, +// 0x3a6789597f753b935d80b5d30389e6b7abbcd9427116c9cf0fd5d4cab89e2c, +// 0x40d81f401761dca8b8afce8edf235061bcc94f2d5d600b74d8a16e23be94070, +// 0x2f60edeb0baa50960230aa0602c52f65849de23553fb2d64db4446ab3fc950b, +// 0x3e088f64db59b998acbc4285ac7ffb2e8ebeb86d6bcebe9263045a6c236cd7c, +// 0x25e089f9a8de768f39ba2ae6bd6b8d9e675bffcbf1a69a1969cca135886bbb4, +// 0x5d316a5168b8c3dd14b117a910a90dd785064e46cba4b80f0b3fa526c310dbb, +// 0x2b215161b6ecc86c5a6b6ef93f96173eb7e793b46c69aa62e5d0410c0275f54, +// 0x32595065fdbf761693457954ca73a672b0551735de02caddcb8f717d97b4367, +// 0x29286b0c18c3efce3834fd4277a69c4f86ca3bc085e451cb72694d5605103a9, +// 0x2440310b813129bf1969eee2292d4f95847ec24f637a71a33007ee8c37d113e, +// 0x2b6b8ac9a10379acb0143d12a2d82adfa77c3956eff9f6f17c24759d39f9847, +// 0x4f24c5ed930d64c09687660ee1952abfc3775e55f74788c1beff41d1d87fb0b, +// 0xe880a9838b5fcd4926834b4c8bc563896d1e5d78b9dff2cd2efb2c99281e2e, +// 0x5e2c3c832d4007de9af648e708d3ccfd173aa4fed9d1d63986fb0df2d362dc9, +// ] +// .span() +// ); +// assert( +// channel +// .digest == u256 { +// low: 0xaddb0b52526024a1fd926e5da9d8d0ec, high: 0x4b7afc7a5bab4c0aab0b403f8daf81cf +// }, +// 'Invalid value' +// ); +// assert(channel.counter == 0, 'Invalid value'); +// } +// === BLAKE ONLY END === + +// === KECCAK ONLY BEGIN === #[test] #[available_gas(9999999999)] fn test_read_felts_from_prover_0() { let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0x89a405dfb23e546ad03d498e88dee3ba, high: 0xe614bdb3e56768f45a22fd34e999734c }, + u256 { low: 0xf05211ddc7d39bdac47d77a10f1fec44, high: 0x570aa8f624aff81df1a44d65b15bc1e9 }, 0x1 ); channel .read_felts_from_prover( array![ - 0x3a63c21f32409c9ec7614199b40102547e7f698f903bdbbffe56785684b7e04, - 0x5652f216d992bbf255b97dd1b0a4dde72fab97f1bbcc4a4f53fde7fc50293c8, - 0x7c096e451cd06aa80d11322e82a4f4a9eb62413fbc76044867c36090d416dd5, - 0x787521b50c17169b9729a4522e1a0e7bdc028fc8ffdd87c70147bd67c5595d3, - 0x3c329225074106c03d9385a2fbe9aa6a9eecd2b13c6e26884de5acca7251460, - 0x31c7338a8e2a5b04693650792e9cac8f907a3a1c6bec9866889b0dd230b2b2c, - 0x1d8edac47ced1b6fa8a00305efc527d90a5e2b3d31d6a5d3bf33354d0d77c1, - 0x26dd3e59e2541dbe8a3aac06cc0262054f106cd409750e50fc08a32c5ed4947, - 0x3808f487ede4ffb746a97f5621717e8c247e56c71e4b801a89ea134207447ad, - 0x6787bf2159e5fe087900ca33c820ef7bd8ae0ac14fb2daf34c8db53624dbeeb, - 0x649fba72665a03f0d5fe2b61b227501a5b8f7b7acebc4cbaf09380338761ea7, - 0x5cd1c022d91173ff01b59e57f5ac27e0cc8cd06dc695c68fad795acad56331a, - 0x3b17acce9df933e0f951fa2dc5881337d4637f3da2649b32f6d7cbcec76635d, - 0x4ef09f53ec97c0ae427c01aa3138fc0ebb5fa0e0eff8aa88a58e24d0721566b, - 0x66ba8fee46d58ef5821e2f805c760944899d083a5de8b568f7cb28ba5a5bab5, - 0xab844aafcad2b0be5d1372f76be5f8af13117e83efdeba484c82f4b880d945, - 0x7bc4eb9a0b0c62e4e1b025b3186bc4342f4c1a4dd4f8d906fa312bd94df4883, - 0x30697d309839cef6817d37eff90b7e4e222ab8a7db1dd97097793065acf0b85, - 0x2c1f7ce4803cbea74eef0f6302ab3036a399622ec730d5886de2dc2d07852c1, - 0x2ee0fbc2c470ed13fba562a041682eefaeeff60b9ccf343b98a55135e3dc07d, - 0x4ef8992548369e4218881ec2a87ac1f1236fae994793441faa9c1cb07d76a6e, - 0x1bbd239d9bda4fdd8eb564a4b823b3b8a42c7f092910ba595712385f5844363, - 0x7dd197fc9ed8d7ac52643249787eaddb76f8b70a8d9f8ac17cb333067e5405e, - 0x6242725f5db1976d9d4df1c33e2ee59c5ee6d2f04d8a0938a78936f9969b315, - 0x278f1df82d86f636feb36bfa6aaed961f02f83e00a65f036b7293b998da9a9d, - 0x573e839f79edb998361136674befc4f14a438e32b6b058d44e1881db9a3e0ef, - 0xc9e64e4dc62fba091213d48317a642af02cf3cd21bc1fa99cdf2ae390d76a9, - 0x61bcca7e2434fe2845f1407142a4c2183531a741ac808368113af971fb3e3af, - 0x30323fa36bc5c9f0a646e9c83cbeefe8400b769e415495ce785cc4ab1fe2c61, - 0x6bb7fd058f8d69230d9407b2a6e9a319f26de238a612654858ece15d4056398, - 0x2793a5b8852a2101eff784e4549ec9814d22fb5aaa855ed00aacc26cc16e27f, - 0x416d2d8a6515bf82568ea0d3ba067ef2862ca0b60000fad3bbd148a6dc9aac7, - 0x2e9fc14b4c0bd7efc3c8f9575c01b46c5c050d1a13777e027999264fa2703a5, - 0x35222b20560ccdcf2b44cd9071fb1e74b5d8cdfb0bf3f306720a2dbd6a4131b, - 0x4fa5a00c2c14bb62a783d0683dd6464fc8557b0c2727c2473c3dc1e502418ec, - 0x53f6daaa6cfd4b45c3800ce6a533c547e0bd061fa53bff9cc300f296c1ac75, - 0x579a8f58b31caf4bb0c0eb3c3ff3098d7c22dcdc12ed2b79015df21241e695d, - 0x3662f88a8833549ef08ca409b7d03baae580acb5479db93bea215486116fab1, - 0x72d89620b70f59d95533ceddeea9b42ad6e485ce82ae1e8fdbf909c915a21ab, - 0x1a274e2239deacae84f78e0c032191394e53fef8cbd0ee901170aecf8b14bf1, - 0x219c4fe98876996045a2b738a44dac48a0fbcfee5ada3791e91e899e36a48cf, - 0x38337993a5467391468d056c453deb1184115877703f4bba33e326b8a5f777b, - 0x5e903001774644d4d6b2bdef63c8d61496a86fb9c262e6e7b79d87114132166, - 0x614dd4c24b2c903f07c669017861d7ea495463d63033a6d5253491b024e6124, - 0x4a563d8494f0d712455c57b6944c2bdbf0e5a21ed1bca6adcc84dbab9461b05, - 0x4a2aec687b7b78cd517bdd437d4ec61e855438fc9dfb1b37f6a20088f4f47bd, - 0x208f098c8f25947dc9fd5b138a3fd816599f34eed1e2582301af377fbd66a9c, - 0x5b1c2e1450b4e5027e13dad6ad6857e669f923c5c2f8ccea869a6af4d329259, - 0x9a253af187dc262630e1c872b1291f57dc72580d5c95dd7d63d95c4cd04c91, - 0x4641af946768cb50b17b0e13612b522b424226bb58cfa2881a8e1837e3b70ab, - 0x3f644fbd8949c0cb2f9102e63ea60cb23a9183968d02636a59199e0d3684c62, - 0x3cea05e4cfeef52d0a1b1c0e74179cc527f4b0ee46e5372560fe5b926f42b63, - 0x2c9940c95f9a17a8e5fd12b49a8e2c47266b0e9a4cd467ea9d36d826c29ccf5, - 0x432e8b4a079141d4a798ffd785d29ff0bd91deda0babb3f2b081029fcd750c2, - 0x15c6cf8f973411c95c1311efc333322a9887c58d336382be9933e0167316ee3, - 0x3f49f92f7a848997e79ee607088b0d88b72eaec8c0f0c929a7f28decf22e8ad, - 0xec249e3194855eb2cc9d155c8dcd96fac4716adc4c7d0c61bbc441305aa747, - 0xdf003cd1043ff595feddd0828c442a6c1e00a97157cfd328621a8c9d199c3f, - 0x3239d14b92ddec576421cc7efd6d83d33892a7c1a7f6d191e688fc0071852fb, - 0x6488a1054deb3e1a276884f5fac32701cf6c78688d9ccdef7c7e64e0d96676e, - 0x20fa0bb45d2ab48b84945677b6948233bd32ea373354be935f24073cc323157, - 0x5999f45d12cf8e4529e98bd152625421146584d60080d955dd5199da4a9f895, - 0x167e3697aae192fd8936b7abe29976b802eb8cd635f97747751aae5dadbfc71, - 0x14c7ee181752eaa201dfe4ff523bc8b85199148caebe219117b37d70f913fd2, - 0x2103673965b8927c64b311f493514320b04faae92bd1c2e9bc608c2096773c, - 0x4aa6d83f159484ff686fa304a011b5b89fb9916c8cfcf787f029cf82fcff6e1, - 0x4e94bc0d77b9ee122fe9db048f2bcf67658bb34bd9e29d733bcdfd7ab99f289, - 0x3d385bbefadaa470347c6ab25b66578ada66100f36fe96322b885b349a6d4ad, - 0x51f803cd7449b1fe21b93e19eda29940c5053dedef9fe476ef20717192477b5, - 0x6e251054f255ff83c8bde7d7c38c8148fed2797b5f390b8223a61150ce75c3c, - 0x32d2e7c9da1da713eef599074ad5ebf45b69f5c59bd679196410c116a22391a, - 0xc3e8650c42056870374d101b298c08c96c9ee5b0e36a07c7adeaff9726e36f, - 0x219ff5bd061bae60b15652d7e1576db46b3e62e0516c0e1a5dc1c477a7b19b4, - 0x2d35cbade6e664f8555dadc64a1d6a35e67f981f37673ddbbf4018cd6964488, - 0xff4abb08af6a9e2e15c0db372c9f3ab678440f37f585907b92b9641b2c51e9, - 0x1e561e46de019fd4a58e6ed9065d2431c573dcb9fc64fcae5259c7cda2eca9e, - 0x3eba7c7b00ea052bd85d80fd0593114246bb3dfa7132593e8ca7dc5fb0b5443, - 0x7370fb43eb926b47c873b168f95e695f988c0c0ecc360cb30cc4a7c52e3f705, - 0x7eb81bf822ae7298d79a84af3db1d51686b669bc76448928529a90af30d3ef4, - 0x3add254a71be450b03c0adc48aae3f50921a3c9f2c314992dc816c3c7b8a547, - 0x5ed3690969bb9953f7c7e425fd357052398c7454632d7ee3b56a3f952056a50, - 0x5f2da4667133d7a8fd61f0798eda83afbedd8b8091b588b5d671fce06c90f9b, - 0x6ed3b623a6a56f9cd70870b41e14f39ade27b49032a01ce13d1ac1cf612a587, - 0x2c48cd143e27713d6ed8a431f9f77fbc2e02acda139e82ad2e537d49bab51f6, - 0x486933e036c569cef2e2e1e61105f38e68829090e920ca8db475c5b32453ef2, - 0x7b24eaff77ac3967fccfccd3da6cd1cdccf6b226ea6d9614293a944f1dad6f, - 0x754150aec4b9279797c70fbc410ba05a5b2c98e0d9d4621f3b1c98e4ba29b6c, - 0x341ef6cbeae139dd3883a5a7fa64a886d95d99734682e151b542ebc5416cf97, - 0x7cfa6ad883bdc66f63d7471fd6669e7257534d0f96f489d11fafaaf7e6783e0, - 0x71aebca6d6527b6f0177c8a93dc927fbed6e4f95f38ec2ef0212cfe52cf09e3, - 0x521681b827cb7dbc41977031d2240f791f3d6b4c9d3239de290111c840b7d1e, - 0x1dfe4fcee6093e9d90760a96e4732be752a85bc08f37f9dbcddf7bba785441a, - 0x53750e6013edf3eb9f914afd88e90a888a06ed6c26c6ae8bc47e430189ce568, - 0x2237fc57788563e04e734b907860250c493970a176b9909c4bce453ca3645f3, - 0x19b8aecbdf4f3f4bbcdf454aaf26af393e661d62a6761deb8f6479d9ffd19c3, - 0x34219cf157543e6b906b2cfb94cde84adb067335b671fb76bb820cf8f4a2bcc, - 0x104a69651259f8fc85041c46426951254d543203cd88b1c0ada870c351f5a5d, - 0x6bad92813499115dcbc992ee7fc1a75c28927e4cd0e786206e73d5be67947f5, - 0x49a1442ee229a58408244dfa9a57769bbf0fbe94f408d6e1386d80f88852b63, - 0xc192d6e9d0610608b0a89b2a02e8bdccfb076f774e17a091292f8e01de3755, - 0x1dc818657705c5c14194f7f883b8fb089cbe16482dc3d6a09c500a793b4db03, - 0x41ff704a6c5350dceaa7f302a75f646a885cf43cb44bf4cdc32ee1995a51835, - 0x7339ab6a29ec4a422e1a2d0cf60c0143fc2f6b78a790003964d9651a117e14c, - 0x7f0c9b103d9a004aeed6794bdda1823394ea9e6ad3acc3231eab419d2e3d2ad, - 0x3aae3b74214ef0e905c7457f3a3356cac77a6cfe6c013be1049113a1102fbc5, - 0x145c5870e344304ff0ae0456bcad46b727d3b2b589e8c7172025a0a5af13f40, - 0x3ba3deb76229bbfc3430674974249fa1fc416d6d79752201cf0d5cde98f7fc8, - 0x35b6de4051317e1e9f695447296b379b059bf0968143ae6f74c209bcc6c74c5, - 0x5e72ce3b4c78931a7eb01506be85068c4eff95a3e525662d6f2aca1eb0bef64, - 0x56dc47a1d6d3bdaa3ed59c561fbaaffac9576585b50714befe427155c74e7a5, - 0x6319ae5cbe6441bce0e23c8ec453fd5c37841989016b70a4ae96b64cbe6bb30, - 0x4ce80cb618c9d0ab3b58882cbd464954f42009520811b0d13071c5a059b74b3, - 0x5a826d43a69e8dd1f27bfd81b2c582063a69974e3c1de990b750bf7224dc220, - 0xda9651967f8fcaa4c84c821613af32d366aa34792fad690753773b83b201d0, - 0x626dc09f285c1002cc62a885560070ff41c1618c3eee05c45caabc666a9e2bd, - 0x1cd0e87c51f7f03529f3b5ff4470367a610ddc2602383f68275b4e0c4752d27, - 0x1bfb3b574221791a65cbeb296a59bd10a6f7986d99981a0d6fd85b17265775, - 0x1a9ca90e2baadb83d11267f1be82f40b05864338252abfdb886696c670ab313, - 0x54c3d82cde7698537d4042fb17935160b63cb01d2d40e96ffe1f2ab6766f5e5, - 0x27e58a4c01305deff7bd3648ecec5fdec89105e6ca2697bbbde71dd1ade3ebc, - 0x70200f287b5a6e43528bfbd1177841468d3431e63cd673db3532ef92a7b5600, - 0x3a6789597f753b935d80b5d30389e6b7abbcd9427116c9cf0fd5d4cab89e2c, - 0x40d81f401761dca8b8afce8edf235061bcc94f2d5d600b74d8a16e23be94070, - 0x2f60edeb0baa50960230aa0602c52f65849de23553fb2d64db4446ab3fc950b, - 0x3e088f64db59b998acbc4285ac7ffb2e8ebeb86d6bcebe9263045a6c236cd7c, - 0x25e089f9a8de768f39ba2ae6bd6b8d9e675bffcbf1a69a1969cca135886bbb4, - 0x5d316a5168b8c3dd14b117a910a90dd785064e46cba4b80f0b3fa526c310dbb, - 0x2b215161b6ecc86c5a6b6ef93f96173eb7e793b46c69aa62e5d0410c0275f54, - 0x32595065fdbf761693457954ca73a672b0551735de02caddcb8f717d97b4367, - 0x29286b0c18c3efce3834fd4277a69c4f86ca3bc085e451cb72694d5605103a9, - 0x2440310b813129bf1969eee2292d4f95847ec24f637a71a33007ee8c37d113e, - 0x2b6b8ac9a10379acb0143d12a2d82adfa77c3956eff9f6f17c24759d39f9847, - 0x4f24c5ed930d64c09687660ee1952abfc3775e55f74788c1beff41d1d87fb0b, - 0xe880a9838b5fcd4926834b4c8bc563896d1e5d78b9dff2cd2efb2c99281e2e, - 0x5e2c3c832d4007de9af648e708d3ccfd173aa4fed9d1d63986fb0df2d362dc9, + 0x1f561eeeca29ad6116f86458c11a901ec8f8522265734097b2e58d8fee2119e, + 0x795a0068c48dc95ae3c3b2a658f56c72d1a6c5fe565c468afbc2a9a5d86053e, + 0x145b00634e74660c375deaa16b65ac50288e08bbb7825225bdc076c8a09f265, + 0x27fe67b7418f93821ec311788774c302a39e8fcd79ec977f9065871cb0f8ae4, + 0x535e721218748d66f9312097b3296c96968064171c42d1d98df59bdc4848b5, + 0x1c4f59007b305c3d3c0ef166439e1709d860ff991689b4c37ee77b16cd24870, + 0x341df89907a9ee139809039b708ddc5292cb11b8d581b27b3d50a64b11ba11c, + 0x6d11e43b7c05e408b7b008a4ea47f86b676427944e3b11806d0429763bd2f00, + 0x4c62de5ea21a8f70113ee005d76b7bbee0ab4712f9adeea0f98242ff31a303, + 0x5cda3999c6250d708d3a2a7820a91b0e37ec6f2a39fc46853f4d92c9dc5f750, + 0x17d3d725e066fda1eb91c3a63276347fce01c4dd04282d9ef0ec2d94cfe06b2, + 0x6e1bc83006be50f3ee55a09916b849543414c44a773991293cbf88b34496fbe, + 0x2b142df56d3046be73f869c1471160871ab72c842f839b12e953c0f49e90acc, + 0x2cf009423dc8f85b80a6225c5526764632205340e95fa63528f63d97c6de5c6, + 0x3b132b76d6574714de7c59c46dc375754e72dd5c7dd355fbd96e2d414933cbd, + 0x122945e713635e2b9458bebd9b6ac7e3806c17e14bf738159c14ea214dd8055, + 0x4dc9d8a6d9a65247cbaea00ac14801ba2ce6aacfd451e5f6ad49fbd6de6fea9, + 0x529a202d0b7d34e919db817e13a17346056806bb276b1def3ee432cf031cde3, + 0x67ff120a27ea919f5d064ada1af91e73525ac7204d4cd729f48bce6c612f616, + 0x628b7ea9fba0b4bfc397cf8e22bedddefe6cf328c32c3ae63aa9f28da33c3e8, + 0x6f7bedbdec77d413acce6666a327eeef4de9b1a8f428ae820350e67bb448884, + 0x72fe2b68272e586ef1d0c5acff93880c501b8616e67b3e882a0d669960ac3e5, + 0x464e0168e0cc88831c8f4ad3796494dcfa398b262e42b590933baaa210bd9aa, + 0x5ae26da107d18b497dfbc4e579df73725e665bec3c8ccf6418f577e39538556, + 0x6a280f49d08706ac045bdbccc8bd984aaa49cd7be8f813eb1b6591334c38f7a, + 0x20ae6cbad8783bca6ba49ebd6e69a4e47491d8b5eb32a67aecfb18034ebfb9, + 0x6d9f76dcf37a5aa2ae67c04d3900e6fb6a22b1f138ca894115c5455ac67231f, + 0x25279f63fedff20b4215409f4e9bbe3f581e261e3d85e243e3c8db839b840c5, + 0x2709628835df48563ea39a199fe4ea0a996e36ebdf6636b1f84d5126dd61a7f, + 0x4310ec700c8758f7442d8c93e9e3673944aa6b8008e7dbde57a1d3c92759f5a, + 0x3fda02d2535508c4d1a5b26d5c2ca8eaee905f271977472afbf669c1e2cd5f4, + 0x603c30988a19281fb5fe8fa1bd91b43b718b26a6c441afb4b8f1b505433bc62, + 0x70e2fa983c8725ab7e25e8f73be1c11b2e56aff5069bd5c148c2b6afa36f796, + 0xad0ecd723ff455eb4b76ac8d8c3af629f6550e0e080a21750d1b6c46b72d1e, + 0x55ae795a881b668c1362db3d8b28913f1e295d959583df86c32b7c02ad6d540, + 0x462ac254a60b412082cc89c9756598c62c6b08101735d16f579bbda8b0c21b, + 0x57882e1b6d4bbc107376edccb8ea30bd9ca16dca759cac88438eea181109779, + 0x7c1b31f13593d28a50a3502ad6ceb51970adb6b69fb482521c1cb080ef8cc88, + 0x44e637ecbee8f2ba41853f2be663ec3e92aff07ae1cbd7975c550d379137e8f, + 0x2efa3ac8821e925c05f498867449ea5ffc9b6d90382aaefb8751640ccd0b48a, + 0x47ff9b4e747db656c2cc54387b8c4eb6ba9e03d4c5b4d076b887b49e6aa84a9, + 0x278d981194dfbcd1425360f864f67f98b1ecd426a74cc656febc68223889bcc, + 0x3262d9eb66e0c23abcca50eb4221cb6686b6d82dfded6f10839e974d4c314e4, + 0x43319c06737a08a8f4cfc7a9cc23e071570481641f2d19554182563cb1ff080, + 0x467c311838a520bb4c2a0f4bd5366749b31644a543741e220b272c65fb5d6ec, + 0x54e33e36dee94980ec73d385544ca013a724e2f92d158927489b0c7846212d8, + 0x515974604ee2481ecd5ae2c205ff60f3526ffdeaba22dc50eb95ab6082be9f1, + 0x3adaead20928e3c248337e62137e02d55a4a60fe01b630888feb1dc899b7bc9, + 0x667e16d875a64953868e986c72cff361bacc83f3423f71dc895a55aa1e23b8f, + 0x532e39f78795a00b2be0df4f9648a640a887f8c9c9fa43af32bae2d0403fdff, + 0x3dc1d2855c787bac672b5f05d319b13f7b5b47380366403ff167abea0cda575, + 0x75fca565924cf746b854a42cc17848018d1952be4e5fa8b76cfb97bc14fca8e, + 0x36091f7f3bb652f8c2df8f690582e2f145398871747bfb2bdc4ff6c3b653e22, + 0x63c7c923e3991aa3a940f2bfcef0266fae885394be4dfb4903c83dbcccbbc0, + 0x3223b3c8e3be5e07361ec4e0b388f797c4d521c8c5a15ba8fe91c982d18fddd, + 0x55c3aa0998ada73255f7d20dd3c322d2b4ad74af62246987a270b85184b0ca6, + 0x323f78c464ac117ba1fd8cc28ac9481db80112abfd615d54ed673912924e3ac, + 0x1a42d1e15b42a1b98c6d959ca8a2a0b513f79326fa7abbf3ab4801e333af1d1, + 0x3ed7c0845f57246e74916a911b540ffecd09b9ea41df7932a162bf31dea1e7d, + 0x25103c850328d3e78ceaefa0a0184e45902e1e6448f725c97404d572ebad2b2, + 0x4acf2ef3d83ebdf5d905aa9dbb14113d26ebbd29c811e03b69e5e09d7668fef, + 0x7f55c4bfeed6ca8a11613bbd9df9a9a1782cdd1781ff6c2bc50545c51e4ccc9, + 0x6affc64cdb8f48b335bbb443c3927b1864288df5a171947c0ec5d277a18ee46, + 0x611494a92e0f8986a2ce6f6fa98a75044efa395cae69a0679c81e5d2794c571, + 0x57c55e379fe94892555f6cd808e954e35d9586f7165a19e0f0606853b735b02, + 0x5fe5bb3609e5c8e5da37d0f17c27041b00175ee3ca4e80a08a916bbde6618aa, + 0x5e3f55e046ff6816b2527dfd6f6bb22565e3f391206b5e8727ad60f41674c5e, + 0x128516baba513903b5a4ccb49135e3129ce28ac6c41d5baf4b80166c2b5fc70, + 0x7ee5417cfe113bc96b67458f8861312f7558d8829b7871b3eb13a198f13b589, + 0x3defa833ecdfe2d4e7c39d33dc94091557d86e27132eee102ed629c3ac297f, + 0x3d459a5d64c8ad897a77ddd06ec60dcc187225922287bef5216300c3db0638a, + 0x3799d2e0cc8d31b3a3ca57374319c4159e47fb69758b19951404207cec29dac, + 0x5cc25f90959c214e28246d5d78faa51b843a3a6894f8b5cabcd72f490719b44, + 0x39a5b79b796b7a9436e4ad43998f60e4ccfedb7360b29183b29a6d0654019dd, + 0x182ac7347fb9fadaa4e32c704cd4e6264a334e1a1a4f0dff0e427c3ae5f61a9, + 0x5bfd735cf14215675e13245782ec1dc124594736533a9c4c9ed068a3d46640d, + 0x6b33648f7bbef0b1a1abd5ec8a6d831f29f147216126e7cef88c252ea926490, + 0x557c6460a8505dada7135b1cf17fc9e418d2e5acf6e389334f6ae8dd85ccc46, + 0x6ac0cf620f27525ddb2945948947ae70750a64c1895b4bd60cd6a43d88775ec, + 0xda5c1be5cbe9916e14071a2b76d8059a73af7dd5831a8828f1dc23fc54e8ff, + 0x6a152e10af84e1e4018f14a638bbb8a6b53f4cac5f2055b94ec9e354c756c7, + 0x75eef8539a00a16205a18e85a9df4d53e5c661b4350441427ee7fcf7cba6c69, + 0x7c85de58824f6a5a52d8380c71321b9f6252dc07c9ff01b8ef6b77145d0b366, + 0x1d7ef40c070114ca562b2e58d58acc7537d99ccc56b6d3b9671dc2c68bac393, + 0x6c4a26e9d14a3ec7c487958247c1d14443c7b860dc934c0fed4a49dabb88b28, + 0x1375fd06f3f892095938200e32a1dfc04fae05cf959cf44098a53743db2f5d2, + 0x8c322173ff08079ee6bf93d6d423bbf63cbdfff77e811da5c6df1f58b02d6d, + 0x22c48909c3e56407996b2be9cf83b5d81bb42160c32baf67790eb5eb2be2115, + 0x13b4556bfcd64758b34487b4a222fe254c766f8bbd09aaad8942efe16a22e76, + 0xab58148bafb3c2399e8d146aef7c777a2ad49dd99fa5ac8b280ffdfec2b014, + 0x365f51cf1833df4541e4b335d30ed8e738611ea4b731a416674a309c0f3c519, + 0x174507224b9133d96b21f6a4e79fb66df0e6f9eb7c0a91834f8858919a5190, + 0x7c8e06dc8914cd5968c4ee564b5658b2ab7e5908cd7f618bcb0a3e39bc56fe0, + 0x5d2329b02d1fabc1e600c432bdc5403340f289f0a49762d6707af7cb984cbf5, + 0x638923949e637a2cafbf66344149da9a095e1bfcb5e5e09ce9ea1720ac87bcf, + 0x63703aae87388ee1b76655b8e4a3d1e9e474922656fe81efd85ae1a588d248b, + 0x3b6c0f78b62521a2526d41f57df43dad20adec183d652b58bc40db497588fc7, + 0x53a1f017c4896ce8a1a405e67de48788c31bd25af315de212e7f14e7661e39f, + 0x10b0c455aed008716e7fcc8c1e50e356c4059dc96fbbf2ab88edbe216e4e823, + 0x690f3819eb1c65acd13657dbc82e8e26dd57704aa2f4853b552cbe4d666d61d, + 0x534d8f8ce85d8484a2a6d73840f16467b9c7204c375a571eed3c146907067c8, + 0x444a60b4ef2029d6c285a887d6ce00d0f223101dd6444e6468d3f9c6dd5e1b6, + 0x39bb552e744a4724c5e4544bc72e214fe6ff8ce3c3ec9d7fcb4546b6ea6fda6, + 0x25bfb208e87bd070794a0db99fa34705c92d000fb606de9217df731e4a03657, + 0x1cf984167c041fdd2e8691857d746df7e6503bf1f0172ae8b6e05c8d40e4250, + 0x16a90318c8196cc2f35974157fe4fe5f19b3be58ea90fe250fda03b53823a62, + 0x3f0de265812f04d087ec2800c92f8437f520b44cb7842c89a7e5731d49e29ba, + 0x4928d981d6b3a4a1fdd5497ddebaff1ba3eba732cf66cc3bc7f2c4395e5b1ca, + 0x26c4f0e2f10a76735979d7186166ce66689e7d3cf157ca093b552db7b1693d9, + 0x6b3319fbe3bcfc03b6e000f243f01b0c3d1eba1af31faffb661857332f6ed3d, + 0x1c1f935fe88d7fdc6e7d1346bf4a489b8249d2cbf2d548afba8719cd93c9cf2, + 0x112d889e2bfa1f96671d24597bebe84cb0ad8c3296ae2100313f16d1f998a42, + 0x3b1cee7a2c3aed767c0ffc1c6f6c2762e2151f4e8962454c45a403ac2b18290, + 0x30d4e7be3c87c7cd05868a2457a3b263656bfcd0d9cb6b56d0a9ba18674fcf9, + 0x57f77ee016f27e65781ccecc4965471801370caabd9e9beb831956861e4bd8e, + 0x28c8816ebfb926f8eee9895691c423c4ede5c0f30d42ab959ca81b4c10c42b, + 0x6ae10709b7ccc470643be743668ae5b99c574f713db6a1ef9c9e3be31366de5, + 0x2cb84263c81c90507230faba05c8eb1f5cf9a5f99d3b9fcc6e49674056d796f, + 0x3782d601859b97ff190d99fe4e63820d27859ccc70a5590bfee4be7d92add3e, + 0x13e3457be3904721dcf0e7ee9af1daeb57984578c8f74bc25bd41e9f60449c0, + 0x7cdba4e71d91503dbf4caeaae45b418d24f972e7c6127c915bb49e6271cfcb4, + 0x5294a63d37cb39a0e50257674c42eb38410c08702c0ed6295848915e2481229, + 0x5975a20fcc08a496a5710df71f4209e9024809b1257fd01e3b16af87ffdcf53, + 0x7f424220d19dd49ee2cd31ad7683bea678822ab4cc2b0df057fe01b8f6dffc, + 0x1a9546ae28da6b5790ab9f9e5606649ef440786d2f056d81a812f23146e6df9, + 0x3a46ffc61042264798440b6849a8cc1f2b68b9107049c32a1d2c60b5bed8143, + 0x2cb883ab31ed72c736612e50e96fb41b7f11758bd81d82adb589b203cdcdbf2, + 0x29ad63c3c864e8fea206e7f199be02504a67342e8ab4f43387f4d85fb94552b, + 0x24ae584edb4a3690d32d60ba3787cf77341e5e92000f06ed74d780708186cc9, + 0x102268334c9599f15b3aa4d4d1fef3d00a482a88b347a5cfe0a3d0a2abd37d7, + 0xa64775f9bea3d451c20eb44c30bd0596ef835b079d2940d0d921e4075bd9d2, + 0x602a1ead5795b1a6c5770a8cc9252e911fc0f749abd3591cb0bea338daaea29, + 0x6f4a25aa6a90fad96ebbb419906935c5d11a0587aa05c343b5bf7e9dd3079a8, + 0x63a05f62edf22803d76fda1a040ebcc0deb5ab554d9e74d7a269259a73fdcdf, + 0x42a3b0e2a899399d46ae05cda9f432af9c398be1cd1950868178f35209af613, + 0xceb5e454287a3951ac9088254089e28471f0384f90699d164a127b3561d553, + 0x41a5f49d6e1fc86efaa0af86b7318d66f2bbf8f3b20260367e953c2f22c7231, + 0x694c5b9b1aababc39433644626491a43d32b9bba6af06b6f0f757f007db82c5, + 0x1dda5792203c46376985120218ffa486d193a5de63ce9f894c414046ddb4ea8, + 0x399adc31c19e4c1a27efd6f1a97bdd1d82314babaf73de1e9e5e99220b6e14, + 0x2ae55f7d601e12a0cd81f372399bb585a5d2b5da80b99281ae810da2c9e3aaa, + 0x511a77c0796686ae99757bdb5d63445d1836bf7802ea19e1e5a88b3fba7aaa0, + 0x62274d0f25c48c89e2c2dd4503ce5f14f1a6f7c196d962eec4fe5bbda933cfc, + 0x21e58c44757f2f5d01119de9162f9f700bd6650c2ebac3b58f37e6c76a7b73d, + 0x5cdcc022d1d0dc01f64404a6e7f6e28603e557390f4b898fa05bfdb64027e4, + 0x38cb903b54165780ebac9af41ae2f4392ba8777381e9a7a25af6a2f3ddbfaff, + 0x7737e3e75b102544a994a0e5ffde8e95891b660308cd2617e94aeca8fe60cf0, + 0x55bde2a12f46fe0e9856c1144124b5bc9ea5b227f634963efca5228ad546317, + 0x5fce21079dbba8664a004a3e10f8125b4cc07b3bd340b86951f9ab9abe00b, + 0x6f9c62d7f1131ee7d53398af8996a9e49bf23c72323c457fd3c4c54fc7f7f9c, + 0x5facb0f9f88c28c2487ae88a6051cc189c1fdf890b5f056859feeeb479a0a9, + 0x38dabfc4952ee29a046fcfc91a241b3d10c7257e388c42a21616ece9acdee70, + 0x1b9f3c1e9e5b9a2165da283224182c09a77a345f473279f50c1f06ea09ff09c, + 0x142736ea07727ccfc33b632cefebef209a7bb3852adedcce8ce7b4ee1ddb4bc, + 0x8d9e87375c3957511bfcf223a76cf1c39d54835c5a7901d0aa559591126c85, + 0x37ba5af9c660bb96c6f5840966991d9169637297be58f4845f3d1fddfb6735, + 0x4b5e96ef51c800908dedb5e2ef71bfdb30a91a857699eb209c2bc76e0428b01, + 0x563f9b60e03088e1ab7de47f52e9f3a72bd611df60b7cd451e6500bea408635, + 0x197b4cb84ae86617967f41beefc8e28cb2695a92d2ac78e0e558e8a21785645, + 0x2812ecccd0fe97b5d15b8a26685ae7be3c28028538d5f584c101aff39f418b, + 0x4a9a1737a7a4b7b8f7927a4eab806c27b00a7aa9a8c3efeaef9391fe235e50f, + 0x12dc8a91ff7668b33b535f191d920c69cad5eac0c07535479d9455b57422893, + 0x50e87d4aa9e8bf02a6d9a2c453c22ce13aca902e9d038928cad98b948028edb, + 0x230955e77958609ba8729e5aad41ea6e99524e3ac8b0cf5ad7369b8e3573197, + 0xa5c148c8657a17b0a7b5f966457a4115f3e0180a31cbec6aef355a3ae3a1f9, + 0x3978a921df21ed464ae851b9ff34c732e563c66f5867dd3aeebabde7b5ac470, + 0x1f6a327a83d4c735d35953146e4a44c0e90394b52ee90bfecbec5445f95e6c2, + 0x63c27da8fb6817e70effc2fead033f847253f6e8b3ed9bb3b1359b61241abde, + 0x68606996f68b4b2c4b60f6ef6eec306db1c34c8f7cf0456b9b3d7e65a08b057, + 0x6b7286ec49be9eb20fef830094e52b757d2b96d1f9b900811d569073e2ea1fd, + 0x1f18cef417dcd9b9c205b7ee5dd70d2f955259c43feabaed0713dfad491dbc8, + 0x407b02d77d2d6a655fd860a54b7ebc1151153f9651e479d25b1d58b936d4c94, + 0x570227914ae0e0a6740695952810db69d70b56471ed08ddf6f252b5dbd221b3, + 0x69ba8234a0e286b0434064a271fa712c5c1085c1f09663c6ad2e26dd237b794, + 0x139a79234cc427f771edfe91f270d72716765957049baddb4e80458c04d81a8, + 0x5d2ec469c6156b1e302c60fc635c80c0f677f194d1206d96613067b8a081f6d, + 0x73fd4bffe214a6fa0342a7f607fbaf9d62f9faadaee9192ba2a33dc0f63dd00, + 0x3ea4ee1a347a22def5f5eab36ad4341ebcc58fcb7069ab0b08b30aa6facee90, + 0x5eaf14b8d7f21e7ec2001393a1f785040c7498380abf64fac9db832442c3bbe, + 0x6352d11960594b660c787e359c2ad0cefe2c82aa469ad879cc4e3b0e75cd105, + 0x2a23f3f359cfaa7c4bdf2385e526aff4f42442aadc049dd42c2325bad9a7ec0, + 0x6de49f3b9168e0b3e3ad681e2572369667cba73324b609181ac6825fdc15a37, + 0x73dd94c872af2aff69e85b402884332cd9e6c9fa8c51a9cc7cac74af7b392c3, + 0x2cd16bb8a03a6174a8fa4aed0d077dc2a6c1712d1c8d66fad099c08f1d4a819, + 0x6f614bb2971bd0d342c9fae58809aacb41bf10bc558eadb2e9720f47c891e2f, + 0x5431c28b0c131df5d270b8d954cb182464197ed713e1976e4e5ce9d0979fcdf, + 0x9145abd85f1e267b3bf965a9c4da1a962d4d165da918ad78a08628394fcd67, + 0x78d8d2fd14c2066d4176b911ad2ccb8751cbd00b87e25ec8d811c56761e5d79, + 0xf079ea81e3d94afdabd20349632a448dc6ce9478008764c90d8f7f1c0c95a2, + 0x53c6e4cb170563dfaa3fef197ae68c9642b871ee4cbc3f8101db32fd1191fd6, + 0x1b7196e379bfe2914aeaa6c99990d8a1ef7d97e2ce0c46e7eae49679d74695c, + 0x335577e927fda7c2f30d67fdd2d80e0abc9f05270182385a4f3a00228dfe1ca, + 0x112c7f211d781922e2503eb9964c7b25f8b5a39093b5e45b0260254555ecf74, + 0x5ab84b4279c6ce278f3018d36533b0addd3fd258b5a23ac60d40aebfa2343b3, + 0x183e325b81b875fd15df4e642ddc3a9a2a0cbddcc4bfe26c8d61a7c39adb5f3, + 0x46bc70a708229ee17455a81416b8e41a34c237bda826c47bb882380775a6039, + 0x23630d0155160784e3aeca05151da85141e661f9dbcd2e42649966866d98b4a, + 0x291a55126878e1168d360eaf48dc0ac1041e368a6f15f3971f941778e04f05b, + 0x2a605bd7bdbe6687adffb73175f76bc7476c5aaad530a0b4e9b87268c833e2a, + 0x515c8a5f064c40ede79fa7f6475ddb7d6088c7b7b9845d565dfc7732b07464e, + 0x275e783029bcb64f6b3aac74ff90edfee49cac5e508485b49d4043de3e652dd, + 0x4ebf34b35ff6f9e4c301ecb35506425594dc8df5300c688f414fce5206b863f, + 0xd6d110f45494d65aff2ee2129e3448c728da93d6cb3ba062075388fbba30ac, + 0x5390a14644157e9f07f3d8ac6e5f13d56e72387cc77c86fa4a152f34deef945, + 0x2aee72a1e5e3fc3e4fcd44c13640d2c0521d82e3c29e39216c2809fceda2383, + 0x112b4b3e4f0ebafd5a0544d6148c59031f2e8917645f77acc507b10a7456996, + 0x7a860c5ed0116da5cd7c35e547db75a540f6f0f710562db144b7e54ac4d1f7b, + 0x5c04ae1f823befec7a4176ef13219dda00e56feaacdb001923f000d7696459d, + 0x599deb4ed61c021bd7b2a8f7fc405a1ecedd649c3024d227da750e06ff04a7b, + 0x45cd2dc2ce11fa7e2db34d6d8056c25bf26715cd125f5f99ef4ecd9cc281c9a, + 0x331ec0b14c29dfd3cc08355f642b0709db8d31da20d84d9deb2c27e0958e977, + 0x7146fd7f01f6759c791affd9e5fe44a6939f633f443a2af803b905a34a479bd, + 0x6123ea4d91bbade93a7dfc5fdedb23336f204467033bb966bdf21ed97f36bd2, + 0x702d1b690c609d7031f2071e651694b6d5d2dca595dc0cf565f3eb0942a33b0, + 0x670fc457e90faefc36de75f1bb9223532698cec6fb03507bb51b0e693fe8f16, + 0x6b505583bcafb0c7c076e2bfb60f8d822f3b7640d28d3ed676509cdd336d748, + 0x219ea1dd28c7bb349b5d73ebb52c4987d314aa4f9c3efb0a99c2db433f8a012, + 0xb84858746fd7dbcf5dbba0a06e0bb15482e06571574ee28cb424d1e9a9724e, + 0x40869136fc6e3b6c72ecc33ef1bfd12dccf1a5e83cf4b7acc21ef51d5a885d4, + 0x57665b5e5406e8dc563253e956e946acf421b2df536ab74651da8cf55ae504a, + 0x656616d700a3296fb6a1e1ad3d908f71bcd43c01ae66ee5bb4961b1bfbd00a0, + 0x36c6e7c97c74c1753a6d7da0550019574c8878500ad2f6722d7996709e98429, + 0x5592891e1a33f1a8cbb8df85257c532d08c0ea7562e2a8baa36aa0cf8ed05de, + 0x24cb82ab06b56d4827e938fd7780e60d50a65157fd3102ce867c6cff87ccce7, + 0x269c83c8e737b79e510cb99ef2a0ec5cdbed5389317b376fb75c157f3dd16f0, + 0x47bd92bc3c2394abc5430785481cc4f47ef93bf40eef9bbd3ecce8f897eb7a4, + 0x66342b898a44cd4236d22b62bf70155cbe7929ae15130abb0d00588d1dc2777, + 0x35e75276537c0521c6ac887f42734456b32eb181bc72ddf6a6452a89dbc2bf8, + 0x7a4fd0ff9a516e352869ced2de7d54c351a4d5dc9d8df28d294082ddaae79f6, + 0x7064651c4890e3cce6dc359a032079fe408552d99fab13993ab4b2623a75c38, + 0x51303d17bad5972dbf7d71c6fecdd20fd9fec3b16c3d1c717c9881f42f95eee, + 0x7216e6982587ca435af01256befbae3c105c18cea33fe5773fdd61d0f4835e4, + 0x95ebce26c93eac02d11bc3ec00a112cfa384ad9d9ba9095f8a8698bb302bec, + 0x2e62d9f214e03ec44ed43c4255a2cc56303366b770442bfb01b383a8f2387ce, + 0x57c6de4250cf2f33b24eddb63f9966de6b9855cccbfe4c98c503c72d1b80de2, + 0x1d889491830efdf76fd22e9409b6584822917a3ec7ec5c9ab9e197de105170e, + 0x498d003525b8dcee0109616133489cd8814e585c9e308cc96ad66ec4b1225e2, + 0x2261a1feb755605ea9495c389e90874a251a8390939317865c061cd37aaa9d2, + 0x2a31db795a937efb0160806d7b5314dde8bdc73da9f129c9525bb0a9df5c84b, + 0x7955c3a967f0bfe29df59ffb5fc852dcc6e26b3aaf8beda28477d717e57e023, + 0x678a0ded5292998b6c9c81d23538263d5d2694c3b25eb4a2b36f2338a5676ad, + 0x716fe9ba2a46a3c9e59c8bdfd4f88080cbae5e6c700411adcdaad2154a6ed20, + 0xeecb5f8ba68fca44ec03e941ea2cb2f744d24cecae2c0e776b198a30e5cba5, + 0x250bc63f00b5546dd72862266729fcf4164fb88ebebd01e33988eae437ef003, + 0x6c1f984832b70bbbdb179c46139509e3e9dcb7eafa52726f6f25dd7dc65d1af, + 0x6720f1f49a2587a993f2ea4157e5d27120bc12bc886907adda287c07762ebbf, + 0x1248af6de99df209b3616eec67adcf3344fa2666bff5b4211a3119133a60834, + 0xbc974bb2e85bca29a84da5192ca50d03a9995c49ebe6c8b4f3d7d4e570414, + 0x7274db8f5fb6aa074c54acdd1bfe9ec9820333a460fca3f1bc36f5ed0f09057, + 0x6e9ac20635f39f987297fcaccd0db6654d0593549f982749ae10d19309e47cc, + 0x4458dfd7d4297060bf0f0071195432ebab255b3b5922dcb60d36c0b7f48b7ef, + 0x42ab1153f0c336c8c38c73153581711a9d355423f22a6970afa587179bc593c, + 0x13d8720fe57f8edd122c5efd342723df6e98c32a3acbfbc8ec6a03282bdccbc, + 0x479799540d6aec5c6caeaebc2a4b9ab46e57199806564eaea7e5432829de6ba, + 0x61860d27b69b6b448fd10bd0db2691a1d57cbd1d532d73d3f8bc57f2c350fe7, + 0x7275b35b6bd7aa53ae19445763c8126bf9d2836f7eebfcda8079d71d8112e6, + 0x36bb1671de6ebcb212d3928a2bd32d703dfa87a13312dffd9f15a37c7287978, + 0x3bcbc93bc5ba6a06fe68b8f7018e93f47b2842133994f9229a5b207728d4748, + 0x10a1de9e5a86f48f874a309e479fce45cddd0c47302bf133b864c63811e10b4, + 0x327c63c1a7a9cae083c966f19c0a624c1c24b7e92150c6e0da1da39adfa4002, + 0x73349491ac1db9e2d0d00df63a3d54505da198d9a1723d76cd1f561d81a92a7, + 0x7a8f4247bf9d8836e9e94ee3b76d87767873fbd7a87e5226cd19eccefc8bfe9, + 0x6a6d789b0495f8ad89664509f2f1641456603216d53cf6a3272b673d31b9687, + 0x53be673e8d57dcb05d47839f47637f43959304ee325be2a91e2f201b253acf4, + 0x6b87fad549ae2c0f2e75d629d08721ea77a37879b3f1087b8b0c1846905aa25, + 0x5bbf821592df58b89e1251259a70d683688413c80326fc4b7863426073c674a, + 0x3e5b67b300f516829412b921e04a8663b466c1463a381c755e523caec21df61, + 0x2f728fc945a62683f9ac47888157b6de33bd72cd5755750790844d21d1dd51f, + 0x3eac5ad79a7092fa1561551505162e6d5b7f46d14da59a0b99a79423c804b15, + 0x5d8a28524710f888fc2e4437c6666167d33d4144bcf0609ce03d92fb59f277f, + 0x3b646b45cdbeb985f7c1e3f215d4a66c46ac79156b425962e4519f962ca1268, + 0x5f5096559933a9ea375d4f173373dbac5678c4730921600b32d6dba6600bc48, + 0x72c484e56ee95fae7f0257073b7fd5dae024a5a720b50c0067fa58f2f78b35a, + 0x762653cf8e7e1e3100ebadaa36a280f1a533daf1510ab450f62bfca74002660, + 0x359832ddf9f97987ae49eed40895fe661310b169f1565a0b338510a91c27aad, + 0x4feee2f22362846eb57a76a97f7c8046aa8e1bcf9f7044c27ed5564bf252573, + 0xc5e59504c41dce0548578eb3be1bfe572697c9876f410c73dba735c3010d66, + 0x406af70953efcdd42c233c73723dcd0ff7e63497ee6d21ebe266bed86d54de2, + 0x6b5b171ad692bb8980990dfcdb7448558e86fa53cbc9dc50db2e1c12f3df35c, + 0x4ef7552d77d4ec9d5d8b549eceb3433e25e12b42f10b3290c8f3d94c53d19bd, + 0x21c6c221c056c069275cce9bbecb1c560cbaa3b9b477c5fb215c989da31c913, + 0x437c540465497556d1f40645b5478f50b1549e7736a1e10e4d02f9dd70179ec, + 0x688df12204c6f1e1e414523d4b651df25b1e7f27902c417c4e7b5c862012c2a, + 0x275dafd7bf22f896ab4a5a85a3ed1cd369370243cef8e50257382df76e36900, + 0x753d0fb9c1d745a27c32f3c41e42d913fc051f6498bb2f4eae5558d14886557, + 0x3510e0c0e6285cf55de5f5e047bdb6241b5e40b36cbdf0e1c710949036f68dc, + 0x151f7367011f226bd7a998fd89dfe2e507a0d62a91ab3a6288244064061f36c, + 0x7636f6876af57199caf0ba13bcaa15376008d63f32958d4d722fae3e7ce19b4, + 0x10cc44ef7383b0c61e757750e73fb893a0bd7010ab9d595e31dbba4bbdddf12, + 0x7de48d15c393103c787f22a1ca39a3d33ee97e40923fbbcd710bcc3c20bac0, + 0x4986f6bf97e31b92081f567e0fb1a9c0e04f1646398291f28a77004d8a87da9, + 0x71c503709f150c4a7b76570f9868f6098b911e8c9eab58035111cf7f0afcb08, + 0x7a77ba16019aca8fb40714e524b8409b94990b6cc5f98e3b7089cdb3d246322, + 0x4f3d1be23b9e3c2bd3b66896adadcf66db432082b8d11d9199792775dad3e4d, + 0x4c4db7280aa88af5111ba0012e974e075d67fe9962aec6676eea47e3b9d1f63, + 0x1d01fe8df4c45c99a21e538033bb311d0c16a8c3b8af2f1aea1fdc21a16c665, + 0x4a3e0bf8c4391b26fe27e85abe664707477ef2466cc2aefcd2fc86b7a34af73, + 0x5cc18fd95148eeef20ff19bd705bd961e64f62c864fb46843744e01256f6c9f, + 0x4774c304ac7e6425a02b0856fa5777b4129bbd9bae964da22c33c3cacf56561, + 0x15826249139bf38da06d93a101a7f63faf983600fdee3ba459be78dc894d5b2, + 0x7a2c8b5b0f1072b54224262eeee576d5cf9969f0a245e4f97797dbbb1bd0bb9, + 0x5379d056e6346aa281fe6a04f2057d300635e4c58b508271296d356c0aa7e1b, + 0x6ad6126d1016d8f6c8789e7d5facda2d73bdefd006d6d83184a696c5ff266e1, + 0x74a6c4b2600210a28ecff464e84ca87b933a61b6457b0e9e2589db0334fe758, + 0x77ad7496f647ca6d88686a4afd410bb264af050ad0f629477720b8248fe104b, + 0x4011d5738c6cbdcf10846f73d75bc1b3c1878042149400f32219dff9d43a0e7, + 0x4a607b6e7436747fc0eac7b45e4285a77737f46f34d1d1969973936df7a3969, + 0x350317786d3ec46b576840341c1085e00ce29d7a366e875614cacf1cc17e4ee, + 0x5c51c5d1329365049a6956ef306decccd404aecf156fc86040cae11812bc465, + 0x3751c7dd846d577f5687d9580448873ca3071c1833c76e2a162179b699f768a, + 0x2815753063f50402c5781b6a20a57208e86126164e7218d5a82bbadf194656d, + 0x40a8c11fde10b00e2d00958a02da399f8725648b09e726382e1f54e3a3f5c24, + 0x62809334610eea3aa2d75477463bcf86c606d80355a5db9c1a741c9d55337aa, + 0x7d9e752c6234b270d07368507b826aec918835580864e6f3438558582678f4d, + 0x351e141b75763d6b0fedfb787717b5ecf0a75c229fa3fa0e6ca5787345b97f4, + 0x54da1a5c80c394ce44e3bfdc30eda863715ab8111495efbcdade2358e3aef84, + 0x6fb35633c269a132240a0e0dddf8c278774b39f3ef4f05388e7b537fbae8622, + 0x5086160e53d084849350fd2b1470302f75124e4372fed855174ac1b0968872, + 0x6daeff1e088cfa838772f28f3d4525ac4300b8cdc631b522534157f54acdcfe, + 0x4451e4d2e3aa70aa9dd0ad9ac23041e95f76b88c6048d8e19ba7f0e2f0f6f83, + 0x5e86e530c74cff239575a70b0b55f7c0ea91b06d777884cc1db586fed2fd894, + 0x59a37c350578e2cb0386cf097be60e28fb4f8d9b0077e5a2c2c0e1e67d44fa9, + 0x5cb512de5e6dd3e0e75aac2ffb7ceb15c2848676c9454bdb1e485a1ac953a38, + 0x6bf345505ba5bb2eb26919ebb24a1f14b185b1e58cee15c75aaa603404066c2, + 0x3677de592fb1f475a812a79360e65d6c2a019f30166e1481afad5c5a762b2c8, + 0xa05413c4809324395e1d7cf27f0e673b710b8d07181cb363d12b8b686b0869, + 0x1d313efe2f6182ae31c7444dbc5eb2ad613498a4d651813dceedf409aed2d6a, + 0x780ec2f8597fe4fced926f1654626457233d0f5cb42fb021b0500c001b1430f, + 0x4b44c4fc1d1ac78ce0c8b562af798ac5808a396775dce092be3ecde5d9880a5, + 0x134bdd0f2dc4ab891309db72643935f8bc8c3568789a01a316003e3737c1d4, + 0x6205e17a1ea1f370e52ad40e984c1c0db29fc22dcfacacf482406d6cdb76542, + 0x7b4ba54da116d09db83bff8ea45fed2fc19356500509a8eee2f51fd2fb1c9bb, + 0x62043e607888cd4aad073dcef5a62939e7756f29d5132e876fa1c4b1bbebf85, + 0x24bad7152be2d3cc8ba8730dea2009112cd50ba691e3ee0af6e1182e9bb794b, + 0x5ca61b255910d4cc4f6b3fd764137d0b6c16986cb9c67cfd0886a4731776548, + 0x7312a667db23170885fa58f85f763ce52bd938a7c0635db16291c21cfd7a1ad, + 0x2030c502cd488b8cdde71e616d9b841c938f2fcb39fbc2fee367445ca6cebe1, + 0x74f355f62a031bfbf24e18341d2cd96b54824f282eadfdefad37544fd2a9a70, + 0x3a51924d0a8fb84c348a69b875d9bd676a194d902043aa935e3103e75f2e6f2, + 0x63f36cfc831436fa6720b6973821fd562e33df39a44015d6817c232a043d201, + 0x3fff1ecee721d282c751c9fe38b4f64e67754843d7704698cc832d6cdf7882b, + 0x7d1f358c14d773162388bff57dabdd045300c02aeb162b632dbb44aae30c182, + 0x7e8dff2a24633885f99a879299e7c83f94a39abe63b15720eb3de5687ce9a60, + 0x4d3a9c011072e382625da8347c25baa0fc7f4e770aeefb746dda561a2eb461a, + 0x39dcbe808d3129a39644e924e75dfcbe1055d5329f830936fcb704fbd24f634, + 0x1164ae46dba7da406dda4585550cde6e663b282f5f8b09e62de9b57a59725ff, + 0x55fc0507338247ad12e810778d76fdb6e875a2eeedb4c7b6666a77ba57b290d, + 0x6b8b82df891d60cf231f920d5ada52ef5a493ca8eca2ef7419dad2450677981, + 0x7347fb990dc8be277da1401a1ba74e74b072f9eb7bb358f1f8e19686379fca3, + 0x65cdd9551d074d497cadbd02c1107ace9db3857ebf049d733805c2cbad38ccc, + 0x321c090474b39d8af14293e24bc15261417371e00734d66247c78ab07d879d5, + 0x49ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca6804, + 0x49ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca6804, + 0x49ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca6804, + 0x49ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca6804, + 0x49ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca6804, + 0x3ca0cfe4b3bc6ddf346d49d06ea0ed34e621062c0e056c1d0405d266e10268a, + 0x3ca0cfe4b3bc6ddf346d49d06ea0ed34e621062c0e056c1d0405d266e10268a, + 0x3ca0cfe4b3bc6ddf346d49d06ea0ed34e621062c0e056c1d0405d266e10268a, + 0x3ca0cfe4b3bc6ddf346d49d06ea0ed34e621062c0e056c1d0405d266e10268a, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x495f2be6a2dc3d4ad3f1ba13599f646b59da0f133f0e3cc3104cf586e0f9193, + 0x366457b29cf6129ef173bc5c213e8662381dcc6aeb3b8a976c8f2a2e6e1b70c, + 0x1894d468c72ecefc272df57855d09cc090cb29fa73fb8f22b9f949f6e4baf78, + 0x5e79f91f58ada455aee358237898475629888848d79db32b10f508aeabd3ca9, + 0x51aee1191f9a15ced01e169e9104de2b4725350c41b98ec1471b9a9c135b15e, + 0x4f69e5d1cf68fb9ef7cd165b59cc9c868dcab7a62ccce28100b87488589f21f, + 0x33e4d9a3eb61c812bec0b3d0460f3377b96e095ce95b36d0e8bac3d86525903, + 0x6b9a0ba1be2024582c775ebeb434dcb08e1d4a7c7a4a066ab3a11bb6ce4f3a3, + 0x2334d949772ae101ca93af7138a53d3a1d0dd0a7249a36004ab7fbbc60c5ed7, + 0x754ad0513207acd9136ee848f40f50b619c5206a5dbd04d1968c323ead40fb, + 0x68b9b9d2ce027b3c9d0c6910398c4b2c547f5c4894f2d61056c12c66e2f685, + 0x74ba4fd652cb4894d8a9123e1624258bc96c5bd556e99df4f65d859c8e00a58, + 0x207a5fd31116bb7ca6ff16e73d4ba8f15202bb131db68724d666df143e226ee, + 0x5dccf4e8a47b2b6152502eb07dd99ad933d63cbc21d4ad5c28e4688dde93f1c, + 0x223c12df6d16c07f400711dd82fdea25f26bf9bb358c2a964662466d21760d2, + 0x741a99f563b40b62c775cbd0548992f21288a24abd884028299f0b14cae94c3, + 0xbb11b4e0a2dc4bf40090df76280c40e31a9dc9c36598ea195d6cea8069d474, + 0x2c3db7a618221b9872dc82c8deb34abf40c49ce55d9ba612f9d20fd78b79ae, + 0x607b3255e0719c139fa0df2993d6279415140b75a0441c14cabd238e4a449ed, + 0x205377d482d8b71d9025cab2d75451eb38d78295700f5a3a65999718f216de8, + 0x1b238940b60db0c97fb4345fd1d22d562f04ed81be9187eaa5d6c55e03508a6, + 0x1f4447d0afb2c90543b2e10bb5ed1095237cc345b5e5d93720ff9531a7ffb09, + 0x11e8c73c62d53a8b3f1589674811c1a51635754d834dd32c657fb453fef1aaa, + 0x9fc0db82c2ba2589fb923076d06aee64670ec10141cc2cdd0c42800e58ceda, + 0x679211b074035dc465db24c389670960f74d41a98bec63fb019312ca0b72a08, + 0x2152c56bb9889129a019959fede827383c7ac47c53eb695332c58466c9f4a5, + 0x61a1972d56d5d80a7dbd687b70742cf282984a4c11f03694ac3bd03ad0bede1, + 0x6d708439a9e86c2dfc4d690934abaa3989fe5f5041e533a56c2182e16641045, + 0x7fae783b8c002808f6a73581bcb1b87c962437b350416389650a84a2dd4747e, + 0x1bfcd17f6f0ee89a0d3346a854fb5338d3df376c4bc16930bca3e575513903f, + 0x524d49e977df4fb36189526e45ecea35d40efb553e928c1e0c4c1b7bfd62fad, + 0x2893417827f5ca829cd87b431abe945915442be0a0259bb3ab4ff5d66d71cd, + 0x138dfdd8365bddb30d8b73609037d4ac0b77167e84b3a27e6852b7f4368c494, + 0x37216a5e70d216ff4b37076c96fa11d3e572d90b882f37430705b6565e6accb, + 0x2e84813cf1f8ff7032f068f75d44058a535e8338a070f6f3cb841fe2320d65e, + 0x7fbaf2d93e2468ecc532cf9ccc385986d21b76079ddaa3e9af0faff0933e0c5, + 0x3835b9610f47793551b0b1ca17b1bbc1117841c7756f3190f332a1c4a35ed49, + 0x36567b7859068c472ac81fda7e88d0f24b503013ebe05940468ce6e3f519f65, + 0x546ddd54fca9aaae6e04dd6cd06910e3c0d55a5656a5d7e8e0d643e119c882, + 0xf0a33606b3462db1d43e290ef48031c63ac6b002f0c815de029643a6838b4d, + 0x2b184b242833e5e5730874b3041fa126f6019c994984f94eecbaca1b3861a29, + 0x942ab0e64c62cc2fd2facd6a324e7e53d118ad5dccb0c81265af69ed898337, + 0x11e3d7682ea60122cf98c3250399858c1c1b1d430eb3b4288143236ae2634b7, + 0x2ce365b813ed9cfd21253275671a06eeb3f7a963e6a058c57c48d5d63d51b39, + 0x65fbccc8f1fd6766878d87c4b6238c0c8eaf3c657ac7a23b9d6c309829fcb4c, + 0x587e6de6c1d46102310d344374968ba06b60396b085e071028d32a1de08d359, + 0x33ea38811c64b9053fbfd176db1a264aa640ed06a615de2f2acc942f2efa6af, + 0x2e6b33a331422f06a3e733d75f18f586d115aebb025d503eff5d407b7f672a3, + 0x5b6219a4d49ad62698d118f830f46c1cccd0bced18aff94d14b3f31678ee236, + 0x7832a938c835032ecaa60d25e165e661fa19f7008c83e3dc4c5d73fa2c98bc7, + 0x69a5825d9d9e9618efc9b11e1aea75c417eaea41bf5a4c11819a8d34d8c38f5, + 0x453dd8e9dec0dda922fa2584c4d9e0da4e6eec935577ba9e155a98267fb34e, + 0x1c1b4bed826f56e8cfc5dad1820d610107573f267717ebe6889baf225542887, + 0x2d74789cb8bb483a6e449618a6b0e2c5a57f25a37676d99722800e934315cb, + 0xc33b1b4a2b2fcf32f1862fead65e7df8203dc08280468f87bf20695893450a, + 0x9a0f0a62b0a4a3b4edd58fa5e2eebfc3cbf2699bbcdd5d7e0d7b54732be7c8, + 0x363b75996ec7116aaed10d843bba960c77ace94421a384036e0c1d4cb4704e3, + 0x1c8dd0f943cec49e6a14af76f3d1145ec008f907bd2359cc8d733c56688660, + 0x45fffccb99c565374f670924c0ff4dac441045a6e0907185df1e94eec909e8b, + 0x3be9652ccc7bcdc47cbdfdba1365a8497b1cce4828b4e890909793ef3172402, + 0x27a52ba31f45ec739f39e65e5153837dcc3c8797e31607c92e103646a7af089, + 0x721f9c7e24f52029e97c9aedc62aa71e4e1aec2ef5803723c0e85452803ea8b, + 0x77442224c44bd4c635c8453756fb1067ecb7ff72c7db83bf9ffb48de7950a30, + 0x2c5f4685e9089b19e10f3f997cae7dc33d5f9fb0802f9ce612c4ba5815ea1b2, + 0x4aafc54d91406a1d9e04d806aa82e507dec1ccb59b1e579ff559200849d8890, + 0x369810a32738c68d93f350304395b3d66df9167aec174ffde0592827cb680dc, + 0x7bcf509bf0beaa67f23f55614eb7587f5b8299db6501955b8d60e888f0344c6, + 0x187020caa432930b88797b5c376cb21e6660967901e77e24abbce84238a700e, + 0x2f243da0817f0d49a7bf8b5e72e61d81e3baf36da7b42b57b82a289ab354ec1, + 0x65c83cb2df312cd079d0d92248496b5f8f640ed124ba8861e14f653c309d355, + 0x32f7860104d20278c5b273951ec87c37dbfbf9564654347315169a255a3fbe3, + 0x170729bade3ee4c87abd624097554c0dee93bee01140826541024d7c011f8fb, + 0x50c28ebfd9ddb5d7d81f1e2a76473a7281f007b254224aebf4f6352f2a6b852, + 0x3c083a6d41c99fd4c4d412cc63efb5ad516e62a48a2ddda161da690d246ec18, + 0x44ba14d7db1655775b65c155aa0d7266853e4fd01d3dbb9a2771ae165b734f1, + 0x5c26e6505cf9de36580afa8e68e4916acb7216b97fdf86d65063c8ea5b5b273, + 0x1651358891e386144a1cdfa72a6fa6b1ad217153a38fd082a837448929c63d4, + 0x3ca144b3523644a5ac05c655b3de5c532c744b933ac02c0b82da61d9e354a2f, + 0x26851c9691be323f5f54878e82fc378567c9b9c739c0fb99b717ba2d80b9416, + 0x7bd3216c698c70ce90dec2d23057c4692d567a2248e529aecd45c745686075e, + 0x7056057ebc3606c55a19bf5963ba83fa13e1a2c7e5d3ad9105243367298425b, + 0x7ba923e6e46b6d5c3230deec3be067969a1060da9207cbce7d91bb14952750b, + 0x95d994b1b47162e568c5284eadbdd91fc0cf8fdbf93c4a4bdeaea3cb02384f, + 0x4f3e1a806f1f4da243fd67c3c35646fb30453e00d02d6a0c9ddf1d18c01245f, + 0x6e38ee226f05a47c7357fe6b6730594d6b68e0a0bd4bd286ba917b79bbf663f, + 0x1389b7aa1c92da6e87a1afad1e28aed49b6859c87adaf45d3f3e0abdd4afc2b, + 0x8bd9ae7f2bf0b4361d6fc3cf652a6e4ce22e6179e1bef886cefe92abca3dca, + 0x17eff47e617e603e9a969d17f034d97db68dd1128313b84863feac6fa855865, + 0x42857365bf5cc92dbcdc141ac54eba947fd34921ffe46a022496ea8a6eb437a, + 0x5c11c5f0ac8bfa245a0ba31172161b6b03a680f64a5e114757e4b60952cbb94, + 0x25543782ca9e128d2d3f494a714b9e1fc66d8d4c002d1b1da831ee58afa42cb, + 0x520be5c7758d5341c321215f4581a90c8c9338580862dca7eafc36324bea82, + 0x6ee587a252acdda8b186309af5b839507b730ef91efde0cd44b7c25bb2f1fb9, + 0x2bece1b47627eeebe85b1c7613b2e7cf75346434930ce350620e703676343b1, + 0x3918f0cf7a04551b769114e638e555d5a05e1248dc0439fced205d0d3ef80a0, + 0x2a0ec3e5d5d8066bd54c7a8925d8b5fd50ae2135b8d6b237e7319814d091cfa, + 0x3dbaf577c61d5ca4c0a331686d211d546fdece53e89f338272e6755ea5b40ca, + 0x580abf9508fe203b344ae73863ea3ebfe49204dc2f1094557f707cced5f7bfc, + 0x28f7c3442f9fc6c6b7e2656387ec90b629ed29956dfb12034e999c48b4d4efd, + 0x11a154fd43b5e8f2335ff91d1ba2f3271f8c0abce4a50f32d63f9a8a0260df3, + 0x14278f5fcc687e489a157a2d7b5994ef7fe563a3ccf26dcba8e6634beca34ea, + 0x2933d838c96d7352a944afc0c30ddee2848744b104734054590e1c5b1704d1c, + 0x1bc837480d3f44b0c816747e81dc0f7f8a88720e5414c9f1841ce54689aac48, + 0x6c1437d2db3ec0ffc56ea16d104bd7d46192b2b3c6a7dacfd772d01e1ca6a48, + 0x5ac8daae907cfd882ada25c2b16f8d9111994d22d259d6fe8d4cb987140e34d, + 0x4d9515254c06f5ce3f505fbeed5f7906c534eba8586b9be51b085823439f990, + 0x22cdacaac7801dc915e4097ebfbcc16e9971fef868611fa1d342a5ea539efcb, + 0x3c1045def94909a8322aea8a044605b8e9213d29f0c75586a332fc401e0d5a4, + 0x391eb3c0b6021d03d8ae41f58422e93ce39de1921fbce6c53346205bcbb7a67, + 0x4125c630d4d48d520bfe8993617fbb725ea463721f62d3042cabbc9c56c46be, + 0x2011f75bb8a373c5f9c2b459509621c0b8970f6cd59b9b8656f9a86a88ccd9f, + 0x213215c90d43c3b3b8e7c543f139332e16a2c28d203f4b986af658c0325e97f, + 0x678ff227882242102694d053b9fcab9d3089971536ec9e9c2f4174e4ccb6964, + 0x1027cffeb4f2a8b1dc155f586c33e9a9c62ed337b781a8169d1e263fd6790cf, + 0x2a79e49f0733eeb8ac7d117e72b8f46a50cfcf00200dc918b7521ba14c7f3ee, + 0x198a286cd3569167f204a7a5a67657470cfcb9c9e3ec9fd7d898c707be3828b, + 0x2bef3fbc7a4a65fca2d5d5c68d5450cb3fece9de4c62448b42b266dda0e7c0f, + 0x7619b217aec2821e6b3f8e28e938888c7dca59f3e2bbe1ce8e1058df7eb7774, + 0x55d905b16cb839c567948ea0c1c6cf0b1a32e45c7ccef4dcf9dd7bcee1ef666, + 0x8218d161574f5cf75420852dffc97e801cd30dee821a5b39a1d64166739323, + 0x7c9e2b9b76cef135c49daac162cce0ecbe8196ade39143f8554ec911d3f7490, + 0x19cee9f6b2c2ae04d064172f3c80ca4059ab74f4af48eb119952c13f5d385a9, + 0x17c911c20545758d4c845997bc1b1238fa4828f23e49b51dad21485b029d599, + 0xd2db6cd0e7c1a0964bf624d69d814331876b9795fcec64c711ce9ae3a340a, + 0x33ec61ed5e91bcf2b3c8f2e258414f273d942ea709e215bd18b0201f4a9030, + 0x5f86f70de1d52ccefbea516fabad9884ff0a46b1524a43cf4da0a419333093c, + 0x5cb89bffd21539b77886f2e8b0d4e6fe8ef472ac6dae8f84c763382c6395d3f, + 0x538dc69ad8852f872625c10768d858fedaac4a854e98fbba930db6d6269c8de, + 0x583c3eed2094eb99702913a316343a2c63e718dc3018fdd1db4cb866b609d9e, + 0x2261d22ffbbef19eb2ba9fa07a5b61901dd541b8d827c4655cd4366e39f75b9, + 0x334488428dcce7360f673750eb07fb729862361ec7a57d5c5bf07f60a33863, + 0x600395751de919f825936c0890269f66860614a56f8a59ce9e11efb71b7b524, + 0x56a8a197c1030fc7c84826efea50c691e420857b9b1eb97f155893c1f9ada6d, + 0x75c402a7d2c6bea8bdc4392e1a17bcd72ed9956cdf75ac31580285447f8d46a, + 0x2de0b4ababf9a72bd56a99f1c8a4c2b180960b26d5f887a014f5138ffc0630a, + 0x4a1737710bf79ca0b2373b835573357e0100dccb9eb33ad30141a816c77569b, + 0x37bfdeefb3fbb4c631ed888401d0bb2125d910b8f6ccc313f853daf9b95dc19, + 0x555fb3cab01fc9c451588edbf01570e750f61262b15d56cad65537556ec7b0, + 0x67f9e82b2410e1c0d832cff816cde8948069ca8684c5fdb9c9b299509cb5b01, + 0x61bffaac7d9c3569c20be4d590c01074cdd544f7ae31fd3a4239a45fdf5b371, + 0x903add4bf1aae057f68780cacb940ec1559c5bea21e35e3c19bf63a7a9f2f0, + 0x562c41601cd77a31670e1daa64b2fc44f006faf666f4d8bc0110ea4ae209097, + 0x5f6cab6c4e8e1c43e9ce0d794e3a0cb7371a2c9142e27e92af5e4d5a4e9f493, + 0x689d5179bd590c1e104adcc2390bde62a34e34675961f2030c1f38810f9610, + 0x1ec6b39956387546257ef02e14edaeaa13ba66c103262ee362e417675b8cf95, + 0x9b4f2edf102da9872c6950c0107fb0cb8bb6fc1ece4bcd484d101ecfb0d081, + 0x5b7ebf050ffab53e70aac4581fc83e8c105ae8bae3e7a7207936113c34f2dcb, + 0x548d41a9fc2e78d7e9cd9497a688655c254d3a1c1d07a31412eac72e8b11208, + 0x5a330331a52b0693982b13e171453b95f288cfd1c03cd30b128d28c20dc6ee7, + 0x59706b78ee205444974f3367f6e9f5cd7e28376925d5cba9e02344afb319ccd, + 0x19338e0b25de7c24a034c8b3218500148ec3a790e38a7a76756895a424c7b2, + 0x4bd38652484c85df03d586412cf7f82546a8a3f5d982ef51bf863d4a9cb4eb9, + 0x7a0d2e661e83ae0bca6586b9b6927c3ba73687ecbe431bf82e0231ef2c11b5, + 0x1ac690eed5fdf7e54101a3c2fe92f38cb96aa6f074bbd5a3d547b203b6fa96, + 0x189eed1d2e065daf6e2fb96cb2a30b2f6d4f30969b74fc9a384c09ae1f35f5, + 0x7fc067c540ae49dac688490eca4a014feb64c84fd119c0dd5facf7ec74a1805, + 0x5544b943b66cf55cef3bd17938ab7c6c141d571dd038828933ea8e72b6475d4, + 0x52cb79e5dced4065bdcbddf4bfcc9b1ea17a89f3e072e85431abcb11119071, + 0x11696263557fd939bbdc65ae53abf5ca9dc73646947f0dd6e47cb0d60d5f6dc, + 0x3455c91fdab8f1f2e2eb6db4bd523407bf76cf4e5613e4df4eadae585d97e39, + 0x72d09ba0c2c46276cba0c5ffa5ce72e3b0abfd77903bc77f2b9c1d7f146a33d, + 0x45c043cf8241c71892bd83ea852448d44793a88c980963d0909bfc2aea77a3a, + 0x7086493a7abe08f7c81d1376b2bbb4b994112c94cee901d2427eff8c88cd196, + 0x5c5b9f7384a1c7efe8d59c2b44ce9b3c327344ce833135552009f3b163b3db4, + 0x7b344306b27c05b47b53f874b0af333f56930b5a25ac96a84f4036fea980b0, + 0x4ccfd22761a262b2d54976ad68543e8ab27bcdf1bc09515137db224cb25a1dc, + 0x2f93ec8911f2f759ce5a407309497519943388310813489bf161b901727b373, + 0x1cc2479ef7aff743d044b7ddcc8ce895b593cf94d6685d9c85396b023cdc8b6, + 0x1e945da611da9bd8459fda0c98ffabcbc6438eab196d3690719dff8e44f8805, + 0x60e5431db81f574dbf397e7aa3de97ef5b049fbadbbd2d3ca6c295678b373b1, + 0x3a46a3d8c4297f3ee52fd808062a07727f8a04e651b10c19e0e0b08a7278398, + 0x74ecf3bebfc4f23220698d81109c56f58baabe9d4ddfee35055148aadae2e40, + 0x5fb8600d2c73d8ba52d8d6967142e38e470f7bafc4d2d1fcfa8c1f152a4d519, + 0x242a2a836a375e7f5559fc7d81b610eaa7767789718d7685fd11c063a10eb2c, + 0x38a794923fb5030748e84e0576bcd5a91a914ffcede186bc4af5e000cfa9dfe, + 0x258b5837cd41a4c5cbf101c27926b04f6ec8078f43b5f44aae7763df31d5143, + 0x634e79bf79fda485d2bb41544d344bb670e752b516be96282a34549a2d36b3b, + 0x1930580cc7e309219b38e58e92c919a369aa4ce87c47a84435eb750ceefb35d, + 0x746fa8d8ebe9d49119d5d1ea926960cfd9a5deda8370e35bd4be5821d4ad522, + 0x21a2175654ceb8e04df5348df0b0a606bc697067f6d1f65e5ef8b9293415a4b, + 0x5ba051fded8e8a193d9b45fd44b0370a60a06905dc518b1991eec318560e725, + 0x740980ac982b255add9e276421df9652ef9a9ada3d9cbf74bfd9febaf076033, + 0x2169349cea4ae1d0d9545055a21029934695efee77c8514fa2cfe4c147ed4b6, + 0x47ba5caf92b701642a84cf124874c8b9424f7892818a3b3ce731af710d39dc7, + 0x341a4a19c4530b759d7a2b2b776baab82504955c91c765ae8cc0e3a9510413c, + 0x5cf812a2e79c1529d55c3513d65f2ce321d0537233f35f3609ea0bbd8107a74, + 0x784eb0f3f3d32511ad81a18765e600e129e1aad2a9b62bc02ef735b05d81a4e, + 0x698a0fd551b37d24a4c7f79644657d945d5b14cb476bb79dcec5bd1e7d03240, + 0x32c4b048e5b91be98ff9a2dfda18ed784ff3dd98dc98eb38f882707ff4334c2, + 0x459ee3217211bacb793dfd1d6b8a011dcb2aef2909be62aa862c41e427b90d5, + 0x4e157c70c7987fdb0bdbf1e2d770b97a40612c1a10ca7fd292d8fcd2843af9a, + 0x3dc2f281a94d7882a2349221ca16052bed4ea37f5d53f6bbfc72e76e7f530a2, + 0x3f58e98155b39ec4ed8255c9fe95cc892e3491ab6182539df816a053ba54379, + 0x2a122e6e7c5a5436a58a77ae86c390f6e956b4c0855ffee1891ccc7d68a4505, + 0x5a5b31fce389ed3d14f7222a3726f47b684d5e66423c90451e47cdca46d9da9, + 0x2cfcf0a269a4242eddf2ede614d3166a6eec6d86bd35463df1faf82814961af, + 0x5490654156105356728bacedca233b7d9c8dfcb2e36dab7ba67938afe4c4ee7, + 0x4e9a6087dae8c335fd09051ef2b45f0ecc60a99fe57d980537804c7a78aad85, + 0x312f583793ab700c7bb655d1e91810293ffd1b11656e60b42376af21ac38f98, + 0x6f9d2939f2b1381666068f4e2ad4b2e60c9f328e13f4c19eabd22b360b479d9, + 0x7de8ad4a8d3a374b61418a8f89293e94e1eb39c1e0ba35c51af62e40e34d091, + 0x5bb3f26fbb284ddc67c13f9cc082a2640d6aaa2754e3736448ffe993a74f6ba, + 0x707f4b68b0e5960cb38e4d3db5f8c716942ce14c8c51d2d215b00da6d583f8c, + 0x2658c67d1b7663e331da180389ff3af58cf500003e1d24a266826cdcedb4f7d, + 0x763950184acfc0c77044365913a6052abb4b3629c438372cf65c5b47e4da814, + 0x313b6cbc1f92b4bd86066752740c70cb2cd48790a47f033c4708bff1aeb60aa, + 0x12f068e1670c58707d0b6c3a22a9055055493d898cf2f83b12b8876b461f8bc, + 0x595c8c984f904552fe5974376a5d08a36a42d4d336ff4b246745868c7f69553, + 0x9d7df86301a711df3c479392b337b89287d62c70ac86d5114b55685b7ecf15, + 0x13b38799508411d0c5ae99acf23c26ef46bdcb8c303622e4856d72717f6f92d, + 0x4464ada40793a1f8cd1754698172227b3dc98303270d5c1e6ca6c3b29cb8f5f, + 0xe9c632d964fd6427406bf8607433be4ccd723187f1d50402d72aaadda835d2, + 0x3b169a004ed987f901643b2a032200a376c40f11018d5d5dddab3bd5cd525ce, + 0x425baac8654f408cbb67ec2f9829a22abdb2f4aaf413c9363fc979a24a87f56, + 0x11ae23024dbd825ac0da52a44a69a2c0c7c12b6d505fd9553548f77495d2fc0, + 0x2c0cc3adb09a2786a5d6a4ba42fd900341f34a8083b8419997480cb43e37a60, + 0x543d8b24ba541366c8b43d7f3776c30be6d769c5b99923f1835d365f81fab41, + 0x35882b329de129f44fa8785112e761387d6fad3714f13a76fdfb2e3fe3454e, + 0x10ad4333478c0f801e537aa42054c501b616c31d21db33f3a81936d6469861f, + 0x2618ddf046a881c75d87130e3642fe330e21a7693e23b61e6e6c4d3f665ab2a, + 0x543706e698908de45d4aaa73418a9469bf62a83c9abef9e1dc102c9e534504e, + 0x3e15964f238f355e4c5425a0be7cea27913832d891bac98cf9ef9822b52f49c, + 0x71a83ee44c1e020dd8d58f3ba289145c4a6b362c64dd1a805f2598999f470a6, + 0x5ed2c81096f4686696e93555ba3ec710df1e1a1378b095b06da6410b471b98f, + 0x6b8ec2881573058d770ac895d926a284bebb083917aaede9641b0ad0bb0f8f, + 0x3aa49f4925e78acf2191faff8c78ca990b921ddfdb0163ad23bc04306ac90fa, + 0x2bf9c4d86ab318c04e755a58a5b676566d24a7294561823251c40072e806a31, + 0x45e873f004f4141860333aced258c38877a7880e22a28aa48d9dd9bc9ce451c, + 0x57d29aedc1017a91aaa895b96061dfe7bcb1a9c53101982b82a28298f629c77, + 0x3c4eb466f8da5f2619b9d1b56a1423df1a4f3136bd66fa674e2324053edebe7, + 0x7e4895ef2bed333d9454cf2269a7111af7ac3fb837899eccb6f6d2687659383, + 0x233f6633de4893cc8c947018a18a55960b1ed56bab2e7b00b64fd7e6a48f444, + 0x677f808633ec2153bae224ab09d90bcf335b37681b0bfa639326faa9b05ab6a, + 0x66e899960827a0736604401f696088762a82b9ab106bd56902cd8044c195887, + 0x5786504d5191d1ac8939e5258b6fb6670827facc63b95907a3fff9593366101, + 0xd27aca627e094af88b2415487f2720fe62df0723593fdab79e56ef09b4b570, + 0x49168f757c872c061b66ebc0707a52739a80a09c37d3d04e87d4643765e51de, + 0x283de52718e5a643afeae6def05cb8281e27c446d1098b1f587eb92e3d14d87, + 0x18c5e3abf7e9ff63dd245dd4232343b314c6b4e9d5d8b06a502dca89b27d39a, + 0x316278de03b81b6ac40a99af543d57f60bd746e3d168a94c7095db07264a8f9, + 0x271f9d8091e1174d9bdf58f31e24f83314f8407cfe0e4a3a9bf2ac5d1dade28, + 0x2e8eb8d43d3e3d3b72f9a028a7ac617fc1cf4f816c2bf9660b9cf43aeed123f, + 0x987ff14202e402429052ada20ae1df1145a14adbd7e860e388ec0c1d322547, + 0x565c21a9cba14f18555076ee58450fc8791d62fe56da14ca9de22462e0cf514, + 0x178920220836ba42c2a7a84cfa21fa5b26316005633c0ce100bb5a24463af8b, + 0x4c74b13d60f5f18211be4432c22b8ecdbcd8de87fbe5e7421f8e2c224bc48ca, + 0x4e7126a41b4d56040d6372381f9d8a794a015b59ff4349e5daf390ceddbed55, + 0x596f287dda4bb296de597dd33437e9aa41fa43e2391b9f3c7dd22e56258e39, + 0x588b0264a5cc7029ad2928882576bff4c6c21948a4858aef89a5835b59aef87, + 0x6ee43e7ea391b39acee17b11cec73694e0b236133d84a807b255790584d0ab9, + 0x1a7eab4b196de1e4021a30cc5a3e990b44c653f7af0715a33edf4ef1821cce0, + 0x75d912a80f29734908b595cbbabb731b7f192b205c4dd89460c1905c4a38099, + 0x46d27da045e60db096ea846d757fea1a68ad7d0cd83ae9526fb32a4eeeb6334, + 0x3a7059683af0f893df49428a5dae5d001435c828055b7e064fc86bf9882328a, + 0x84d3529782a50516f8f46ee3726c9b72e8d6de8ed33577bcb45459294fa6b0, + 0x22c79ea8597147d0c4f87741540f541e55d6d7c5d681386fa3114bbf11d79af, + 0x4ca432714574b490d3e2381700f25933db3d52ce715a31f8546f640943ace95, + 0x23c43fdf2f65dac7b971f74ae74a06bbd10b5abf8c0e48ad412c8bad88d2bb7, + 0x374bfa1292861d339d6be44632b02c67d11a6b138947ff882007f1d988c41ac, + 0x3bbe6780704db33d931f086ed0aba4cadebb41b8c1bfe65bbeac3a577df3d47, + 0x3d030daea4aa64c1ac800d9dae6764a287714b620574b98e5c9608d92606bec, + 0x3d89468a39e8c3a7803f41584b17492ff019d6a9d787aba56d0a6c432f74d65, + 0x343b3c099f45d15628b2829502dd1252a15e7006941092dd48635e7f287e15e, + 0x5f81580a440c93bb67c572fd0e65b842c376e120020a18f246170b3691de1e0, + 0x38b3c1e5f05dd64065224ec02297344bae7cfee5140bf6b1c4cb243b40ca668, + 0x3e7a03d8b13f65e7d3fd0b8c5b43cabf1024f0e48c00f8df1a1496cbc99722a, + 0x3bc22d322884e6fb09d5fad58864b102abe8e28db1ffd43d27cdd5fe9b8b578, + 0x783881eae4fcba6e5def3ffec63bbcac5e53849d508a22d5718c94c9df12bb2, + 0x44c06d3618c8077ce135e586457f3ab276e715b94b4cb9cad179d172151b3f5, + 0xe77b9bdbd55012f55990445409eacbeae9c49c03c23f9b3b4bbf7eec338987, + 0xf66c03abc7d5d920be0558e2d2cb28f47390b5e2fad797c4f03262f0c214b5, + 0xee0b344cfdf485d4d65c88627d3291b8da9f4bc80f56873ea575e58ea90a36, + 0x54fd96cf88d26c9872170a146534bb0e31c313288842e9b135d280de2467594, + 0x4cfc1f067f0c5a4aa96572fb16d41bc3ce9f28c547a49051c7a4a4b5fc442bb, + 0xc27436352fd9b2f564d909650b6c10ec37cefa65ee86d1eea195a68209239e, + 0x21a04e9c248c8339bdde986003bfc7d5aecdcf9b8c10bb605a7dcddb515f367, + 0x5e22a6953b156fdbe8ebb971a1410dafc82d73952f13f8b570baf0ce5982053, + 0x534c6d303141275a75388e893efff20802c4f3642e9e8bbc5bc039b42c80495, + 0x4e4e03c0c50074dd54af179fd259cf730e1befe230a45479065f359ea13b1dc, + 0x5c314306b3d05825805ffe5575609090a13449e388b8b4597880cee463d2a9e, + 0x78b75eac2c4e7bee8c827bf79f836b6f06a828a82450894be43cb6052b716a3, + 0x524ff70ff19d047e136d49b0114fbb809fba843d03718090e27191633fc9caf, + 0x14000d13f5708e191e7cdae8182be5e6f4dbbe7ab9946f8582988ba9047bc14, + 0x3b0061d481fe63b2cb2cb4f55e42d8a32f0e023d58a33c641a04e3b142d6d7a, + 0x4981ca40365f635a074ce2df60bf92df0eac4e3a457f12d4ce166ccc8cacb35, + 0x218c276dd73c137cd07a46eb77af2783696d76d8517f804786dcfc04443ffb8, + 0x260adc655d4ca962be7b50ed0dc882c3a516095e4eb00392f38eb44b3af6d72, + 0x767d669f1a5c7e964041c8e5a38ea45f80bb7dfc7c42ec9da32d00dfe0661cf, + 0x5b5cfe90185c29e2e69f37fa68198a01d264de848ea92bd1364f4aec6d4a85f, + 0x36176a64491c13ee17301a15b24162260f70153fbd99ecf0d9d2f134c581991, + 0x2ee11dc3b0a110a0abc9439496ae5168757e750102d527a6a6b78e19116457f, + 0x6a746550fe79abad95774e370d1883fb1b0b10444ac555bf1768074414c23db, + 0x3b1fa30f288c3b692b4a006702f2ff9acc36d57610722a7874d6aec978b32a3, + 0x47388b08965cbb7dc6f0134f403de13a921497d1e43d3e5af39a0649a7b3108, + 0x6b282edde229194f455da01afcab9d2c2d0f4f6b5b99cdfd53d20fd38b2655f, + 0x6353924e3c19664784506b34e44ec2bc549a1f9552b7afd6224c30b45add7ca, + 0x3828fccd3a4af86a45b4378bc73a7816d19b63764a07c86251be7ca6f28020f, + 0x25e9bc97d10adb577aca8bc8baa7e287893ed9a14069af35718b14d2d2a2f70, + 0x65a57e554616d030d8add7df28a3c3cacaa3ad51a4ad66d6eeba836ff3b8018, + 0x74b4a9819c781c0d9914cbe007d28f6d9d4d501462de8eb33bcf241f2e55417, + 0x5d9814dc362b2d684539324ae22dfcfe31571e713241e1adea32142a55bf5f1, + 0x74960cf9c979dfe44d6d568c1a368a92b030281f44ae206c9473a9de5c791bb, + 0x1f740fc66821d23cefd73ed06de1094808527a6c4aeb3bc505afd35b186b5b2, + 0x5d0425e8fc7e45de630539a6f10656dc8cd4cd91b23a28cd05a01bc945ae231, + 0x738808e6761cd5cd86fe0da81a713afb494e0fb93ac5b123c198332394e4381, + 0x151f46c618164dda278c5d9e8ac93cf6b9726f73746baa6012c58934a77d325, + 0x42aa956fe426e0d87548cffa7be08bb42754a7e8896dd06c48582b4d254723c, + 0x2fc3270a8fafc3e191ab39314bd60f60798c9f34d367f18e093f552676941ac, + 0x698ce7a7e6c4f3d7c44905e91b871a612548c259a4f022d08bb874022fb1236, + 0x60b6ca4e491375a120efe4b3b059c824bb58db4b7a0157fd7a557e1845a3a45, + 0x1104c410beb0d6f65cb14f956aa86b2cc36a3d3f1bd1a41b2686a6d99bbcc84, + 0x1acfa86b958f55e45fb9cd2ca3b9005ca13f0b1a27e36c05c647899e7e3d65b, + 0x604976ad826776318c667b2ea4f02e1f6c06ce12e4ddede97d0168297d3c215, + 0x53e1dbe1514182a63910ca91714624b7264e4e6252b277fe1c64993a1bf9284, + 0x531fd8dfa79d9bbb929535ff189ea7e92703fb57f2d00e1d536cc95b3f68c2c, + 0x7f8249ba8152a6808520cde59a76302a2afdee21aff0165b9fad948a7b08c18, + 0x1729112baadfa344ca8d670f1c5c792562788a2a0e4f0d809ea0566144e63f2, + 0x18f1246f3ae60bf58fdc8b2da39ce5bd49e35de3e5a0566023e57aed178b76c, + 0x48ff4cb23e53a5d709c3427dafeced17787d28960930968ac7ae3b9156cba7, + 0x100e385c8ae35a43273c81b71f4b03725fcc5e84a877a7353d05d3b4e076c09, + 0x31c2c5a0ca15748b88c0160dcf7548e114c4d65cd051d3f04b1487b6f2f02c7, + 0x4f06ca5e5c4f0eb1de59ec255f4d9e85cc5c3981b344bdc92df09d9acfd7d5f, + 0x270357d020b4bbc1963b8ef643086a9ab43102e557d3d7d4fdf107575aa40b, + 0x3ccee3f04ca97f613783ff9e6e6420b480907e52e846b7066be8fd3f99fb265, + 0x6d830183a3cab582a0cfc0a7cc99d9d98276f347b1471f808d444f18a2853ce, + 0x3150b2aba3e633bb02f7f5f4a8d099764874f41ee8f345c858a92ebd595f77d, + 0x7df206e98a638e84d5e278f9f0d9f34992d09b795c5de75bf471aef5a25b017, + 0x2e92f91767f3371cfca3dec3ff8e411d6527765d46a0257de3de533b5eeca41, + 0x2d5f88e677889f1a3effb0e078671e38d8fbadd7db3c9596a59d54e3b2bf9cb, + 0x789c797a34184c048a22e1aa07ecda509ef77fa73499a652e2c9b3562c42dc3, + 0x20276b47961c7d035dee62e745f0eeb223079289a080f4454d9308c5e6b8b14, + 0x44336cde136c5490222c06d90664b0f89da9e756768e1928ec1f148d12ab247, + 0x5ecc3a2b8803abc3f1086fe09048d3b142106dee2633ef9d69b1b2a0666bc6e, + 0x1276dc45b571601a3828cf305ec58eb3fdf3e94b1cc413b9df749abd54c2c7a, + 0x30b8ca8fd0b7f9cc52e7d0d90d4bee879dde4d3dfba0399c3fabb88b9a4d16c, + 0x5c5b171243d878f257624ea18b40dc2221b08ea1835520f5c749b1bc3d8235b, + 0x737d33c503818d828cd94c347937424033e07a136c4d82a8e6a033ee986d3c6, + 0x695381dc6b2ede6d02bc76b86675b69955ebe9b063393f1a88630b00fb809f4, + 0x704e6433fa784ef7d297a0500d4770af6967cc8258add1899fff8c15a3cc8c9, + 0x31f7c53f5bbca12838b92782fd7d6ecec15ef2bcf42f71c4a19504f081f978b, + 0x64cfe6c17e640c47029af98e6f00949d76a266057167577a81f6b563455d3b6, + 0x3bc8295a18feae1f4254692858e2490860c7c33f175f69c683ecd31749e983f, + 0x94ad3bd6c985a7b5c93dbfbc6553a41d6decd7e8f44bd9892456ca8a3cca0c, + 0x39b60b73cc2792804b2ceb7eb11286b3fb34b60c71fa3527540c0848a6afeb3, + 0x19ae3a55380e68946f5b83c6c3f0eecbcea373e8c3ceab7807568e9cf51030a, + 0x1d68725573d82e00f204719d8c275e70274cb49eb6d34c2fe5f9c39c93f2f11, + 0x610210d914542f1adba179870805edea8eb75c9acd2f0139a67ea42d89a2e17, + 0x1ae0d12f37f826a5c3e735e0c7804ee4f175d07ec3a434a8fad4f9581729dbd, + 0x3489e1a7d7b6da8d6f5b5f4730274c3abd091da9e5dede1326688597eb7876b, + 0x7a860a1a69fa9a7f0186777edc3c77c4af0da6df6d20ca366552f2301d01768, + 0x944be4ff759e40f31004ef63a07fa3f800eba00d8bd847b4ce728126e1707, + 0xa384672ff33aebb186f60c85910ee8fc66be35dc95942b7de5b6e6b66e63a4, + 0x63d88cf92423162078f2eb6d6732a1d0ccbba20380b57a33ee5af9e6604abab, + 0x1f8dfbc807d9d4d910fab7e12b28950ec767d6b48c1fc83e34d3a9ff2fe6a1a, + 0x5ab21b56b09e48e84b089eb21cd476ccb00fa7963b089a9ba9df2a0a5f3e49d, + 0x5355233a431ee62d9cb015f443247f30e6929bafc9b51000f0b7d3e57b28971, + 0x1c2cc045c4a23bd57237ed7317eab884e5f88fcb06fb5ca926ac4b09a9eafb8, + 0x76934cd86bb0408a0d5e05b1ea5ed0da3af7347274315aafe19d4e1ff472126, + 0x38b68b5da1c3395c71ec1ab5e512a3bb9a0ce8e5ef90ae2c1fffa4fcf899e5b, + 0x2386b7602856445bf3e9371a8341d77109e94daa31506813a8123af9492c1a6, + 0x691304b92b3decbd936e4c3f6a4788ab4ce11dfa6a2d825dc71ba5f5442f6f1, + 0x43dd544c109aa4587065f086cf0e8888b11883ecf99cde8c810cbfa1064052d, + 0x2bfd93b32c219ece244588f15f8aae89867abc7da1a579bf84ca9544f969c53, ] .span() ); assert( channel .digest == u256 { - low: 0xaddb0b52526024a1fd926e5da9d8d0ec, high: 0x4b7afc7a5bab4c0aab0b403f8daf81cf + low: 0xa55020e872dfef9f7999a8f22098dfdf, high: 0xaaaf25698614d5c0216e7d570510039f }, 'Invalid value' ); - assert(channel.counter == 0, 'Invalid value'); + assert(channel.counter == 0x0, 'Invalid value'); } +// === KECCAK ONLY END === \ No newline at end of file diff --git a/src/channel/tests/test_read_truncated_hash_from_prover.cairo b/src/channel/tests/test_read_truncated_hash_from_prover.cairo index 02edc1122..8f62467e9 100644 --- a/src/channel/tests/test_read_truncated_hash_from_prover.cairo +++ b/src/channel/tests/test_read_truncated_hash_from_prover.cairo @@ -1,67 +1,131 @@ use cairo_verifier::channel::channel::ChannelTrait; -// test data from cairo0-verifier run on stone-prover generated proof +// === BLAKE ONLY BEGIN === +// #[test] +// #[available_gas(9999999999)] +// fn test_read_truncated_hash_from_prover_0() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0xba9d17a3ebd900899148b125421c118f, high: 0x87433b8dd90acbfe5abea8474d795191 }, +// 0x0 +// ); +// channel +// .read_truncated_hash_from_prover( +// 0xa43e1b3b99d987d63116edc58aa49a7d510a667951852446419df5ede6a1cc +// ); +// assert( +// channel +// .digest == u256 { +// low: 0xf59fd6b10ccc33fe2e1e1e94e3411f56, high: 0x6572033443ae2c5f7b83bfdcd817240e +// }, +// 'Invalid value' +// ); +// assert(channel.counter == 0, 'Invalid value'); +// } + +// #[test] +// #[available_gas(9999999999)] +// fn test_read_truncated_hash_from_prover_1() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0xf59fd6b10ccc33fe2e1e1e94e3411f56, high: 0x6572033443ae2c5f7b83bfdcd817240e }, +// 0x6 +// ); +// channel +// .read_truncated_hash_from_prover( +// 0x32b3d365d461b6c12ab7d3396b5225903bd17bc85216f300472afea65cab39a +// ); +// assert( +// channel +// .digest == u256 { +// low: 0x8823a41f7994f81c6453f4bc3cad1c10, high: 0x75f85ae3fd3ff6b5f63029a51040037e +// }, +// 'Invalid value' +// ); +// assert(channel.counter == 0, 'Invalid value'); +// } + +// #[test] +// #[available_gas(9999999999)] +// fn test_read_truncated_hash_from_prover_2() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0x98cbce1a1c901460027570bd9aa93ccb, high: 0x2581182ce5a51e9dd0810917ad7250ab }, +// 0x1 +// ); +// channel +// .read_truncated_hash_from_prover( +// 0x7a73129c87d8a60cb07b26775437ac75790bbd415d47912e5eb1f7c7e11d42f +// ); +// assert( +// channel +// .digest == u256 { +// low: 0x8a067e49d4c4f2bf2ca4e499d36bd71a, high: 0x4548bed8d91372df1a7674e0471e76e3 +// }, +// 'Invalid value' +// ); +// assert(channel.counter == 0, 'Invalid value'); +// } +// === BLAKE ONLY END === + +// === KECCAK ONLY BEGIN === #[test] #[available_gas(9999999999)] fn test_read_truncated_hash_from_prover_0() { let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0xba9d17a3ebd900899148b125421c118f, high: 0x87433b8dd90acbfe5abea8474d795191 }, + u256 { low: 0x45b3420418a87dceced51bb7756c6833, high: 0x44768edae6365630783c1f09c1cedbc8 }, 0x0 ); channel .read_truncated_hash_from_prover( - 0xa43e1b3b99d987d63116edc58aa49a7d510a667951852446419df5ede6a1cc + 0x104b24dc152ce21002022cddc8ce78d5d3478a8757fc7cf6d49122cfece3a8b ); assert( channel .digest == u256 { - low: 0xf59fd6b10ccc33fe2e1e1e94e3411f56, high: 0x6572033443ae2c5f7b83bfdcd817240e + low: 0x31221b7950614c65772c2993e6727561, high: 0xfaa5d980c70cbe78934e534c13eaf18a }, 'Invalid value' ); - assert(channel.counter == 0, 'Invalid value'); + assert(channel.counter == 0x0, 'Invalid value'); } -// test data from cairo0-verifier run on stone-prover generated proof #[test] #[available_gas(9999999999)] fn test_read_truncated_hash_from_prover_1() { let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0xf59fd6b10ccc33fe2e1e1e94e3411f56, high: 0x6572033443ae2c5f7b83bfdcd817240e }, + u256 { low: 0x31221b7950614c65772c2993e6727561, high: 0xfaa5d980c70cbe78934e534c13eaf18a }, 0x6 ); channel .read_truncated_hash_from_prover( - 0x32b3d365d461b6c12ab7d3396b5225903bd17bc85216f300472afea65cab39a + 0x3f357e1ca6d1b436e1e6e1b885a2a23d471c254cc14c56a8cf0684919ff5ac7 ); assert( channel .digest == u256 { - low: 0x8823a41f7994f81c6453f4bc3cad1c10, high: 0x75f85ae3fd3ff6b5f63029a51040037e + low: 0xd190eb6478f0d295e60b2319531aa506, high: 0xb6ee5c6384b4664c8958f6fd73afff35 }, 'Invalid value' ); - assert(channel.counter == 0, 'Invalid value'); + assert(channel.counter == 0x0, 'Invalid value'); } -// test data from cairo0-verifier run on stone-prover generated proof #[test] #[available_gas(9999999999)] fn test_read_truncated_hash_from_prover_2() { let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0x98cbce1a1c901460027570bd9aa93ccb, high: 0x2581182ce5a51e9dd0810917ad7250ab }, + u256 { low: 0xd190eb6478f0d295e60b2319531aa506, high: 0xb6ee5c6384b4664c8958f6fd73afff35 }, 0x1 ); channel .read_truncated_hash_from_prover( - 0x7a73129c87d8a60cb07b26775437ac75790bbd415d47912e5eb1f7c7e11d42f + 0x45aeee8ab5801b064fe08cb15e2f1e3b5ac60316cba0309f47df924b7ad816e ); assert( channel .digest == u256 { - low: 0x8a067e49d4c4f2bf2ca4e499d36bd71a, high: 0x4548bed8d91372df1a7674e0471e76e3 + low: 0xf05211ddc7d39bdac47d77a10f1fec44, high: 0x570aa8f624aff81df1a44d65b15bc1e9 }, 'Invalid value' ); - assert(channel.counter == 0, 'Invalid value'); + assert(channel.counter == 0x0, 'Invalid value'); } +// === KECCAK ONLY END === \ No newline at end of file diff --git a/src/channel/tests/test_read_uint64_from_prover.cairo b/src/channel/tests/test_read_uint64_from_prover.cairo index cf0cbc280..3b4ed2052 100644 --- a/src/channel/tests/test_read_uint64_from_prover.cairo +++ b/src/channel/tests/test_read_uint64_from_prover.cairo @@ -1,20 +1,41 @@ use cairo_verifier::channel::channel::ChannelTrait; -// test data from cairo0-verifier run on stone-prover generated proof +// === BLAKE ONLY BEGIN === +// #[test] +// #[available_gas(9999999999)] +// fn test_read_uint64_from_prover_0() { +// let mut channel = ChannelTrait::new_with_counter( +// u256 { low: 0x15aa9b8787d877d61588844c0cfe2fb9, high: 0x7cd36c3da65b8d57331341e661a86574 }, +// 0x0 +// ); +// channel.read_uint64_from_prover(0x40719c5); +// assert( +// channel +// .digest == u256 { +// low: 0x2c31f04a6b9c83c2464b2f1688fc719e, high: 0xe631d91ef56f7e4cc7fe09cff2cc4e94 +// }, +// 'Invalid value' +// ); +// assert(channel.counter == 0, 'Invalid value'); +// } +// === BLAKE ONLY END === + +// === KECCAK ONLY BEGIN === #[test] #[available_gas(9999999999)] fn test_read_uint64_from_prover_0() { let mut channel = ChannelTrait::new_with_counter( - u256 { low: 0x15aa9b8787d877d61588844c0cfe2fb9, high: 0x7cd36c3da65b8d57331341e661a86574 }, + u256 { low: 0x6308b38ae2841c18fb8c06c9acc9bcd5, high: 0x5d35fab3c11198da5f6fe41666993b16 }, 0x0 ); - channel.read_uint64_from_prover(0x40719c5); + channel.read_uint64_from_prover(0xd65397f); assert( channel .digest == u256 { - low: 0x2c31f04a6b9c83c2464b2f1688fc719e, high: 0xe631d91ef56f7e4cc7fe09cff2cc4e94 + low: 0x4ccd3b3aab8d3e3c4d99af0aa61de9d1, high: 0x8e5ef0503c12ab78b594db03b634546d }, 'Invalid value' ); assert(channel.counter == 0, 'Invalid value'); } +// === KECCAK ONLY END === \ No newline at end of file