@aztec/accounts 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dest/artifacts/EcdsaAccount.json +90 -78
- package/dest/artifacts/SchnorrAccount.json +90 -78
- package/dest/artifacts/SchnorrSingleKeyAccount.json +77 -61
- package/dest/defaults/account_contract.d.ts +2 -1
- package/dest/defaults/account_contract.d.ts.map +1 -1
- package/dest/defaults/account_contract.js +1 -1
- package/dest/defaults/account_entrypoint.d.ts +1 -1
- package/dest/defaults/account_entrypoint.d.ts.map +1 -1
- package/dest/defaults/account_entrypoint.js +2 -2
- package/dest/defaults/account_interface.d.ts +2 -1
- package/dest/defaults/account_interface.d.ts.map +1 -1
- package/dest/defaults/account_interface.js +1 -1
- package/dest/defaults/entrypoint_payload.d.ts +1 -1
- package/dest/defaults/entrypoint_payload.d.ts.map +1 -1
- package/dest/defaults/entrypoint_payload.js +2 -2
- package/dest/ecdsa/account_contract.d.ts +1 -1
- package/dest/ecdsa/account_contract.d.ts.map +1 -1
- package/dest/ecdsa/account_contract.js +2 -2
- package/dest/ecdsa/index.d.ts +1 -1
- package/dest/ecdsa/index.d.ts.map +1 -1
- package/dest/schnorr/account_contract.d.ts +1 -1
- package/dest/schnorr/account_contract.d.ts.map +1 -1
- package/dest/schnorr/account_contract.js +2 -2
- package/dest/schnorr/index.d.ts +1 -1
- package/dest/schnorr/index.d.ts.map +1 -1
- package/dest/single_key/account_contract.d.ts +1 -1
- package/dest/single_key/account_contract.d.ts.map +1 -1
- package/dest/single_key/account_contract.js +2 -2
- package/dest/single_key/index.d.ts +1 -1
- package/dest/single_key/index.d.ts.map +1 -1
- package/dest/testing/configuration.d.ts +28 -0
- package/dest/testing/configuration.d.ts.map +1 -0
- package/dest/testing/configuration.js +61 -0
- package/dest/testing/create_account.d.ts +1 -1
- package/dest/testing/create_account.d.ts.map +1 -1
- package/dest/testing/create_account.js +4 -1
- package/dest/testing/index.d.ts +2 -2
- package/dest/testing/index.d.ts.map +1 -1
- package/dest/testing/index.js +3 -3
- package/package.json +7 -6
- package/dest/testing/sandbox.d.ts +0 -22
- package/dest/testing/sandbox.d.ts.map +0 -1
- package/dest/testing/sandbox.js +0 -48
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
],
|
|
60
|
-
"bytecode": "H4sIAAAAAAAA/+
|
|
60
|
+
"bytecode": "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",
|
|
61
61
|
"verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
|
|
62
62
|
},
|
|
63
63
|
{
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
}
|
|
82
82
|
],
|
|
83
83
|
"returnTypes": [],
|
|
84
|
-
"bytecode": "H4sIAAAAAAAA/+
|
|
84
|
+
"bytecode": "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",
|
|
85
85
|
"verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
|
|
86
86
|
},
|
|
87
87
|
{
|
|
@@ -164,7 +164,7 @@
|
|
|
164
164
|
}
|
|
165
165
|
],
|
|
166
166
|
"returnTypes": [],
|
|
167
|
-
"bytecode": "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",
|
|
167
|
+
"bytecode": "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",
|
|
168
168
|
"verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
|
|
169
169
|
},
|
|
170
170
|
{
|
|
@@ -181,7 +181,7 @@
|
|
|
181
181
|
}
|
|
182
182
|
],
|
|
183
183
|
"returnTypes": [],
|
|
184
|
-
"bytecode": "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",
|
|
184
|
+
"bytecode": "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",
|
|
185
185
|
"verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
|
|
186
186
|
},
|
|
187
187
|
{
|
|
@@ -291,7 +291,9 @@
|
|
|
291
291
|
{
|
|
292
292
|
"name": "start_side_effect_counter",
|
|
293
293
|
"type": {
|
|
294
|
-
"kind": "
|
|
294
|
+
"kind": "integer",
|
|
295
|
+
"sign": "unsigned",
|
|
296
|
+
"width": 32
|
|
295
297
|
}
|
|
296
298
|
}
|
|
297
299
|
]
|
|
@@ -397,7 +399,9 @@
|
|
|
397
399
|
{
|
|
398
400
|
"name": "counter",
|
|
399
401
|
"type": {
|
|
400
|
-
"kind": "
|
|
402
|
+
"kind": "integer",
|
|
403
|
+
"sign": "unsigned",
|
|
404
|
+
"width": 32
|
|
401
405
|
}
|
|
402
406
|
}
|
|
403
407
|
]
|
|
@@ -428,7 +432,9 @@
|
|
|
428
432
|
{
|
|
429
433
|
"name": "counter",
|
|
430
434
|
"type": {
|
|
431
|
-
"kind": "
|
|
435
|
+
"kind": "integer",
|
|
436
|
+
"sign": "unsigned",
|
|
437
|
+
"width": 32
|
|
432
438
|
}
|
|
433
439
|
}
|
|
434
440
|
]
|
|
@@ -530,7 +536,7 @@
|
|
|
530
536
|
]
|
|
531
537
|
}
|
|
532
538
|
],
|
|
533
|
-
"bytecode": "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",
|
|
539
|
+
"bytecode": "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",
|
|
534
540
|
"verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
|
|
535
541
|
},
|
|
536
542
|
{
|
|
@@ -647,7 +653,9 @@
|
|
|
647
653
|
{
|
|
648
654
|
"name": "start_side_effect_counter",
|
|
649
655
|
"type": {
|
|
650
|
-
"kind": "
|
|
656
|
+
"kind": "integer",
|
|
657
|
+
"sign": "unsigned",
|
|
658
|
+
"width": 32
|
|
651
659
|
}
|
|
652
660
|
}
|
|
653
661
|
]
|
|
@@ -753,7 +761,9 @@
|
|
|
753
761
|
{
|
|
754
762
|
"name": "counter",
|
|
755
763
|
"type": {
|
|
756
|
-
"kind": "
|
|
764
|
+
"kind": "integer",
|
|
765
|
+
"sign": "unsigned",
|
|
766
|
+
"width": 32
|
|
757
767
|
}
|
|
758
768
|
}
|
|
759
769
|
]
|
|
@@ -784,7 +794,9 @@
|
|
|
784
794
|
{
|
|
785
795
|
"name": "counter",
|
|
786
796
|
"type": {
|
|
787
|
-
"kind": "
|
|
797
|
+
"kind": "integer",
|
|
798
|
+
"sign": "unsigned",
|
|
799
|
+
"width": 32
|
|
788
800
|
}
|
|
789
801
|
}
|
|
790
802
|
]
|
|
@@ -886,191 +898,191 @@
|
|
|
886
898
|
]
|
|
887
899
|
}
|
|
888
900
|
],
|
|
889
|
-
"bytecode": "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",
|
|
901
|
+
"bytecode": "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",
|
|
890
902
|
"verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
|
|
891
903
|
}
|
|
892
904
|
],
|
|
893
905
|
"events": [],
|
|
894
906
|
"debug": {
|
|
895
907
|
"debugSymbols": [
|
|
896
|
-
"eJzt3d3O29h1h/F78fGg4PrenFspehC0KRAgmBRNzoK59yjoSHYw26ZdLYnPS/Iog0Ay1160/lyb1k/8+6c//+U///C3P/3ll79++vnvn5Z/k/j087///dNf/+cPv/zz//jr3/7wv3/79PPy06c//vJft//99adP//2nP//x08+62K8//e51mlb222tv/z3q8fr0ycul6v7i5Ys/un79j5/+WUpySilOKYNTyoopRRdOKcIpRTmlGKcU55TCSVvlpK1y0lY5aauctDVO2honbY2TtsZJW+OkrXHS1jhpa5y0NU7aGidtnZO2zklb56Stc9LWOWnrnLR1Tto6J22dk7bOSdvgpG1w0jY4aRuctA1O2gYnbYOTtsFJ2+CkbXDSNjlpm5y0TU7aJidtk5O2yUnb5KRtctI2OWmbnLQtTtoWJ22Lk7bFSdvipG1x0rY4aVuctC1O2hYnbQcnbQcnbQcnbQcnbQcnbQcnbQcnbQcnbQcnbQcnbVdO2q6ctF05abty0nblpO3KSduVk7YrJ21XTtqunLSVhRO3snDyVhZO4MrCSVxZOJErCydzZeGEriyc1JWFE7uygHJXQLkroNwVUO4KKHcFlLskW0bCZSRdRuJlIF8mIGAmIGEmIGImIGMmIGQmIGUmIGYmIGcmIGgmIGkmIGomIGsmIGwmIG0mIG4mIG8mIHAmIHEmIHImIHMmIHQmIHUmIHYmIHcmIHgmIHkmIHomIHsmIHwmIH0mIH4mIH8mIIAmIIEmIIImIIMmIIQmIIUmIIYmIIcmIIgmIIkmIIomIIsmIIwmII0mII4mII8mIJAmIJEmIJImIJMmIJQmIJUmIJYmIJcmIJgmIJkmIJomIJsmIJwmIJ0mIJ4mIJ8mIKAmIKEmIKImIKMmIKQmIKUmIKYmIKcmIKgmIKkmIKomIKsmIKwmIK0mIK4mIK+mIK+mIK+mIK+mIK+mCyd3FeTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVFOTVDOTVDOTVDOTVDOTVbOHkroG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moO8moO8moO8moO8mi+c3HWQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQV3OQVwuQVwuQVwuQVwuQV4uFk7sB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moB8moJ8moJ8moJ8moJ8mq5cHI3QV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV4tQV6tQF6tQF6tQF6tQF6tFk7uFsirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirFcirDZBXGyCvNkBebYC82lg4uTtAXm2AvNoAebUB8moD5NUGyKsNkFcbIK82QF5tgLzaAHm1AfJqA+TVBsirDZBXGyCvNkBebYC82gB5tQHyagPk1QbIqw2QVxsgrzZAXm2AvNoAebUB8moD5NUGyKsNkFcbIK82QF5tgLzaAHm1AfJqA+TVBsirDZBXGyCvNkBebYC82gB5tQHyagPk1QbIqw2QVxsgrzZAXm2AvNoAebUB8moD5NUGyKsNkFcbIK82QF5tgLzaAHm1AfJqA+TVBsirDZBXGyCvNkBebYC82gB5tQHyagPk1QbIqw2QVxsgrzZAXm2AvNoAebUB8moD5NUGyKsNkFcbIK82QF5tgLzaAHm1AfJqA+TVBsirDZBXGyCvNkBebYC82gB5tQHyagPk1QbIqw2QV1tBXm0FebUV5NVWkFdbF07uriCvtoK82gryaivIq60gr7aCvNoK8moryKutIK+2grzaCvJqK8irrSCvtoK82gryaivIq60gr7aCvNoK8moryKutIK+2grzaCvJqK8irrSCvtoK82gryaivIq60gr7aCvNoK8moryKutIK+2grzaCvJqK8irrSCvtoK82gryaivIq60gr7aCvNoK8moryKutIK+2grzaCvJqK8irrSCvtoK82gryaivIq60gr7aCvNoK8moryKutIK+2PuvVXJZHLa7+XC1P5m5rLU/mbmstT+Zuay1P5m5rLU/mbmstT+Zuay1P5m5nLc96tdZanszd1lpAufusV2utBZS7z3q11lpAufusV2utBZS7z3q1zlqe9WqttYBy91mv1loLKHef9WqttYBy91mv1loLKHef9WqttYBy91mv1loLKHef9WqttYBy91mv1loLKHef9WqttYBy91mv1loLJ3dleRas9RbDSd5bMZzovRXDyd5bMZzwvRXDSd9bMZz4vRXDyd9bMZwAvhVDSuBn6VpvMaQEfhav9RZDSuBn+VpvMaQEfhaw9RZDSuBnCVtvMaQEfhax9RZDSuBnGVtvMaQEfhay9RZDSuBnKVtvMaQEfhaz9RZDSuBnOVtvMaQEfha09RZDSuBnSVtvMaQEfha19RZDSuBnWVtvMaQEfha29RZDSuBnaVtvMaQEfha39RZDSuBneVtvMaQEfha49RZDSuBniVtvMaQEfha59RZDSuBnmVtvMaQEfha69RZDSuBnqVtvMaQEfha79RZDSmAQd7sVQ0pgEHi7FUNKYBB5uxVDSmAQersVQ0pgEHu7FUNKYBB8uxVDSmAQfbsVQ0pgEH67FUNKYBB/uxVDSmAQgLsVQ0pgEIG7FUNKYBCCuxVDSmAQg7sVQ0pgEIS7FUNKYBCFuxVDSmAQhrsVQ0pgEIe7FUNKYBCIuxVDSmAQibsVA0pgIZk4IZk4IZk4IZk4WUAJLCQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTJyQTpyQTpyQTpyQTpyQTpwsogZVk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4pRk4oxk4oxk4oxk4oxk4mwBJbCRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyRTJyTTJyTTJyTTJyTTJwvoAR2kolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkolzkokLkokLkokLkokLkomLBZTAQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxQTJxSTJxSTJxSTJxSTJxuYASOEkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmLkkmrkgmrkgmrkgmrkgmrhZQAhfJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxBXJxA2SiRskEzdIJm6QTNxYQAk8SCZukEzcIJm4QTJxg2TiBsnEDZKJGyQTN0gmbpBM3CCZuEEycYNk4gbJxA2SiRskEzdIJm6QTNwgmbhBMnGDZOIGycQNkokbJBM3SCZukEzcIJm4QTJxg2TiBsnEDZKJGyQTN0gmbpBM3CCZuEEycWNu4lyH//Y2t0X+paT7G6dp+T1vnCbb97xxmkLf88ZpYrjZ8njj8Okbp5/u73nj9JPotj5K9bFunGjzZf3t1XY75Y9X1/I4yvQj1n6U6WfnB49i+cVR5MujTF68qt1fvHpOSpqbpn1Lmn+Odi1p/gndtaT5Z3/XkuapsmtJX8mrPUv6ShLuWVJHxjaX1BHIzSXx0nvuofYtiZfecxu1b0m89J47qX1L4qX33EztWxIvved+at+SeOk9t1T7lsRL77mr2rckXnrPJdELS5Ll/ieL2OcbJ/oo6N2ptFXQ3M28siAd94J0nRX07s/aZkHv/qRtFvTuz9lmQe+ekTYLeu2EdD/Ka8PlfpSWxIj6fBT9dnNV9HFHVzy++KP9UVPLINNcU8sk01vTnMS8tKYYj5oqpzW15GtzTS0R21xTS8r+SE0qj5rU5jW1BG1zTS1Z21xTSzJ/tab7UV6bzPejvDZr70d5bXr+31HWOVBpP8prE+5+lNdm1v0or02h+1Femyv3o7w2Ke5Hecdnf517jPajvOOzv84FRfdR5jSi/Shv+ezPMUP7Ud7y2Z/zg/ajvOWzPwcD7Udp+e7FY4gxj62Jp+LxhZwq++KPnn0h51uvvq+g5Xsdu66gI7N2XcEcKnyoFXRk7b4r6MjxfVfQcY3YdwUd1599V9BxbQt7XHUil40V+Cr3mkJjYwUiy+PlIhKfX7+ujyV0XDh3XkLHVXnnJXRclndeQsd1ed8lzP3Kx1pCx5V55yV0XJp3XkLHtXnnJXRcnHdewse/Os8N0Mdawse/Os+90cdawse/Os9t08dawse/On/FZn2oJXz8q/NXvNqHWkLL1Xk8dv/p9u0lmD6+b1Nf3CjQ/2/9LZfmHetvuS7vWH/LRXnH+luuyPvV3wIl96y/5Vq8Y/0tF+Id62+5Cu9Yf8sleMf6P/j1t4WN7ln/B7/+toDUPev/4NffFuqa9WA0Zeu36w+71x9rNtTfcf3ds/6O6++e9Xdcf/esv+P6u2f9HdffPevvuP7uWX/H9XfP+juuv3vW33H93bH+Fqy8Z/0f/PrbwqD3rP+DX3/nD7H8QPV/8OtvC3Cvynv9wza+PVcav722RsP+pcXD71l/x/V3z/o7rr871t/y8wV71t9x/d2z/o7r7571d1x/96y/4/q7Z/0d19896//g19+WX5fYs/4Pfv1t+dWKHetv+YWLPev/4Nffll/O+PrPaP3+xRrjvljNL37O+StfAVK/v1ps2fzCkD7+IUVsq5BV7kWvtfG1pXi0McU3ltf+DaeW3xG5ztArz1DHDHWdoVeeoY4p8TpDrzxDHXPwdYZeeYY6Jv3rDL3yDHXsZa4z9Moz1LFbu87Qy86QLi2/MHadoVeeoY4d93WGXnmGrnsK9DN03VOgn6HrngL9DF33FOhn6LqnQD9D1z0F+hm67inQz9B1TwF+hlp+ufg6Q688Q9c9he0zlPo4Q7X1YK1OpHg7PdcNBfTpue4moE/PdSsBfXqu+wjo03PdRECfnusOAvr0XLcP0KfnundAPj0tj/i4Ts/LTs911wB9eq67BujTc901QJ+e664B+vRcdw3Qp+e8dw3q/nPgstj49mtbf8vk1vTz3gvYsenn3eHv2PTz7tv3a3rLc72upv9g08+7x96x6efdOe/Y9PPuh3ds+nl3uTs2/bx71x2bfu1Id2j6tSPdoenXjnSHpl870vc3veVZllfTf7Dph9qRWtwLEV82vnff+tNzt3oOtcvcs5GH2jnu2chD7Qb3bOShdnh7NvJQu7Y9G3mondiejTzU7mrPRh5qx7RjI1seIXw18tbIa2fT1MhrZ9PUyGtn09TIa2fT1MhrZ9PUSPjOxvTz3cjwjVenPb5oGp97s8bsbuRyf2nE50c9r/roC3yjsltf4PuO3foC30bs1ZeWB5sfsS/wIX+3vsBn9t36Ah/Bd+sLfKLerS/wAXm3vlzz7rwv17w778s17877cs27077UNe/O+3LNu/O+XPPuvC/XvDvvyzXvzvtyzbvzvlzz7rwv17w778s17877cs27076Ma96d9+Wad+d9uebdeV+ueXfel2venfflmnfnfbnm3Xlfrnl33pdr3p335Zp3p31Zr3l33pdr3p335Zp353255t15X655d96Xa96d9+Wad+d9uebdeV+ueXfel2venfVFlmvenfflmnfnfbnm3Xlfrnl33pdr3p335Zp353255t15X655d96Xa96d9+Wad6d9oT8kfre+XPPuvC/XvDvvyzXvzvtyzbvzvlzz7rwv17w778s17877cs27875c8+60L/RnG+/Wl7POu6veX7rIrC9nnXe3+nLWeXerLyedd3O5l5yis76cdN7d7MtJ593Nvpx03s28/7lZNevLSefdzb6cdN7d6gv96aGv6kvJ8ttLK/6lL79/6RiPX6Nc9HMvRGZ/7nf8xqTQHx56yJ6fdE7ftecn3QPs2vOT7i927flJ9y679vyk+6Jde37SPdeuPT/pfm7Xnp90r7hnz+nPDD1kz6996Pt7fu1D39/zax/6/p5f+9D39/zah76/59c+9P09v/ah7+/5tQ99f8+vfejbe05/auvLel73no9l+bLn976cda+41Zez7ue2+nKoPVfd+1LyL325L/ZQm52txR5ql7G12EON91uLPdRcvbXYQw20W4s91CS5sdhjPWJza7GHmsu2FnuoYWtrsWeaoI712MqtxZ5pgjrWAya3FnumCepYj4LcWuyZJqhjPbRxa7FnmqCO9XjFrcWeaYI61oMQtxZ7pgnqWI8s3FrsmSaoYz1ccGuxZ5qgjvUYwK3FnmmCOtYD+7YWe6YJ6liP1tta7JkmqGM9BG9rsWeaoI71uLqtxZ5pgjrWg+W2FnumCepYj4DbWuyZJqhjPaxta7FnmqCO9Vi1rcWeaYI61gPQthZ7oglKj/Wosq3FnmiC0mM9VGxrsSeaoG5vOtNiTzRB6bEe1LW12BNNUHqsR2ptLfZME9SxHn61tdgzTVDHekzV1mLPNEEd64FSW4s90wR1rEc/bS32TBPUsR7StLXYM01Qx3qc0tZizzRBHevBR1uLPdMEdahHFK2+3l+8LPXlamd1xL3m5fNvw0g9GnOkaau1MUeazFobc6QprrUxR5r4WhtzpOnw6435bbWHevrQ9mqPNB/K4vpYbvpsuUeaEL9juUeaEb9juUeaEmXRZWO5R5r9vmO5R5rovmO5R5rT5Hb5ub9adLbDO9RDRb5juUeaqbaXe6hHachSY2O5x5qqNpd7rKlqc7nwqcr1/moJ33z19g8QK/3BCf0Lhk9W/QuGz1b9C4ZPV/0Lhs9X/QuGT1jtC6b/THz/guFTVv+C4XNW/4LPNmnRf7W9f8Fnm7Tov97ev+CzTVr0X3HvX/DZJi36r7n3L/hskxb9V93bF9zyOy6W939tNhf59oJl8UdJ9nhp3h/Woy2/tdJaUMdnoLWgjr+jrQV1TOutBXVM0z9UkD0e/eZjVlDHtNtaUMc0+kMFfb4V/8Wz8b4oqGNabC2oY5prLejtSf3tgqzlNx1aC3p7Um8V9Pak3iro7Um9VdDbk3qroLcn9VZBsKS2Fk/fWhAsqa3FpXcW1GLHWwuiJXWLwW4tiJbULZa5tSBaUreY4NaCaEndYmtbC6IldYtRbS2IltQt1rO1IFpSt5jJ1oJoSd1iBFsLoiX1HENZ3u8+u3y+r71+ftc0LDbfNf1Eb75r+rHbfNf0s7H1rq98i/nx2PlYPvfw8XVR+8qXgbfeNc+3rXfNQ2jrXfOk2HrX/OO89a75Z27rXfMPhtzhYnzxTyZT4+gPO+Tx+TNxO8v3A8xHksYDzEeMvgN85etfP3CAuOeG55gdYP73uPEA87/yHQf49dd/APkiwdw=",
|
|
897
|
-
"
|
|
898
|
-
"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",
|
|
899
|
-
"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",
|
|
900
|
-
"eJzVnd2uI8mVnd+lrxsGI/Zv6FUMXwj2GBhgoDEs3Ql690kZPKfa6KSyVjMzudZVFw4Y2TsqDvfOWszv499/+Y///J9//tu//+df/vrLn/7+y+O/1eOXP/33v//y1//z57/88wd//duf/+/ffvnT49df/u0v/2v77z9+/eV///t//Nsvf5oP+8f/+PWfCwa6YKILDF3g6IJAF+TPL/j1d68blfl86ajl36+29bx6XXr1vvTq68qrN/Db+QeuDvwq/4GrA7/3f+DqwJvkD1wdeEf9gasDb78/cPVL36t96Xu1L32v9qXv1XXpe3Vd+l5dl75X16Xv1XXpe3Vd+l5db71X5+MRz5fOx6zfXn2vFI/vUjy/X7y+SnnrjX1uKW91gXNLeatlnFrKeLzVYE6u5a12dHItbzWvk2t5q9WdXMtbjfHkWt5qoyfXwtN0x4On644HT9sdD6K+O4j67iDqu4Oo7w6ivjuI+u4g6ruDqO8Oor47iPruIOq7k6jvTqK+O4n67iTqu5Oo706ivjuJ+u4k6ruTqO9Oor5rRH3XiPquEfVdI+q7RtR3jajvGlHfNaK+a0R914j6rhP1XSfqu07Ud52o7zpR33WivutEfdeJ+q4T9V0n6rtB1HeDqO8GUd8Nor4bRH03iPpuEPXdIOq7QdR3g6jvJlHfTaK+m0R9N4n6bhL13STqu0nUd5Oo7yZR302ivosgD5fXQtR3EVDj8lqI+u57eAZYy5pftfSwnVrufE8f1PIePgHVMv37jLY/7pzRe7DFybXc97t7XMt99wzHtdx3z3Bcy333DP3or+tuf5w/asmvWu7rL8e13Ndfpn/XMsMfvz0j6MXPwu+7wTi38PewmesKH+Oxxlf/HyNip/Q7B8DJpd85L04uHYVXB0LZPFcALem5AmgczxXAO/b/rZgIAPJcgcLKE4EpnitQXHk+gKH8XIGe+UQe8n+uQM98Ig/MP1fAZ448fP5cAZ858iD3cwV85shD0c8V8JkjDxg/V8Bnjjys+1wBnzny4OtzBXzmyEOkzxXwmSMPZD5XwGeOPNz4XAGfOfKg4HMFfObIQ3fPFfCZIw+wPVfAZ448DPZcAZ858mDVcwV85shDSs8V8JkjD/w8V8Bnjjw881wBnznyIMpzBXzmyEMdzxXwmSMPSDxXwGeOPGzwXAGfOfLB/XMFfObIh+DPFfCZIx8oP1fAZ458OPtcAZ858kHncwV85siHhs8V8JkjH8A9V8BnjnyY9VwBnznywdBzBXzmsFdqwmKpCZulJqyWmrBbasJyqYnYpZ4r4DNHPjh4roDPHLE1PVfAZ44E/c8V8JkjoflzBXzmSAD9XAGfORLmPlfAZ47El88V8JkjYd1zBXzmiEXnuQI+cziHm3AON+EcbsI5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nME5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5nMM5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMA5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XMI5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XME5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5XMM5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P77T38QU+xWNmV/XHmb225p+/2ILe77Wlv9oM4/v8s++V7i5/LPvFG4u/+z7hJvLP/su4ebyz75HuLn8s+8Qbi7/7LF/c/lnz/Kbyz97QN9b/gvnl0z52lP3he9LpnztqfvC9SVTvvbUfeH5kilfe+q+cHzJlK89dV/4vWTK1566L9xeMuVrT90XXi+Z8rWn7gunl0z52lP3hc9LpnztqfvC5SVTvvbUfeHxkilfe+q+cHjJlK89dV/4u2TK1566L9xdMuVrT90X3i6Z8rWn7gtnl0z52lP3ha9LpnztqfvC1SVTvvbUfeHpkilfe+q+cHTJlK89dV/4uWTK1566L9xcMuVrT90XXi6Z8rWn7gsnl0z52lP3hY9LpnztqfvCxSVTvvbUfeHhkilfe+q+cHDJlK89dV/4t2TK1566L9xbMuVrT90X3i2Z8rWn7gvnlkz52lP3hW9LpnztqfvCtSVTvvLUtcfpnq2by1eeulv5ylN3K1956m7lK0/drXzlqbuVrzx1t/KVp+5WvvLU3crXnrqnO7VuLl976p7u07q5fO2pe7pL6+bytafu6R6tm8vXnrqnG69uLl976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK1976kq7qbbytaeutJtqK5976vrj8Xytj/Xb8neuW19FjK4fV+3vnXIP6DN3yj3Lz9wp99j/YztdsbdT7juEE3d6unplxsFOO9fzxWs8flS0+5cyHuvr2+7HGPHj0mt9b+Dso7p9A2ffzt2+gbNv6G7ewDhdwXL7Bs6+qbt9A2ff1t2+gbNv7G7fwNn3a7dv4OzbsNs3ID6Jx+lClts3ID6Jx+lSlrs3cLqW5fYNqE/i09Ust2/g9km8Or5qevj81zvo8O/NjqO/GPvaa2//XvvNPwi/dnr7yP7YTm+f7R/b6e03AR/b6e13Cx/b6e23FR/bqfRHO0NbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08ztPU0Q1tPM7T1NENbTzO09TRDW08zyPU0h+VrT11ykcxh+dpTl1z5cli+9tRt7am7tKfu0p66S3vqLu2pu7Sn7tKeuqf7u24uX3vqnu7uurl86ak7T/d23Vy+9NSdpzu7bi5feurOh/TUnafbum4uX3rqztNNXTeXLz115+mWrnvLP93RdXP52lP3dD/XzeVrT93TlVs3l689dU+XY91cvvbUPV1jdXP52lNX2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1UU9tNNbXdVFPbTTW13VRT2001td1URu6m8sfj+Vof67fl71y3vooYXT+u2t875R7QZ+6Ue5afuVPusf/Hdrpib6fcdwgn7nRfvfJ1+cfBHmPV85U5frw2vvvdvhnltKvv3giddvXd+5TTrr57G3Ha1Xen/GlX3x3CZ11932lx2tV359JpV9+dBadd/dL36r5P4bSrX/pe3bcRnHb1S9+r+yz/aVe/9L26T8KfdvVL36v7HPlpV7/0vbpPYZ929Uvfq/sM82lXv/S9uk8An3b1S9+r+/zsaVe/8L3q472/mfl4xNed+GP++JeNrb0b5vb1/a+g+HHptb6Kee8v8uxi3vp7P7uYt1rq2cW81YHPLuathg0W0z/+yTd8r5i3+vvZxbw1Ds4u5q3pcXYxbw2bs4u5swMfFbMPpV5TzLLxXUztvbX3EdNPFXNfn5mPMb5fPOZeMff1mZ8o5r4+8xPF3NdnfqKY+/rMTxRzX585LmYfw/tUMff1mZ8o5r47vZ8o5r47vZ8ohqkD78NonyqGqQPvg2KfKoapA+9DXB8qZh/J+lQxTB14H5f6VDFMHXgfZfpUMUwdeB8z+lQxTB14HwH6VDFMHXgfz/lUMUwdeB+d+VQxTB14H2v5VDFMHXgfOflUMUwdeB8H+VQxTB14H9X4VDFMHXgfo/hUMUwdeB9x+FQxTB14Hz/4VDFMHXgfDfhUMUQd+MVXSn+qGKIO/OLrnj9VDFEHfvFVzJ8qhqgDv/ia5E8VQ9SBX3yF8aeKYerA+18v/KlimDrw/lf/fqoYpg78HnxydjFMHfg9tOXsYpg68HvgzNnFMHXg97Ccs4th6sDvQT9nF8PUgd9Dis4uhqkDvwcsnV0MUwd+D4c6uximDvwebHV2MUwd+D2U6+ximDrwe6DY2cUwdeD3MLSzi2HqwO9BbmcXw9SBbyS/fqIYpg58I/n1E8UwdeAbya+fKIapA99Ifv1EMUwd+Eby6yeKYerAN5JfP1EMUwfe/6rATxXD1IGZmLgXX8r3qWKYOjATE/fi6+8+VQxTB2Zi4l580dynimHqwExM3IuvdPtUMUwdmImJe/HlaZ8qhqkDMzFxL76m7FPFMHVgJibuxReCfaoYpg7MxMS9+OqtTxXD1IGZmLgXX3L1oWKYmLgXX0D1qWKYOjATE/fiq54+VQxTB2Zi4l58qdKnimHqwExM3IuvL/pUMUwdmImJe/FFQZ8qhqkDMzFxL75V5aJisr5f3Ov3xbz4jpRPFXPjL/AM/3rxjNgr5sZf4ONibvwFPi7mxluI42JuvIU4Lua+W4h+9Nd1tz/+ps/kdzH39ZnjYu5Eiszz68X+z8v9OKbfv3iMx/rq12OM3VO9k0A6vfYbb1BOr/3GcXB67TdOj9Nrv3HYvK79q5gb+/txMTf+E/G4mBvvIw+LuRNYOi6GomF/FUPRgb+KubGlun+/2D33irmxRx4Xc2PTOy7mxjvs42Ju7MDHxdzYgY+LubEDHxZzJ7B0XMyNHfi4mBs78HExTB34TmDpuBimDnwnsHRcDFMHvhNYOi6GqQPfCSwdF8PUge8Elo6LYerAdwJLx8UwdeA7gaXjYpg68J3A0nExTB34TmDpuBimDnwnsHRcDFMHvhNYOi7mxj4z5tfXKM79HPhOLOe4mBv7zGExd2I5x8Xc2GeOi7mxzxwXc2Of+f+K2Xu44U4s57iYG+/0jou58U7vuJhPdeDdYu7swP3j4YaxN5vuxHIOi7kTPjku5s4+c1jMnX3msJg7+8xhMXf2mcNibn1u6bvPzNoblHfCJ8fF3NhnDou5Ez45LubGO73jYm7swMfF3Prk6FExN3bg42JufXL0qJhbnxw9KoapA98JnxwXw9SB74RPjoth6sB3wieHjz7fCZ8cF3NrBz4qhunZ/Tu/kOm4GKZn9+/8QqbjYm7twP+6GL+TETou5tYOfFQMUQd2JnrKH0Qd2JnoKWeip5yJnvI7v5DpuBimDnwnPXVcDFMHvpNvOi6GqQPfSSAdF8PUge/8QqbjYpg68J1803ExTB34Tr7puBimDnwnUnRcDFPT2wdn5uPbguD+Y9Xje9Xue/Bw1e6b5WjVPjNyuGr31+9w1e6kfr3qH//4L/k7cVA=",
|
|
901
|
-
"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h2uYwzXM4RrmcA1zuIY5XMMcrmEO1zCHa5jDNczhGuZwDXO4hjlcwxyuYQ7XMIdrmMM1zOEa5nANc7iGOVzDHK5hDtcwh2uYwzXM4RrmcA1zuIY5XMMcrmEO1zCHa5jDNczhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhFszhxgsGcdsR9K5vR9Dbvh1B7/t2BL3x2xH0zm9H0Fu/HUHv/XYEvfnbEfzuw0huO4LffRjKbUfwuw9jue0IfvdhMLcdwe8+jOa2I/jdh+HcdgS/+zCe247gdx8GdNsR/O7DiG47gt99GNJtR/C7D2O67Qh+92FQtx3B7z6M6rYj+N2HYd12BL/7MK7bjuB3HwZ22xH87sPIbjuC330Y2m1H8LsPY7vtCH73YXC3HcHvPozutiP43Yfh3XYEv/swvtuO4HcfBnjbEfzuwwhvO4LffRjibUfwuw9jvO0IfvdhkLcdwe8+jPK2I/jdh2HedgS/+zDO247gdx8GetsR/O7DSG87gt99GOptR/C7D2O97Qh+92Gwtx3B7z6M9rYj+N2H4d52BL/7MN7bjuB3HwZ82xH87sOIbzuC330Y8m1H8LsPY77tCH73YdC3HcHvPoz6tiPw3R846xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xs46xsI6/vDv3zczFnz/bHb/+78/vj0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"
|
|
908
|
+
"eJzt3d+uI8dxx/F32WsjmPrfo1cJciEkDmDAkIPId4be3RQi8hxDvZrdsHn6e2b6yoJBLqtqlr+p4fLD+ceXv/7tP3/8+1/+9tPPX374x5ft3yS+/PDv//jy8//8+NOv/8fPf//xf//+5YftT1/+/NN/3f73lz99+e+//PXPX35Quf337x6n2Sp+e+ztv9v+eHxW5+FSdX/w9u6Pbr/8x59+LSU5pRSnlMYpZceUohunFOGUopxSjFOKc0rhpK1y0lY5aauctFVO2honbY2TtsZJW+OkrXHS1jhpa5y0NU7aGidtjZO2zklb56Stc9LWOWnrnLR1Tto6J22dk7bOSVvnpG1w0jY4aRuctA1O2gYnbYOTtsFJ2+CkbXDSNjhpm5y0TU7aJidtk5O2yUnb5KRtctI2OWmbnLRNTtoWJ22Lk7bFSdvipG1x0rY4aVuctC1O2hYnbYuTto2Tto2Tto2Tto2Tto2Tto2Tto2Tto2Tto2Tto2TtjsnbXdO2u6ctN05abtz0nbnpO3OSdudk7Y7J213TtrKxolb2Th5KxsncGXjJK5snMiVjZO5snFCVzZO6srGiV3ZQLkroNwVUO4KKHcFlLsCyl2SLSPhMpIuI/EykC8TEDATkDATEDETkDETEDITkDITEDMTkDMTEDQTkDQTEDUTkDUTEDYTkDYTEDcTkDcTEDgTkDgTEDkTkDkTEDoTkDoTEDsTkDsTEDwTkDwTED0TkD0TED4TkD4TED8TkD8TEEATkEATEEETkEETEEITkEITEEMTkEMTEEQTkEQTEEUTkEUTEEYTkEYTEEcTkEcTEEgTkEgTEEkTkEkTEEoTkEoTEEsTkEsTEEwTkEwTEE0TkE0TEE4TkE4TEE8TkE8TEFATkFATEFETkFETEFITkFITEFMTkFMTEFQTkFQTEFUTkFUTEFYTkFYTEFcTkFdTkFdTkFdTkFdTkFfTjZO7CvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqCvJqBvJqBvJqBvJqBvJqtnFy10BezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUBezUFezUFezUFezUFezTdO7jrIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqznIqwXIqwXIqwXIqwXIq8XGyd0AebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUAebUA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OCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCGZOCWZOCWZOCWZOCWZON1ACawkE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE6ckE2ckE2ckE2ckE2ckE2cbKIGNZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKMZOKcZOKcZOKcZOKcZOJ8AyWwk0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0yck0xckExckExckExckExcbKAEDpKJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJC5KJS5KJS5KJS5KJS5KJyw2UwEkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUkycUUycUUycUUycUUycbWBErhIJq5IJq5IJq5I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",
|
|
909
|
+
"eJzVltFuwjAMRf8lzwjFdhzH/Mq0B7QxCQmxafCG+PeV0aRdZxENOkSfKNJ1dXpj5/rgNu8vy/36fbtzi4Njt3g6uN3Hcnv6t9svP/du4WdutX1tfo8z97berNwCoXn+pUPvuZWiRynqAJaYQsji4KGIwbOhBq+S3w3gSX/on2cuThVc7gceJGUxU7oVPFngEFMpkkgVfFCRgk/c4aMhTkqtVmNPehW7Tpgd/O3w6EPXN6kCL0C5HwW465so3zjwWDg4Bo7GjIMhVHAwa0WwSMWSskIrjdC9VcicVe3NKvaArcmu9ww9risRiysCl10h1FZK/bdeN0bhzpYkyVoN1LfkBGPm7p1g0hDGzNJ/hFEuMKqVZhGi0i0RhsNvhukkyEdI0z+Rgxct4wHpMjsqlNtIg9Ruo+QzB6Tq3cU+jz9z94V6ntERcnqargiUjGPpu2L0YJKCTJ0bgFclBY6yXUzScsmWJ+8HjYijLDmP4krAsmwBVNQU8ycG7jH7c4TO7cWCNbdkhM7KZrzbIjN6a0VmRIZyAsxdL6czXpqbeUAxn0OAOLxx0ty8iSs15j1VqbH3+FqR2YiXihDmdiyGmPu92TUHJ3sqMn2oFZlGcDmk2FvbtAm+4/ELxMrILw==",
|
|
910
|
+
"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pB2HImnHoUjacSCS8o9vOA5JOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5EUv7BOMchacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciaceBSMo/uuo4JO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04DMkk/5y/45C041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G040Ak5Z+behySdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyIpPxzqI9D0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o4DkSx2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciWe04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkSy2XEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciORox6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEgkpMdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx4FIznYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByK52HEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYchmQe7DgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORDLZcSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyIZLbjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBDJYsehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxIJLVjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONAJJsdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx4FIjnYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByI52XEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciORsx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEgkosdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx2FIlsGOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G040Akkx2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHgUhmOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o4DkSx2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciWe04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkSy2XEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciORox6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEgkpMdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx4FIznYciqQdhyJpx6FI2nEokvKOk8e2kiy/8KmSlHecw5CUd5zDkJR3nMOQlHecw5CUd5yjkFzkHecwJOUd5zAk5R3nMCTlHecwJO04FEk7DkXSjkORtONQJO04FEk7DkOyDnYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByKZ7DgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORDLbcSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyIZLHjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBDJasehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxIJLNjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONAJEc7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORnOw4FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkRytuNQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04EMnFjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtOMwJNtgx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEgksmOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G040Aksx2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHgUgW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hyJpx6FI2nEoknYciqQdhyJpx4FILnYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyFZBzsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOA5FMdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB0HIpntOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5EsthxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIhkteNQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04EMlmx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEgkqMdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyIp7zh5bCvJ8gufKMlJ3nEOQ1LecQ5DUt5xDkNS3nEOQ1LecQ5DUt5xDkNS3nEOQ1LecQ5DUt5xDkPSjgORnO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkRyseNQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04DMk22HEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciGSy41Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgQyWzHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSCSxY5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjQCSrHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciaceBSDY7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORHO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkRysuNQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04EMnZjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONAJBc7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjsOQHAc7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORTHYciqQdhyJpx6FI2nEoknYc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E+s690vvH952nu8+GK59Yl3nfuk8330wPfnEus790nm++2A87ol1nful83z3wfxTvK7zfPfBVM4T6zr3S+f5bu48382d57u583w3d57v5s7z3dx5vps7z3dz5/lu7jzfzZ3nu7nzfDd3nu/mzvPd3Hm+mzvPd3Pn+W7uPN/Nnee7D8asnljXuV86z3dz5/lu7jzfzZ3nu7nzfDd3nu/mzvPd3Hm+mzvPd3Pn+W7uPN/Nnee7ufN8N3ee7+bO893ceb6bO893c+f5bu48382d57u583w3d57v5s7z3dx5vps7z3dz5/lu7jzfzZ3nu7nzfDc/c747ba17Yr9srntiv2yue2K/bK57Yr9srntiv2yue2K/bKwrz5zvbq57Yr9srntiv2yu69sv5Znz3c11ffulPHO+u7mub7+UZ853N9d17pdnznc313Xul2fOdzfXde6XZ853N9d17pdnznc318X7ZRlv191P44/j5bYA43R9zGm+/oh4a/3jHxHvwn/6I544YP6nP+KJM7Tff8Rl3au/w8u6V38xl3Wv0v5a98QZ2va6+DO/vS7+zG+viz/z2+viz/z2uvgzv72uc788cYa2va5zvzxxhra57okztO11nfvliTO07XWd+2X7DC1/uPbXulzn67105mFdt33fvXjd9i3s4nXbd4OL123fWC1et32PsnDd9hnaE+u275wVr9u+VVG8bvsGQfG6zv2yfYb2xLrO/bJ9hvbEus79sn2GFq/bPkN7Yl3nftk+Q3tiXed+2T5De2Jd537ZPkN7Yl3nftk+Q3tiXed+2T5De2Jd537ZPkN7Yl3nftk+Q3tiXed+2T5De2Jd537ZPkN7Yl3nftk+Q3tiXed+2T5De2Jd53558Nz7eF3nfnnwjPd4Xed+efA883hd336pD55THa/r2y/1wfOE43V9+6Vun6E9sa5vv9QHD16N1/Xtl/rgcaDxus798uAhlfG6zv3y4NGJ8brO/fLggX7xus798uAxc/G6zv3y4OFn8brO/fLgkVzxus798uBBUfG6zv3y4PFF8brO/fLgoTrxus798uBRL/G6zv3y4AEk8brO/fLgsRjxus798uBhDfG6zv3y4BEC8brO/fLgxvbxus798uB26/G6zv3y4Cbg8brO/bJ9vvvEus79sn2++8S6zv2yfb77xLrO/bJ9vvvEus79sn2++8S6zv3Seb5bO893a+f5bu08362d57u183y3dp7v1s7z3dp5vls7z3dr5/lu7TzfrZ3nu7XzfLd2nu/WzvPd2nm+WzvPd2vn+W7tPN+tnee7tfN8t3ae79bO893aeb5bO893a+f5bu08362d57u183y3dp7v1s7z3dp5vls7z3dr5/lu7TzfrZ3nu7XzfLd2nu/WzvPd2nm+WzvPd2vn+W7tPN+tnee7tfN8t3We77bO893Web7bOs93W+f5bus8322d57ut83y3dZ7vts7z3dZ5vts6z3db5/lu6zzfbZ3nu63zfLd1nu+2zvPd1nm+2zrPd1vn+W7rPN9tnee7rfN8t3We77bO893Web7bOs93W+f5bus8322d57ut83y3dZ7vts7z3dZ5vts6z3db5/lu6zzfbZ3nu63zfLd1nu+2zvPd1nm+2zrPd1vn+W7rPN9tnee7rfN8t3We77bO893Web7bOs93W+f5bntwvvvRl17WfbQqW+u290u8bnu/xOu298vtupy21m3vl3jd9n6J123vlzZd181b+R6c78brtvdLvG57v0zD5fmkHztn3lq3vV/iddu/v3jd9u8vXPdgRrzOl89D2f48PJgRj9dt//18vG777+fjdZufv3jdg3O+qa7XiakNW+u291m87sE+C9c92Gc368a8tW57LmQo6zN9h3Hrc/tgNjletz0XMlwf6fpg3fZcSLjuwWzyMK/r0jBurdve1/G67X2d6riu236f2/s6Xre9r1NZruu2fu8PZpPjddv75XbdtLU/H8wmx+u290u8bnu/lOv+LLXdrxsfzCbH67b3S7xue7/kZbmu+22fbT0PObiIjQ8GmeEfsr0T4R+yvW3hH7K9x+Efsv2BgH/I9qcH/iHbHzX2hzyYAYd/yPaHGP4hP/GJfzCKDv+Qn/jEPxhyh3/IT3ziH4zPwz/kJz7xD0bo2R/yYIge/iE/8Yl/cP9X+If8xCf+wZ1l4R/yE5/4B/eshX/IT3ziH9yd9pUfkobL9HlK1x8xtvVH/PNPSfgj/vnOSnm+/Ii8bP2If76vwh/xz3dV+CP++Z4Kf8Q/ryHhj3i1gnyte3BbkHjdqzv4su7VS/dl3fbVuKzHjKUO5XuEOZXLRyandnXxnNL6U7Y/NPRP2f7c0D9l+6Pz2k8Z11PcdHOtvP0p258e+qdsf4Don/LgiOOVn5Lz+lNy3fwpD26sQv+UB8cn8E/Z/jQ//imXda9+mi/rXv18Xta9+om7rHv1M3RZ9+qn4rLu1X1+Wffqzv1a9+DGx/G6V3fXZV3nfnlw4+N4Xed+eXDj43hd5355cOPjeF3nfnlw4+Nw3YMvteJ1nfvlwZda8boHX2ql9cuGGjVceWqXF+dpvp6I/7r6vfbqy3va3ov7vqftfb7ve9r+DO37nrY/n/u+p+3P/r7vafu6sut7enDz7cfv6bLuwRfx4boHX8SH6169Zl3WvXpduax78NmPjkcefMEdr3vwGQrXPdjn4boHezFa9+AL7nhd3x9ujA++4I7X9f3hxvjgC+54Xed+efAFd7yuc788+II7Xte3X6YHX3DH6/r2y/TgC+54Xd9+mYa+/TI9+GY5Xte3X6YH3//G6/r2y/TgW9pw3YMvXuN1nfvlwdej8brO/fLgS8x4Xed+efBVY7yuc788+EIwXte5Xx58bRev69wvD75ci9d17pcHX4HF6zr3y4MvquJ1nfvlwcMV43Wd++XB11fxus798uDhivG6zv3y4IuteF3nfnnwFVS8rnO/PPiyKF7XuV8efAMUr+vcLw++AYrXde6XB9/pxOs698uD713idZ375cF3I/G6zv3y4PuLeF3nfnnwHUO8rnO/PPiOIV7XuV8efMcQr+vcLw++Y4jXde6XB98xxOs698uD7xjidZ375cF3DPG6zv3y4DuGeF3nfnnwHUO8rnO/dA7OTJ2DM1Pn4MzUOTgzdQ7OTI/O6sN1nfvl0Zl3uK5zvzw6O47WPTrfDdd17pdH57vhus798uh8N1zXuV86z3enzvPdqfN8d+o83506z3enzvPdqfN8d+o83506z3enzvPdqfN8d+o83506z3enzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdufN8d+483507z3fnzvPdpfOcduk8p12AOy4Fs/8LcL+l8EcAU/PRjwCm5qMf8c/vuxL9COA+S6lcRjlSnbZ+BHA3iVLWHzFv/Yh/fseV8Ef88/utBDdJWID7K4U/4o/fE2MB7q0U/og/fk+MBbivUvgjgE938COAeyqFPwL4dEc/Avh0Rz/iz3+6gXsphT/iz3+6gfsohT/iz3+6H3wpgv6IP//pJu4EFf2IP//pfvAFDvoj/vyn+8/fz2r58/ezWv78/ayWP38/q+XP389qefl+Vq//iJdvfdXxI/78p/vlG2p1/Ig//+l+8CUe+iM2Pxfhqs2tHq7a3L0f9rYqUBs2HoqwbH/39sS6zX32xLrNzfPEus0d8cS6zV/zE+s2r8xPrNu83D6xbnuvxOu2d0u8bnu/tHS52Xmayta67e/enli3vV/iddv7JV63vV/iddv75dt1dfjP27+96fKZzel64/i05K9F27+6YNH27y1YtH0kFK7a/p19t2pq6T9vH6vMw+UxCMvNYcyc1lWb4MNVmx/TcNXmhzRctflL/m7VR9vygMbYLvtpWm6eCTGuqzZphKs2aYSrNmmEqzZpfLcqzUPr2Byfy17eHZ/LXt4en8te3h+fy17eIHnIpWOHfC57eYt8Lnt5j3wue3mTfC57eZfkpesS8rns5V3yuezlXfK57OVd8rns5V1S0jR27JLPZS/vks9lL++Sz2Uv75LPZS/vkpoefnC+I/m57OVd8rns5V3yuezlXfK57OVdUkurHbvkc9nLu+Rz2cu75HPZy7vkc9mLu+R//+//HzxWRqo=",
|
|
911
|
+
"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kBvOg9xwHuSG8yA3nAe5neBBXnvgbUbbSP/ti91mYpda3//tLXpx9X57cd3axxf/870+/9vgvPf6/O+Z897r87/Bznuvz/9uPO+9Pv9b97z3+vzv8/Pe6/PvFE57ryd4vee91+ff3Zz3Xl/ovukEy/m89/pC900nmNnnvdcXum86wSY/772+0H3TCQb8ae/1BLf+vPf6QvdNJ5wHcN57faH7phPOMDjvvb7QfdMJ5y6c915f6L7phLMiznuvr3PftJ9wvsV57/V17pv2E87kOO+9vs590355nfum/YQTSs57r69z37SfcKrKee/1de6b9hNOgjntvZ5wxsx57/WF7ptOOBfnvPf6QvdNJ5zlc957faH7phPOHzrvvb7QfdMJZyad915f6L7phHOeznuvL3TfdMLZVOe91xe6bzrhPK3z3usL3TedcAbYee/1he6bTji37Lz3+kL3TSectXbee32h+6YTzoc7772+0H3TCWfanfdeX+i+6YRz+Fptt/e6X779t/85o+ff3ew27jMq4/sZPf8exPb9NiO3mvzbXut9JnW8v7p6NJHRb6Xml2L3F+/9t/f6/HuQr3uv1zd4q/3rv/bNe/3+xf0uivde//VjOeGYQcrHMm6vHaV897E8/87mCz8Wq3Z7sV8uP/5Yru/xvoxK//AZluDFbdz+4e3DlMOXXqd5vzatfPzsLPwmGPutmZpdPvQuu7TfrtDz78d+j1do8/sV2pOXFn//snj/LPamXZ7n30JiLs/Y7//yt6vinx/M8+83fycfzPNvTn8nH8zz7xspH0yze6drH3tS1L6Gldv3+X758UvP/Nr6mW65ERfztG+4n+oPiq+7kvc5Xz/FnqzLcvs02tg+e31OOPqWcn3GuB8Ndmntx5+5eb9jlFK3w5bliT32hCOG/7jy5zfkE85x/vkv+2nd+3X/THroYpZ2W5dWL0mf3f32me/986vthf9c+x3wlxOOR//j8jxweV73b/rfxeX5qf5K98sdL/mWXJ6t3r8kttre90W2/bcP5qf6o/fAD+aEnxEol3vFl2BzF/czAjvuZwR23M8I7LifEdhxPyOw435GYMf9jMCO+xmBHfczAjvuZwR23M8I7Cf8jEA2I1zPPuFI/mxGuJ59wvH22YxwPfuEo+KzGeF69gnHrmczwvXsE44wz2aE69knHAeezQjXs084Wjub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",
|
|
912
|
+
"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AfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdw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57Z6+duBz2318vcNn9vq5W8wPrZVbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzSAX3DyNr33rkqtonsbXvnXJpTFP42vfuq196y7tW3dp37pL+9Zd2rfu0r51l/atu7Rv3eO1XtfG1751jxd6XRl/Hm/zuja+9K07j/d4XRtf+tadN+lbdx6v77o2vvStO48Xd10bX/rWnccruy6Nf7yv69r42rfu8aaua+Nr37rHO7quja996x7v0ro2vvate7zz6tr42reutptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupTNtNZeRuKr/d7o/1sX6Nv/O81V9P2/X90BjfO+W+oI/cKfddfuROua/937fTFXs75X6HcOROud9MHLjTfUvL19PfnuwxVt0fmePnY+N7su9LVA579t33TIc9++5bmsOeffcdx1HPvi/wOOzZd+/rw55994487Nl376XDnn33Ljjs2U99re6rFw579lNfq/vigsOe/dTX6j72f9izn/pa3YfmD3v2U1+r+8j5Yc9+6mt1H9g+7NlPfa3u486HPfupr9V9WPiwZz/1tbqP2h727Ce+Vn28l33ebt/vxG/z5//D+dh7w9z+lWX71/75tv0W32ne2uvhad6aY4eneWvuHZ7mrTl5eJq35iqYpvP7//vG3E3z1hw+PM1bc/voNPt46sfSvHUvHJ7myln8PM2Fs3jN9Z0md1/h+2jnx9JcN2+2B39XY7dfrvBf01w3b15Jc928eSHNPpj3sTTXzZtX0lw3b15Jc928eSXNdfPmlTTXvfd7Jc117/1eSUM1i/eBsI+loZrF+7jWx9JQzeJ9mOpjaahm8T7q9LE0VLN4H0T6WBqqWbyPCX0sDdUs3od4PpaGahbvIzYfS0M1i/cBmI+loZrF+3jKx9JQzeJ9eORjaahm8T7a8bE0VLN4H7z4WBqqWbyPRXwsDdUs3ocWPpaGahbvIwUfS8M0ix98GfXH0jDN4gdfFf2xNEyz+MEXOX8sDdMsfvA1yx9LwzSLH3wJ8sfSUM3i/a8o/lgaqlm8/wXCH0tDNYv3v973Y2moZvF73Mjhaahm8XtcyuFpqGbxe9zL4WmoZvF7XM3haahm8XvczuFpqGbxe1zQ4WmoZvF73NHhaahm8Xtc0+FpqGbxe9zU4WmoZvF7XNbhaahm8Xvc1+FpqGbxe1zZ4WmoZvF73Nrhaahm8YVs2StpqGbxhWzZK2moZvGFbNkraahm8YVs2StpqGbxhWzZK2moZvGFbNkraahm8YVs2StpqGbx/pf6fSwN1Sym4u4efIPep9JQcXcPvt/uY2moZjEVd/fgy+Q+loZqFlNxdw++ue1jaahmMRV39+Br0j6WhmoWU3F3D76T7GNpqGYxFXf34AvAPpaGahZTcXcPvm3rU2mouLsH34X1sTRUs5iKu3vwxVMfS0M1i6m4uwff8vSxNFSzmIq7e/CVSh9LQzWLqbi7B99f9LE0VLOYirt78GVBH0tDNYupuLsH35hyUpr8+eBfvurj1zRXvsKfp7nwt3jG19dTbP9qu2ku/C1+Ic2Fv8UvpLnwHcXzNFcSSy+kue4dRY/4mjc9cnw/eK3vMNeNmxfCXDhtzP3rwX4bf3dO//jocVv19dxj3H79cptfzvXC9x8npL/w/coJ6S+8GU5If+FNckL6C2+ef5L+nuZKIuqFNBf+3+MLaS58b/lCGo5p/5WGY3p/peGYxl9pLpyu7vadxn03zYXT8oU0F06/F9Jc+L77eZoriagX0lw4i19Ic+EsfiHNhbP4hTQXzuIX0lw4i19IQzWLrySiXkhDNYuvJKKep7mSiHohDdUsvpKIeiEN1Sy+koh6IQ3VLL6SiHohDdUsvpKIeiEN1Sy+koh6IQ3VLL6SiHohDdUsvpKIeiEN1Sy+koh6IQ3VLL6S+hnz61sh59j/+9eV1M8LaS6cNy+kuXDevJDmwnnzQpoL580LaS6cN3+XZveTEVdSPy+kufC93wtpLnzv9zzNldTPC2munMX985MRY/eeupL6eSHNlfPmeZor583zNFfOm+dprpw3z9NcOW+eprmSbJnxPW9m7d6aV5ItL6S5cN68kObC934vpLnwvd8LaS6cxS+kufRzqE/TXPo51KdpLv0c6tM0l34O9VmaK8mWF9JQzeIryZYX0lDN4ivJlhfSXDqLn32a+kqy5YU0VEzAlWTLC2mYmAC/8hulXkhz6Sx+mubSWfw0zaWz+GmaS2fx0zRMs9ip+Cyn4rOcis9yKj7Lqfgsv/IbpV5IQzWLryS0XkhDNYuvJKheSEM1i68knF5IQzWLr/xGqedpruSnXkhDNYuv5KdeSEM1i6/kp15IQzX9riSWnqfZp3Lm7bv3+eVDRMu+V+2+Ep+u2n3FPF21+5v9dNXub+DTVbu39uNVf/vb/wM7aeoi",
|
|
913
|
+
"eJzVnduO5Mh1Rf+lnwdGRpxrzK8YfhBsGRAgyIalN0H/bgqTVT2CmCru6SS595OFRkX5UKw8LK3KtfKv3/74P//5u7/84X/+9OdvP//12+Pfan77+d//+u3P//u7P/39H/78l9/931++/fz46dvv//Rf2//920/f/vsPf/z9t5/nePztP376+wFDDzh6INADiR4o9ECjB9bxAz/909eNynx+6ajln1/t45fv3o9Tv/s49bsDP3C/4bsDP52/4bsDP8q/4bsDP/e/4bsDL5Lf8N2BV9Rv+O7Ay+83fPdTX6vr1NfqOvW1uk59ra5TX6vr1NfqOvW1uk59ra5TX6vr1NfqOvW1Oh6nvljH49RX63ic+nIdjx96vc7HI55fOh+zfv3t92Zx+5zFv88yHvExzA+9vN89zA9tg3cP80PL493D/NCuefcwP7Sa3j3MD22yNw8zfmjvvXuYH9qS7x7mh3bqu4dh2sCDaQMPpg08mDbwYNrAg2kDD6YNPJk28GTawJNpA0+mDTyZNvBk2sCTaQNPpg08mTbwZNrAxrSBjWkDG9MGNqYNbEwb2Jg2sDFtYGPawMa0gY1pAzvTBnamDexMG9iZNrAzbWBn2sDOtIGdaQM70wZ2pg0cTBs4mDZwMG3gYNrAwbSBg2kDB9MGDqYNHEwbOJg2cDJt4GTawMm0gZNpAyfTBk6mDZxMGziZNnAybeBk2sDFtIGLaQMjrsD5wzBtYMRxOH8Ypg2MuBnnD8O0gRGn5PxhmDbwj+kt7x7mypf2+vi+o8fYG+bKl/aXw1z3Azz98zZt/3H3Nl33A/z1MD/mfLx7mOt+hTgwzHW/QhwY5rpfIXrEen5xb/+z+vOL1/qY5bo18/Us122Z6dUfXxzW/3CTsK9+jn7drxtvH/26X06w0cdj1cf3HuNha2/4K58Fbx/+ymfHm4efiPTzPIEa3PMBLKfnCdThnoi28jyBWtwTEUCeJ4AfjV9OICrF8wTwgH6egO85Yg48T8D3HHkP/vMEfM+Rd7M/T8D3HHlf+C8nkDdvP0/A9xx5G/TzBHzPkTcUP0/A9xx5a+7zBHzPkTe5Pk/A9xx5u+jzBHzPkTdePk/A9xx5C+PzBHzPkTcDPk/A9xx5W93zBHzPkTeoPU/A9xx5q9fzBHzPkTdNPU/A9xx5+9HzBHzPkTfyPE/A9xx5S8zzBHzPkTeXPE/A9xx5m8bzBHzPkTc8PE/A9xx568DzBHzPkT/CP0/A9xz5c/bzBHzPkT8MP0/A9xz5E+vzBHzPkT9WPk/A9xz5s9/zBHzP4djWhGtbE85tTbi3NeHg1oSLWxNObk3kbxi/nED+0PA8Ad9zpHf1PAHfc+RvFM8T8D1H+lHPE/A9R/6i8DwB33OEzT9PwPccodzPE/A9R4Dx8wR8zxGa+jwB33OEHD5PoPfckKzP8wR6zw3mcAZzOIM5nMEczmAOZzCHM5jDGczhDOZwBnM4gzmcwRzOYA5nMIczmMMZzOEM5nAGcziDOZzBHM5gDmcwhzOYwxnM4QzmcAZzOIM5nMEczmAOZzCHM5jDGczhDOZwBnM4gzmcwRzOYA5nMIczmMMZzOEM5nAGcziDOZzBHM5gDmcwhzOYwxnM4QzmcAZzOIM5nMEczmAOZzCHM5jDGczhDOZwBnM4gzmcwRzOYA5nMIczmMMZzOEM5nAGcziDOZzBHM5gDmcwhzOYwxnM4QzmcAZzOIM5nMEczmAOZzCHM5jDGczhDOZwBnM4gzmcwRzOYA5nMIczmMMZzOEM5nAGcziDOZzBHM5gDmcwhzOYwxnM4QzmcAZzOIc5nMMczmEO5zCHc5jDOczhHOZwDnM4hzmcwxzOYQ7nMIdzmMM5zOEc5nAOcziHOZzDHM5hDucwh3OYwznM4RzmcA5zOIc5nMMczmEO5zCHc5jDOczhHOZwDnM4hzmcwxzOYQ7nMIdzmMM5zOEc5nAOcziHOZzDHM5hDucwh3OYwznM4RzmcA5zOIc5nMMczmEO5zCHc5jDOczhHOZwDnM4hzmcwxzOYQ7nMIdzmMM5zOEc5nAOcziHOZzDHM5hDucwh3OYwznM4RzmcA5zOIc5nMMczmEO5zCHc5jDOczhHOZwDnM4hzmcwxzOYQ7nMIdzmMM5zOEc5nAOcziHOZzDHM5hDucwh3OYwznM4RzmcA5zOIc5nMMczmEO5zCHC5jDBczhAuZwAXO4gDlcwBwuYA4XMIcLmMMFzOEC5nABc7iAOVzAHC5gDhcwhwuYwwXM4QLmcAFzuIA5XMAcLmAOFzCHC5jDBczhAuZwAXO4gDlcwBwuYA4XMIcLmMMFzOEC5nABc7iAOVzAHC5gDhcwhwuYwwXM4QLmcAFzuIA5XMAcLmAOFzCHC5jDBczhAuZwAXO4gDlcwBwuYA4XMIcLmMMFzOEC5nABc7iAOVzAHC5gDhcwhwuYwwXM4QLmcAFzuIA5XMAcLmAOFzCHC5jDBczhAuZwAXO4gDlcwBwuYA4XMIcLmMMFzOEC5nABc7iAOVzAHC5gDhcwhwuYwwXM4QLmcAFzuIA5XMAcLmAOFzCHC5jDBczhAuZwAXO4hDlcwhwuYQ6XMIdLmMMlzOES5nAJc7iEOVzCHC5hDpcwh0uYwyXM4RLmcAlzuIQ5XMIcLmEOlzCHS5jDJczhEuZwCXO4hDlcwhwuYQ6XMIdLmMMlzOES5nAJc7iEOVzCHC5hDpcwh0uYwyXM4RLmcAlzuIQ5XMIcLmEOlzCHS5jDJczhEuZwCXO4hDlcwhwuYQ6XMIdLmMMlzOES5nAJc7iEOVzCHC5hDpcwh0uYwyXM4RLmcAlzuIQ5XMIcLmEOlzCHS5jDJczhEuZwCXO4hDlcwhwuYQ6XMIdLmMMlzOES5nAJc7iEOVzCHC5hDpcwh0uYwyXM4RLmcAlzuIQ5XMIcLmEOlzCHS5jDJczhEuZwCXO4hDlcwhwuYQ6XMIcrmMMVzOEK5nAFc7iCOVzBHK5gDlcwhyuYwxXM4QrmcAVzuII5XMEcrmAOVzCHK5jDFczhCuZwBXO4gjlcwRyuYA5XMIcrmMMVzOEK5nAFc7iCOVzBHK5gDlcwhyuYwxXM4QrmcAVzuII5XMEcrmAOVzCHK5jDFczhCuZwBXO4gjlcwRyuYA5XMIcrmMMVzOEK5nAFc7iCOVzBHK5gDlcwhyuYwxXM4QrmcAVzuII5XMEcrmAOVzCHK5jDFczhCuZwBXO4gjlcwRyuYA5XMIcrmMMVzOEK5nAFc7iCOVzBHK5gDlcwhyuYwxXM4QrmcAVzuII5XMEcrmAOVzCHK5jDFczhCuZwBXO4gjlcwRyuYA5XMIcrmMMVzOEK5nAFc7iGOVzDHK5hDtcwh2uYwzXM4RrmcA1zuIY5XMMcrmEO1zCHa5jDNczhGuZwDXO4hjlcwxyuYQ7XMIdrmMM1zOEa5nANc7iGOVzDHK5hDtcwh2uYwzXM4RrmcA1zuIY5XMMcrmEO1zCHa5jDNczhGuZwDXO4hjlcwxyuYQ7XMIdrmMM1zOEa5nANc7iGOVzDHK5hDtcwh2uYwzXM4RrmcA1zuIY5XMMcrmEO1zCHa5jDNczhGuZwDXO4hjlcwxyuYQ7XMIdrmMM1zOEa5nANc7iGOVzDHK5hDtcwh2uYwzXM4RrmcA1zuIY5XMMcrmEO1zCHa5jDNczhGuZwDXO4hjlcwxyuYQ7XMIdrmMM1zOEa5nANc7iGOVzDHK5hDtcwh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swh1swhxsPGMRtR9C7vh1Bb/t2BL3v2xH0xm9H0Du/HUFv/XYEvffbEfTmb0fwuw8jue0IfvdhKLcdwe8+jOW2I/jdh8HcdgS/+zCa247gdx+Gc9sR/O7DeG47gt99GNBtR/C7DyO67Qh+92FItx3B7z6M6bYj+N2HQd12BL/7MKrbjuB3H4Z12xH87sO4bjuC330Y2G1H8LsPI7vtCH73YWi3HcHvPozttiP43YfB3XYEv/swutuO4HcfhnfbEfzuw/huO4LffRjgbUfwuw8jvO0IfvdhiLcdwe8+jPG2I/jdh0HedgS/+zDK247gdx+GedsR/O7DOG87gt99GOhtR/C7DyO97Qh+92Gotx3B7z6M9bYj+N2Hwd52BL/7MNrbjuB3H4Z72xH87sN4bzuC330Y8G1H8LsPI77tCH73Yci3HcHvPoz5tiP43YdB33YEv/sw6tuOwHd/4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4Kxv4KxvIKzvp3/6uplV/vza7T93f3591s6Xj6qPL3786lv35zDAz9XpwyB88vxhgNfC+cMAr7LzhwFev+cPA2yG84cBds75wwDb7PxhgD15/jBMGxgh+acPg/yN4PxhmDYw8neN84dh2sDI32LOH4ZpAyN/Pzp/GKYNjPzN6/xhmDYw8ne684dh2sDI3xbPH4ZpAyN/Dz1/GKYNjPwN9/xhmDYw8nfn84dh2sDI38rPH4ZpAyN/3z9/GKYNjLwn4fxhmDYw8j6K84dh2sDIez/OH4ZpAyPvVzl/GKYNjLzH5vxhmDYw8r6g84dh2sDIe5nOH4ZpAyPvvzp/GKINPJH3jJ0/DNEGnsj73M4fhmgDzwfRBp7Iu/7OH4ZoA0/knYrnD0O0gSfy7srTh0Het3n+MEwbGHmv6fnDMG1g5P2x5w/DtIGR9/SePwzTBkbeh3z+MEwbGHnv9PnDMG1g5P3e5w/DtIGR96ifPwzTBkbeV3/+MEwbGHEBzh+GaQMj/sL5wzBtYMS5OH8Ypg2MeCLnD8O0gRG35fxhmDYw4uOcPwzTBkYcovOHYdrAiPd0/jBMGxhxtc4fhmkDI37Z+cMwbWAmJ24yOXGTyYmbTE7cZHLiJpMTN5mcuMnkxE0mJ24yOXGTyYmbTE7cZHLiJpMTN5mcuMnkxE0mJ24yOXGTyYmbTE7cZHLiJpMTN5mcuMnkxE0mJ24yOXGTyYmbTE7cZHLiJpMTN5mcuMnkxE0mJ24yOXGTyYmbTE7cZHLiJpMTN5mcuMnkxE0mJ24yOXGTyYmbTE7cZHLiJpMTN5mcuMnkxE0mJ24yOXGTyYmbTE6cMTlxxuTEGZMTZ0xOnD2INrAxOXHG5MQZkxNnTE6cMTlxxuTEGZMTZ0xOnDE5ccbkxBmTE2dMTpwxOXHG5MQZkxNnTE6cMTlxxuTEGZMTZ0xOnDE5ccbkxBmTE2dMTpwxOXHG5MQZkxNnTE6cMTlxxuTEGZMTZ0xOnDE5ccbkxBmTE2dMTpwxOXHG5MQZkxNnTE6cMTlxxuTEGZMTZ0xOnDE5ccbkxBmTE2dMTpwxOXHG5MQZkxNnTE6cMTlxxuTEGZMTZ0xOnDE5ccbkxBmTE2dMTpwxOXHG5MQZkxNnTE6cMTlxxuTEGZMTZ0xOnDE5ccbkxBmTE2dMTpwxOXHG5MQZkxNnTE6cMTlxxuTEGZMTZ0xOnDE5ccbkxBmTE2dMTpwxOXHG5MQZkxNnTE6cMTlxxuTEGZMTZ0xOnDE5ccbkxBmTE+dMTpwzOXHO5MQ5kxPnD6IN7ExOnDM5cc7kxDmTE+dMTpwzOXHO5MQ5kxPnTE6cMzlxzuTEOZMT50xOnDM5cc7kxDmTE+dMTpwzOXHO5MQ5kxPnTE6cMzlxzuTEOZMT50xOnDM5cc7kxDmTE+dMTpwzOXHO5MQ5kxPnTE6cMzlxzuTEOZMT50xOnDM5cc7kxDmTE+dMTpwzOXHO5MQ5kxPnTE6cMzlxzuTEOZMT50xOnDM5cc7kxDmTE+dMTpwzOXHO5MQ5kxPnTE6cMzlxzuTEOZMT50xOnDM5cc7kxDmTE+dMTpwzOXHO5MQ5kxPnTE6cMzlxzuTEOZMT50xOnDM5cc7kxDmTE+dMTpwzOXHO5MQ5kxPnTE6cMzlxzuTEOZMT50xOnDM5cc7kxDmTE+dMTpwzOXHO5MQ5kxPnTE6cMzlxzuTEBZMTF0xOXDA5ccHkxMWDaAMHkxMXTE5cMDlxweTEBZMTF0xOXDA5ccHkxAWTExdMTlwwOXHB5MQFkxMXTE5cMDlxweTEBZMTF0xOXDA5ccHkxAWTExdMTlwwOXHB5MQFkxMXTE5cMDlxweTEBZMTF0xOXDA5ccHkxAWTExdMTlwwOXHB5MQFkxMXTE5cMDlxweTEBZMTF0xOXDA5ccHkxAWTExdMTlwwOXHB5MQFkxMXTE5cMDlxweTEBZMTF0xOXDA5ccHkxAWTExdMTlwwOXHB5MQFkxMXTE5cMDlxweTEBZMTF0xOXDA5ccHkxAWTExdMTlwwOXHB5MQFkxMXTE5cMDlxweTEBZMTF0xOXDA5ccHkxAWTExdMTlwwOXHB5MQFkxMXTE5cMDlxweTEBZMTF0xOXDA5ccHkxAWTExdMTlwwOXHJ5MQlkxOXTE5cMjlx+SDawMnkxCWTE5dMTlwyOXHJ5MQlkxOXTE5cMjlxyeTEJZMTl0xOXDI5ccnkxCWTE5dMTlwyOXHJ5MQlkxOXTE5cMjlxyeTEJZMTl0xOXDI5ccnkxCWTE5dMTlwyOXHJ5MQlkxOXTE5cMjlxyeTEJZMTl0xOXDI5ccnkxCWTE5dMTlwyOXHJ5MQlkxOXTE5cMjlxyeTEJZMTl0xOXDI5ccnkxCWTE5dMTlwyOXHJ5MQlkxOXTE5cMjlxyeTEJZMTl0xOXDI5ccnkxCWTE5dMTlwyOXHJ5MQlkxOXTE5cMjlxyeTEJZMTl0xOXDI5ccnkxCWTE5dMTlwyOXHJ5MQlkxOXTE5cMjlxyeTEJZMTl0xOXDI5ccnkxCWTE5dMTlwyOXHJ5MQlkxOXTE5cMjlxyeTEJZMTl0xOXDE5ccXkxBWTE1dMTlw9iDZwMTlxxeTEFZMTV0xOXDE5ccXkxBWTE1dMTlwxOXHF5MQVkxNXTE5cMTlxxeTEFZMTV0xOXDE5ccXkxBWTE1dMTlwxOXHF5MQVkxNXTE5cMTlxxeTEFZMTV0xOXDE5ccXkxBWTE1dMTlwxOXHF5MQVkxNXTE5cMTlxxeTEFZMTV0xOXDE5ccXkxBWTE1dMTlwxOXHF5MQVkxNXTE5cMTlxxeTEFZMTV0xOXDE5ccXkxBWTE1dMTlwxOXHF5MQVkxNXTE5cMTlxxeTEFZMTV0xOXDE5ccXkxBWTE1dMTlwxOXHF5MQVkxNXTE5cMTlxxeTEFZMTV0xOXDE5ccXkxBWTE1dMTlwxOXHF5MQVkxNXTE5cMTlxxeTEFZMTV0xOXDE5ccXkxBWTE1dMTlwxOXHF5MQVkxPXTE5cMzlxzeTENZMT1w+iDdxMTlwzOXHN5MQ1kxPXTE5cMzlxzeTENZMT10xOXDM5cc3kxDWTE9dMTlwzOXHN5MQ1kxPXTE5cMzlxzeTENZMT10xOXDM5cc3kxDWTE9dMTlwzOXHN5MQ1kxPXTE5cMzlxzeTENZMT10xOXDM5cc3kxDWTE9dMTlwzOXHN5MQ1kxPXTE5cMzlxzeTENZMT10xOXDM5cc3kxDWTE9dMTlwzOXHN5MQ1kxPXTE5cMzlxzeTENZMT10xOXDM5cc3kxDWTE9dMTlwzOXHN5MQ1kxPXTE5cMzlxzeTENZMT10xOXDM5cc3kxDWTE9dMTlwzOXHN5MQ1kxPXTE5cMzlxzeTENZMT10xOXDM5cc3kxDWTE9dMTlwzOXHN5MQ1kxPXTE5cMzlxzeTENZMT10xOXDM5cc3kxC0mJ24xOXGLyYlbTE7cehBt4MXkxC0mJ24xOXGLyYlbTE7cYnLiFpMTt5icuMXkxC0mJ24xOXGLyYlbTE7cYnLiFpMTt5icuMXkxC0mJ24xOXGLyYlbTE7cYnLiFpMTt5icuMXkxC0mJ24xOXGLyYlbTE7cYnLiFpMTt5icuMXkxC0mJ24xOXGLyYlbTE7cYnLiFpMTt5icuMXkxC0mJ24xOXGLyYlbTE7cYnLiFpMTt5icuMXkxC0mJ24xOXGLyYlbTE7cYnLiFpMTt5icuMXkxC0mJ24xOXGLyYlbTE7cYnLiFpMTt5icuMXkxC0mJ24xOXGLyYlbTE7cYnLiFpMTt5icuMXkxC0mJ24xOXGLyYlbTE7cYnLiFpMTt5icuMXkxC0mJ24xOXGLyYlbTE7cYnLiFpMTt5icuMXkxC0mJ24xOXGLyYlbTE7cYnLiFpETt/0bzwbe/o1nA2//xrOBt3/j2cDbv/Fs4O3feDbw9m88G3j7N54NvP0bzwbe/o1pAxM5cdswTBuYyInbhmHawERO3DYM0wYmcuK2YZg2MJETtw3DtIGJnLhtGKYNTOTEbcMwbWAiJ24bhmkDEzlx2zBMG3jfiZs1PuaZtcYXIw0re371sFWfXz16XXABu1tb6AL23TulC9h9OihdwO4TRekCdp9CShew++RSuoDdp53SBew+IZUuYPepqnQB6k/ifZ9S6AL2HUylC1B/Eu+7nkoXoP4k3ndKlS5A/Um8764qXYD6k3jfkVW6APUn8b6Lq3QB6k/ifedX6QLUn8T7brHSBag/ifcdZqULUH8S77vSSheg/iTed7KVLkD9SbzvfitdgPqTeN8xV7oA9SfxvsuudAHqT+J9Z17pAtSfxPtuvtIFqD+J9xsASheg/iTebw0oXYD6k3i/aaB0AepP4v12gtIFqD+J9xsNSheg/iTeb0EoXYD6k3i/OaF0AepP4v22hdIFqD+J9xsaSheg/iTeb3UoXYD6k3i/CaJ0AepP4v32iNIFqD+J9xsnSheg/iTeb6koXYD4k3jsN1uULkD8STz22zBKFyD+JB4P8Sfx2O/WKF2A+JN47PdxlC5A/Ek89js8Qhew3+5RugD1J/F+I0jpAtSfxPstIqULUH8S7zePlC5A/Um831ZSugD1J/F+w0npAtSfxPutKKULUH8S7zeplC5A/Um8375SugD1J7F6Y2uoN7aGemNrqDe2hnpja6g3toZ6Y2uoN7aGemNrqDe2hnpja6g3toZ6Y2uoN7aGemNrqDe2hnpja6g3toZ6Y2uoN7aGemNrqDe2hnpja6g3toZ6Y2uoN7aGemNrqDe2hnpja6g3toZ6Y2uoN7aGemNrqDe2hnpja6g3toZ6Y2uoN7aGemNrqDe2hnpja6g3toZ6Y2uoN7aGemNrqDe2hnpja6g3toZ6Y2uoN7aGemNrqDe2hnpja6g3toZ6Y2uoN7aGemNrqDe2hnpja6g3toZ6Y2uoN7aGemNrqDe2hnpja6g3toZ6Y2uoN7aGemNrqDe2hnpja6g3tqZ6Y2uqN7amemNrqje25kP8STzVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW1O9sTXVG1tTvbE11RtbU72xNdUbW6be2DL1xpapN7ZMvbFlD/Ensak3tky9sWXqjS1Tb2yZemPL1Btbpt7YMvXGlqk3tky9sWXqjS1Tb2yZemPL1Btbpt7YMvXGlqk3tky9sWXqjS1Tb2yZemPL1Btbpt7YMvXGlqk3tky9sWXqjS1Tb2yZemPL1Btbpt7YMvXGlqk3tky9sWXqjS1Tb2yZemPL1Btbpt7YMvXGlqk3tky9sWXqjS1Tb2yZemPL1Btbpt7YMvXGlqk3tky9sWXqjS1Tb2yZemPL1Btbpt7YMvXGlqk3tky9sWXqjS1Tb2yZemPL1Btbpt7YMvXGlqk3tky9sWXqjS1Tb2yZemPL1Btbpt7YMvXGlqk3tky9sWXqjS1Tb2yZemPL1Btbpt7YMvXGlqk3tky9sWXqjS1Tb2yZemPL1Btbpt7YMvXGlqk3tky9sWXqjS1Tb2yZemPL1Btbpt7YcvXGlqs3tly9seXqjS1/iD+JXb2x5eqNLVdvbLl6Y8vVG1uu3thy9caWqze2XL2x5eqNLVdvbLl6Y8vVG1uu3thy9caWqze2XL2x5eqNLVdvbLl6Y8vVG1uu3thy9caWqze2XL2x5eqNLVdvbLl6Y8vVG1uu3thy9caWqze2XL2x5eqNLVdvbLl6Y8vVG1uu3thy9caWqze2XL2x5eqNLVdvbLl6Y8vVG1uu3thy9caWqze2XL2x5eqNLVdvbLl6Y8vVG1uu3thy9caWqze2XL2x5eqNLVdvbLl6Y8vVG1uu3thy9caWqze2XL2x5eqNLVdvbLl6Y8vVG1uu3thy9caWqze2XL2x5eqNLVdvbLl6Y8vVG1uu3thy9caWqze2XL2x5eqNLVdvbLl6Y8vVG1uu3thy9caWqze2XL2x5eqNLVdvbLl6Y8vVG1uu3thy9cZWqDe2Qr2xFeqNrVBvbMVD/Ekc6o2tUG9shXpjK9QbW6He2Ar1xlaoN7ZCvbEV6o2tUG9shXpjK9QbW6He2Ar1xlaoN7ZCvbEV6o2tUG9shXpjK9QbW6He2Ar1xlaoN7ZCvbEV6o2tUG9shXpjK9QbW6He2Ar1xlaoN7ZCvbEV6o2tUG9shXpjK9QbW6He2Ar1xlaoN7ZCvbEV6o2tUG9shXpjK9QbW6He2Ar1xlaoN7ZCvbEV6o2tUG9shXpjK9QbW6He2Ar1xlaoN7ZCvbEV6o2tUG9shXpjK9QbW6He2Ar1xlaoN7ZCvbEV6o2tUG9shXpjK9QbW6He2Ar1xlaoN7ZCvbEV6o2tUG9shXpjK9QbW6He2Ar1xlaoN7ZCvbEV6o2tUG9shXpjK9QbW6He2Ar1xlaoN7ZCvbEV6o2tUG9shXpjK9QbW6He2Ar1xlaoN7ZSvbGV6o2tVG9spXpjKx/iT+JUb2ylemMr1Rtbqd7YSvXGVqo3tlK9sZXqja1Ub2ylemMr1Rtbqd7YSvXGVqo3tlK9sZXqja1Ub2ylemMr1Rtbqd7YSvXGVqo3tlK9sZXqja1Ub2ylemMr1Rtbqd7YSvXGVqo3tlK9sZXqja1Ub2ylemMr1Rtbqd7YSvXGVqo3tlK9sZXqja1Ub2ylemMr1Rtbqd7YSvXGVqo3tlK9sZXqja1Ub2ylemMr1Rtbqd7YSvXGVqo3tlK9sZXqja1Ub2ylemMr1Rtbqd7YSvXGVqo3tlK9sZXqja1Ub2ylemMr1Rtbqd7YSvXGVqo3tlK9sZXqja1Ub2ylemMr1Rtbqd7YSvXGVqo3tlK9sZXqja1Ub2ylemMr1Rtbqd7YSvXGVqo3tlK9sZXqja1Ub2ylemMr1Rtbqd7YSvXGVqo3tlK9sVXqja1Sb2yVemOr1Btb9RB/Epd6Y6vUG1ul3tgq9cZWqTe2Sr2xVeqNrVJvbJV6Y6vUG1ul3tgq9cZWqTe2Sr2xVeqNrVJvbJV6Y6vUG1ul3tgq9cZWqTe2Sr2xVeqNrVJvbJV6Y6vUG1ul3tgq9cZWqTe2Sr2xVeqNrVJvbJV6Y6vUG1ul3tgq9cZWqTe2Sr2xVeqNrVJvbJV6Y6vUG1ul3tgq9cZWqTe2Sr2xVeqNrVJvbJV6Y6vUG1ul3tgq9cZWqTe2Sr2xVeqNrVJvbJV6Y6vUG1ul3tgq9cZWqTe2Sr2xVeqNrVJvbJV6Y6vUG1ul3tgq9cZWqTe2Sr2xVeqNrVJvbJV6Y6vUG1ul3tgq9cZWqTe2Sr2xVeqNrVJvbJV6Y6vUG1ul3tgq9cZWqTe2Sr2xVeqNrVJvbJV6Y6vUG1ul3tgq9cZWqTe2Sr2xVeqNrVZvbLV6Y6vVG1ut3tjqh/iTuNUbW63e2Gr1xlarN7ZavbHV6o2tVm9stXpjq9UbW63e2Gr1xlarN7ZavbHV6o2tVm9stXpjq9UbW63e2Gr1xlarN7ZavbHV6o2tVm9stXpjq9UbW63e2Gr1xlarN7ZavbHV6o2tVm9stXpjq9UbW63e2Gr1xlarN7ZavbHV6o2tVm9stXpjq9UbW63e2Gr1xlarN7ZavbHV6o2tVm9stXpjq9UbW63e2Gr1xlarN7ZavbHV6o2tVm9stXpjq9UbW63e2Gr1xlarN7ZavbHV6o2tVm9stXpjq9UbW63e2Gr1xlarN7ZavbHV6o2tVm9stXpjq9UbW63e2Gr1xlarN7ZavbHV6o2tVm9stXpjq9UbW63e2Gr1xlarN7ZavbHV6o2tVm9stXpjq9UbW63e2Gr1xlarN7ZavbHV6o2tVm9sLfXG1lJvbC31xtZSb2yth/iTeKk3tpZ6Y2u9aGz1Y3wc61hfXMC0x/z4arP1xQWs+fHfzar5+bXue8M/VsXHfzXj8etv/YjPK9h/FCtdwf6zWOgKXmS2lK5g/2msdAX7j2OlK9h/Hitdwf4DWekK9p/ISlew/0hWugL5Z/KL3JbSFcg/k18Et5SuQP6Z/CK5pXQFlz+Tx8Pr+1T+r6+h82OObed88Y3bPr62/fvXun1e6uUP7/su9fKn/H2XevmvA/dd6rt/b4j51aVmfKybkZm/nmmPXPTnHN+/cYzP8d/9S8OB8Ss/xq+Re/+VvvvXgDfM9KLfde9M735Uv2Omdz983zHTux+n75jp3c+9d8z07gfUO2Z695PkHTPdsPK/nIlwj79IRd0604v6070zEe7xF42me2ci3OMvSkr3zkS4x1/0ju6diXCPv6gS3TsT4R5/0Q66dybCPf6i8HPvTIR7/EWH596ZCPf4i1rOvTMR7vEXTZt7ZyLc4y/KM/fORLjHX/Rh7p2JcI+/qLjcOxPhHn/RWrl3JsI9/qKIcu9MhHv8Rbfk3pkI9/iLusi9MxHu8RcNkHtnItzjL0od985EuMdf9DTunYlwj7+oXtw7E+Eef9GmuHcmwj3+oiBx70yEe/xF5+HemQj3+Isaw70zEe7xF82Ee2ci3OMvygb3zkS4x1/0B+6diXCPv6gE3DsT4R5/4fLfOxPdHrfHC+P+3pno9vg2E90e32ai2+PbTHR7fJuJbo9vM9Ht8W0muj2+zUS3x7eZCPf422Xtd8xEuMffLlS/YybCPf526fkdMxHu8beLye+YiXCPv10efsdMhHv87YLvO2Yi3ONvl3DfMRPhHn+7//qOmQj3+NuN0nfMRLjH+XzO7ZsR7nE+n3ObiXCP8/mc20yEe5zP59xmItzjfD7nNhPhHufzObeZCPc4n8+5zUS4x/l8zm0mwj3O53NuMxHucT6fc5uJcI/z+ZzbTIR7nM/n3GYi3ON8Puc2E+Ee5/M5t5kI9zifz7nNRLjH+XzObSbCPc7nc24zEe5xPp9zm4lwj/P5nNtMhHucz+fcZiLc43w+5zYT4R7n8zm3mfj2+IuPu//ocz6+mubx+IgBz8f8/ikkPvaG6e+J01+3SD/Dwfbis+tvm2b3eXLbNLtPktum2X2G3DbN7tPjpGn68yW1xtydZve5cds0u0+M26bZfVbcNc2+LXrbNFfu4q+nuXAXr7k+p8ndV/i+G3rbNNftm+2L1+cXj8fuNNftmyPTXLdvjkxz3b45MM2+1XjbNNftmyPTXLdvjkxz3b45Ms11v/sdmea63/2OTEO1i/ddxdumodrF+37iTdO8+Czg26Zh2sUvPqX3tmmYdvGLz8+9bRqmXfzik21vm4ZpF7/4yNnbpqHaxft24W3TUO3ifaPwtmmodvG+RXjbNFS7eN8cvG0aql28bwveNg3VLt43BG+bhmoX71uBt01DtYv3TcDbpqHaxfv2323TUO3ifePvtmmodvG+5XfbNFS7eN/su20aql28b/PdNg3VLt43+G6bhmoX71t7t01DtYv3Tb3bpqHaxft23m3TUO3ifSPvtmmodvG+hXfbNFS7eN+8u20aql28b9vdNg3VLt437G6bhmoX71t1t01DtYv3TbrbpqHaxfv23G3TUO3ifWPutmmodvG+JXfbNFS7eN+Mu20aql28b8PdNg3VLt434G6bhmoX71tvt01DtYsvdMuOTEO1iy90y45MQ7WLL3TLjkxDtYsvdMuOTEO1iy90y45MQ7WLL3TLjkxDtYv3P3HwtmmodjGVd/fi8wVvm4ZqF1N5dy8+TfC2aah2MZV39+KzA2+bhmoXU3l3Lz4p8LZpqHYxlXf34nMB75nGX3wi4G3TEO1if/EpgLdNQ7SL/cUn/902DdEu9hef9nfbNES72F98wt9t01DtYibvzl98nt9t01DtYibvzl98et9t01DtYibvzl98Vt9t01DtYibvzl98Mt9t01DtYibvzl98Dt9t01DtYibvzl986t5t01Dt4kttrvz+xV2701z5Cv96mgt/imd8Bn1n2O40F/4UH5jmwp/iA9Nc+BvFgWku/I3i62kuNJZ6xMe+6ZHj84vX+hzmunVzYJgLt425f3zx9ivnP9ynf/7q8Vj18b3H2H6edu/rhb9/nDD9hb+vnDD9hU+GE6a/8ElywvQXPnn+xfQf01y467+e5koj6sA0F/5ueWAajm3/MQ3H9v6YhmMbf0xz4XZ1t89p3HenuXBbHpjmwu13YJoLf+8+MM2Fu/jraa40og5Mc+EuPjDNhbv4wDQX7uID01y4iw9MQ7WLrzSiDkxDtYuvNKIOTEO1i680og5MQ7WLrzSiDkxDtYuvNKIOTEO1i680og5MQ7WLrzSiDkxDtYuvNKIOTEO1i680og5MQ7WLrzSiDkxDtYuvNKIOTHPhvhnz41Mh59j/+9eV1s+BaS7cNwemuXDfHJjmwn1zYJoL982BaS7cN/8wze47I660fg5Mc+HvfgemufB3vwPT3LWL96YZV1o/o7+/M2LsPafGldbPgWmu3DdfT3Plvvl6miv3zdfTXLlvvp7myn3z9TSXvvfpc9/M2ntqjivNlgPTXLhvDkxz4e9+B6a58He/A9NcuIsPTHPp+1C/nObS96F+Oc2l70P9cppL34f65TRUu/hKs+XANFS7+Eqz5cA0VLv4SrPlwDRUu/hKs+XANFS7+MpPlDowDdUuvvITpb40FMaVDtKBaS7dxV9Oc+ku/nKaS3fxl9Mw+VmDys8aVH7WoPKzBpWfNa78RKkD01Dt4isNrQPTUO3iKw2qA9NQ7eIrDacD01Dt4is/UerANFS7+Ep/6sA0VLv4Sn/qwDRUu/hKf+rANFS7+Ep/6sA0VLv4Sn/qwDRUu/hKY+nANFTbb9/KGVn5PDhq5Pf/L/Z5bve1eODc7qsm82POenz/Y/D6fmr3p/vLU7s/hV+d2jc8vjy1+zP2+tTf/vb/IeK/JA=="
|
|
902
914
|
],
|
|
903
915
|
"fileMap": {
|
|
904
|
-
"
|
|
905
|
-
"source": "
|
|
916
|
+
"16": {
|
|
917
|
+
"source": "mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n \n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(_self: Self, _bit_size: u32) -> [u1] {}\n \n #[builtin(to_be_bits)]\n fn __to_be_bits(_self: Self, _bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(_self: Self, _bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(_self: Self, _radix: u32, _result_len: u32) -> [u8] {}\n \n #[builtin(to_be_radix)]\n fn __to_be_radix(_self: Self, _radix: u32, _result_len: u32) -> [u8] {}\n\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> Field {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n",
|
|
906
918
|
"path": "std/field.nr"
|
|
907
919
|
},
|
|
908
|
-
"
|
|
920
|
+
"17": {
|
|
909
921
|
"source": "struct GrumpkinScalar {\n low: Field,\n high: Field,\n}\n\nimpl GrumpkinScalar {\n pub fn new(low: Field, high: Field) -> Self {\n // TODO: check that the low and high value fit within the grumpkin modulus\n GrumpkinScalar { low, high }\n }\n}\n\nglobal GRUMPKIN_SCALAR_SERIALIZED_LEN: Field = 2;\n\npub fn deserialize_grumpkin_scalar(fields: [Field; GRUMPKIN_SCALAR_SERIALIZED_LEN]) -> GrumpkinScalar {\n GrumpkinScalar { low: fields[0], high: fields[1] }\n}\n\npub fn serialize_grumpkin_scalar(scalar: GrumpkinScalar) -> [Field; GRUMPKIN_SCALAR_SERIALIZED_LEN] {\n [scalar.low, scalar.high]\n}\n",
|
|
910
922
|
"path": "std/grumpkin_scalar.nr"
|
|
911
923
|
},
|
|
912
|
-
"
|
|
924
|
+
"18": {
|
|
913
925
|
"source": "use crate::grumpkin_scalar::GrumpkinScalar;\nuse crate::scalar_mul::fixed_base_embedded_curve;\n\npub fn grumpkin_fixed_base(scalar: GrumpkinScalar) -> [Field; 2] {\n // TODO: this should use both the low and high limbs to do the scalar multiplication\n fixed_base_embedded_curve(scalar.low, scalar.high)\n}\n",
|
|
914
926
|
"path": "std/grumpkin_scalar_mul.nr"
|
|
915
927
|
},
|
|
916
|
-
"
|
|
928
|
+
"28": {
|
|
917
929
|
"source": "struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::unsafe::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<U, Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n",
|
|
918
930
|
"path": "std/option.nr"
|
|
919
931
|
},
|
|
920
|
-
"
|
|
932
|
+
"40": {
|
|
921
933
|
"source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::oracle;\nuse dep::protocol_types::{\n address::AztecAddress,\n grumpkin_point::GrumpkinPoint,\n};\n\npub fn emit_encrypted_log<N>(\n context: &mut PrivateContext,\n contract_address: AztecAddress,\n storage_slot: Field,\n encryption_pub_key: GrumpkinPoint,\n log: [Field; N]\n) {\n let _ = oracle::logs::emit_encrypted_log(contract_address, storage_slot, encryption_pub_key, log);\n context.accumulate_encrypted_logs(log);\n}\n\npub fn emit_unencrypted_log<T>(context: &mut PublicContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n\n// TODO: We might want to remove this since emitting unencrypted logs from private functions is violating privacy.\n// --> might be a better approach to force devs to make a public function call that emits the log if needed then\n// it would be less easy to accidentally leak information.\n// If we decide to keep this function around would make sense to wait for traits and then merge it with emit_unencrypted_log.\npub fn emit_unencrypted_log_from_private<T>(context: &mut PrivateContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n",
|
|
922
934
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/log.nr"
|
|
923
935
|
},
|
|
924
|
-
"
|
|
936
|
+
"41": {
|
|
925
937
|
"source": "use dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n },\n contrakt::deployment_data::ContractDeploymentData,\n hash::hash_args,\n};\n\n// docs:start:private-global-variables\nstruct PrivateGlobalVariables {\n chain_id: Field,\n version: Field,\n}\n// docs:end:private-global-variables\n\nimpl PrivateGlobalVariables {\n fn serialize(self) -> [Field; 2] {\n [self.chain_id, self.version]\n }\n}\n\n// docs:start:public-global-variables\nstruct PublicGlobalVariables {\n chain_id: Field,\n version: Field,\n block_number: Field,\n timestamp: Field,\n}\n// docs:end:public-global-variables\n\nimpl PublicGlobalVariables {\n fn serialize(self) -> [Field; 4] {\n [self.chain_id, self.version, self.block_number, self.timestamp]\n }\n}\n\n// PrivateContextInputs are expected to be provided to each private function\n// docs:start:private-context-inputs\nstruct PrivateContextInputs {\n call_context : CallContext,\n block_header: BlockHeader,\n contract_deployment_data: ContractDeploymentData,\n private_global_variables: PrivateGlobalVariables,\n}\n// docs:end:private-context-inputs\n\n// PublicContextInputs are expected to be provided to each public function\n// docs:start:public-context-inputs\nstruct PublicContextInputs {\n call_context: CallContext,\n block_header: BlockHeader,\n\n public_global_variables: PublicGlobalVariables,\n}\n// docs:end:public-context-inputs\n\nstruct Hasher {\n fields: [Field],\n}\n\nimpl Hasher {\n pub fn new()-> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n\n pub fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n",
|
|
926
938
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/abi.nr"
|
|
927
939
|
},
|
|
928
|
-
"
|
|
940
|
+
"42": {
|
|
929
941
|
"source": "use dep::std::option::Option;\nuse dep::protocol_types::{\n address::AztecAddress,\n};\n\nuse crate::context::{PrivateContext, Context};\nuse crate::note::{\n lifecycle::create_note,\n note_getter::{get_note, view_notes},\n note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::singleton::compute_singleton_initialization_nullifier;\n\n// docs:start:struct\nstruct ImmutableSingleton<Note, N> {\n context: Option<&mut PrivateContext>,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n compute_initialization_nullifier: fn (Field, Option<AztecAddress>) -> Field,\n}\n// docs:end:struct\n\nimpl<Note, N> ImmutableSingleton<Note, N> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n ImmutableSingleton {\n context: context.private,\n storage_slot,\n note_interface,\n compute_initialization_nullifier: compute_singleton_initialization_nullifier,\n }\n }\n // docs:end:new\n\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self, owner: Option<AztecAddress>) -> bool {\n let compute_initialization_nullifier = self.compute_initialization_nullifier;\n let nullifier = compute_initialization_nullifier(self.storage_slot, owner);\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // docs:start:initialize\n pub fn initialize(\n self,\n note: &mut Note, \n owner: Option<AztecAddress>,\n broadcast: bool,\n ) {\n let context = self.context.unwrap();\n\n // Nullify the storage slot.\n let compute_initialization_nullifier = self.compute_initialization_nullifier;\n let nullifier = compute_initialization_nullifier(self.storage_slot, owner);\n context.push_new_nullifier(nullifier, 0);\n\n create_note(\n context,\n self.storage_slot,\n note,\n self.note_interface,\n broadcast,\n );\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note {\n let context = self.context.unwrap();\n let storage_slot = self.storage_slot;\n get_note(context, storage_slot, self.note_interface)\n }\n // docs:end:get_note\n\n // docs:start:view_note\n unconstrained pub fn view_note(self) -> Note {\n let options = NoteViewerOptions::new().set_limit(1);\n view_notes(self.storage_slot, self.note_interface, options)[0].unwrap()\n }\n // docs:end:view_note\n}\n",
|
|
930
942
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/immutable_singleton.nr"
|
|
931
943
|
},
|
|
932
|
-
"
|
|
944
|
+
"43": {
|
|
933
945
|
"source": "use crate::context::{Context};\nuse crate::oracle::storage::storage_read;\nuse crate::oracle::storage::storage_write;\nuse crate::types::type_serialization::TypeSerializationInterface;\nuse dep::std::option::Option;\n\n// docs:start:public_state_struct\nstruct PublicState<T, T_SERIALIZED_LEN> {\n context: Context,\n storage_slot: Field,\n serialization_methods: TypeSerializationInterface<T, T_SERIALIZED_LEN>,\n}\n// docs:end:public_state_struct\n\nimpl<T, T_SERIALIZED_LEN> PublicState<T, T_SERIALIZED_LEN> {\n // docs:start:public_state_struct_new\n pub fn new(\n // Note: Passing the contexts to new(...) just to have an interface compatible with a Map.\n context: Context,\n storage_slot: Field,\n serialization_methods: TypeSerializationInterface<T, T_SERIALIZED_LEN>,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicState {\n context,\n storage_slot,\n serialization_methods,\n }\n }\n // docs:end:public_state_struct_new\n\n // docs:start:public_state_struct_read\n pub fn read(self) -> T {\n assert(self.context.private.is_none(), \"Public state writes only supported in public functions\");\n storage_read(self.storage_slot, self.serialization_methods.deserialize)\n }\n // docs:end:public_state_struct_read\n\n // docs:start:public_state_struct_write\n pub fn write(self, value: T) {\n assert(self.context.private.is_none(), \"Public state writes only supported in public functions\");\n let serialize = self.serialization_methods.serialize;\n let fields = serialize(value);\n storage_write(self.storage_slot, fields);\n }\n // docs:end:public_state_struct_write\n}\n",
|
|
934
946
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/public_state.nr"
|
|
935
947
|
},
|
|
936
|
-
"
|
|
937
|
-
"source": "use crate::context::{PrivateContext, PublicContext, Context};\nuse dep::std::option::Option;\nuse dep::protocol_types::hash::pedersen_hash;\n\n// docs:start:map\nstruct Map<V> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<V> Map<V> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) ->
|
|
948
|
+
"44": {
|
|
949
|
+
"source": "use crate::context::{PrivateContext, PublicContext, Context};\nuse dep::std::option::Option;\nuse dep::protocol_types::{\n hash::pedersen_hash,\n traits::{ToField}\n};\n\n// docs:start:map\nstruct Map<K, V> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, V> Map<K, V> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map {\n context,\n storage_slot,\n state_var_constructor,\n }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = pedersen_hash([self.storage_slot, key.to_field()],0);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n",
|
|
938
950
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/map.nr"
|
|
939
951
|
},
|
|
940
|
-
"
|
|
952
|
+
"45": {
|
|
941
953
|
"source": "use dep::std::option::Option;\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n },\n hash::pedersen_hash,\n};\n\nuse crate::context::{PrivateContext, PublicContext, Context};\nuse crate::note::{\n lifecycle::{create_note, destroy_note},\n note_getter::{get_note, view_notes},\n note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::{\n get_secret_key::get_secret_key,\n notes::check_nullifier_exists,\n};\n\npub fn compute_singleton_initialization_nullifier(storage_slot: Field, owner: Option<AztecAddress>) -> Field {\n if owner.is_some() {\n let secret = get_secret_key(owner.unwrap_unchecked());\n pedersen_hash(\n [storage_slot, secret.low, secret.high],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n } else {\n pedersen_hash([storage_slot], GENERATOR_INDEX__INITIALIZATION_NULLIFIER)\n }\n}\n\n// docs:start:struct\nstruct Singleton<Note, N> {\n context: Option<&mut PrivateContext>,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n compute_initialization_nullifier: fn (Field, Option<AztecAddress>) -> Field,\n}\n// docs:end:struct\n\nimpl<Note, N> Singleton<Note, N> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Singleton {\n context: context.private,\n storage_slot,\n note_interface,\n compute_initialization_nullifier: compute_singleton_initialization_nullifier,\n }\n }\n // docs:end:new\n\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self, owner: Option<AztecAddress>) -> bool {\n let compute_initialization_nullifier = self.compute_initialization_nullifier;\n let nullifier = compute_initialization_nullifier(self.storage_slot, owner);\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // docs:start:initialize\n pub fn initialize(\n self,\n note: &mut Note,\n owner: Option<AztecAddress>,\n broadcast: bool,\n ) {\n let context = self.context.unwrap();\n\n // Nullify the storage slot.\n let compute_initialization_nullifier = self.compute_initialization_nullifier;\n let nullifier = compute_initialization_nullifier(self.storage_slot, owner);\n context.push_new_nullifier(nullifier, 0);\n\n create_note(context, self.storage_slot, note, self.note_interface, broadcast);\n }\n // docs:end:initialize\n\n // docs:start:replace\n pub fn replace(\n self,\n new_note: &mut Note,\n broadcast: bool,\n ) {\n let context = self.context.unwrap();\n let prev_note = get_note(context, self.storage_slot, self.note_interface);\n\n // Nullify previous note.\n destroy_note(context, prev_note, self.note_interface);\n\n // Add replacement note.\n create_note(context, self.storage_slot, new_note, self.note_interface, broadcast);\n }\n // docs:end:replace\n\n // docs:start:get_note\n pub fn get_note(self, broadcast: bool) -> Note {\n let context = self.context.unwrap();\n let mut note = get_note(context, self.storage_slot, self.note_interface);\n\n // Nullify current note to make sure it's reading the latest note.\n destroy_note(context, note, self.note_interface);\n\n // Add the same note again.\n // Because a nonce is added to every note in the kernel, its nullifier will be different.\n create_note(context, self.storage_slot, &mut note, self.note_interface, broadcast);\n\n note\n }\n // docs:end:get_note\n\n // docs:start:view_note\n unconstrained pub fn view_note(self) -> Note {\n let options = NoteViewerOptions::new().set_limit(1);\n view_notes(self.storage_slot, self.note_interface, options)[0].unwrap()\n }\n // docs:end:view_note\n}\n",
|
|
942
954
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/singleton.nr"
|
|
943
955
|
},
|
|
944
|
-
"
|
|
956
|
+
"51": {
|
|
945
957
|
"source": "use crate::types::type_serialization::TypeSerializationInterface;\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\n\nfn deserializeBool(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n}\n\nfn serializeBool(value: bool) -> [Field; BOOL_SERIALIZED_LEN] {\n [value as Field]\n}\n\nglobal BoolSerializationMethods = TypeSerializationInterface {\n deserialize: deserializeBool,\n serialize: serializeBool,\n};\n",
|
|
946
958
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/types/type_serialization/bool_serialization.nr"
|
|
947
959
|
},
|
|
948
|
-
"
|
|
960
|
+
"53": {
|
|
949
961
|
"source": "struct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n len: Field,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new(initial_value: T) -> Self {\n BoundedVec { storage: [initial_value; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: Field) -> T {\n assert(index as u64 < self.len as u64);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: Field) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len as u64 < MaxLen as u64);\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn push_array<Len>(&mut self, array: [T; Len]) {\n let newLen = self.len + array.len();\n assert(newLen as u64 <= MaxLen as u64);\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = newLen;\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len as u64 > 0);\n\n let elem = self.storage[self.len - 1];\n self.len -= 1;\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if (!exceeded_len) {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n\n#[test]\nfn test_vec_push_pop() {\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(0);\n assert(vec.len == 0);\n vec.push(2);\n assert(vec.len == 1);\n vec.push(4);\n assert(vec.len == 2);\n vec.push(6);\n assert(vec.len == 3);\n let x = vec.pop();\n assert(x == 6);\n assert(vec.len == 2);\n assert(vec.get(0) == 2);\n assert(vec.get(1) == 4);\n}\n\n#[test]\nfn test_vec_push_array() {\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(0);\n vec.push_array([2, 4]);\n assert(vec.len == 2);\n assert(vec.get(0) == 2);\n assert(vec.get(1) == 4);\n}\n\n#[test(should_fail)]\nfn test_vec_get_out_of_bound() {\n let mut vec: BoundedVec<Field, 2> = BoundedVec::new(0);\n vec.push_array([2, 4]);\n let _x = vec.get(2);\n}\n\n#[test(should_fail)]\nfn test_vec_get_not_declared() {\n let mut vec: BoundedVec<Field, 2> = BoundedVec::new(0);\n vec.push_array([2]);\n let _x = vec.get(1);\n}\n\n#[test(should_fail)]\nfn test_vec_get_uninitialized() {\n let mut vec: BoundedVec<Field, 2> = BoundedVec::new(0);\n let _x = vec.get(0);\n}\n\n#[test(should_fail)]\nfn test_vec_push_overflow() {\n let mut vec: BoundedVec<Field, 1> = BoundedVec::new(0);\n vec.push(1);\n vec.push(2);\n}\n\n#[test]\nfn test_vec_any() {\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(0);\n vec.push_array([2, 4, 6]);\n assert(vec.any(|v| v == 2) == true);\n assert(vec.any(|v| v == 4) == true);\n assert(vec.any(|v| v == 6) == true);\n assert(vec.any(|v| v == 3) == false);\n}\n\n#[test]\nfn test_vec_any_not_default() {\n let default_value = 1;\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(default_value);\n vec.push_array([2, 4]);\n assert(vec.any(|v| v == default_value) == false);\n}\n",
|
|
950
962
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/types/vec.nr"
|
|
951
963
|
},
|
|
952
|
-
"
|
|
953
|
-
"source": "pub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: Field) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n\n// TODO(#3470): Copied over from https://github.com/AztecProtocol/aztec-packages/blob/a07c4bd47313be6aa604a63f37857eb0136b41ba/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr#L599\n// move to a shared place?\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n
|
|
964
|
+
"65": {
|
|
965
|
+
"source": "pub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: Field) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n\n// TODO(#3470): Copied over from https://github.com/AztecProtocol/aztec-packages/blob/a07c4bd47313be6aa604a63f37857eb0136b41ba/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr#L599\n// move to a shared place?\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\nstruct Reader<N> {\n data: [Field; N],\n offset: Field,\n}\n\nimpl<N> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_array<K>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct<T, K>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, K, C>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n } \n}\n",
|
|
954
966
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/utils.nr"
|
|
955
967
|
},
|
|
956
|
-
"
|
|
957
|
-
"source": "use dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n function_data::FunctionData,\n function_selector::FunctionSelector,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_stack_item::PrivateCallStackItem,\n call_stack_item::PublicCallStackItem,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n address::{\n AztecAddress,\n EthAddress,\n },\n constants::{\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_READ_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n },\n contrakt::{\n deployment_data::ContractDeploymentData,\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n hash::hash_args,\n grumpkin_point::GrumpkinPoint,\n};\n\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n// use dep::std::collections::vec::Vec;\n\nuse crate::abi::{\n PrivateContextInputs,\n PublicContextInputs,\n};\n\n// l1 to l2 messaging\nuse crate::messaging::process_l1_to_l2_message;\n\nuse crate::types::{\n vec::BoundedVec,\n};\n\nuse crate::utils::Reader;\n\nuse crate::oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n public_call::call_public_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal,\n context::get_portal_address,\n get_block_header::get_block_header,\n};\n\nuse dep::std::option::Option;\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: Field,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n read_requests: BoundedVec<SideEffect, MAX_READ_REQUESTS_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n private_call_stack_hashes : BoundedVec<Field, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n new_l2_to_l1_msgs : BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n block_header: BlockHeader,\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec<Field>,\n // unencrypted_logs_preimages: Vec<Field>,\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs: inputs,\n // starts at 1 because all private calls have txhash nullifier as 0th nullifier\n // and therefore 0th sideeffect. increment this for each side effect in this context\n side_effect_counter: 1,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n read_requests: BoundedVec::new(SideEffect::empty()),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n block_header: inputs.block_header,\n\n private_call_stack_hashes: BoundedVec::new(0),\n public_call_stack_hashes: BoundedVec::new(0),\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.private_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.private_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_block_header(self, block_number: u32) -> BlockHeader {\n get_block_header(block_number, self)\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let encrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let encrypted_log_preimages_length = 0;\n let unencrypted_log_preimages_length = 0;\n\n let priv_circuit_pub_inputs = PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n return_values: self.return_values.storage,\n read_requests: self.read_requests.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hash: encrypted_logs_hash,\n unencrypted_logs_hash: unencrypted_logs_hash,\n encrypted_log_preimages_length: encrypted_log_preimages_length,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.block_header,\n contract_deployment_data: self.inputs.contract_deployment_data,\n chain_id: self.inputs.private_global_variables.chain_id,\n version: self.inputs.private_global_variables.version,\n };\n priv_circuit_pub_inputs\n }\n\n pub fn push_read_request(&mut self, read_request: Field) {\n let side_effect = SideEffect {\n value: read_request,\n counter: self.side_effect_counter,\n };\n self.read_requests.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter,\n };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: nullified_commitment,\n counter: self.side_effect_counter,\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, content: Field) \n // docs:end:context_message_portal\n {\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n msg_key: Field,\n content: Field,\n secret: Field\n ) \n // docs:end:context_consume_l1_to_l2_message\n {\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, self.this_address(), self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n args: [Field; ARGS_COUNT]\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n ) -> [Field; RETURN_VALUES_LENGTH] {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let fields = call_private_function_internal(\n contract_address,\n function_selector, \n args_hash,\n );\n let mut reader = Reader::new(fields);\n\n let item = PrivateCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(reader.read()),\n is_internal: reader.read() as bool,\n is_private: reader.read() as bool,\n is_constructor: reader.read() as bool,\n },\n public_inputs: PrivateCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(reader.read()),\n storage_contract_address : AztecAddress::from_field(reader.read()),\n portal_contract_address : EthAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1]\n is_delegate_call : reader.read() as bool,\n is_static_call : reader.read() as bool,\n is_contract_deployment: reader.read() as bool,\n start_side_effect_counter: reader.read(),\n },\n args_hash: reader.read(),\n return_values: reader.read_array([0; RETURN_VALUES_LENGTH]), // +1\n read_requests: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL]),\n new_commitments: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL]),\n new_nullifiers: reader.read_struct_array(SideEffectLinkedToNoteHash::deserialise, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_array([0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n end_side_effect_counter: reader.read(),\n encrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n unencrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n encrypted_log_preimages_length: reader.read(),\n unencrypted_log_preimages_length: reader.read(),\n block_header: BlockHeader{\n // Must match order in `private_circuit_public_inputs.hpp`\n note_hash_tree_root : reader.read(),\n nullifier_tree_root : reader.read(),\n contract_tree_root : reader.read(),\n l1_to_l2_message_tree_root : reader.read(),\n archive_root : reader.read(),\n public_data_tree_root: reader.read(),\n global_variables_hash: reader.read(),\n },\n contract_deployment_data: ContractDeploymentData {\n deployer_public_key: GrumpkinPoint {\n x: reader.read(), \n y: reader.read()\n },\n constructor_vk_hash : reader.read(),\n function_tree_root : reader.read(),\n contract_address_salt : reader.read(),\n portal_contract_address : EthAddress::from_field(reader.read()),\n },\n chain_id: reader.read(),\n version: reader.read(),\n },\n is_execution_request: reader.read() as bool,\n };\n\n reader.finish();\n \n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n assert(item.is_execution_request == false);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.private_call_stack_hashes.push(item.hash());\n\n item.public_inputs.return_values\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) {\n let fields = enqueue_public_function_call_internal(\n contract_address, \n function_selector, \n args_hash\n );\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(fields[0]),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(fields[1]),\n is_internal: fields[2] as bool,\n is_private: fields[3] as bool,\n is_constructor: fields[4] as bool,\n },\n public_inputs: PublicCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(fields[5]),\n storage_contract_address : AztecAddress::from_field(fields[6]),\n portal_contract_address : EthAddress::from_field(fields[7]),\n function_selector: FunctionSelector::from_field(fields[8]), // practically same as fields[1]\n is_delegate_call : fields[9] as bool,\n is_static_call : fields[10] as bool,\n is_contract_deployment: fields[11] as bool,\n start_side_effect_counter: fields[12],\n },\n args_hash: fields[13],\n return_values: [0; RETURN_VALUES_LENGTH],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs:[0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n unencrypted_logs_hash:[0; NUM_FIELDS_PER_SHA256],\n unencrypted_log_preimages_length: 0,\n block_header: BlockHeader::empty(),\n prover_address: AztecAddress::zero(),\n },\n is_execution_request: true,\n };\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n \n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.public_call_stack_hashes.push(item.hash());\n }\n}\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: Field,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n new_l2_to_l1_msgs: BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hash: BoundedVec<Field, NUM_FIELDS_PER_SHA256>,\n unencrypted_logs_preimages_length: Field,\n\n block_header: BlockHeader,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n let empty_storage_read = StorageRead::empty();\n let empty_storage_update = StorageUpdateRequest::empty();\n PublicContext {\n inputs: inputs,\n side_effect_counter: 0, // no initial nullifier in new public context. increment on every side effect\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n contract_storage_update_requests: BoundedVec::new(empty_storage_update),\n contract_storage_reads: BoundedVec::new(empty_storage_read),\n public_call_stack_hashes: BoundedVec::new(0),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n \n unencrypted_logs_hash: BoundedVec::new(0),\n unencrypted_logs_preimages_length: 0,\n\n block_header: inputs.block_header,\n prover_address: AztecAddress::zero(),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.public_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.public_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n pub fn timestamp(self) -> Field {\n self.inputs.public_global_variables.timestamp\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_log_preimages_length = 0;\n\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n return_values: self.return_values.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n unencrypted_logs_hash: unencrypted_logs_hash,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.inputs.block_header,\n prover_address: self.prover_address,\n };\n pub_circuit_pub_inputs\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter\n };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn message_portal(&mut self, content: Field) {\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n pub fn consume_l1_to_l2_message(&mut self, msg_key: Field, content: Field, secret: Field) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, this, self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n call_public_function_internal(\n contract_address, \n function_selector, \n args_hash,\n )\n }\n\n pub fn call_public_function_no_args(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) -> [Field; RETURN_VALUES_LENGTH] {\n call_public_function_internal(\n contract_address, \n function_selector, \n 0,\n )\n }\n\n}\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context {\n private: Option::some(context),\n public: Option::none()\n }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context {\n public: Option::some(context),\n private: Option::none()\n }\n }\n\n pub fn none() -> Context {\n Context {\n public: Option::none(),\n private: Option::none()\n }\n }\n}\n",
|
|
968
|
+
"67": {
|
|
969
|
+
"source": "use dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n function_data::FunctionData,\n function_selector::FunctionSelector,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_stack_item::PrivateCallStackItem,\n call_stack_item::PublicCallStackItem,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n address::{\n AztecAddress,\n EthAddress,\n },\n constants::{\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_READ_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n },\n contrakt::{\n deployment_data::ContractDeploymentData,\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n hash::hash_args,\n grumpkin_point::GrumpkinPoint,\n};\n\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n// use dep::std::collections::vec::Vec;\n\nuse crate::abi::{\n PrivateContextInputs,\n PublicContextInputs,\n};\n\n// l1 to l2 messaging\nuse crate::messaging::process_l1_to_l2_message;\n\nuse crate::types::{\n vec::BoundedVec,\n};\n\nuse crate::utils::Reader;\n\nuse crate::oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n public_call::call_public_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal,\n context::get_portal_address,\n get_block_header::get_block_header,\n};\n\nuse dep::std::option::Option;\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n read_requests: BoundedVec<SideEffect, MAX_READ_REQUESTS_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n private_call_stack_hashes : BoundedVec<Field, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n new_l2_to_l1_msgs : BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n block_header: BlockHeader,\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec<Field>,\n // unencrypted_logs_preimages: Vec<Field>,\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs: inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n read_requests: BoundedVec::new(SideEffect::empty()),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n block_header: inputs.block_header,\n\n private_call_stack_hashes: BoundedVec::new(0),\n public_call_stack_hashes: BoundedVec::new(0),\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.private_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.private_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_block_header(self, block_number: u32) -> BlockHeader {\n get_block_header(block_number, self)\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let encrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let encrypted_log_preimages_length = 0;\n let unencrypted_log_preimages_length = 0;\n\n let priv_circuit_pub_inputs = PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n return_values: self.return_values.storage,\n read_requests: self.read_requests.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hash: encrypted_logs_hash,\n unencrypted_logs_hash: unencrypted_logs_hash,\n encrypted_log_preimages_length: encrypted_log_preimages_length,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.block_header,\n contract_deployment_data: self.inputs.contract_deployment_data,\n chain_id: self.inputs.private_global_variables.chain_id,\n version: self.inputs.private_global_variables.version,\n };\n priv_circuit_pub_inputs\n }\n\n pub fn push_read_request(&mut self, read_request: Field) {\n let side_effect = SideEffect {\n value: read_request,\n counter: self.side_effect_counter,\n };\n self.read_requests.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter,\n };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: nullified_commitment,\n counter: self.side_effect_counter,\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, content: Field) \n // docs:end:context_message_portal\n {\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n msg_key: Field,\n content: Field,\n secret: Field\n ) \n // docs:end:context_consume_l1_to_l2_message\n {\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, self.this_address(), self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n args: [Field; ARGS_COUNT]\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n ) -> [Field; RETURN_VALUES_LENGTH] {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let fields = call_private_function_internal(\n contract_address,\n function_selector, \n args_hash,\n self.side_effect_counter,\n );\n let mut reader = Reader::new(fields);\n\n let item = PrivateCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(reader.read()),\n is_internal: reader.read() as bool,\n is_private: reader.read() as bool,\n is_constructor: reader.read() as bool,\n },\n public_inputs: PrivateCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(reader.read()),\n storage_contract_address : AztecAddress::from_field(reader.read()),\n portal_contract_address : EthAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1]\n is_delegate_call : reader.read() as bool,\n is_static_call : reader.read() as bool,\n is_contract_deployment: reader.read() as bool,\n start_side_effect_counter: reader.read() as u32,\n },\n args_hash: reader.read(),\n return_values: reader.read_array([0; RETURN_VALUES_LENGTH]), // +1\n read_requests: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL]),\n new_commitments: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL]),\n new_nullifiers: reader.read_struct_array(SideEffectLinkedToNoteHash::deserialise, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_array([0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n end_side_effect_counter: reader.read() as u32,\n encrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n unencrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n encrypted_log_preimages_length: reader.read(),\n unencrypted_log_preimages_length: reader.read(),\n block_header: BlockHeader{\n // Must match order in `private_circuit_public_inputs.hpp`\n note_hash_tree_root : reader.read(),\n nullifier_tree_root : reader.read(),\n contract_tree_root : reader.read(),\n l1_to_l2_message_tree_root : reader.read(),\n archive_root : reader.read(),\n public_data_tree_root: reader.read(),\n global_variables_hash: reader.read(),\n },\n contract_deployment_data: ContractDeploymentData {\n deployer_public_key: GrumpkinPoint {\n x: reader.read(), \n y: reader.read()\n },\n constructor_vk_hash : reader.read(),\n function_tree_root : reader.read(),\n contract_address_salt : reader.read(),\n portal_contract_address : EthAddress::from_field(reader.read()),\n },\n chain_id: reader.read(),\n version: reader.read(),\n },\n is_execution_request: reader.read() as bool,\n };\n\n reader.finish();\n\n assert_eq(item.public_inputs.call_context.start_side_effect_counter, self.side_effect_counter);\n self.side_effect_counter = item.public_inputs.end_side_effect_counter + 1;\n \n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n assert(item.is_execution_request == false);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.private_call_stack_hashes.push(item.hash());\n\n item.public_inputs.return_values\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) {\n let fields = enqueue_public_function_call_internal(\n contract_address, \n function_selector, \n args_hash,\n self.side_effect_counter\n );\n\n let mut reader = Reader::new(fields);\n\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(reader.read()),\n is_internal: reader.read() as bool,\n is_private: reader.read() as bool,\n is_constructor: reader.read() as bool,\n },\n public_inputs: PublicCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(reader.read()),\n storage_contract_address : AztecAddress::from_field(reader.read()),\n portal_contract_address : EthAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1]\n is_delegate_call : reader.read() as bool,\n is_static_call : reader.read() as bool,\n is_contract_deployment: reader.read() as bool,\n start_side_effect_counter: reader.read() as u32,\n },\n args_hash: reader.read(),\n return_values: [0; RETURN_VALUES_LENGTH],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs:[0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n unencrypted_logs_hash:[0; NUM_FIELDS_PER_SHA256],\n unencrypted_log_preimages_length: 0,\n block_header: BlockHeader::empty(),\n prover_address: AztecAddress::zero(),\n },\n is_execution_request: true,\n };\n reader.finish();\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert_eq(item.public_inputs.call_context.start_side_effect_counter, self.side_effect_counter);\n // We increment the sideffect counter by one, to account for the call itself being a side effect.\n self.side_effect_counter = self.side_effect_counter + 1;\n \n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.public_call_stack_hashes.push(item.hash());\n }\n}\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n new_l2_to_l1_msgs: BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hash: BoundedVec<Field, NUM_FIELDS_PER_SHA256>,\n unencrypted_logs_preimages_length: Field,\n\n block_header: BlockHeader,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n let empty_storage_read = StorageRead::empty();\n let empty_storage_update = StorageUpdateRequest::empty();\n PublicContext {\n inputs: inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n contract_storage_update_requests: BoundedVec::new(empty_storage_update),\n contract_storage_reads: BoundedVec::new(empty_storage_read),\n public_call_stack_hashes: BoundedVec::new(0),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n \n unencrypted_logs_hash: BoundedVec::new(0),\n unencrypted_logs_preimages_length: 0,\n\n block_header: inputs.block_header,\n prover_address: AztecAddress::zero(),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.public_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.public_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n pub fn timestamp(self) -> Field {\n self.inputs.public_global_variables.timestamp\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_log_preimages_length = 0;\n\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n return_values: self.return_values.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n unencrypted_logs_hash: unencrypted_logs_hash,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.inputs.block_header,\n prover_address: self.prover_address,\n };\n pub_circuit_pub_inputs\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter\n };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn message_portal(&mut self, content: Field) {\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n pub fn consume_l1_to_l2_message(&mut self, msg_key: Field, content: Field, secret: Field) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, this, self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n call_public_function_internal(\n contract_address, \n function_selector, \n args_hash,\n )\n }\n\n pub fn call_public_function_no_args(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) -> [Field; RETURN_VALUES_LENGTH] {\n call_public_function_internal(\n contract_address, \n function_selector, \n 0,\n )\n }\n\n}\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context {\n private: Option::some(context),\n public: Option::none()\n }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context {\n public: Option::some(context),\n private: Option::none()\n }\n }\n\n pub fn none() -> Context {\n Context {\n public: Option::none(),\n private: Option::none()\n }\n }\n}\n",
|
|
958
970
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/context.nr"
|
|
959
971
|
},
|
|
960
|
-
"
|
|
972
|
+
"72": {
|
|
961
973
|
"source": "use crate::abi::PublicContextInputs;\nuse crate::context::{\n PrivateContext,\n PublicContext,\n};\nuse crate::note::{\n note_header::NoteHeader,\n note_interface::NoteInterface,\n utils::compute_inner_note_hash,\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, N>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n note_interface: NoteInterface<Note, N>,\n broadcast: bool\n) {\n let contract_address = (*context).this_address();\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, is_transient: true };\n let set_header = note_interface.set_header;\n set_header(note, header);\n let inner_note_hash = compute_inner_note_hash(note_interface, *note);\n\n let serialize = note_interface.serialize;\n let serialized_note = serialize(*note);\n assert(notify_created_note(storage_slot, serialized_note, inner_note_hash) == 0);\n\n context.push_new_note_hash(inner_note_hash);\n\n if broadcast {\n let broadcast = note_interface.broadcast;\n broadcast(context, storage_slot, *note);\n }\n}\n\npub fn create_note_hash_from_public<Note, N>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note,\n note_interface: NoteInterface<Note, N>\n) {\n let contract_address = (*context).this_address();\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, is_transient: true };\n let set_header = note_interface.set_header;\n set_header(note, header);\n let inner_note_hash = compute_inner_note_hash(note_interface, *note);\n\n context.push_new_note_hash(inner_note_hash);\n}\n\npub fn destroy_note<Note, N>(\n context: &mut PrivateContext,\n note: Note,\n note_interface: NoteInterface<Note, N>\n) {\n let mut nullifier = 0;\n let mut nullified_commitment: Field = 0;\n let compute_nullifier = note_interface.compute_nullifier;\n nullifier = compute_nullifier(note);\n\n // We also need the note commitment corresponding to the \"nullifier\"\n let get_header = note_interface.get_header;\n let header = get_header(note);\n // `nullified_commitment` is used to inform the kernel which pending commitment\n // the nullifier corresponds to so they can be matched and both squashed/deleted.\n // nonzero nonce implies \"persistable\" nullifier (nullifies a persistent/in-tree\n // commitment) in which case `nullified_commitment` is not used since the kernel\n // just siloes and forwards the nullifier to its output.\n if (header.is_transient) {\n // TODO(1718): Can we reuse the note commitment computed in `compute_nullifier`?\n nullified_commitment = compute_inner_note_hash(note_interface, note);\n }\n assert(notify_nullified_note(nullifier, nullified_commitment) == 0);\n\n context.push_new_nullifier(nullifier, nullified_commitment)\n}\n",
|
|
962
974
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/note/lifecycle.nr"
|
|
963
975
|
},
|
|
964
|
-
"
|
|
976
|
+
"73": {
|
|
965
977
|
"source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__OUTER_NULLIFIER,\n hash::pedersen_hash,\n};\nuse crate::{\n note::{\n note_hash::{compute_inner_hash, compute_siloed_hash, compute_unique_hash},\n note_header::NoteHeader,\n note_interface::NoteInterface,\n },\n utils::arr_copy_slice,\n};\n\npub fn compute_inner_note_hash<Note, N>(note_interface: NoteInterface<Note, N>, note: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note);\n\n let compute_note_hash = note_interface.compute_note_hash;\n let note_hash = compute_note_hash(note);\n\n compute_inner_hash(header.storage_slot, note_hash)\n}\n\npub fn compute_siloed_note_hash<Note, N>(note_interface: NoteInterface<Note, N>, note_with_header: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note_with_header);\n\n let inner_note_hash = compute_inner_note_hash(note_interface, note_with_header);\n\n compute_siloed_hash(header.contract_address, inner_note_hash)\n}\n\npub fn compute_unique_siloed_note_hash<Note, N>(note_interface: NoteInterface<Note, N>, note_with_header: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note_with_header);\n\n let siloed_note_hash = compute_siloed_note_hash(note_interface, note_with_header);\n\n compute_unique_hash(header.nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_nullifier<Note, N>(note_interface: NoteInterface<Note, N>, note_with_header: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note_with_header);\n\n let compute_nullifier = note_interface.compute_nullifier;\n let inner_nullifier = compute_nullifier(note_with_header);\n\n let input = [header.contract_address.to_field(), inner_nullifier];\n pedersen_hash(input, GENERATOR_INDEX__OUTER_NULLIFIER)\n}\n\npub fn compute_note_hash_for_read_or_nullify<Note, N>(note_interface: NoteInterface<Note, N>, note_with_header: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note_with_header);\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)\n if (header.is_transient) {\n // If a note is transient, we just read the inner_note_hash (kernel will silo by contract address).\n compute_inner_note_hash(note_interface, note_with_header)\n } else if (header.nonce == 0) {\n // If not transient and nonce is zero, that means we are reading a public note.\n compute_siloed_note_hash(note_interface, note_with_header)\n } else {\n // When nonce is nonzero, that means we are reading a settled note (from tree) created in a\n // previous TX. So we need the unique_siloed_note_hash which has already been hashed with\n // contract address and then nonce. This hash will match the existing leaf in the private\n // data tree, so the kernel can just perform a membership check directly on this hash/leaf.\n compute_unique_siloed_note_hash(note_interface, note_with_header)\n }\n}\n\npub fn compute_note_hash_and_nullifier<Note, N, S>(\n note_interface: NoteInterface<Note, N>,\n note_header: NoteHeader,\n serialized_note: [Field; S]\n) -> [Field; 4] {\n let deserialize = note_interface.deserialize;\n let set_header = note_interface.set_header;\n let mut note = deserialize(arr_copy_slice(serialized_note, [0; N], 0));\n set_header(&mut note, note_header);\n\n let compute_note_hash = note_interface.compute_note_hash;\n let note_hash = compute_note_hash(note);\n let inner_note_hash = compute_inner_hash(note_header.storage_slot, note_hash);\n\n let siloed_note_hash = compute_siloed_hash(note_header.contract_address, inner_note_hash);\n\n let unique_siloed_note_hash = compute_unique_hash(note_header.nonce, siloed_note_hash);\n\n let compute_nullifier = note_interface.compute_nullifier;\n let inner_nullifier = compute_nullifier(note);\n\n [inner_note_hash, siloed_note_hash, unique_siloed_note_hash, inner_nullifier]\n}\n",
|
|
966
978
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/note/utils.nr"
|
|
967
979
|
},
|
|
968
|
-
"
|
|
980
|
+
"75": {
|
|
969
981
|
"source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__UNIQUE_COMMITMENT,\n GENERATOR_INDEX__SILOED_COMMITMENT,\n },\n hash::pedersen_hash,\n};\n\npub fn compute_inner_hash(storage_slot: Field, note_hash: Field) -> Field {\n // TODO(#1205) Do we need a generator index here?\n pedersen_hash([storage_slot, note_hash], 0)\n}\n\npub fn compute_siloed_hash(contract_address: AztecAddress, inner_note_hash: Field) -> Field {\n let inputs = [contract_address.to_field(), inner_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__SILOED_COMMITMENT)\n}\n\npub fn compute_unique_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [nonce, siloed_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__UNIQUE_COMMITMENT)\n}\n",
|
|
970
982
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/note/note_hash.nr"
|
|
971
983
|
},
|
|
972
|
-
"
|
|
984
|
+
"78": {
|
|
973
985
|
"source": "use dep::std::option::Option;\nuse dep::protocol_types::constants::{\n MAX_READ_REQUESTS_PER_CALL,\n GET_NOTE_ORACLE_RETURN_LENGTH,\n GET_NOTES_ORACLE_RETURN_LENGTH,\n MAX_NOTES_PER_PAGE,\n VIEW_NOTE_ORACLE_RETURN_LENGTH,\n};\nuse crate::context::PrivateContext;\nuse crate::note::{\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder},\n note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_or_nullify,\n};\nuse crate::oracle;\nuse crate::types::vec::BoundedVec;\n\nfn check_note_header<Note, N>(\n context: PrivateContext,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n note: Note\n) {\n let get_header = note_interface.get_header;\n let header = get_header(note);\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address));\n assert(header.storage_slot == storage_slot);\n}\n\nfn check_note_fields<N>(fields: [Field; N], selects: BoundedVec<Option<Select>, N>) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n assert(fields[select.field_index] == select.value, \"Mismatch return note field.\");\n }\n}\n\nfn check_notes_order<N>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let eq = fields_0[sort.field_index] == fields_1[sort.field_index];\n let lt = fields_0[sort.field_index] as u120 < fields_1[sort.field_index] as u120;\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, N>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>\n) -> Note {\n let note = get_note_internal(storage_slot, note_interface);\n\n check_note_header(*context, storage_slot, note_interface, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_or_nullify(note_interface, note);\n\n context.push_read_request(note_hash_for_read_request);\n note\n}\n\npub fn get_notes<Note, N, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n options: NoteGetterOptions<Note, N, FILTER_ARGS>\n) -> [Option<Note>; MAX_READ_REQUESTS_PER_CALL] {\n let opt_notes = get_notes_internal(storage_slot, note_interface, options);\n let mut num_notes = 0;\n let mut prev_fields = [0; N];\n for i in 0..opt_notes.len() {\n let opt_note = opt_notes[i];\n if opt_note.is_some() {\n let note = opt_note.unwrap_unchecked();\n let serialize = note_interface.serialize;\n let fields = serialize(note);\n check_note_header(*context, storage_slot, note_interface, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_or_nullify(note_interface, note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_read_request(note_hash_for_read_request);\n\n num_notes += 1;\n };\n }\n if options.limit != 0 {\n assert(num_notes <= options.limit, \"Invalid number of return notes.\");\n }\n opt_notes\n}\n\nunconstrained fn get_note_internal<Note, N>(storage_slot: Field, note_interface: NoteInterface<Note, N>) -> Note {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n oracle::notes::get_notes(\n storage_slot,\n note_interface,\n 0,\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n placeholder_note,\n placeholder_fields\n )[0].unwrap() // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, N, FILTER_ARGS>(\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n options: NoteGetterOptions<Note, N, FILTER_ARGS>\n) -> [Option<Note>; MAX_READ_REQUESTS_PER_CALL] {\n let (num_selects, select_by, select_values, sort_by, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n note_interface,\n num_selects,\n select_by,\n select_values,\n sort_by,\n sort_order,\n options.limit,\n options.offset,\n placeholder_opt_notes,\n placeholder_fields\n );\n\n let filter = options.filter;\n let filter_args = options.filter_args;\n filter(opt_notes, filter_args)\n}\n\nunconstrained pub fn view_notes<Note, N>(\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n options: NoteViewerOptions<Note, N>\n) -> [Option<Note>; MAX_NOTES_PER_PAGE] {\n let (num_selects, select_by, select_values, sort_by, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n oracle::notes::get_notes(\n storage_slot,\n note_interface,\n num_selects,\n select_by,\n select_values,\n sort_by,\n sort_order,\n options.limit,\n options.offset,\n placeholder_opt_notes,\n placeholder_fields\n )\n}\n\nunconstrained fn flatten_options<Note, N>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>\n) -> (u8, [u8; N], [Field; N], [u8; N], [u2; N]) {\n let mut num_selects = 0;\n let mut select_by = [0; N];\n let mut select_values = [0; N];\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by[num_selects] = select.unwrap_unchecked().field_index;\n select_values[num_selects] = select.unwrap_unchecked().value;\n num_selects += 1;\n };\n }\n\n let mut sort_by = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by[i] = sort.unwrap_unchecked().field_index;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (num_selects, select_by, select_values, sort_by, sort_order)\n}\n",
|
|
974
986
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/note/note_getter.nr"
|
|
975
987
|
},
|
|
976
|
-
"
|
|
988
|
+
"80": {
|
|
977
989
|
"source": "use dep::std::option::Option;\nuse crate::note::{\n note_header::NoteHeader,\n note_interface::NoteInterface,\n};\nuse crate::utils::arr_copy_slice;\n\nuse dep::protocol_types::address::AztecAddress;\n\n#[oracle(notifyCreatedNote)]\nfn notify_created_note_oracle<N>(_storage_slot: Field, _serialized_note: [Field; N], _inner_note_hash: Field) -> Field {}\n\nunconstrained pub fn notify_created_note<N>(storage_slot: Field, serialized_note: [Field; N], inner_note_hash: Field) -> Field {\n notify_created_note_oracle(storage_slot, serialized_note, inner_note_hash)\n}\n\n#[oracle(notifyNullifiedNote)]\nfn notify_nullified_note_oracle<N>(_nullifier: Field, _inner_note_hash: Field) -> Field {}\n\nunconstrained pub fn notify_nullified_note<N>(nullifier: Field, inner_note_hash: Field) -> Field {\n notify_nullified_note_oracle(nullifier, inner_note_hash)\n}\n\n#[oracle(getNotes)]\nfn get_notes_oracle<N, S>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by: [u8; N],\n _select_values: [Field; N],\n _sort_by: [u8; N],\n _sort_order: [u2; N],\n _limit: u32,\n _offset: u32,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<N, S>(\n storage_slot: Field,\n num_selects: u8,\n select_by: [u8; N],\n select_values: [Field; N],\n sort_by: [u8; N],\n sort_order: [u2; N],\n limit: u32,\n offset: u32,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by,\n select_values,\n sort_by,\n sort_order,\n limit,\n offset,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes<Note, N, M, S, NS>(\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n num_selects: u8,\n select_by: [u8; M],\n select_values: [Field; M],\n sort_by: [u8; M],\n sort_order: [u2; M],\n limit: u32,\n offset: u32,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS] // TODO: Remove it and use `limit` to initialize the note array.\n) -> [Option<Note>; S] {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by,\n select_values,\n sort_by,\n sort_order,\n limit,\n offset,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n let deserialize = note_interface.deserialize;\n let set_header = note_interface.set_header;\n for i in 0..placeholder_opt_notes.len() {\n if i as u32 < num_notes {\n // lengths named as per typescript.\n let return_header_length: Field = 2; // num_notes & contract_address.\n let extra_preimage_length: Field = 2; // nonce & is_transient.\n let read_offset: Field = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let is_transient = fields[read_offset + 1] as bool;\n let header = NoteHeader { contract_address, nonce, storage_slot, is_transient };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = deserialize(serialized_note);\n set_header(&mut note, header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n#[oracle(checkNullifierExists)]\nfn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n",
|
|
978
990
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/notes.nr"
|
|
979
991
|
},
|
|
980
|
-
"
|
|
981
|
-
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n};\n\n// contract_address + \n// args_hash +\n// crate::abi::FUNCTION_DATA_SIZE +\n// crate::abi::CALL_CONTEXT_SIZE
|
|
992
|
+
"81": {
|
|
993
|
+
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n};\n\n// contract_address + \n// args_hash +\n// crate::abi::FUNCTION_DATA_SIZE +\n// crate::abi::CALL_CONTEXT_SIZE\n// = 2 + 4 + 8\nglobal ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE: Field = 14;\n\n#[oracle(enqueuePublicFunctionCall)]\nfn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE] {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE] {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter\n )\n}\n",
|
|
982
994
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr"
|
|
983
995
|
},
|
|
984
|
-
"
|
|
985
|
-
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n constants::CALL_PRIVATE_FUNCTION_RETURN_SIZE,\n};\n\n#[oracle(callPrivateFunction)]\nfn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field\n) -> [Field; CALL_PRIVATE_FUNCTION_RETURN_SIZE] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n) -> [Field; CALL_PRIVATE_FUNCTION_RETURN_SIZE] {\n call_private_function_oracle(contract_address
|
|
996
|
+
"86": {
|
|
997
|
+
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n constants::CALL_PRIVATE_FUNCTION_RETURN_SIZE,\n};\n\n#[oracle(callPrivateFunction)]\nfn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32\n) -> [Field; CALL_PRIVATE_FUNCTION_RETURN_SIZE] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32\n) -> [Field; CALL_PRIVATE_FUNCTION_RETURN_SIZE] {\n call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter\n )\n}\n",
|
|
986
998
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/call_private_function.nr"
|
|
987
999
|
},
|
|
988
|
-
"
|
|
1000
|
+
"93": {
|
|
989
1001
|
"source": "#[oracle(storageRead)]\nfn storage_read_oracle<N>(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper<N>(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read<T, N>(storage_slot: Field, deserialize: fn([Field; N]) -> T) -> T {\n let fields = storage_read_oracle_wrapper(storage_slot);\n deserialize(fields)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle<N>(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\n// TODO: Remove return value.\nunconstrained pub fn storage_write<N>(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n",
|
|
990
1002
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/storage.nr"
|
|
991
1003
|
},
|
|
992
|
-
"
|
|
1004
|
+
"95": {
|
|
993
1005
|
"source": "use dep::protocol_types::{\n address::{\n AztecAddress,\n PartialAddress,\n },\n grumpkin_point::GrumpkinPoint,\n};\n\n#[oracle(getPublicKeyAndPartialAddress)]\nfn get_public_key_and_partial_address_oracle(_address: AztecAddress) -> [Field; 3] {}\n\nunconstrained fn get_public_key_and_partial_address_internal(address: AztecAddress) -> [Field; 3] {\n get_public_key_and_partial_address_oracle(address)\n}\n\npub fn get_public_key(address: AztecAddress) -> GrumpkinPoint {\n let result = get_public_key_and_partial_address_internal(address);\n let pub_key = GrumpkinPoint::new(result[0], result[1]);\n let partial_address = PartialAddress::from_field(result[2]);\n\n let calculated_address = AztecAddress::compute(pub_key, partial_address);\n assert(calculated_address.eq(address));\n\n pub_key\n}\n",
|
|
994
1006
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/get_public_key.nr"
|
|
995
1007
|
},
|
|
996
|
-
"
|
|
1008
|
+
"97": {
|
|
997
1009
|
"source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::NUM_FIELDS_PER_SHA256,\n grumpkin_point::GrumpkinPoint,\n};\n\n// TODO: Should take encrypted data.\n#[oracle(emitEncryptedLog)]\nfn emit_encrypted_log_oracle<N>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _encryption_pub_key: GrumpkinPoint,\n _preimage: [Field; N]\n) -> Field {}\n\nunconstrained pub fn emit_encrypted_log<N>(\n contract_address: AztecAddress,\n storage_slot: Field,\n encryption_pub_key: GrumpkinPoint,\n preimage: [Field; N]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n [emit_encrypted_log_oracle(contract_address, storage_slot, encryption_pub_key, preimage), 0]\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle<T>(_contract_address: AztecAddress, _event_selector: Field, _message: T) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log<T>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n // https://github.com/AztecProtocol/aztec-packages/issues/885\n [emit_unencrypted_log_oracle(contract_address, event_selector, message), 0]\n}\n",
|
|
998
1010
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/logs.nr"
|
|
999
1011
|
},
|
|
1000
|
-
"
|
|
1012
|
+
"98": {
|
|
1001
1013
|
"source": "use crate::oracle::get_public_key::get_public_key;\nuse dep::protocol_types::{\n address::AztecAddress,\n grumpkin_point::GrumpkinPoint,\n};\n\n#[oracle(getSecretKey)]\nfn get_secret_key_oracle(_owner: GrumpkinPoint) -> [Field; dep::std::grumpkin_scalar::GRUMPKIN_SCALAR_SERIALIZED_LEN] {}\n\nunconstrained fn get_secret_key_internal(owner_public_key: GrumpkinPoint) -> dep::std::grumpkin_scalar::GrumpkinScalar {\n dep::std::grumpkin_scalar::deserialize_grumpkin_scalar(get_secret_key_oracle(owner_public_key))\n}\n\npub fn get_secret_key(owner: AztecAddress) -> dep::std::grumpkin_scalar::GrumpkinScalar {\n let owner_public_key = get_public_key(owner);\n let secret = get_secret_key_internal(owner_public_key);\n\n // Constrain the owner - Nullifier secret key is currently just the encryption private key so we can constrain\n // the owner by deriving the public key from the secret key and checking the result.\n let computed_public_key = dep::std::grumpkin_scalar_mul::grumpkin_fixed_base(secret);\n assert(owner_public_key.x == computed_public_key[0]);\n assert(owner_public_key.y == computed_public_key[1]);\n\n secret\n}\n",
|
|
1002
1014
|
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/get_secret_key.nr"
|
|
1003
1015
|
},
|
|
1004
|
-
"
|
|
1005
|
-
"source": "global ARGS_LENGTH: Field = 16;\nglobal RETURN_VALUES_LENGTH: Field = 4;\n\n/**\n * Convention for constant array lengths are mainly divided in 2 classes:\n * - FUNCTION CALL\n * - TRANSACTION\n *\n * Agreed convention is to use MAX_XXX_PER_CALL resp. MAX_XXX_PER_TX, where XXX denotes a type of element such as\n * commitment, or nullifier, e.g.,:\n * - MAX_NEW_NULLIFIERS_PER_CALL\n * - MAX_NEW_COMMITMENTS_PER_TX\n *\n * In the kernel circuits, we accumulate elements such as commitments and the nullifiers from all functions calls in a\n * transaction. Therefore, we always must have:\n * MAX_XXX_PER_TX ≥ MAX_XXX_PER_CALL\n *\n * For instance:\n * MAX_NEW_COMMITMENTS_PER_TX ≥ MAX_NEW_COMMITMENTS_PER_CALL\n * MAX_NEW_NULLIFIERS_PER_TX ≥ MAX_NEW_NULLIFIERS_PER_CALL\n *\n */\n\n// docs:start:constants\n// \"PER CALL\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_CALL: Field = 16;\nglobal MAX_NEW_NULLIFIERS_PER_CALL: Field = 16;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_CALL: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_CALL: Field = 16;\nglobal MAX_READ_REQUESTS_PER_CALL: Field = 32;\n\n// \"PER TRANSACTION\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_TX: Field = 64;\nglobal MAX_NEW_NULLIFIERS_PER_TX: Field = 64;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_TX: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_TX: Field = 16;\nglobal MAX_NEW_CONTRACTS_PER_TX: Field = 1;\nglobal MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX: Field = 4;\nglobal MAX_READ_REQUESTS_PER_TX: Field = 128;\nglobal NUM_ENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\nglobal NUM_UNENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\n// docs:end:constants\n\n// ROLLUP CONTRACT CONSTANTS - constants used only in l1-contracts\nglobal NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP: Field = 16;\n\n// TREES RELATED CONSTANTS\nglobal VK_TREE_HEIGHT: Field = 3;\nglobal FUNCTION_TREE_HEIGHT: Field = 5;\nglobal CONTRACT_TREE_HEIGHT: Field = 16;\nglobal NOTE_HASH_TREE_HEIGHT: Field = 32;\nglobal PUBLIC_DATA_TREE_HEIGHT: Field = 40;\nglobal NULLIFIER_TREE_HEIGHT: Field = 20;\nglobal L1_TO_L2_MSG_TREE_HEIGHT: Field = 16;\nglobal ROLLUP_VK_TREE_HEIGHT: Field = 8;\n\n// SUB-TREES RELATED CONSTANTS\nglobal CONTRACT_SUBTREE_HEIGHT: Field = 0;\nglobal CONTRACT_SUBTREE_SIBLING_PATH_LENGTH: Field = 16;\nglobal NOTE_HASH_SUBTREE_HEIGHT: Field = 6;\nglobal NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH: Field = 26;\nglobal NULLIFIER_SUBTREE_HEIGHT: Field = 6;\nglobal PUBLIC_DATA_SUBTREE_HEIGHT: Field = 4;\nglobal ARCHIVE_HEIGHT: Field = 16;\nglobal NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH: Field = 14;\nglobal PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH: Field = 36;\nglobal L1_TO_L2_MSG_SUBTREE_HEIGHT: Field = 4;\nglobal L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH: Field = 12;\n\n// MISC CONSTANTS\nglobal FUNCTION_SELECTOR_NUM_BYTES: Field = 4;\nglobal MAPPING_SLOT_PEDERSEN_SEPARATOR: Field = 4;\nglobal NUM_FIELDS_PER_SHA256: Field = 2;\nglobal ARGS_HASH_CHUNK_LENGTH: u32 = 32;\nglobal ARGS_HASH_CHUNK_COUNT: u32 = 16;\n\n// NOIR CONSTANTS - constants used only in yarn-packages/noir-contracts\n// Some are defined here because Noir doesn't yet support globals referencing other globals yet.\n// Move these constants to a noir file once the issue bellow is resolved:\n// https://github.com/noir-lang/noir/issues/1734\nglobal L1_TO_L2_MESSAGE_LENGTH: Field = 8;\nglobal L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH: Field = 26;\nglobal MAX_NOTE_FIELDS_LENGTH: Field = 20;\n// GET_NOTE_ORACLE_RETURN_LENGT = MAX_NOTE_FIELDS_LENGTH + 1 + 2\n// The plus 1 is 1 extra field for nonce.\n// + 2 for EXTRA_DATA: [number_of_return_notes, contract_address]\nglobal GET_NOTE_ORACLE_RETURN_LENGTH: Field = 23;\nglobal MAX_NOTES_PER_PAGE: Field = 10;\n// VIEW_NOTE_ORACLE_RETURN_LENGTH = MAX_NOTES_PER_PAGE * (MAX_NOTE_FIELDS_LENGTH + 1) + 2;\nglobal VIEW_NOTE_ORACLE_RETURN_LENGTH: Field = 212;\nglobal CALL_CONTEXT_LENGTH: Field = 8;\nglobal BLOCK_HEADER_LENGTH: Field = 7;\nglobal FUNCTION_DATA_LENGTH: Field = 4;\nglobal CONTRACT_DEPLOYMENT_DATA_LENGTH: Field = 6;\n// Change this ONLY if you have changed the PrivateCircuitPublicInputs structure.\n// In other words, if the structure/size of the public inputs of a function call changes then we\n// should change this constant as well as the offsets in private_call_stack_item.nr\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 189;\nglobal CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: Field = 3;\nglobal CONTRACT_STORAGE_READ_LENGTH: Field = 2;\n// Change this ONLY if you have changed the PublicCircuitPublicInputs structure.\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 190;\nglobal GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674;\nglobal CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 195;\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 87;\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 177;\nglobal COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP: Field = 1024;\nglobal CONTRACTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 32;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP_UNPADDED: Field = 52;\nglobal L2_TO_L1_MSGS_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\n\n/**\n * Enumerate the hash_indices which are used for pedersen hashing.\n * We start from 1 to avoid the default generators. The generator indices are listed\n * based on the number of elements each index hashes. The following conditions must be met:\n *\n * +-----------+-------------------------------+----------------------+\n * | Hash size | Number of elements hashed (n) | Condition to use |\n * |-----------+-------------------------------+----------------------|\n * | LOW | n ≤ 8 | 0 < hash_index ≤ 32 |\n * | MID | 8 < n ≤ 16 | 32 < hash_index ≤ 40 |\n * | HIGH | 16 < n ≤ 48 | 40 < hash_index ≤ 48 |\n * +-----------+-------------------------------+----------------------+\n *\n * Note: When modifying, modify `GeneratorIndexPacker` in packer.hpp accordingly.\n */\n// Indices with size ≤ 8\nglobal GENERATOR_INDEX__COMMITMENT = 1;\nglobal GENERATOR_INDEX__COMMITMENT_NONCE = 2;\nglobal GENERATOR_INDEX__UNIQUE_COMMITMENT = 3;\nglobal GENERATOR_INDEX__SILOED_COMMITMENT = 4;\nglobal GENERATOR_INDEX__NULLIFIER = 5;\nglobal GENERATOR_INDEX__INITIALIZATION_NULLIFIER = 6;\nglobal GENERATOR_INDEX__OUTER_NULLIFIER = 7;\nglobal GENERATOR_INDEX__PUBLIC_DATA_READ = 8;\nglobal GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST = 9;\nglobal GENERATOR_INDEX__FUNCTION_DATA = 10;\nglobal GENERATOR_INDEX__FUNCTION_LEAF = 11;\nglobal GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA = 12;\nglobal GENERATOR_INDEX__CONSTRUCTOR = 13;\nglobal GENERATOR_INDEX__CONSTRUCTOR_ARGS = 14;\nglobal GENERATOR_INDEX__CONTRACT_ADDRESS = 15;\nglobal GENERATOR_INDEX__CONTRACT_LEAF = 16;\nglobal GENERATOR_INDEX__CALL_CONTEXT = 17;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM = 18;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM_2 = 19;\nglobal GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET = 20;\nglobal GENERATOR_INDEX__L2_TO_L1_MSG = 21;\nglobal GENERATOR_INDEX__TX_CONTEXT = 22;\nglobal GENERATOR_INDEX__PUBLIC_LEAF_INDEX = 23;\nglobal GENERATOR_INDEX__PUBLIC_DATA_LEAF = 24;\nglobal GENERATOR_INDEX__SIGNED_TX_REQUEST = 25;\nglobal GENERATOR_INDEX__GLOBAL_VARIABLES = 26;\nglobal GENERATOR_INDEX__PARTIAL_ADDRESS = 27;\nglobal GENERATOR_INDEX__BLOCK_HASH = 28;\nglobal GENERATOR_INDEX__SIDE_EFFECT = 29;\n// Indices with size ≤ 16\nglobal GENERATOR_INDEX__TX_REQUEST = 33;\nglobal GENERATOR_INDEX__SIGNATURE_PAYLOAD = 34;\n// Indices with size ≤ 44\nglobal GENERATOR_INDEX__VK = 41;\nglobal GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS = 42;\nglobal GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS = 43;\nglobal GENERATOR_INDEX__FUNCTION_ARGS = 44;\n",
|
|
1016
|
+
"99": {
|
|
1017
|
+
"source": "global ARGS_LENGTH: Field = 16;\nglobal RETURN_VALUES_LENGTH: Field = 4;\n\n/**\n * Convention for constant array lengths are mainly divided in 2 classes:\n * - FUNCTION CALL\n * - TRANSACTION\n *\n * Agreed convention is to use MAX_XXX_PER_CALL resp. MAX_XXX_PER_TX, where XXX denotes a type of element such as\n * commitment, or nullifier, e.g.,:\n * - MAX_NEW_NULLIFIERS_PER_CALL\n * - MAX_NEW_COMMITMENTS_PER_TX\n *\n * In the kernel circuits, we accumulate elements such as commitments and the nullifiers from all functions calls in a\n * transaction. Therefore, we always must have:\n * MAX_XXX_PER_TX ≥ MAX_XXX_PER_CALL\n *\n * For instance:\n * MAX_NEW_COMMITMENTS_PER_TX ≥ MAX_NEW_COMMITMENTS_PER_CALL\n * MAX_NEW_NULLIFIERS_PER_TX ≥ MAX_NEW_NULLIFIERS_PER_CALL\n *\n */\n\n// docs:start:constants\n// \"PER CALL\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_CALL: Field = 16;\nglobal MAX_NEW_NULLIFIERS_PER_CALL: Field = 16;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_CALL: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_CALL: Field = 16;\nglobal MAX_READ_REQUESTS_PER_CALL: Field = 32;\n\n// \"PER TRANSACTION\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_TX: Field = 64;\nglobal MAX_NEW_NULLIFIERS_PER_TX: Field = 64;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_TX: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_TX: Field = 16;\nglobal MAX_NEW_CONTRACTS_PER_TX: Field = 1;\nglobal MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX: Field = 4;\nglobal MAX_READ_REQUESTS_PER_TX: Field = 128;\nglobal NUM_ENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\nglobal NUM_UNENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\n// docs:end:constants\n\n// ROLLUP CONTRACT CONSTANTS - constants used only in l1-contracts\nglobal NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP: Field = 16;\n\n// TREES RELATED CONSTANTS\nglobal VK_TREE_HEIGHT: Field = 3;\nglobal FUNCTION_TREE_HEIGHT: Field = 5;\nglobal CONTRACT_TREE_HEIGHT: Field = 16;\nglobal NOTE_HASH_TREE_HEIGHT: Field = 32;\nglobal PUBLIC_DATA_TREE_HEIGHT: Field = 40;\nglobal NULLIFIER_TREE_HEIGHT: Field = 20;\nglobal L1_TO_L2_MSG_TREE_HEIGHT: Field = 16;\nglobal ROLLUP_VK_TREE_HEIGHT: Field = 8;\n\n// SUB-TREES RELATED CONSTANTS\nglobal CONTRACT_SUBTREE_HEIGHT: Field = 0;\nglobal CONTRACT_SUBTREE_SIBLING_PATH_LENGTH: Field = 16;\nglobal NOTE_HASH_SUBTREE_HEIGHT: Field = 6;\nglobal NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH: Field = 26;\nglobal NULLIFIER_SUBTREE_HEIGHT: Field = 6;\nglobal PUBLIC_DATA_SUBTREE_HEIGHT: Field = 4;\nglobal ARCHIVE_HEIGHT: Field = 16;\nglobal NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH: Field = 14;\nglobal PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH: Field = 36;\nglobal L1_TO_L2_MSG_SUBTREE_HEIGHT: Field = 4;\nglobal L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH: Field = 12;\n\n// MISC CONSTANTS\nglobal FUNCTION_SELECTOR_NUM_BYTES: Field = 4;\nglobal MAPPING_SLOT_PEDERSEN_SEPARATOR: Field = 4;\n// sha256 hash is stored in two fields to accommodate all 256-bits of the hash\nglobal NUM_FIELDS_PER_SHA256: Field = 2;\nglobal ARGS_HASH_CHUNK_LENGTH: u32 = 32;\nglobal ARGS_HASH_CHUNK_COUNT: u32 = 16;\n\n// NOIR CONSTANTS - constants used only in yarn-packages/noir-contracts\n// Some are defined here because Noir doesn't yet support globals referencing other globals yet.\n// Move these constants to a noir file once the issue bellow is resolved:\n// https://github.com/noir-lang/noir/issues/1734\nglobal L1_TO_L2_MESSAGE_LENGTH: Field = 8;\nglobal L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH: Field = 26;\nglobal MAX_NOTE_FIELDS_LENGTH: Field = 20;\n// GET_NOTE_ORACLE_RETURN_LENGT = MAX_NOTE_FIELDS_LENGTH + 1 + 2\n// The plus 1 is 1 extra field for nonce.\n// + 2 for EXTRA_DATA: [number_of_return_notes, contract_address]\nglobal GET_NOTE_ORACLE_RETURN_LENGTH: Field = 23;\nglobal MAX_NOTES_PER_PAGE: Field = 10;\n// VIEW_NOTE_ORACLE_RETURN_LENGTH = MAX_NOTES_PER_PAGE * (MAX_NOTE_FIELDS_LENGTH + 1) + 2;\nglobal VIEW_NOTE_ORACLE_RETURN_LENGTH: Field = 212;\nglobal CALL_CONTEXT_LENGTH: Field = 8;\nglobal BLOCK_HEADER_LENGTH: Field = 7;\nglobal FUNCTION_DATA_LENGTH: Field = 4;\nglobal CONTRACT_DEPLOYMENT_DATA_LENGTH: Field = 6;\n// Change this ONLY if you have changed the PrivateCircuitPublicInputs structure.\n// In other words, if the structure/size of the public inputs of a function call changes then we\n// should change this constant as well as the offsets in private_call_stack_item.nr\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 189;\nglobal CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: Field = 3;\nglobal CONTRACT_STORAGE_READ_LENGTH: Field = 2;\n// Change this ONLY if you have changed the PublicCircuitPublicInputs structure.\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 190;\nglobal GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674;\nglobal CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 195;\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 87;\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 177;\nglobal COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP: Field = 1024;\nglobal CONTRACTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 32;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP_UNPADDED: Field = 52;\nglobal L2_TO_L1_MSGS_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\n\n/**\n * Enumerate the hash_indices which are used for pedersen hashing.\n * We start from 1 to avoid the default generators. The generator indices are listed\n * based on the number of elements each index hashes. The following conditions must be met:\n *\n * +-----------+-------------------------------+----------------------+\n * | Hash size | Number of elements hashed (n) | Condition to use |\n * |-----------+-------------------------------+----------------------|\n * | LOW | n ≤ 8 | 0 < hash_index ≤ 32 |\n * | MID | 8 < n ≤ 16 | 32 < hash_index ≤ 40 |\n * | HIGH | 16 < n ≤ 48 | 40 < hash_index ≤ 48 |\n * +-----------+-------------------------------+----------------------+\n *\n * Note: When modifying, modify `GeneratorIndexPacker` in packer.hpp accordingly.\n */\n// Indices with size ≤ 8\nglobal GENERATOR_INDEX__COMMITMENT = 1;\nglobal GENERATOR_INDEX__COMMITMENT_NONCE = 2;\nglobal GENERATOR_INDEX__UNIQUE_COMMITMENT = 3;\nglobal GENERATOR_INDEX__SILOED_COMMITMENT = 4;\nglobal GENERATOR_INDEX__NULLIFIER = 5;\nglobal GENERATOR_INDEX__INITIALIZATION_NULLIFIER = 6;\nglobal GENERATOR_INDEX__OUTER_NULLIFIER = 7;\nglobal GENERATOR_INDEX__PUBLIC_DATA_READ = 8;\nglobal GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST = 9;\nglobal GENERATOR_INDEX__FUNCTION_DATA = 10;\nglobal GENERATOR_INDEX__FUNCTION_LEAF = 11;\nglobal GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA = 12;\nglobal GENERATOR_INDEX__CONSTRUCTOR = 13;\nglobal GENERATOR_INDEX__CONSTRUCTOR_ARGS = 14;\nglobal GENERATOR_INDEX__CONTRACT_ADDRESS = 15;\nglobal GENERATOR_INDEX__CONTRACT_LEAF = 16;\nglobal GENERATOR_INDEX__CALL_CONTEXT = 17;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM = 18;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM_2 = 19;\nglobal GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET = 20;\nglobal GENERATOR_INDEX__L2_TO_L1_MSG = 21;\nglobal GENERATOR_INDEX__TX_CONTEXT = 22;\nglobal GENERATOR_INDEX__PUBLIC_LEAF_INDEX = 23;\nglobal GENERATOR_INDEX__PUBLIC_DATA_LEAF = 24;\nglobal GENERATOR_INDEX__SIGNED_TX_REQUEST = 25;\nglobal GENERATOR_INDEX__GLOBAL_VARIABLES = 26;\nglobal GENERATOR_INDEX__PARTIAL_ADDRESS = 27;\nglobal GENERATOR_INDEX__BLOCK_HASH = 28;\nglobal GENERATOR_INDEX__SIDE_EFFECT = 29;\n// Indices with size ≤ 16\nglobal GENERATOR_INDEX__TX_REQUEST = 33;\nglobal GENERATOR_INDEX__SIGNATURE_PAYLOAD = 34;\n// Indices with size ≤ 44\nglobal GENERATOR_INDEX__VK = 41;\nglobal GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS = 42;\nglobal GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS = 43;\nglobal GENERATOR_INDEX__FUNCTION_ARGS = 44;\n",
|
|
1006
1018
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr"
|
|
1007
1019
|
},
|
|
1008
|
-
"
|
|
1009
|
-
"source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::function_leaf_preimage::FunctionLeafPreimage;\nuse crate::abis::new_contract_data::NewContractData as ContractLeafPreimage;\nuse crate::abis::function_data::FunctionData;\nuse crate::abis::side_effect::{SideEffect};\nuse crate::utils::uint128::U128;\nuse crate::utils::uint256::U256;\nuse crate::utils::bounded_vec::BoundedVec;\nuse crate::constants::{\n ARGS_HASH_CHUNK_COUNT,\n ARGS_HASH_CHUNK_LENGTH,\n CONTRACT_TREE_HEIGHT, \n FUNCTION_TREE_HEIGHT, \n NOTE_HASH_TREE_HEIGHT,\n GENERATOR_INDEX__SILOED_COMMITMENT,\n GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK,\n GENERATOR_INDEX__CONSTRUCTOR,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__COMMITMENT_NONCE,\n GENERATOR_INDEX__UNIQUE_COMMITMENT,\n GENERATOR_INDEX__FUNCTION_ARGS,\n};\n\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (sha256_hashed[15 - i] as Field) * v;\n low = low + (sha256_hashed[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n let hash_in_a_field = low + high * v;\n\n hash_in_a_field\n}\n\npub fn hash_args<N>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n for i in 0..ARGS_HASH_CHUNK_COUNT {\n let mut chunk_hash = 0;\n let start_chunk_index = i * ARGS_HASH_CHUNK_LENGTH;\n if start_chunk_index < (args.len() as u32) {\n let mut chunk_args = [0; ARGS_HASH_CHUNK_LENGTH];\n for j in 0..ARGS_HASH_CHUNK_LENGTH {\n let item_index = i * ARGS_HASH_CHUNK_LENGTH + j;\n if item_index < (args.len() as u32) {\n chunk_args[j] = args[item_index];\n }\n }\n chunk_hash = pedersen_hash(chunk_args, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n chunks_hashes[i] = chunk_hash;\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Checks that `value` is a member of a merkle tree with root `root` at position `index`\n// The witness being the `sibling_path`\npub fn assert_check_membership<N>(value: Field, index: Field, sibling_path: [Field; N], root: Field) {\n let calculated_root = root_from_sibling_path(value, index, sibling_path);\n assert(calculated_root == root, \"membership check failed\");\n}\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like \n// this because it means we never even need to consider cases where \n// the index is greater than p.\npub fn root_from_sibling_path<N>(leaf: Field, leaf_index: Field, sibling_path: [Field; N]) -> Field {\n let mut node = leaf;\n let indices = leaf_index.to_le_bits(N);\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\n// Calculate the function tree root from the sibling path and leaf preimage.\n//\n// TODO: The cpp code passes in components of the FunctionLeafPreimage and then \n// builds it up. We should build it up and then pass the leaf preimage as a parameter.\n// We can then choose to have a general method that takes in anything hashable\n// and deduplicate the logic in `contract_tree_root_from_siblings`\npub fn function_tree_root_from_siblings(\n selector: FunctionSelector,\n is_internal: bool,\n is_private: bool,\n vk_hash: Field,\n acir_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = FunctionLeafPreimage { selector, is_internal, is_private, vk_hash, acir_hash };\n\n let function_leaf = function_leaf_preimage.hash();\n\n let function_tree_root = root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path);\n\n function_tree_root\n}\n\n// Calculate the contract tree root from the sibling path and leaf preimage.\npub fn contract_tree_root_from_siblings(\n function_tree_root: Field,\n storage_contract_address: AztecAddress,\n portal_contract_address: EthAddress,\n contract_leaf_index: Field,\n contract_leaf_sibling_path: [Field; CONTRACT_TREE_HEIGHT]\n) -> Field {\n //TODO(Kev): if we use shorthand syntax here, we get an error as expected,\n // since variable name is `storage_contract_address` but the span is incorrect.\n let contract_leaf_preimage = ContractLeafPreimage { contract_address: storage_contract_address, portal_contract_address, function_tree_root };\n\n let contract_leaf = contract_leaf_preimage.hash();\n\n let computed_contract_tree_root = root_from_sibling_path(contract_leaf, contract_leaf_index, contract_leaf_sibling_path);\n\n computed_contract_tree_root\n}\n\npub fn read_request_root_from_siblings(\n read_request: Field,\n leaf_index: Field,\n sibling_path: [Field; NOTE_HASH_TREE_HEIGHT]\n) -> Field {\n root_from_sibling_path(read_request, leaf_index, sibling_path)\n}\n\npub fn silo_commitment(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_COMMITMENT\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\nfn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\n// TODO CPP uses blake2s for this\npub fn compute_new_contract_address_hash(new_contract_address: AztecAddress) -> Field {\n dep::std::hash::pedersen_hash([new_contract_address.to_field()])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n portal_contract_address: EthAddress,\n chain_id: Field,\n content: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new(0);\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, portal_contract_address.to_field(), chain_id, content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn compute_constructor_hash(\n function_data: FunctionData,\n args_hash: Field,\n constructor_vk_hash: Field\n) -> Field {\n let function_data_hash = function_data.hash();\n\n pedersen_hash(\n [\n function_data_hash,\n args_hash,\n constructor_vk_hash\n ],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n\n// sha256 hash is stored in two fields to accommodate all 256-bits of the hash\nglobal NUM_FIELDS_PER_SHA256 : Field = 2;\n\n// Computes sha256 hash of 2 input hashes stored in 4 fields.\n// \n// This method is bn254 specific. Two fields is needed in order to \n// encode the sha256 output. It can be abstracted away with any 4-2 hash function.\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\n// Returning a Field would be desirable because then this can be replaced with \n// poseidon without changing the rest of the code\n//\npub fn accumulate_sha256(input: [U128; 4]) -> [Field; NUM_FIELDS_PER_SHA256] {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n //\n // Concatenate 4 u128 bit integers into a byte array.\n let mut hash_input_flattened = [0; 64];\n for offset in 0..4 {\n let input_as_bytes = input[offset].to_be_bytes();\n for byte_index in 0..16 {\n hash_input_flattened[offset * 16 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n let sha_digest = dep::std::hash::sha256(hash_input_flattened);\n\n U256::from_bytes32(sha_digest).to_u128_limbs()\n}\n\npub fn compute_logs_hash(\n previous_log_hash: [Field; 2],\n current_log_hash: [Field; 2]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n accumulate_sha256(\n [\n U128::from_field(previous_log_hash[0]),\n U128::from_field(previous_log_hash[1]),\n U128::from_field(current_log_hash[0]),\n U128::from_field(current_log_hash[1])\n ]\n )\n}\n\npub fn compute_commitment_nonce(first_nullifier: Field, commitment_index: Field) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index\n ],\n GENERATOR_INDEX__COMMITMENT_NONCE\n )\n}\n\npub fn compute_unique_siloed_commitment(nonce: Field, siloed_commitment: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_commitment\n ],\n GENERATOR_INDEX__UNIQUE_COMMITMENT\n )\n}\n\npub fn compute_unique_siloed_commitments<N>(\n first_nullifier: Field,\n siloed_commitments: [SideEffect; N]\n) -> [SideEffect; N] {\n let mut unique_siloed_commitments = [SideEffect::empty(); N];\n for i in 0..N {\n let siloed_commitment = siloed_commitments[i];\n if siloed_commitment.value != 0 {\n let nonce = compute_commitment_nonce(first_nullifier, i);\n unique_siloed_commitments[i] = SideEffect {\n value: compute_unique_siloed_commitment(nonce, siloed_commitment.value),\n counter: siloed_commitment.counter\n };\n }\n }\n unique_siloed_commitments\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n",
|
|
1020
|
+
"105": {
|
|
1021
|
+
"source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::function_leaf_preimage::FunctionLeafPreimage;\nuse crate::abis::new_contract_data::NewContractData as ContractLeafPreimage;\nuse crate::abis::function_data::FunctionData;\nuse crate::abis::side_effect::{SideEffect};\nuse crate::utils::uint256::U256;\nuse crate::utils::bounded_vec::BoundedVec;\nuse crate::constants::{\n ARGS_HASH_CHUNK_COUNT,\n ARGS_HASH_CHUNK_LENGTH,\n CONTRACT_TREE_HEIGHT, \n FUNCTION_TREE_HEIGHT, \n NOTE_HASH_TREE_HEIGHT,\n NUM_FIELDS_PER_SHA256,\n GENERATOR_INDEX__SILOED_COMMITMENT,\n GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK,\n GENERATOR_INDEX__CONSTRUCTOR,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__COMMITMENT_NONCE,\n GENERATOR_INDEX__UNIQUE_COMMITMENT,\n GENERATOR_INDEX__FUNCTION_ARGS,\n};\n\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (sha256_hashed[15 - i] as Field) * v;\n low = low + (sha256_hashed[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n let hash_in_a_field = low + high * v;\n\n hash_in_a_field\n}\n\npub fn hash_args<N>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n for i in 0..ARGS_HASH_CHUNK_COUNT {\n let mut chunk_hash = 0;\n let start_chunk_index = i * ARGS_HASH_CHUNK_LENGTH;\n if start_chunk_index < (args.len() as u32) {\n let mut chunk_args = [0; ARGS_HASH_CHUNK_LENGTH];\n for j in 0..ARGS_HASH_CHUNK_LENGTH {\n let item_index = i * ARGS_HASH_CHUNK_LENGTH + j;\n if item_index < (args.len() as u32) {\n chunk_args[j] = args[item_index];\n }\n }\n chunk_hash = pedersen_hash(chunk_args, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n chunks_hashes[i] = chunk_hash;\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Checks that `value` is a member of a merkle tree with root `root` at position `index`\n// The witness being the `sibling_path`\npub fn assert_check_membership<N>(value: Field, index: Field, sibling_path: [Field; N], root: Field) {\n let calculated_root = root_from_sibling_path(value, index, sibling_path);\n assert(calculated_root == root, \"membership check failed\");\n}\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like \n// this because it means we never even need to consider cases where \n// the index is greater than p.\npub fn root_from_sibling_path<N>(leaf: Field, leaf_index: Field, sibling_path: [Field; N]) -> Field {\n let mut node = leaf;\n let indices = leaf_index.to_le_bits(N);\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\n// Calculate the function tree root from the sibling path and leaf preimage.\n//\n// TODO: The cpp code passes in components of the FunctionLeafPreimage and then \n// builds it up. We should build it up and then pass the leaf preimage as a parameter.\n// We can then choose to have a general method that takes in anything hashable\n// and deduplicate the logic in `contract_tree_root_from_siblings`\npub fn function_tree_root_from_siblings(\n selector: FunctionSelector,\n is_internal: bool,\n is_private: bool,\n vk_hash: Field,\n acir_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = FunctionLeafPreimage { selector, is_internal, is_private, vk_hash, acir_hash };\n\n let function_leaf = function_leaf_preimage.hash();\n\n let function_tree_root = root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path);\n\n function_tree_root\n}\n\n// Calculate the contract tree root from the sibling path and leaf preimage.\npub fn contract_tree_root_from_siblings(\n function_tree_root: Field,\n storage_contract_address: AztecAddress,\n portal_contract_address: EthAddress,\n contract_leaf_index: Field,\n contract_leaf_sibling_path: [Field; CONTRACT_TREE_HEIGHT]\n) -> Field {\n //TODO(Kev): if we use shorthand syntax here, we get an error as expected,\n // since variable name is `storage_contract_address` but the span is incorrect.\n let contract_leaf_preimage = ContractLeafPreimage { contract_address: storage_contract_address, portal_contract_address, function_tree_root };\n\n let contract_leaf = contract_leaf_preimage.hash();\n\n let computed_contract_tree_root = root_from_sibling_path(contract_leaf, contract_leaf_index, contract_leaf_sibling_path);\n\n computed_contract_tree_root\n}\n\npub fn read_request_root_from_siblings(\n read_request: Field,\n leaf_index: Field,\n sibling_path: [Field; NOTE_HASH_TREE_HEIGHT]\n) -> Field {\n root_from_sibling_path(read_request, leaf_index, sibling_path)\n}\n\npub fn silo_commitment(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_COMMITMENT\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\nfn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\n// TODO CPP uses blake2s for this\npub fn compute_new_contract_address_hash(new_contract_address: AztecAddress) -> Field {\n dep::std::hash::pedersen_hash([new_contract_address.to_field()])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n portal_contract_address: EthAddress,\n chain_id: Field,\n content: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new(0);\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, portal_contract_address.to_field(), chain_id, content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn compute_constructor_hash(\n function_data: FunctionData,\n args_hash: Field,\n constructor_vk_hash: Field\n) -> Field {\n let function_data_hash = function_data.hash();\n\n pedersen_hash(\n [\n function_data_hash,\n args_hash,\n constructor_vk_hash\n ],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n\n// Computes sha256 hash of 2 input hashes stored in 4 fields.\n// \n// This method is bn254 specific. Two fields is needed in order to \n// encode the sha256 output. It can be abstracted away with any 4-2 hash function.\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\n// Returning a Field would be desirable because then this can be replaced with \n// poseidon without changing the rest of the code\n//\npub fn accumulate_sha256(input: [U128; 4]) -> [Field; NUM_FIELDS_PER_SHA256] {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n //\n // Concatenate 4 u128 bit integers into a byte array.\n let mut hash_input_flattened = [0; 64];\n for offset in 0..4 {\n let input_as_bytes = input[offset].to_be_bytes();\n for byte_index in 0..16 {\n hash_input_flattened[offset * 16 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n let sha_digest = dep::std::hash::sha256(hash_input_flattened);\n\n U256::from_bytes32(sha_digest).to_u128_limbs()\n}\n\npub fn compute_logs_hash(\n previous_log_hash: [Field; 2],\n current_log_hash: [Field; 2]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n accumulate_sha256(\n [\n U128::from_integer(previous_log_hash[0]),\n U128::from_integer(previous_log_hash[1]),\n U128::from_integer(current_log_hash[0]),\n U128::from_integer(current_log_hash[1])\n ]\n )\n}\n\npub fn compute_commitment_nonce(first_nullifier: Field, commitment_index: Field) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index\n ],\n GENERATOR_INDEX__COMMITMENT_NONCE\n )\n}\n\npub fn compute_unique_siloed_commitment(nonce: Field, siloed_commitment: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_commitment\n ],\n GENERATOR_INDEX__UNIQUE_COMMITMENT\n )\n}\n\npub fn compute_unique_siloed_commitments<N>(\n first_nullifier: Field,\n siloed_commitments: [SideEffect; N]\n) -> [SideEffect; N] {\n let mut unique_siloed_commitments = [SideEffect::empty(); N];\n for i in 0..N {\n let siloed_commitment = siloed_commitments[i];\n if siloed_commitment.value != 0 {\n let nonce = compute_commitment_nonce(first_nullifier, i);\n unique_siloed_commitments[i] = SideEffect {\n value: compute_unique_siloed_commitment(nonce, siloed_commitment.value),\n counter: siloed_commitment.counter\n };\n }\n }\n unique_siloed_commitments\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n",
|
|
1010
1022
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr"
|
|
1011
1023
|
},
|
|
1012
|
-
"
|
|
1013
|
-
"source": "use crate::{\n constants::{\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n },\n hash::pedersen_hash,\n utils,\n grumpkin_point::GrumpkinPoint,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::Empty;\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(pub_key: GrumpkinPoint, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n pedersen_hash(\n [pub_key.x, pub_key.y, partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS\n )\n )\n }\n\n pub fn
|
|
1024
|
+
"121": {
|
|
1025
|
+
"source": "use crate::{\n constants::{\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n },\n hash::pedersen_hash,\n utils,\n grumpkin_point::GrumpkinPoint,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, ToField};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(pub_key: GrumpkinPoint, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n pedersen_hash(\n [pub_key.x, pub_key.y, partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n \n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs : Self, rhs : Self) -> Self{\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self {\n inner : result\n }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0]\n }\n }\n}\n\nstruct EthAddress{\n inner : Field\n}\n\nimpl Eq for EthAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for EthAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for EthAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl EthAddress{\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs : Self, rhs : Self) -> Self{\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self {\n inner : result\n }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0]\n }\n }\n}\n\n// Partial address\nstruct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(contract_address_salt : Field, function_tree_root : Field, constructor_hash : Field) -> Self {\n PartialAddress::from_field(\n pedersen_hash([\n // TODO why the zeroes?\n 0,\n 0,\n contract_address_salt,\n function_tree_root,\n constructor_hash\n ], GENERATOR_INDEX__PARTIAL_ADDRESS)\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n",
|
|
1014
1026
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/address.nr"
|
|
1015
1027
|
},
|
|
1016
|
-
"
|
|
1028
|
+
"126": {
|
|
1017
1029
|
"source": "use crate::address::EthAddress;\nuse crate::constants::{\n CONTRACT_DEPLOYMENT_DATA_LENGTH,\n GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA,\n};\nuse crate::hash::pedersen_hash;\nuse crate::grumpkin_point::GrumpkinPoint;\nuse crate::traits::Hash;\n\n// docs:start:contract-deployment-data\nstruct ContractDeploymentData {\n deployer_public_key : GrumpkinPoint,\n constructor_vk_hash : Field,\n function_tree_root : Field,\n contract_address_salt : Field,\n portal_contract_address : EthAddress,\n}\n// docs:end:contract-deployment-data\n\nimpl Hash for ContractDeploymentData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA)\n }\n}\n\nimpl ContractDeploymentData {\n fn serialize(self) -> [Field; CONTRACT_DEPLOYMENT_DATA_LENGTH] {\n [\n self.deployer_public_key.x,\n self.deployer_public_key.y,\n self.constructor_vk_hash,\n self.function_tree_root,\n self.contract_address_salt,\n self.portal_contract_address.to_field(),\n ]\n }\n\n fn assert_is_zero(self) {\n self.deployer_public_key.assert_is_zero();\n assert(self.constructor_vk_hash == 0);\n assert(self.function_tree_root == 0);\n assert(self.contract_address_salt == 0);\n self.portal_contract_address.assert_is_zero();\n }\n\n}\n",
|
|
1018
1030
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/deployment_data.nr"
|
|
1019
1031
|
},
|
|
1020
|
-
"
|
|
1032
|
+
"127": {
|
|
1021
1033
|
"source": "use crate::{\n constants::{\n CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH,\n GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST,\n },\n hash::pedersen_hash,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Hash, Empty};\n\nstruct StorageUpdateRequest{\n storage_slot : Field,\n old_value : Field,\n new_value : Field,\n}\n\nimpl Eq for StorageUpdateRequest {\n fn eq(self, request: Self) -> bool {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n (request.storage_slot == self.storage_slot)\n & (request.old_value == self.old_value)\n & (request.new_value == self.new_value)\n }\n}\n\nimpl Empty for StorageUpdateRequest {\n fn empty() -> Self {\n StorageUpdateRequest {\n storage_slot: 0,\n old_value: 0,\n new_value: 0,\n }\n }\n}\n\nimpl Hash for StorageUpdateRequest {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST)\n }\n}\n\nimpl StorageUpdateRequest {\n pub fn serialize(self) -> [Field; CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH] {\n [self.storage_slot, self.old_value, self.new_value]\n }\n\n pub fn is_empty(self) -> bool {\n self.storage_slot == 0\n }\n}\n",
|
|
1022
1034
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/storage_update_request.nr"
|
|
1023
1035
|
},
|
|
1024
|
-
"
|
|
1036
|
+
"128": {
|
|
1025
1037
|
"source": "use crate::{\n constants::{\n CONTRACT_STORAGE_READ_LENGTH,\n GENERATOR_INDEX__PUBLIC_DATA_READ,\n },\n hash::pedersen_hash,\n};\nuse crate::traits::Empty;\n\nstruct StorageRead {\n storage_slot: Field,\n current_value: Field,\n}\n\nimpl Empty for StorageRead { \n fn empty() -> Self {\n Self {\n storage_slot: 0,\n current_value: 0,\n }\n }\n}\n\nimpl StorageRead {\n\n pub fn serialize(self) -> [Field; CONTRACT_STORAGE_READ_LENGTH] {\n [self.storage_slot, self.current_value]\n }\n\n pub fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_DATA_READ)\n }\n\n pub fn is_empty(self) -> bool {\n self.storage_slot == 0\n }\n}\n",
|
|
1026
1038
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/storage_read.nr"
|
|
1027
1039
|
},
|
|
1028
|
-
"
|
|
1040
|
+
"136": {
|
|
1029
1041
|
"source": "use crate::abis::{\n function_data::FunctionData,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n};\nuse crate::address::AztecAddress;\nuse crate::constants::{\n GENERATOR_INDEX__CALL_STACK_ITEM,\n};\nuse crate::traits::Hash;\n\nstruct PrivateCallStackItem {\n // This is the _actual_ contract address relating to where this function's code resides in the\n // contract tree. Regardless of whether this is a call or delegatecall, this\n // `contract_address` _does not change_. Amongst other things, it's used as a lookup for\n // getting the correct code from the tree. There is a separate `storage_contract_address`\n // within a CallStackItem which varies depending on whether this is a call or delegatecall.\n contract_address: AztecAddress,\n public_inputs: PrivateCircuitPublicInputs,\n function_data: FunctionData,\n // Not really needed for PrivateCallStackItem.\n is_execution_request: bool,\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator([\n self.contract_address.to_field(),\n self.function_data.hash(),\n self.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nstruct PublicCallStackItem {\n contract_address: AztecAddress,\n public_inputs: PublicCircuitPublicInputs,\n function_data: FunctionData,\n // True if this call stack item represents a request to execute a function rather than a\n // fulfilled execution. Used when enqueuing calls from private to public functions.\n is_execution_request: bool,\n}\n\nimpl Hash for PublicCallStackItem {\n fn hash(self) -> Field {\n let item = if self.is_execution_request {\n self.as_execution_request()\n } else {\n self\n };\n\n dep::std::hash::pedersen_hash_with_separator([\n item.contract_address.to_field(),\n item.function_data.hash(),\n item.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl PublicCallStackItem {\n fn as_execution_request(self) -> Self {\n let public_inputs = self.public_inputs;\n let mut request_public_inputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed();\n request_public_inputs.call_context = public_inputs.call_context;\n request_public_inputs.args_hash = public_inputs.args_hash;\n\n let call_stack_item = PublicCallStackItem {\n contract_address: self.contract_address,\n function_data: self.function_data,\n is_execution_request: true,\n public_inputs: request_public_inputs,\n };\n call_stack_item\n }\n}\n",
|
|
1030
1042
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_stack_item.nr"
|
|
1031
1043
|
},
|
|
1032
|
-
"
|
|
1033
|
-
"source": "use crate::constants::{GENERATOR_INDEX__SIDE_EFFECT};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, Hash};\n\nstruct SideEffect{\n value: Field,\n counter:
|
|
1044
|
+
"141": {
|
|
1045
|
+
"source": "use crate::constants::{GENERATOR_INDEX__SIDE_EFFECT};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, Hash};\n\ntrait Ordered {\n fn counter(self) -> u32;\n}\n\nstruct SideEffect{\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffect {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffect {\n fn eq(self, side_effect: SideEffect) -> bool {\n (self.value == side_effect.value)\n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffect {\n fn empty() -> Self {\n SideEffect {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffect {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize() , GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl SideEffect {\n pub fn serialize(self) -> [Field; 2] {\n [self.value, self.counter as Field]\n }\n\n pub fn deserialise(values: [Field; 2]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n\n pub fn is_empty(self) -> bool {\n (self.value == 0)\n & (self.counter == 0)\n }\n}\n\nstruct SideEffectLinkedToNoteHash{\n value: Field,\n note_hash: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffectLinkedToNoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffectLinkedToNoteHash {\n fn eq(self, side_effect: SideEffectLinkedToNoteHash) -> bool {\n (self.value == side_effect.value)\n & (self.note_hash == side_effect.note_hash) \n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffectLinkedToNoteHash {\n fn empty() -> Self {\n SideEffectLinkedToNoteHash {\n value: 0,\n note_hash: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffectLinkedToNoteHash {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl SideEffectLinkedToNoteHash{\n pub fn serialize(self) -> [Field; 3] {\n [self.value, self.note_hash, self.counter as Field]\n }\n\n pub fn deserialise(values: [Field; 3]) -> Self {\n Self {\n value: values[0],\n note_hash: values[1],\n counter: values[2] as u32,\n }\n }\n\n pub fn is_empty(self) -> bool {\n (self.value == 0)\n & (self.note_hash == 0)\n & (self.counter == 0)\n }\n}\n\n",
|
|
1034
1046
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr"
|
|
1035
1047
|
},
|
|
1036
|
-
"
|
|
1037
|
-
"source": "use crate::constants::{\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n RETURN_VALUES_LENGTH,\n GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n};\nuse crate::{\n abis::{\n call_context::CallContext,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n block_header::BlockHeader,\n },\n address::AztecAddress,\n contrakt::{\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n
|
|
1048
|
+
"144": {
|
|
1049
|
+
"source": "use crate::constants::{\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n};\nuse crate::{\n abis::{\n call_context::CallContext,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n block_header::BlockHeader,\n },\n address::AztecAddress,\n contrakt::{\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n utils::bounded_vec::BoundedVec,\n};\n\nstruct PublicCircuitPublicInputs{\n call_context: CallContext,\n\n args_hash: Field,\n return_values: [Field; RETURN_VALUES_LENGTH],\n\n contract_storage_update_requests: [StorageUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL],\n\n // todo: add sideeffect ranges for the input to these hashes\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n unencrypted_log_preimages_length: Field,\n\n block_header: BlockHeader,\n\n prover_address: AztecAddress,\n}\n\nimpl PublicCircuitPublicInputs{\n fn hash(self) -> Field { \n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595) have mercy por favor \n let mut inputs: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH> = BoundedVec::new(0);\n inputs.push(self.call_context.hash());\n inputs.push(self.args_hash);\n inputs.push_array(self.return_values);\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n inputs.push(self.contract_storage_update_requests[i].hash());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n inputs.push(self.contract_storage_reads[i].hash());\n }\n inputs.push_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n inputs.push(self.new_commitments[i].hash());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n inputs.push(self.new_nullifiers[i].hash());\n }\n inputs.push_array(self.new_l2_to_l1_msgs);\n inputs.push_array(self.unencrypted_logs_hash);\n inputs.push(self.unencrypted_log_preimages_length);\n inputs.push_array(self.block_header.serialize());\n inputs.push(self.prover_address.to_field());\n\n assert_eq(inputs.len(), PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, \"Incorrect number of input fields when hashing PublicCircuitPublicInputs\");\n\n dep::std::hash::pedersen_hash_with_separator(inputs.storage, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n\n pub fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new(0); \n fields.push_array(self.call_context.serialize()); \n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.push_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.push_array(self.contract_storage_reads[i].serialize());\n }\n fields.push_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push(self.prover_address.to_field());\n fields.storage\n }\n}\n",
|
|
1038
1050
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr"
|
|
1039
1051
|
},
|
|
1040
|
-
"
|
|
1041
|
-
"source": "use crate::{\n abis::{\n call_context::CallContext,\n block_header::BlockHeader,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n contrakt::deployment_data::ContractDeploymentData,\n hash::{\n
|
|
1052
|
+
"146": {
|
|
1053
|
+
"source": "use crate::{\n abis::{\n call_context::CallContext,\n block_header::BlockHeader,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n contrakt::deployment_data::ContractDeploymentData,\n hash::{\n pedersen_hash,\n },\n utils::bounded_vec::BoundedVec,\n};\nuse crate::constants::{\n MAX_READ_REQUESTS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS,\n};\nuse crate::traits::Hash;\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n \n args_hash: Field,\n return_values: [Field; RETURN_VALUES_LENGTH],\n\n read_requests: [SideEffect; MAX_READ_REQUESTS_PER_CALL],\n\n new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n end_side_effect_counter : u32,\n\n encrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n encrypted_log_preimages_length: Field,\n unencrypted_log_preimages_length: Field,\n\n block_header: BlockHeader,\n\n contract_deployment_data: ContractDeploymentData,\n\n chain_id: Field,\n version: Field,\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH> = BoundedVec::new(0); \n fields.push(self.call_context.hash());\n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n\n for i in 0..MAX_READ_REQUESTS_PER_CALL{\n fields.push_array(self.read_requests[i].serialize());\n }\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.private_call_stack_hashes);\n fields.push_array(self.public_call_stack_hashes);\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push(self.end_side_effect_counter as Field);\n fields.push_array(self.encrypted_logs_hash);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push(self.contract_deployment_data.hash());\n fields.push(self.chain_id);\n fields.push(self.version);\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, \"Incorrect number of input fields when hashing PrivateCircuitPublicInputs\");\n\n pedersen_hash(fields.storage, GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new(0); \n fields.push_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n\n for i in 0..MAX_READ_REQUESTS_PER_CALL{\n fields.push_array(self.read_requests[i].serialize());\n }\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.private_call_stack_hashes);\n fields.push_array(self.public_call_stack_hashes);\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push(self.end_side_effect_counter as Field);\n fields.push_array(self.encrypted_logs_hash);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push_array(self.contract_deployment_data.serialize());\n fields.push(self.chain_id);\n fields.push(self.version);\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\n#[test]\nfn serialization_smoke() {\n let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed();\n let _serialized = pcpi.serialize();\n}\n\n#[test]\nfn hash_smoke() {\n let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed();\n let _hashed = pcpi.hash();\n}\n",
|
|
1042
1054
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr"
|
|
1043
1055
|
},
|
|
1044
|
-
"
|
|
1056
|
+
"149": {
|
|
1045
1057
|
"source": "use crate::abis::function_selector::FunctionSelector;\nuse crate::constants::GENERATOR_INDEX__FUNCTION_DATA;\n\nstruct FunctionData {\n // First four bytes of the abi encoding \n // of a function. \n selector : FunctionSelector,\n is_internal : bool,\n is_private : bool,\n is_constructor : bool,\n}\n\nimpl FunctionData {\n // A field is ~256 bits\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3057): Since, function data can fit into a Field,\n // This method will simply return a bit packed Field instead of hashing\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator([\n self.selector.to_field(),\n self.is_internal as Field,\n self.is_private as Field,\n self.is_constructor as Field,\n ], GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n",
|
|
1046
1058
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/function_data.nr"
|
|
1047
1059
|
},
|
|
1048
|
-
"
|
|
1049
|
-
"source": "use crate::{\n abis::function_selector::FunctionSelector,\n address::{EthAddress,AztecAddress},\n constants::{\n CALL_CONTEXT_LENGTH,\n GENERATOR_INDEX__CALL_CONTEXT,\n },\n hash::pedersen_hash,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::Hash;\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n portal_contract_address : EthAddress,\n\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n is_contract_deployment : bool,\n\n start_side_effect_counter :
|
|
1060
|
+
"154": {
|
|
1061
|
+
"source": "use crate::{\n abis::function_selector::FunctionSelector,\n address::{EthAddress,AztecAddress},\n constants::{\n CALL_CONTEXT_LENGTH,\n GENERATOR_INDEX__CALL_CONTEXT,\n },\n hash::pedersen_hash,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::Hash;\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n portal_contract_address : EthAddress,\n\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n is_contract_deployment : bool,\n\n start_side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl Eq for CallContext {\n fn eq(self, call_context: CallContext) -> bool {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n call_context.msg_sender.eq(self.msg_sender)\n & call_context.storage_contract_address.eq(self.storage_contract_address)\n & call_context.portal_contract_address.eq(self.portal_contract_address)\n & call_context.function_selector.eq(self.function_selector)\n & (call_context.is_delegate_call == self.is_delegate_call)\n & (call_context.is_static_call == self.is_static_call)\n & (call_context.is_contract_deployment == self.is_contract_deployment)\n & (call_context.start_side_effect_counter == self.start_side_effect_counter)\n }\n}\n\nimpl Hash for CallContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_CONTEXT)\n }\n}\n\nimpl CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n [\n self.msg_sender.to_field(),\n self.storage_contract_address.to_field(),\n self.portal_contract_address.to_field(),\n self.function_selector.to_field(),\n self.is_delegate_call as Field,\n self.is_static_call as Field,\n self.is_contract_deployment as Field,\n self.start_side_effect_counter as Field,\n ]\n }\n\n fn assert_is_zero(self) {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n assert(self.msg_sender.to_field() == 0);\n assert(self.storage_contract_address.to_field() == 0);\n assert(self.portal_contract_address.to_field() == 0);\n assert(self.function_selector.to_field() == 0);\n assert(self.is_delegate_call == false);\n assert(self.is_static_call == false);\n assert(self.is_contract_deployment == false);\n assert(self.start_side_effect_counter == 0);\n }\n}\n",
|
|
1050
1062
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr"
|
|
1051
1063
|
},
|
|
1052
|
-
"
|
|
1064
|
+
"160": {
|
|
1053
1065
|
"source": "use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n\n pub fn from_u32(value: u32) -> Self {\n Self {\n inner : value,\n }\n }\n\n pub fn from_field(value : Field) -> Self {\n Self {\n inner : value as u32,\n }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = dep::std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n",
|
|
1054
1066
|
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/function_selector.nr"
|
|
1055
1067
|
},
|
|
1056
|
-
"
|
|
1057
|
-
"source": "use dep::aztec::abi;\nuse dep::aztec::types::vec::BoundedVec;\nuse dep::aztec::context::PrivateContext;\nuse dep::protocol_types::{\n abis::{\n call_stack_item::{\n PrivateCallStackItem,\n PublicCallStackItem,\n },\n function_selector::FunctionSelector,\n },\n address::AztecAddress,\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD,\n hash::pedersen_hash,\n};\n\nglobal ACCOUNT_MAX_CALLS: Field = 4;\n// 1 (ARGS_HASH) + 1 (FUNCTION_SELECTOR) + 1 (TARGET_ADDRESS) + 1 (IS_PUBLIC)\nglobal FUNCTION_CALL_SIZE: Field = 4;\n// 3 * 32 + 1\nglobal FUNCTION_CALL_SIZE_IN_BYTES: Field = 97;\n\nstruct FunctionCall {\n args_hash: Field,\n function_selector: FunctionSelector,\n target_address: AztecAddress,\n is_public: bool,\n}\n\nimpl FunctionCall {\n fn serialize(self) -> [Field; FUNCTION_CALL_SIZE] {\n [self.args_hash, self.function_selector.to_field(), self.target_address.to_field(), self.is_public as Field]\n }\n\n fn to_be_bytes(self) -> [u8; FUNCTION_CALL_SIZE_IN_BYTES] {\n let mut bytes: [u8; FUNCTION_CALL_SIZE_IN_BYTES] = [0; FUNCTION_CALL_SIZE_IN_BYTES];\n let args_hash_bytes = self.args_hash.to_be_bytes(32);\n for i in 0..32 { bytes[i] = args_hash_bytes[i]; }\n let function_selector_bytes = self.function_selector.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 32] = function_selector_bytes[i]; }\n let target_address_bytes = self.target_address.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 64] = target_address_bytes[i]; }\n bytes[96] = self.is_public as u8;\n bytes\n }\n}\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal ENTRYPOINT_PAYLOAD_SIZE: Field = 17;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES: Field = 420;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:entrypoint-struct\nstruct EntrypointPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:entrypoint-struct\n\nimpl EntrypointPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(), \n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; ENTRYPOINT_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, ENTRYPOINT_PAYLOAD_SIZE> = BoundedVec::new(0); \n for call in self.function_calls {\n fields.push_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] = [0; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES];\n\n for i in 0..ACCOUNT_MAX_CALLS {\n let item_bytes = self.function_calls[i].to_be_bytes();\n for j in 0..FUNCTION_CALL_SIZE_IN_BYTES { \n bytes[i * FUNCTION_CALL_SIZE_IN_BYTES + j] = item_bytes[j];\n }\n }\n\n let nonce_bytes = self.nonce.to_be_bytes(32);\n let nonce_offset = FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS;\n for j in 0..32 {\n bytes[nonce_offset + j] = nonce_bytes[j];\n }\n \n bytes\n }\n\n // Executes all private and public calls \n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n",
|
|
1068
|
+
"188": {
|
|
1069
|
+
"source": "use dep::aztec::abi;\nuse dep::aztec::types::vec::BoundedVec;\nuse dep::aztec::context::PrivateContext;\nuse dep::aztec::protocol_types::{\n abis::{\n call_stack_item::{\n PrivateCallStackItem,\n PublicCallStackItem,\n },\n function_selector::FunctionSelector,\n },\n address::AztecAddress,\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD,\n hash::pedersen_hash,\n};\n\nglobal ACCOUNT_MAX_CALLS: Field = 4;\n// 1 (ARGS_HASH) + 1 (FUNCTION_SELECTOR) + 1 (TARGET_ADDRESS) + 1 (IS_PUBLIC)\nglobal FUNCTION_CALL_SIZE: Field = 4;\n// 3 * 32 + 1\nglobal FUNCTION_CALL_SIZE_IN_BYTES: Field = 97;\n\nstruct FunctionCall {\n args_hash: Field,\n function_selector: FunctionSelector,\n target_address: AztecAddress,\n is_public: bool,\n}\n\nimpl FunctionCall {\n fn serialize(self) -> [Field; FUNCTION_CALL_SIZE] {\n [self.args_hash, self.function_selector.to_field(), self.target_address.to_field(), self.is_public as Field]\n }\n\n fn to_be_bytes(self) -> [u8; FUNCTION_CALL_SIZE_IN_BYTES] {\n let mut bytes: [u8; FUNCTION_CALL_SIZE_IN_BYTES] = [0; FUNCTION_CALL_SIZE_IN_BYTES];\n let args_hash_bytes = self.args_hash.to_be_bytes(32);\n for i in 0..32 { bytes[i] = args_hash_bytes[i]; }\n let function_selector_bytes = self.function_selector.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 32] = function_selector_bytes[i]; }\n let target_address_bytes = self.target_address.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 64] = target_address_bytes[i]; }\n bytes[96] = self.is_public as u8;\n bytes\n }\n}\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal ENTRYPOINT_PAYLOAD_SIZE: Field = 17;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES: Field = 420;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:entrypoint-struct\nstruct EntrypointPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:entrypoint-struct\n\nimpl EntrypointPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(), \n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; ENTRYPOINT_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, ENTRYPOINT_PAYLOAD_SIZE> = BoundedVec::new(0); \n for call in self.function_calls {\n fields.push_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] = [0; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES];\n\n for i in 0..ACCOUNT_MAX_CALLS {\n let item_bytes = self.function_calls[i].to_be_bytes();\n for j in 0..FUNCTION_CALL_SIZE_IN_BYTES { \n bytes[i * FUNCTION_CALL_SIZE_IN_BYTES + j] = item_bytes[j];\n }\n }\n\n let nonce_bytes = self.nonce.to_be_bytes(32);\n let nonce_offset = FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS;\n for j in 0..32 {\n bytes[nonce_offset + j] = nonce_bytes[j];\n }\n \n bytes\n }\n\n // Executes all private and public calls \n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n",
|
|
1058
1070
|
"path": "/usr/src/yarn-project/aztec-nr/authwit/src/entrypoint.nr"
|
|
1059
1071
|
},
|
|
1060
|
-
"
|
|
1061
|
-
"source": "use dep::aztec::context::{PrivateContext, PublicContext, Context};\nuse dep::aztec::state_vars::{map::Map, public_state::PublicState};\nuse dep::aztec::types::type_serialization::bool_serialization::{BoolSerializationMethods,BOOL_SERIALIZED_LEN};\n\nuse crate::entrypoint::EntrypointPayload;\nuse crate::auth::IS_VALID_SELECTOR;\n\nstruct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n approved_action: Map<PublicState<bool, BOOL_SERIALIZED_LEN>>,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions {\n context: context,\n is_valid_impl: is_valid_impl,\n approved_action: Map::new(\n context,\n approved_action_storage_slot,\n |context, slot| {\n PublicState::new(context, slot, BoolSerializationMethods)\n },\n ),\n }\n }\n\n pub fn private(context: &mut PrivateContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::private(context), approved_action_storage_slot, is_valid_impl)\n }\n\n pub fn public(context: &mut PublicContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::public(context), approved_action_storage_slot, is_valid_impl)\n }\n \n // docs:start:entrypoint\n pub fn entrypoint(self, payload: EntrypointPayload) {\n let message_hash = payload.hash();\n let valid_fn = self.is_valid_impl;\n let private_context = self.context.private.unwrap();\n assert(valid_fn(private_context, message_hash));\n payload.execute_calls(private_context);\n }\n // docs:end:entrypoint\n\n pub fn is_valid(self, message_hash: Field) -> Field {\n let valid_fn = self.is_valid_impl;\n if (valid_fn(self.context.private.unwrap(), message_hash)) {\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn is_valid_public(self, message_hash: Field) -> Field {\n let value = self.approved_action.at(message_hash).read();\n if (value){\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn internal_set_is_valid_storage(self, message_hash: Field, value: bool) {\n self.approved_action.at(message_hash).write(value);\n }\n}\n",
|
|
1072
|
+
"189": {
|
|
1073
|
+
"source": "use dep::aztec::context::{PrivateContext, PublicContext, Context};\nuse dep::aztec::state_vars::{map::Map, public_state::PublicState};\nuse dep::aztec::types::type_serialization::bool_serialization::{BoolSerializationMethods,BOOL_SERIALIZED_LEN};\n\nuse crate::entrypoint::EntrypointPayload;\nuse crate::auth::IS_VALID_SELECTOR;\n\nstruct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n approved_action: Map<Field, PublicState<bool, BOOL_SERIALIZED_LEN>>,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions {\n context: context,\n is_valid_impl: is_valid_impl,\n approved_action: Map::new(\n context,\n approved_action_storage_slot,\n |context, slot| {\n PublicState::new(context, slot, BoolSerializationMethods)\n },\n ),\n }\n }\n\n pub fn private(context: &mut PrivateContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::private(context), approved_action_storage_slot, is_valid_impl)\n }\n\n pub fn public(context: &mut PublicContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::public(context), approved_action_storage_slot, is_valid_impl)\n }\n \n // docs:start:entrypoint\n pub fn entrypoint(self, payload: EntrypointPayload) {\n let message_hash = payload.hash();\n let valid_fn = self.is_valid_impl;\n let private_context = self.context.private.unwrap();\n assert(valid_fn(private_context, message_hash));\n payload.execute_calls(private_context);\n }\n // docs:end:entrypoint\n\n pub fn is_valid(self, message_hash: Field) -> Field {\n let valid_fn = self.is_valid_impl;\n if (valid_fn(self.context.private.unwrap(), message_hash)) {\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn is_valid_public(self, message_hash: Field) -> Field {\n let value = self.approved_action.at(message_hash).read();\n if (value){\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn internal_set_is_valid_storage(self, message_hash: Field, value: bool) {\n self.approved_action.at(message_hash).write(value);\n }\n}\n",
|
|
1062
1074
|
"path": "/usr/src/yarn-project/aztec-nr/authwit/src/account.nr"
|
|
1063
1075
|
},
|
|
1064
|
-
"
|
|
1076
|
+
"192": {
|
|
1065
1077
|
"source": "#[oracle(getAuthWitness)]\nfn get_auth_witness_oracle<N>(_message_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn get_auth_witness<N>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n",
|
|
1066
1078
|
"path": "/usr/src/yarn-project/aztec-nr/authwit/src/auth_witness.nr"
|
|
1067
1079
|
},
|
|
1068
|
-
"
|
|
1069
|
-
"source": "mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\ncontract SchnorrAccount {\n use dep::std;\n use dep::std::option::Option;\n\n use dep::protocol_types::address::AztecAddress;\n\n use dep::aztec::{\n context::{PrivateContext, Context},\n note::{ note_header::NoteHeader, utils as note_utils },\n oracle::get_public_key::get_public_key,\n state_vars::immutable_singleton::ImmutableSingleton,\n };\n use dep::authwit:: {\n entrypoint::{ EntrypointPayload, ENTRYPOINT_PAYLOAD_SIZE },\n account::AccountActions,\n auth_witness::get_auth_witness,\n };\n\n use crate::public_key_note::{PublicKeyNote, PublicKeyNoteMethods, PUBLIC_KEY_NOTE_LEN};\n\n struct Storage {\n // docs:start:storage\n signing_public_key: ImmutableSingleton<PublicKeyNote, PUBLIC_KEY_NOTE_LEN>,\n // docs:end:storage\n }\n\n impl Storage {\n fn init(context: Context) -> Self {\n Storage {\n // docs:start:storage_init\n signing_public_key: ImmutableSingleton::new(context, 1, PublicKeyNoteMethods),\n // docs:end:storage_init\n }\n }\n }\n\n global ACCOUNT_ACTIONS_STORAGE_SLOT = 2;\n\n // Constructs the contract\n #[aztec(private)]\n fn constructor(signing_pub_key_x: pub Field, signing_pub_key_y: pub Field) {\n let this = context.this_address();\n // docs:start:initialize\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this);\n storage.signing_public_key.initialize(&mut pub_key_note, Option::none(), true);\n // docs:end:initialize\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts file\n #[aztec(private)]\n fn entrypoint(payload: pub EntrypointPayload) {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.entrypoint(payload);\n }\n\n #[aztec(private)]\n fn is_valid(message_hash: Field) -> Field {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid(message_hash)\n }\n\n #[aztec(public)]\n fn is_valid_public(message_hash: Field) -> Field {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid_public(message_hash)\n }\n\n #[aztec(public)]\n internal fn set_is_valid_storage(message_hash: Field, value: bool) {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.internal_set_is_valid_storage(message_hash, value)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, message_hash: Field) -> pub bool {\n // docs:start:entrypoint\n // Load public key from storage\n let storage = Storage::init(Context::private(context));\n // docs:start:get_note\n let public_key = storage.signing_public_key.get_note();\n // docs:end:get_note\n // Load auth witness\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n let verification = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes(32)\n );\n assert(verification == true);\n // docs:end:entrypoint\n true\n }\n\n // Computes notes hash and nullifier.\n // Note 1: Needs to be defined by every contract producing logs.\n // Note 2: Having it in all the contracts gives us the ability to compute the note hash and nullifier differently for different kind of notes.\n unconstrained fn compute_note_hash_and_nullifier(\n contract_address: AztecAddress,\n nonce: Field,\n storage_slot: Field,\n serialized_note: [Field; PUBLIC_KEY_NOTE_LEN]\n ) -> pub [Field; 4] {\n assert(storage_slot == 1);\n let note_header = NoteHeader::new(contract_address, nonce, storage_slot);\n note_utils::compute_note_hash_and_nullifier(PublicKeyNoteMethods, note_header, serialized_note)\n }\n}\n",
|
|
1080
|
+
"210": {
|
|
1081
|
+
"source": "mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\ncontract SchnorrAccount {\n use dep::std;\n use dep::std::option::Option;\n\n use dep::aztec::protocol_types::address::AztecAddress;\n\n use dep::aztec::{\n context::{PrivateContext, Context},\n note::{ note_header::NoteHeader, utils as note_utils },\n oracle::get_public_key::get_public_key,\n state_vars::immutable_singleton::ImmutableSingleton,\n };\n use dep::authwit:: {\n entrypoint::{ EntrypointPayload, ENTRYPOINT_PAYLOAD_SIZE },\n account::AccountActions,\n auth_witness::get_auth_witness,\n };\n\n use crate::public_key_note::{PublicKeyNote, PublicKeyNoteMethods, PUBLIC_KEY_NOTE_LEN};\n\n struct Storage {\n // docs:start:storage\n signing_public_key: ImmutableSingleton<PublicKeyNote, PUBLIC_KEY_NOTE_LEN>,\n // docs:end:storage\n }\n\n impl Storage {\n fn init(context: Context) -> Self {\n Storage {\n // docs:start:storage_init\n signing_public_key: ImmutableSingleton::new(context, 1, PublicKeyNoteMethods),\n // docs:end:storage_init\n }\n }\n }\n\n global ACCOUNT_ACTIONS_STORAGE_SLOT = 2;\n\n // Constructs the contract\n #[aztec(private)]\n fn constructor(signing_pub_key_x: pub Field, signing_pub_key_y: pub Field) {\n let this = context.this_address();\n // docs:start:initialize\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this);\n storage.signing_public_key.initialize(&mut pub_key_note, Option::none(), true);\n // docs:end:initialize\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts file\n #[aztec(private)]\n fn entrypoint(payload: pub EntrypointPayload) {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.entrypoint(payload);\n }\n\n #[aztec(private)]\n fn is_valid(message_hash: Field) -> Field {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid(message_hash)\n }\n\n #[aztec(public)]\n fn is_valid_public(message_hash: Field) -> Field {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid_public(message_hash)\n }\n\n #[aztec(public)]\n internal fn set_is_valid_storage(message_hash: Field, value: bool) {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.internal_set_is_valid_storage(message_hash, value)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, message_hash: Field) -> pub bool {\n // docs:start:entrypoint\n // Load public key from storage\n let storage = Storage::init(Context::private(context));\n // docs:start:get_note\n let public_key = storage.signing_public_key.get_note();\n // docs:end:get_note\n // Load auth witness\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n let verification = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes(32)\n );\n assert(verification == true);\n // docs:end:entrypoint\n true\n }\n\n // Computes notes hash and nullifier.\n // Note 1: Needs to be defined by every contract producing logs.\n // Note 2: Having it in all the contracts gives us the ability to compute the note hash and nullifier differently for different kind of notes.\n unconstrained fn compute_note_hash_and_nullifier(\n contract_address: AztecAddress,\n nonce: Field,\n storage_slot: Field,\n serialized_note: [Field; PUBLIC_KEY_NOTE_LEN]\n ) -> pub [Field; 4] {\n assert(storage_slot == 1);\n let note_header = NoteHeader::new(contract_address, nonce, storage_slot);\n note_utils::compute_note_hash_and_nullifier(PublicKeyNoteMethods, note_header, serialized_note)\n }\n}\n",
|
|
1070
1082
|
"path": "/usr/src/yarn-project/noir-contracts/contracts/schnorr_account_contract/src/main.nr"
|
|
1071
1083
|
},
|
|
1072
|
-
"
|
|
1073
|
-
"source": "use dep::aztec::{\n note::{\n note_header::NoteHeader,\n note_interface::NoteInterface,\n utils::compute_unique_siloed_note_hash,\n },\n hash::pedersen_hash,\n oracle::{\n get_secret_key::get_secret_key,\n get_public_key::get_public_key,\n },\n log::emit_encrypted_log,\n context::PrivateContext,\n};\nuse dep::protocol_types::address::AztecAddress;\n\nglobal PUBLIC_KEY_NOTE_LEN: Field = 3;\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\nstruct PublicKeyNote {\n x: Field,\n y: Field,\n owner: AztecAddress, // We store the owner address only to get the secret key to compute the nullifier and to broadcast\n header: NoteHeader,\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, owner: AztecAddress) -> Self {\n PublicKeyNote {\n x,\n y,\n owner,\n header: NoteHeader::empty(),\n }\n }\n\n // serialize the note as 3 fields\n pub fn serialize(self) -> [Field; PUBLIC_KEY_NOTE_LEN] {\n [self.x, self.y, self.owner.to_field()]\n }\n\n pub fn compute_nullifier(self) -> Field {\n let unique_siloed_note_hash = compute_unique_siloed_note_hash(PublicKeyNoteMethods, self);\n let secret = get_secret_key(self.owner);\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash([\n unique_siloed_note_hash,\n secret.low,\n secret.high,\n ],0)\n }\n\n pub fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n // Broadcasts the note as an encrypted log on L1.\n pub fn broadcast(self, context: &mut PrivateContext, slot: Field) {\n let encryption_pub_key = get_public_key(self.owner);\n emit_encrypted_log(\n context,\n (*context).this_address(),\n slot,\n encryption_pub_key,\n self.serialize(),\n );\n }\n}\n\nfn deserialize(serialized_note: [Field; PUBLIC_KEY_NOTE_LEN]) -> PublicKeyNote {\n PublicKeyNote {\n x: serialized_note[0],\n y: serialized_note[1],\n owner: AztecAddress::from_field(serialized_note[2]),\n header: NoteHeader::empty()\n }\n}\n\nfn serialize(note: PublicKeyNote) -> [Field; PUBLIC_KEY_NOTE_LEN] {\n note.serialize()\n}\n\nfn compute_note_hash(note: PublicKeyNote) -> Field {\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash(note.serialize(), 0)\n}\n\nfn compute_nullifier(note: PublicKeyNote) -> Field {\n note.compute_nullifier()\n}\n\nfn get_header(note: PublicKeyNote) -> NoteHeader {\n note.header\n}\n\nfn set_header(note: &mut PublicKeyNote, header: NoteHeader) {\n note.set_header(header);\n}\n\n// Broadcasts the note as an encrypted log on L1.\nfn broadcast(context: &mut PrivateContext, slot: Field, note: PublicKeyNote) {\n note.broadcast(context, slot);\n}\n\nglobal PublicKeyNoteMethods = NoteInterface {\n deserialize,\n serialize,\n compute_note_hash,\n compute_nullifier,\n get_header,\n set_header,\n broadcast,\n};\n",
|
|
1084
|
+
"211": {
|
|
1085
|
+
"source": "use dep::aztec::{\n note::{\n note_header::NoteHeader,\n note_interface::NoteInterface,\n utils::compute_unique_siloed_note_hash,\n },\n hash::pedersen_hash,\n oracle::{\n get_secret_key::get_secret_key,\n get_public_key::get_public_key,\n },\n log::emit_encrypted_log,\n context::PrivateContext,\n};\nuse dep::aztec::protocol_types::address::AztecAddress;\n\nglobal PUBLIC_KEY_NOTE_LEN: Field = 3;\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\nstruct PublicKeyNote {\n x: Field,\n y: Field,\n owner: AztecAddress, // We store the owner address only to get the secret key to compute the nullifier and to broadcast\n header: NoteHeader,\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, owner: AztecAddress) -> Self {\n PublicKeyNote {\n x,\n y,\n owner,\n header: NoteHeader::empty(),\n }\n }\n\n // serialize the note as 3 fields\n pub fn serialize(self) -> [Field; PUBLIC_KEY_NOTE_LEN] {\n [self.x, self.y, self.owner.to_field()]\n }\n\n pub fn compute_nullifier(self) -> Field {\n let unique_siloed_note_hash = compute_unique_siloed_note_hash(PublicKeyNoteMethods, self);\n let secret = get_secret_key(self.owner);\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash([\n unique_siloed_note_hash,\n secret.low,\n secret.high,\n ],0)\n }\n\n pub fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n // Broadcasts the note as an encrypted log on L1.\n pub fn broadcast(self, context: &mut PrivateContext, slot: Field) {\n let encryption_pub_key = get_public_key(self.owner);\n emit_encrypted_log(\n context,\n (*context).this_address(),\n slot,\n encryption_pub_key,\n self.serialize(),\n );\n }\n}\n\nfn deserialize(serialized_note: [Field; PUBLIC_KEY_NOTE_LEN]) -> PublicKeyNote {\n PublicKeyNote {\n x: serialized_note[0],\n y: serialized_note[1],\n owner: AztecAddress::from_field(serialized_note[2]),\n header: NoteHeader::empty()\n }\n}\n\nfn serialize(note: PublicKeyNote) -> [Field; PUBLIC_KEY_NOTE_LEN] {\n note.serialize()\n}\n\nfn compute_note_hash(note: PublicKeyNote) -> Field {\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash(note.serialize(), 0)\n}\n\nfn compute_nullifier(note: PublicKeyNote) -> Field {\n note.compute_nullifier()\n}\n\nfn get_header(note: PublicKeyNote) -> NoteHeader {\n note.header\n}\n\nfn set_header(note: &mut PublicKeyNote, header: NoteHeader) {\n note.set_header(header);\n}\n\n// Broadcasts the note as an encrypted log on L1.\nfn broadcast(context: &mut PrivateContext, slot: Field, note: PublicKeyNote) {\n note.broadcast(context, slot);\n}\n\nglobal PublicKeyNoteMethods = NoteInterface {\n deserialize,\n serialize,\n compute_note_hash,\n compute_nullifier,\n get_header,\n set_header,\n broadcast,\n};\n",
|
|
1074
1086
|
"path": "/usr/src/yarn-project/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr"
|
|
1075
1087
|
}
|
|
1076
1088
|
}
|