diff --git a/yarn-project/circuits.js/src/structs/proof.ts b/yarn-project/circuits.js/src/structs/proof.ts index 1ccfe85ce095..5e882d3d7cf7 100644 --- a/yarn-project/circuits.js/src/structs/proof.ts +++ b/yarn-project/circuits.js/src/structs/proof.ts @@ -1,6 +1,8 @@ -import { Fr } from '@aztec/bb.js'; +import { Fr } from '@aztec/foundation/fields'; import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; +import { AGGREGATION_OBJECT_LENGTH } from '../constants.gen.js'; + const EMPTY_PROOF_SIZE = 42; /** @@ -12,6 +14,9 @@ const EMPTY_PROOF_SIZE = 42; export class Proof { // Make sure this type is not confused with other buffer wrappers readonly __proofBrand: any; + + readonly publicInputsOffset = 100; + constructor( /** * Holds the serialized proof data in a binary buffer format. @@ -55,11 +60,27 @@ export class Proof { } public withoutPublicInputs(): Buffer { - if (this.numPublicInputs > 0) { - return this.buffer.subarray(Fr.SIZE_IN_BYTES * this.numPublicInputs); - } else { - return this.buffer; - } + console.log( + 'indices', + this.publicInputsOffset - 4, + this.publicInputsOffset - 4 + Fr.SIZE_IN_BYTES * this.numPublicInputs, + ); + return Buffer.concat([ + this.buffer.subarray(4, this.publicInputsOffset), + this.buffer.subarray(this.publicInputsOffset + Fr.SIZE_IN_BYTES * this.numPublicInputs), + ]); + } + + public extractPublicInputs(): Fr[] { + const reader = BufferReader.asReader( + this.buffer.subarray(this.publicInputsOffset, this.publicInputsOffset + Fr.SIZE_IN_BYTES * this.numPublicInputs), + ); + return reader.readArray(this.numPublicInputs, Fr); + } + + public extractAggregationObject(): Fr[] { + const publicInputs = this.extractPublicInputs(); + return publicInputs.slice(-1 * AGGREGATION_OBJECT_LENGTH); } /** diff --git a/yarn-project/end-to-end/src/composed/integration_proof_verification.test.ts b/yarn-project/end-to-end/src/composed/integration_proof_verification.test.ts index cdb8e3cfe11e..6814637ada8e 100644 --- a/yarn-project/end-to-end/src/composed/integration_proof_verification.test.ts +++ b/yarn-project/end-to-end/src/composed/integration_proof_verification.test.ts @@ -28,6 +28,64 @@ import { getACVMConfig } from '../fixtures/get_acvm_config.js'; import { getBBConfig } from '../fixtures/get_bb_config.js'; import { getLogger, setupL1Contracts, startAnvil } from '../fixtures/utils.js'; +describe('temp', () => { + it('maps', async () => { + const blockResult = JSON.parse( + await readFile(join(fileURLToPath(import.meta.url), '../../fixtures/dumps/block_result.json'), 'utf-8'), + ); + + const block = L2Block.fromString(blockResult.block); + const proof = Proof.fromString(blockResult.proof); + const proverId = Fr.fromString(blockResult.proverId); + const vkTreeRoot = Fr.fromString(blockResult.vkTreeRoot); + const aggregationObject = blockResult.aggregationObject.map((x: string) => Fr.fromString(x)); + const reader = BufferReader.asReader(proof.buffer.subarray(4)); + const [circuitSize, numPublicInputs, publicInputsOffset] = reader.readArray(3, Fr); + console.log('reader index after header', reader.index); + const publicInputsFromProof = reader.readArray(numPublicInputs.toNumber(), Fr).map(x => x.toString()); + console.log('reader index after pub inputs', reader.index); + + const proofStr = `0x${Buffer.concat([ + circuitSize.toBuffer(), + numPublicInputs.toBuffer(), + publicInputsOffset.toBuffer(), + reader.readToEnd(), + ]).toString('hex')}` as const; + + const publicInputsFromBlock = [ + block.header.lastArchive.root, + block.header.globalVariables.blockNumber, + block.archive.root, + new Fr(block.archive.nextAvailableLeafIndex), + Fr.ZERO, // prev block hash + block.hash(), + ...block.header.globalVariables.toFields(), // start global vars + ...block.header.globalVariables.toFields(), // end global vars + new Fr(block.header.contentCommitment.outHash), + block.header.globalVariables.coinbase.toField(), // the fee taker's address + block.header.totalFees, // how much they got + ...Array(62).fill(Fr.ZERO), // 31 other (fee takers, fee) pairs + vkTreeRoot, + proverId, // 0x51 + ...aggregationObject, + ].map((x: Fr) => x.toString()); + + const publicInputs = proof.extractPublicInputs().map(x => x.toString()); + + expect(publicInputs.length).toEqual(publicInputsFromProof.length); + expect(publicInputs.slice(0, 27)).toEqual(publicInputsFromProof.slice(0, 27)); + expect(publicInputs.slice(27, 89)).toEqual(publicInputsFromProof.slice(27, 89)); + expect(publicInputs.slice(89, 91)).toEqual(publicInputsFromProof.slice(89, 91)); + expect(publicInputs.slice(91)).toEqual(publicInputsFromProof.slice(91)); + + const actual = '0x' + proof.withoutPublicInputs().toString('hex'); + expect(actual.length).toEqual(proofStr.length); + expect(actual).toEqual(proofStr); + expect(proof.extractAggregationObject()).toEqual(aggregationObject); + // expect(proof.extractPublicInputs()).toEqual(publicInputs); + }); +}); + /** * Regenerate this test's fixture with * AZTEC_GENERATE_TEST_DATA=1 yarn workspace @aztec/end-to-end test e2e_prover @@ -150,14 +208,6 @@ describe('proof_verification', () => { const [circuitSize, numPublicInputs, publicInputsOffset] = reader.readArray(3, Fr); const publicInputs = reader.readArray(numPublicInputs.toNumber(), Fr).map(x => x.toString()); - console.log({ - circuitSize: circuitSize.toString(), - numPublicInputs: numPublicInputs.toString(), - publicInputsOffset: publicInputsOffset.toString(), - binaryProofSize: proof.buffer.length, - publicInputsLength: publicInputs.length, - }); - const proofStr = `0x${Buffer.concat([ circuitSize.toBuffer(), numPublicInputs.toBuffer(), @@ -200,8 +250,6 @@ describe('proof_verification', () => { ...aggregationObject, ].map((x: Fr) => x.toString()); - console.log({ len: publicInputsFromProof.length, publicInputsFromProof }); - console.log({ len: publicInputs.length, publicInputs }); expect(publicInputs.length).toEqual(publicInputsFromProof.length); expect(publicInputs.slice(0, 27)).toEqual(publicInputsFromProof.slice(0, 27)); expect(publicInputs.slice(27, 89)).toEqual(publicInputsFromProof.slice(27, 89)); diff --git a/yarn-project/end-to-end/src/e2e_prover/full.test.ts b/yarn-project/end-to-end/src/e2e_prover/full.test.ts index 067c6de72f1a..e73d435dab04 100644 --- a/yarn-project/end-to-end/src/e2e_prover/full.test.ts +++ b/yarn-project/end-to-end/src/e2e_prover/full.test.ts @@ -18,7 +18,7 @@ describe('full_prover', () => { await t.applyBaseSnapshots(); await t.applyMintSnapshot(); await t.setup(); - // await t.deployVerifier(); + await t.deployVerifier(); ({ provenAssets, accounts, tokenSim, logger } = t); }); diff --git a/yarn-project/end-to-end/src/fixtures/dumps/block_result.json b/yarn-project/end-to-end/src/fixtures/dumps/block_result.json index deac5f4d50ee..c72f6d926c85 100644 --- a/yarn-project/end-to-end/src/fixtures/dumps/block_result.json +++ b/yarn-project/end-to-end/src/fixtures/dumps/block_result.json @@ -1 +1 @@ -{"proverId":"0x0000000000000000000000000000000000000000000000000000000000000051","vkTreeRoot":"0x07fb5e90182eefd8cf68a443ae3b87cd3c2d2a17f1fb1f1de931c4d4603b148f","block":"2efb65d7b3e8816f3c094d93517c0f37c51eed9cb5a9442e21dade87b566c942000000090000000000000000000000000000000000000000000000000000000000000002004125a54451a556f91347b10ecd804f71437f0a4544f3900752dd806cfb6a3d00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb14f44d672eb357739e42463497f9fdac46623af863eea4d947ca00a497dcdeb300000090195e462a3a3081de74eb6ff37ecb7c375ccdcb2e08b519b8f3d87a09af9ab6e70000048010a596ca1d50f1cc5b9bf774fa2db4f3d2fd1f16cfadae28e1a00f469b8a165f000005002905958082dcc0a81dfb6b7b490a1b9df7a489407e8bb97c0a188a652fed605e000005000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000130000000000000000000000000000000000000000000000000000000066d1cd3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000017db9c0a1540808005a05996e97bcaee23884a196b33d904c13283dd2fe52e1399dc7afe0000000a0000000200000000000000000000000000000000000000000000000000000000000bef545a000102ae4c7f7f5c9fd1a06822ef04c5a69d74c9bf38c9d56223ae0fc139684cdc2c00020cc1781a8fdaa1bb7f475512287abb220841f64759df8c6d492e01b8eebf1ec4000000000000000000000000000000000000000000000000000000000000138814695f71f1725601f0f2c876d13bd77fb1040b9ff9f10b4e2bcebccb19ccb83200000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000040000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000bec47b0022bb469fdaf80b4fa05fa1172233f0a550233f5d02e4bee8c3a77aeb30851da27241e21b92c1dc100d46008771368a86377cec669c4ce8321031e5d7f8ff13f51021f6e5fe907c9d5cb687ed775bdf17d7338a2079a1f1a4d504ff0fe123273cf8b2f50d2ac2c002e785b16122a15bd7a5f89a8cfc76b974a8f843a7608dc07e12400000000000000000000000000000000000000000000000000000000000000000408000000000000000000000000000000000000000000000000000000000000020400000000000000000000000000000000000000000000000000000000000000000000040c000004080000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a41f52394fc970af86f39443d3cd5faef775799a16d1dd8bb8a3b555c824d8e08ff4454ad08c11173655b9c5b980fa47f039b35e3a041f44d647a7c74e78c8dd168a2ec8a83dff23f37742b920cb0a7d80fc207d1a4ac013ef1825a296ca56f5f88ed61f1c3cd412d24674d5a7b8754ae0cd06e941f0e5b47e57bf9b2513cf1bf0cc1594fee1297ac00c4b3f5693e24d2fabb64541654dc7ae0bbbc6501978d0a463f65604604767d8dac4ecb0b0285beb5c2511bceb2b47f56c8ff237b5ff53de42faf096ec68b2bcd6a7c521e250a66c2d8874bfbb403df4cfbb76de59d437217a63d9c29782a1861798661aa91d9bb22de06d1812e0b628d43767653f3aef5db1562596a1a7f5a540d437c290cbdb55a16c93f80843b88e61c1b9aed0e58c9c8f51c59626ef55c66e9830b58db97e15edaaf2dbfc3cafba679fb5204ae081437bd38665a5da1e325b1b751d3fa6a5b0b55265d0b73728e5e0e555a49f3c52f8798690028e99a9df3afaa7a61f598efedae3686f782035801825f281377928c46257c598d69a26e89717bc85175e8ba721b2658a1a441636d4b8e35b41b30e77b20dcb71be27620b2fdc4fcfd2a1a6f5fdcfc910087840762cbc15e56576f900000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002fbc509feb64187eef51816190baf9bf7665ec98d1df1d67a70ac79e25f158836c7fad15e4eec0b3e8cb9ae60f30d7b736be92b2c78e7ab8ef14874343a43a9aa4fd9d43b18fac234ddc17eeba4d4655d3f026885d81dd7568544085ac7ce48815513dbd12c251bea6f1efd0da44b6894dc1e25b75e63964fc9aa35b76cd585117947ae912ce50721c0df859d0b93c803130f5f776e3fc83576db317cff054fe858f10b6aad0b30940bcede6e7610ed39e28f8f6a9631f1319a6436c304307cbfd4a84a51da1e9f5782ca9088387c273ac96b9a200a7b83ab65d1c3862508fd131ca9b46b79361fbfa66a437e83d289f9bb486d8d9b4ac8f3f406a56181e10bb67cf6d8011c8d7fb6ca523dacb4bdab4e4fd346c97734fb46195eb3b347bf4a48e8d60a97b4510890757a3a1e0ec3f92617266a7639a85238244f50bdf91705e058de301b1763361a52bbc7d4aeb9223b62603102036bc65d7f266368262567baf93b16e13d53c6bb727f2669743f2b5818b8e2493a78d146ba6d874b5e812423785dac735be69faf9a39d2ccce7705d5b64be21f7359fcd3f1fa6f650cddbf009abdf0db2ba9ee2c2ce742bc35de61faec17f4892e0c4f0929c3934bd32ab4800000228000002240000022003efab53e3ab24997854927966b7a3939ea3944b00cf4d3308e95a73519ac5ba0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026e4505186055e18daf922d9e1576e205de63fc734fad1c2ccecebc9f552f5347c7b1370c5d596ca96f9973e1c39bc74b68441c42ffb0784d1cf7ebf6c2400c29dd02bc451b2088974d6ce2be9a09f53a34320ebaf972abac5ae1f716b3a7a95d3287ea5de2ae8f5cc83e2845141c964d628feb5c0cf239a1086b99c2d455838403639dd2bbe43e8d4add9e7ca0ab02d2a4d5a71ffc96d33f9999be23cf9715884ca5071c60b9e5ee80bfc6bd384c030ff97de6c45403a098102dfb584e7258261f23067b10b8b13a3ee6b974e0a4c8fca5a646d30d89220590bbdcbad495daaa4f9f95d76b565cca8d42ba7e7478e622f1454561b9e8d132f2fa579eebd8bc3ac3aa565308ab81c7d9850f2da7c80d399f6fbaa4af2285c517c0b8b8c573d76cdca26ad0e755fe9193c9ebaa0ab74430d811c7cdb6687c560eeefeb59b9d75bccd4ff7cc93379a890e7a0be77e283197d5ac57ad04a20fdfa014ca9ad236df3644db8dd4d35f7a53e4fff8e46c69aa1cd545ebe71a82409e58ac4a857f0ebfe4120b335a73526131410cae6c6a496d075bb4b24df1093650deab064f7ec88e84fb4b65772f03350c8bea2c13bf3d9d246efb8c3ee0dd31754393908867580760000000400000000","proof":"00003e84000001f40000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000006b00000000000000000000000000000000000000000000000000000000000000012efb65d7b3e8816f3c094d93517c0f37c51eed9cb5a9442e21dade87b566c94200000000000000000000000000000000000000000000000000000000000000091540808005a05996e97bcaee23884a196b33d904c13283dd2fe52e1399dc7afe000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000087370ebcb1630a085b99f5b98e9767929ced6696fd484ade4da8ace7c978eb50000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000130000000000000000000000000000000000000000000000000000000066d1cd3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000130000000000000000000000000000000000000000000000000000000066d1cd30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017db9c0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fb5e90182eefd8cf68a443ae3b87cd3c2d2a17f1fb1f1de931c4d4603b148f000000000000000000000000000000000000000000000000000000000000005100000000000000000000000000000000000000000000000f27e93aa8f9f5793d00000000000000000000000000000000000000000000000c966e343e22991cea00000000000000000000000000000000000000000000000791711bb5366d52160000000000000000000000000000000000000000000000000000adea866d3b6d00000000000000000000000000000000000000000000000e68551145698c9313000000000000000000000000000000000000000000000004e05e5aed11f5e94b000000000000000000000000000000000000000000000002ea7e5856f13de8f3000000000000000000000000000000000000000000000000000093696ddf1668000000000000000000000000000000000000000000000001c997c9850518486b000000000000000000000000000000000000000000000000e2a8cd191cf203bf0000000000000000000000000000000000000000000000031a5e76d8514c290100000000000000000000000000000000000000000000000000023d98eeb792af0000000000000000000000000000000000000000000000079a9c6e320236fbaa00000000000000000000000000000000000000000000000b364bf03eaf2f98f90000000000000000000000000000000000000000000000084f05cb80d7111ed60000000000000000000000000000000000000000000000000000d0d1a49bd055000000000000000000000000000000441a8b25c8c5513cfab2bdd90b9070e653000000000000000000000000000000000022e101221ce77578a36c3d1cb00185000000000000000000000000000000fbd13b8bdb0feed2e4af14d5358d95263a0000000000000000000000000000000000098611ec55ee9af3d61f2e78300a19000000000000000000000000000000d851a3eff693d826cfc552839d4d69ddd20000000000000000000000000000000000083b37c705819de62ddf166309c4210000000000000000000000000000000ac25d8dabfd373198b865cb5e6f98cb0200000000000000000000000000000000002d2ca8f6729f340a60cce476dfcd87000000000000000000000000000000a3e574a87c6d7853bd652ff2dd93ac1a0500000000000000000000000000000000000d4ad6dbab16ef497a2520b2b7375e000000000000000000000000000000295f5afdbf168c819c622e4d243fa3db5f00000000000000000000000000000000002ae17c75c73facbd8ef4896e1090440000000000000000000000000000004c4232980469233663c81525d97e8d58c60000000000000000000000000000000000105b2bddf47dfe04cafc6663d6010b000000000000000000000000000000ea90e3db4fd9623ca3e399794bfa37a33f00000000000000000000000000000000001ff3026f118e2438e52caa1c24215d0000000000000000000000000000005ba3327a973cc9ec0b59ead8e0f35142ea00000000000000000000000000000000001fb2905c3cb4a0e8db193a22dab07e000000000000000000000000000000f2a76c979701db705cbc3a7e6d6ee8395f00000000000000000000000000000000000200806821995f1b6cefbf2ab481dd000000000000000000000000000000866b5eb48b3a315ba35a4270362d25560b00000000000000000000000000000000002dd8cd508c2ff61ec0e497accf82f80000000000000000000000000000001a3b2641153b874a10acecf4d1ca23db0a0000000000000000000000000000000000165e24f930c1ca8f1f8ea975d6146600000000000000000000000000000098af49ee055ff6a883b7c14f509495415f0000000000000000000000000000000000196af2304949dbe4a9e0eb0b1c18550000000000000000000000000000004bfac6d0d2a0f6cbe469b96928bc7319b200000000000000000000000000000000001e623971ebc6126e14149c55d0caf2000000000000000000000000000000d1e80f92fd95af14fec06970e9989635f0000000000000000000000000000000000016ee77cbe28649e3e5c3a6afb9d35100000000000000000000000000000051eb9c8c5fa429e491ff545dd310355b4a00000000000000000000000000000000001c16cddeceb5707dcf614e8504c0341957776b445f983c33aeb33fd2edb26ef3dd274f79bc58ec4b75c8445034fa64170cd7079cd207ed84a19276ae93a5ee3456c0f8fffd17a4f86c2d4f9fcb059d3044cd790e2d2134ac8d4f49250bb863d294b0f058b39b227fca74086a444f2c1e58bcb43fddba85e3937419850d9f8d6d2339309b5e0726804d21df7e083a9c015a04415ef9f3b1e1c6b2192f4632b38fec47c15c3368244f588e0d178dc19803ecb2dd355c6465da49e6756806b51be9020d878aa51741862b62d758c99e4c240b1bd578970d5bcb136cab5ee51178bae643624eb7f0c9f853fa83c15eaf030b5eb6ee5e1e85f92c90425cb3a3d0305b64ba6eb2c9a2536ccd9db2f937b4af28539a5ce1d2e93726be9b5e62c79b727462e8439c96542a177f5242b8349eb31e3731b54431a5461ad910ce293281f625892768775e6cca559a563d2b1e5cca164e6d39e45f67492a385bb66872c2d636a998dd54851b379a05de4e43610d900356b58e0a0bd802b55ecf814a23bfe617c58099f8089439f7e31df681214daf2829a03f5b77b713dd7a2638d478b5058f633c2fa9b5da8eb3efdb8918d2e99107d21a31f65e1cc3f81e6ec2ee40e0ee84f300e0f1597c2d44e277a1f7c6b0950559a73620c5da8cacce35346cf1a54802ee164d2471e5d5fb26ef40ab23f2e12c3c5dec9f6c75dad51f2d6636334f0a0616b2db7d3ef39945ddd4bf1a50a8202f0d4799c92bb0cf6b4ca22ccf0b5c0c28ded29fd9100edba5edf94931a062392bf2b799cf1470517facf6be1470da76225c72f4159456f1d9c6ed0c5b08aa830a5c560ae40f58e2e8fa8cb1ecb6d0fad590e8cfb5839460b32cd32b01e6679d1a687bdcdb5bd4a565bb228e81ea682264b1886724194a6950fdbce9ec0d8d9d175d247e54d0061de7d7487549d72330d4cb416f99256c738e24e63e92696d14094fbe7db8b69d70349b87b64675982b8750f78fa41b5f51aa43f624a2c0a3ae1f6da7a554fb92a021b0e677e27b7bb37f09abb4cffa12b109832039463208fc1e05a9710ca36c53b955eb0cb59630d678174df0bdb89fcd83f88e53d2b24faa09493c28f4a7c9caa3113bfec22b08917a0627ea1fbefb18973e635d58ac8f7b19bcc707d6f07714c680f85401bb460558f841c8031e9e0120f765aa6abb4dd716b6f1f93967c61ce4716d76e6fb4a6b2d07adbb987fc218b4f87222f7a191961153afdb831248bcf58d1e764b49635fb12a951de94d19ee4b7c8b9aa44ddb20048c76f091130ef9f589139fe334310682fdb097cdf768b207c1151e0a5c425b2103defa06817b3bd7fa2baef670f3e315946cbb1c731421b7bb96f5148471dd00819c52b76bd426206b5b3e6a58a2a18f6be66502e089b61a791479980bb9f915fca16f57d584338fd6c0bfd1d6ec4b4271b53ca88a90bdebb69f190188c2182e9881c5d10e8d6c6487684b00dc249d06d4bf27e39f0ee7a5da6758113f4d2f241adcaa3eb6616a2e1ef47fafcc7426c45025589038975d2a183891fd4217482db9bfcb2cebc360e003a2b7e6bf6a9b152be96d0793d6db6f094ce941188e3120eec1e270e9e9f3cf9f87ed6598e8ed49854dbdc2fc6016247a8232f5d6f3d62202eed3a8e8a05610e84bbc9de310d62262c36e2bc89db99d84092561ab6f3410c8dd7d755fccd912639327e0232abb3ef4b4c9fc248b7ad7adce16d13373b60f9675e5f2c00b6a6319597993ce87d1abbba540cc5c134e21fa454076f87fb71c9c56d5fc99ae55a0f4676381388d471f524bd2bd765d801353bdc6a1f60c240d59b436cf3a04ef6b07e71bb6aaaaecf82c6977d58e166c7f3084c3f9bdad282395804a7e6b75454e0ae81b20f19dce3100faff9cf3dfd0a148b8aae86e7c8c010550c1668b71bc14d721814f78206b4ea2aeed42a2bf1fa3268c74b711172f02e6195e70ab27db1b05e3f8817314a0bed19272d4a900723c5e7dce34c582d40286f0e63c9f767b40571ffa83c05f179b9d96c38ae5a179d38a4193481af20805159b772899cafe40a9fa4b1f7cc16b8ad71e623728d342c8b95c30e7eacc761f4eb936153679645d4db1aa498bd1c03fffdb463e555b4a0f8b6db8d3e2f18910612b2d776a11b0784ec3ac472f4c13e72a9eb76b399f478d12ba115bb5eca20271d33ffbb7e757cdf3be879c89add06b8aa07d8af44739d0cbd56badebf179112c0671f8db2e37298b8cfd692752341ac5e987cf8edf0dce71a6ef2643ffce2b3173922b1f87ea32ec8f359be3c461bd3a42fd9aefbe0b72ce68b5585a239f0333a345f5b5bcc85c9adc8d3d19f6925ad1fb15087f4f7640f1eb2c8d5339231277153a1f683fc15b974e94c7dad18365b595cea195fd4c81b5a95c48beb0cb29b3a3fa6db615bbb0d333a17b6e1397fc447ad2854fa9f65609c1c74c624aaa09954169e4568990863a60dc5eca083fd7f63f853b322040285a306625b07926035bd31293232a28b38cff47ea46ec7740a0f6cc9b963d90aade347d8c7de7900e660fe84befbb9c5e92d211a59c245cff702846807cd24d551b9dc6d46466b01b3a86ef2a5b7cd57b37dc35682fa9f0bb72824a0a291b8991c17731215d089120411285ff05709a2131846c69fe2ec6c380b8e4a9b98dad24f19bd51ebb086725c743699bf5fd233a28a5c29055907072110a4e8ee341f08d890ffb2693bfa00b70e86e0a6c9d6905dc68584aeeadc8f65b7e79a492b0eab72c5c39d81eaa71135fa8c286e36bd3ebb6078bec130c49d6838fcdce3b8f4724ce1cdd990155df163ded504010bbb09d082a41314dd945806e898b84a95f436860924677b6bf020e75e056b2dec77ef485404b36c948ab8d3a436eb331ed7290ddb4ab12acc8511fad5854b33368941c8c2d8c58501f61b8ed28060238f8e25fa78021cabd18fc25b2a6423f740f243b1e5916fb02f6aa10bdca7621c9de4d89202bfb730a95c3071e6212020195a64cc4badd865e95e27b3d8bc520d15558929ade53450e086b237cab929ea7a408eaf0868eb87eaa975e7908f6b35bc2882f47b118faddd55c225926934ab4c673f62a528b1fcfa5a84d7e1642db9b37c0c30d0a5566eb2ebc1ecbc0a6a7413609e2b41879d422459ecf38a696f2329a6ca743d12aab7db7660165fed2cdb4fac04b879806d269841702e231fea78bda440325e2febbf9a26c1f0345caad20bfdb59d1c3efa63b0672e59cb9113b8fae64580b8d51be747fa42289ecbd1b587f8b9475b2ff97de0a962edca1b56afde0606a7e1e7d7e8f58a31750f59cac8846a3beeaa1bd2a0f511b8508972da28ce8452cdb1398f38d11570743bf088bdf796fadcc3c0ee0e82f841dbf0eb18eb5798d69f7ea0c8f5a82b90470be704676e315dfa067c6b5bf38d7dfee002adc84bda36431a6a51fe1f80b0d6363e1fa3af555c6efdb0cd7034281ea1ba8f742cbd4ffb82f3891bf0c0adb14f6c003a21c9c60edd4c7918cee01e727233ca9370bba50944f4a4eed7bbd482aae65c2a0ef9d8b093650574c207f8eefc0d01e548572a6e37de5882c2594e20da6b6de024bf43ea2074cf097fdbc11aca40975c2fdb0445def55e5c83da5090e48bc66e540dc6867d46f2608b19334dd495ce08cb72bd79439976ef5ec83c91e46545640ef5846b0383867d5b000de944fb2a7a0686cbbf6c3e13a59c78b95115a646bb1f1060bb9c55d14dc5cb7b20a338f9e76bdab1be3db40cdd79b426c1665a23e0104e2cf98e3c9235afff82fe508b42d7bebebeed7c49c6aea77c90c23c4b02999fd23c235640ceed8c51219847fce58efdd91530ed4ee32dd60c17a0cf875dbb9efd4d7fb1d36f3f16fc26889ea1b1c3416552fc4fd0f16dbf0cce70b4c43216feb85e9b36a428ac7fa22469f7ddfbd66c8ecec9735aede45fca5b21534cbd1c7dcb16be7d3a5ae88c7dca686f070388f1199e36d89105f5dd5525f2c7e346d5a3744df8dc9e6b69cebca0867655f53057f74602b6a468d16bd150220ee86d5024b3977388bd3120862c86eeb47a15f757df4bdc375a9291beea617286e2cb67cbc484d07b86c60fb2037020e6414338136108456445a8b32a8963d2c91deb527b4940ae7815896678b95815b669f6b80f302f0ca843842efe5065b2ed1b545f3a19f5d1373ff1c56b7e8f0490b08e5b04db60fd3e0ab2e64dd03672bc8b691af510e3a855d842e6d61d01ce03a9e57de14b12038ae963fab3ace6909d0860d0f1f6936924565466ffe30812208f7429c01645e7a60f8a968363c6d1a2042da16b0b0166ad9dde789622bb5c477fa4852cce255867caeeeb624250b03da653d79f316d6dc2e0387751c66acd6feb14f98f974c54d32bff43deb8f841b576f83d605c8c841f8249caa18ce6f4c6c267997fc852178c287ffd1814a170c70bb2945377d29b48a3a0a223bac466d57660a75cf30be3e900428f8e900591005126217783eec6fee68fc359c93ae4f1aeb4a34a3123c2e7b78e3942088532baa073b240c62f3d49fe3671325ad88bcac1f15cc3e89af9043bb616d2d5dfe0e55a37f0f37a2ec62e1d8b2736e23422d4b132e11b03273ae24c0a6f6798be9115734ae7df5e5d21c2c70039d8f8e9ac56472121e25c8adff13bbfe5b5aeddc0793b9c30e9b18e74d3e030ce9cc5295b55354bf2c15676bb893e89ead1ff5b30e8990d5effd225c2a0c12ac24610aef561cc85600ccc3c5851317a178ca282f0c060ac2634bbdc90e278ada2d5a0116d6859c6662a30de67f362686080833b40687729268accb67bbc493f54863a1733ec93750e4aff240162914d20b2939672834a1f75a359d5ce12221fe6f204ba2a66ad141d272c38455487ed2d6937337031a61ada96011eb101ab00fe8f3da7b9f233587006388309ef56d4a893a4c240d73f3c80d6d3d590922910d517379e943b5aa20907b15091113f0c8f6c12ff1121211ff159f40dd1b44a8578df1c856c4dcede258e0504bbe7715960e5a088d19a979536eaa9ae482638e51694b9be8e8c04b8491280838ffe9a5d4265620bb182405260b8ef85fc576bb9369bb85c798342b65b1810aaa939c4058749bb81a1b3057d4b057565af2c3c2d5f6759871c2a8f7a26be8d6a12a7e4b1067c977eb131df5cdec0544493ccff968c271bde6787b19b10c135076ac88a300d823602005162f49c8e68fa22f77397e04eb9dd01fa4acd80e4d7c8daf30dd51dff892470cfb20d8e7c9d54327f62492c56615fb0514b2cfc551beac7deb779bb8d38a340a7e91495f691ab42724cf1ca790f055ac833801d96106d38dbf9a27c8ea89e31c9f0209e745d3607c8c5aa2a89a8e3a64660b2544288fbd923973a908129a450f3ffebeaa4eef304aebcc1adf0ecb48881eb0c4f450888f079340fd75496fc52f5deb93c3deb0bc9f7c3bbacf035e7c3ca23b01958130896c2ef446735a24460d8df3369c61be9ff134f777d05990338badad9058b7259effa3ae3f853d5d7c09a10922d7d56d20a7a1a3a8a32a8aebdcc092ceb0f530ba18014216dec8f80321b1cc6eff318ad5ba78c36b7a85be491160214879e4e84f1ac9b0243bf7e1a11ee6f6d5f6d3eb52745e04eb329ba430b1e65fdf05486f611a956fb5dcbc75641817b6eda7fd49f8a91bb0bd96a4deb1d7646ecbadc15414903f98de5bd18c62230d45278ae247f21dbefc11bdeb2b9742f1dde15defe41db4c0c37426b64caa15751ce0abfe5af225bfb3035b355331585b8076073b67b3a77eaec6b7b370e12e2ad98133fe1d0658c993441c4279ffcdac45507c9392a78b5130f9f860b27505e74db26e87cad8afff1e43a7dc57b4cfd9c252a83d9ca03936309a478223bc25b4e64a978751aaba1caa08dd05a4d0069fa0736508af1b1f044e6db5c2827425968531dbad718c64638197ca651777e331bf8a1aff0bce93c7f0266e0d3228243f9ca453fb639c8b090a65bf13cec131b0f967f45f540732aca4baceb965741a7e2bab5e94102585e61611a18e22bb41911407205a9145b2468cd94e9679b800a61b27a14f468f4cb203e8cd4871025b9206d9e8625c0eec2dd81abbc0b427061cfc50270cb98389d92082f9062e3d5b095f6a477a9839d120d6129c356ebd0f8d6cd82c7f18d43e7ef01f91d0da020a1c0ad091bc5ae92d1cbd5fa643bfaf0b3209276d09448c15f1d586b90a5b49e483a9f45c8eb086594af6598989f47e2718b01bfe11ff8b671d292b603b9efadced71330d2ca8cc93f967093017985615927bb61c4b27447a69b4d6aff43bce0b1baf81ef8b691f2f9e1287d53dab2919bd0d0baeca223b71a53979ce2379e38a40ad6bc756b7700b392b94bc88d94a01b4c51eccd12b9985b472d38d979be0a0a3f873b5e4ae7d80caed89e920337724dd0d46b39c1fa6a164d569b6bab31c55b8d3d65f7e33aa6e29fd18bacb443019109ac7b74b7a574284473891ef000bab914e107e871fc9e46f7947fec2325411d30d27ff2e89986fa4a2cef52388a2d68f87116e4bd1ad6135db6c3f810d5f0ab787635121d83f193e4c6b7f1de7ad53bb1a9f71472b0d34586333082862ff01b309bfed789493fbef9232f44386d4fcd2d0adf1af15b79fb241c5ccf03c6c116b03553f0c920aa93060975fa6c890af6507b7c0fb706b964a319fd77e10e720ad8b9973c4b4021ac185c5d2a107301df31a8e7d93fedb51f4eaa8fbef43850ef2550c0b901e8bf3bd2765ccb89c71779a1860066f6c3ea309c615c1e9ba3019a4a0c4461c15db606b346022bdec56768ea5a29e1e0fb6d23bb6146891300414b0539b430ad16db4b2924fba5b7299128093174d9661c1719590b54759d2041df903b53e9af2e9ca0f1adf621199a0376befacce23682cf906a8d18dbb965a0d80890126be6bb78627cbe7f441a8dbcd0de9039231557bcf975b9e3a1ef0b50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c8e0ddd88a3a4413199551aed5426dcbfc9f32b2ec19f86a47ef81d8ba77cfc14751e47773c2bbdbb52e7f72c5576fe42b4c263dd2436da842cab348d12682a21c107020fc28cec2959645ddf96f964ee705d72e7f450d2a0b253532bde564308581bbd22019f34b79b1efacb899428bd6009f373d498acf247158763fffafd210805dd8c266d8ce9653d639e863814293e55770f6586c3d9dc9d8965c92a0001d6c80af32dfc8d6ab2734baf55ca5622e1d4d6dd79a5e1797884bfa5e7292419e0c84fb8180d70308bffdd58ebf8f65a80d654c22db5523749906631dc5abd1962c012b922077f850b7f60b707ad339ce861353ee96924fdca1164e36d8d711950cb7e051658e03e323905730f3106bd62c6ec637e01f35854405a0a37cc4726a4d31f7148ef8a83614a60d97269f6b493d6cd3c7499a1b82ebb9c89128f5a162fae982fea180d129c36dc3f85c90a5d3e92b2e82f227b8cfc5d2338164a7d074e88d3c238ee7fe3ecc08dc2b693df51a7ea637ac22c0892ec6edffa206c030f0a5c8e83b5553d7ae21d0d7156bdec6f4b1557432507268bd6a0d1135fef53208b633b1ef664b2b78fdf569414ba51ce69ab73e2bb8637d3e8f1b023e2ba8b03d21d9180cd66e3ab53f1076b97ad5d21f4b36627566a6ea7ffda1b866d2bf42ad8f94bf7198d30f4d8ed33476a5942170382d7b8153f01a6906a24c12639ef192bb5fd9cbe62af17cdeaa85ff8685044373c88c29066424bc7c3bebfaa7284141a019ea184f4a8170ccce99e1a54aaa5330754ad46f47811814b2ef3829eed03fccd266354becfd90c4b4172279813d89f1d9d4dca376c7c72fa9582a8b986123397e55cbcc0cadff536bb5d60b2a6feec8dfe225f95dab71b9fe81a0133d90bdf2a274a5b08910220c44137ac7ff403e4ea7291ebbb4a1ca8b542c854888c1855d7690f2efc5c42818e186be35725f2126a7fbf7f40e8af52db8ec559aaff0f459e6f46eb959d0a7b3fdfc91b0de5e5c5f356114c7eeeb12820259a7ea26c1e699e821cd8fd734a18e486bf1a79f3dbc8e0fde867a16236b5cd8e06898a3826c100f28f2add0198867385c44b3987b8416d78d3366e3e13a23db67136ba5a23f4bf26a0dca0471f99d12e7288ab629aa4c547c2d8c7aa86e9b76ee744653c2a2bea7ad5d754a3a67c8cb1862a33727b2542dc1b228978080ffee81c4ff769289e9155dcfd4bbf54fc2957e4833d63cb3ffe7803bf9b2fad39df49cab2a141293a1d16d385070f2aa5f6e1aff488ca474f4d9b04b228ee87930201cf228ddf063385d1baa6afaf31a191723a8c55f836a8a3f31a048401cea0ae7f7ca6c3c52b876f1a7bef59edffc0f173c46255384693c5683a44f112f5b8f40dd36735c51cae93a1663aa1dc00e8ab1113eae1efe94140d37feb8c93d4791746e9f25ef711c9f8cdce9393d017fbfc9acd0c2a0b5e1df62d38633905e2298db54941eefd14c294d2bbbd394e2152bc06b0adaaa8ef4d70595c0a2556ae7070ea013d09091afb888020d0eaadbf54a39fdb2d8ac2f81987ab9e434940c047cb3d4cbb21a117c5e50c6d255ce60ced9a4a02c515a68e7eea7c342d1c57de2ec5ae2cdc8da01a36e763cb45702d0e562533b601403b19da86fbc92be82b3bf7b149366c827603e73b079406bcef3ed1f2c9c315382d1b4be370a0cee7537c80aee4ffdc774c2f436e95f9976dd654fd36c80bae6470d086ee7db1f83d7a32be9bd0aa45ed3917c23d8c4058dd20528a55aac6789e98a5d7ccb4e01200fae76ae2e03779cad01c71f91720c52a287c9490cec33d15e9aa92a54c87e3209c4cd68328fd38cb6808ddf4becbd1daab7d40d2fe3257686a3939d9d30ed696a3771073bc5208a3b0000000000000000000000000000000723237fb515bf10d4c2626544fa811466e000000000000000000000000000000000024677eba54f8ad8cf4aade975b0bb900000000000000000000000000000079d46a5798f1be1e86f47b7a9d106b5f8b00000000000000000000000000000000002f89d426ea64c4e7b15a04ec2b9b56000000000000000000000000000000157ff494d0e35205d9f740a6f43b1bdeb200000000000000000000000000000000002cb816be19d3d108eeae2d327f17de0000000000000000000000000000006c9cd01a710928909a4c7fab44ca138fb5000000000000000000000000000000000015f39ca4c43ed293e0ffabe1a478060000000000000000000000000000009529a4318c0973778ec476ce2183c8b15c00000000000000000000000000000000000a7dea48aa2ab368cbc820481e06680000000000000000000000000000004ce3843578d970ebd56568f8a6017030cc00000000000000000000000000000000001e06b526e0398f15bd74b3c2c58c800000000000000000000000000000006d92800424eb1ceb71f678dd3190498cc100000000000000000000000000000000000a20fd685fc328c5fd9947fa50dac7000000000000000000000000000000e3e6a2ff2dce7c99d928209a2009d886a200000000000000000000000000000000000fcbedd4a00d796482526b06b24a0d000000000000000000000000000000e95642683dc73d789e387c7bd6641d1e4f000000000000000000000000000000000004491beff9835511d9cbec25d3d78d000000000000000000000000000000d76efb5d6ca61525cbf29d24e162b3f5ad00000000000000000000000000000000002f1c408490ef805a922c93e2d42896000000000000000000000000000000cd081b61b3e48be087e795a28c97a4d57700000000000000000000000000000000002227a41a880d8390747075de0f7ed500000000000000000000000000000088a1f08e03ffb571596d3b4ff4c46e44c000000000000000000000000000000000000b0479f91b1811810158095b2f0bb8000000000000000000000000000000784de3d2dea49fe10f636b77057ff261fb000000000000000000000000000000000022fed3b8203876215a8c3da632b8be0000000000000000000000000000008b99baf364dbaf31c5ec102125335291830000000000000000000000000000000000193289b293c135e53008a69ecba8fa000000000000000000000000000000eb12c58df73b1a231ab22e6d084fa250b400000000000000000000000000000000000e4c1ae4e25880d60f7408486532710000000000000000000000000000002f633879dd65b7d17f950ab9e99811bebb00000000000000000000000000000000000d9336bdc0e00ffd89651135676f010000000000000000000000000000001b35ad6cb90521d726cd6a57c96b8acff200000000000000000000000000000000002ae64b2ea4a6cbf083701336c50d6e0000000000000000000000000000008239d6f398efd24e648da3e155dfd097f200000000000000000000000000000000001c8f84bc7dfacdb04204245d65a6a80000000000000000000000000000008352116d63e60278a31d9aa423db78b94600000000000000000000000000000000000a14d4b22fc59752c0b14576b555ba0000000000000000000000000000007f7e5bf0ccc02c3d03c815275dacfac35a00000000000000000000000000000000002a5ac1a149c13e55a04b8736761225000000000000000000000000000000fa86fe7daae5242b6f4f20c094d638166c00000000000000000000000000000000001c13c6094f24e042d92581250a5b810000000000000000000000000000001054c5ce0f30bcedc70787687bd3f810c5000000000000000000000000000000000017e9cda201008326b53bb92a40d29b00000000000000000000000000000062c45f040b2072465f54bdf403cdb90468000000000000000000000000000000000016ed9672eb961baacfcc950d024da50000000000000000000000000000009197b2ae9156051bad16ed71cbc056dc8500000000000000000000000000000000002a8c4a73efd6dad8adc26f0b595065000000000000000000000000000000bb594b0e2380f30e021e4346e28142249f0000000000000000000000000000000000225ed3142a8bc6ebb5f6aefab9fb570000000000000000000000000000005bf1cf87e9b43ae0ea6222d823573fbe17000000000000000000000000000000000022e940e541f7a21cee1b5ed89bbcb3000000000000000000000000000000062b30ca62f09a8d07b5c571257b023525000000000000000000000000000000000014731e6dd7db07f8b697ba42950bf0000000000000000000000000000000fc5ac12772d22f55d72a26e164c37672ea000000000000000000000000000000000022bf13ced197e423ee9b32859bbd5b00000000000000000000000000000087fa588e5ee02e5efd9ab65044aa0608f000000000000000000000000000000000002e867ba7b1141be2d1a024bad6a85b00000000000000000000000000000053a098a3e5303f2ce36871fef9e049c60300000000000000000000000000000000000ac2c2d218d961c35f494ba9483bf8000000000000000000000000000000ce0f6622a977443f19887ed45dff218053000000000000000000000000000000000004b0fda9d1966be54518efa855a3f9000000000000000000000000000000155f4928db584e7d103c813ae1119578540000000000000000000000000000000000145e22427dbcd4765f38a845b6668500000000000000000000000000000085e40c4110629ce4f6a4003d5898d2925d000000000000000000000000000000000010dbda760285b45f9df4d7c4dc8a280000000000000000000000000000006e5f66e5b12b72d290bbd1937681eefa0800000000000000000000000000000000002b38d6583ec6a8b7636b672e34a8be000000000000000000000000000000b03b61cdefa132671e5316bebeb925f50c000000000000000000000000000000000003b442aff7f9825ee61de1610c84480000000000000000000000000000004af84082254d7b11625f64d3e5739fdf1600000000000000000000000000000000000015554330ee231afd283950e4651f000000000000000000000000000000a431684aad8ed1ec0ad83d3c22774b3c0c0000000000000000000000000000000000042f447e581617f374b841eeaa6229000000000000000000000000000000d3028abdb882995e41a8cf7b73ccf61650000000000000000000000000000000000015ce66facce2e3a7e4e06cd0255553000000000000000000000000000000a7d9cd08918a0cf92747dccbf332a2f17200000000000000000000000000000000002f121fd1e09c22d3dfe1cfcd05ecd9000000000000000000000000000000e90010080fdb0e99fb927a37490e2a032b000000000000000000000000000000000020ef08dc78efe3d1df24fe66661919000000000000000000000000000000c63ad4c40cea95724c9970affe8f182a5800000000000000000000000000000000000ea3537aac568da3ccb5405e24b1460000000000000000000000000000007eb9f84526ad120562c3920b8022e11f5900000000000000000000000000000000002a5b764b1b0330e09a7430a421cf580000000000000000000000000000009804610fc2e64eb2ba7d7410cccb4c6155000000000000000000000000000000000024b651278ce4084a412f684c2c837e00000000000000000000000000000072217bdf79ba5c170f9b2678206e3b4ee200000000000000000000000000000000001a08759561af8c7659e5932fb737380000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c15b033aad5d686eefbafc244d169a7d400000000000000000000000000000000001967be688aa04a979d49e257df82240000000000000000000000000000005a3524cc6a41b0adb1ec52611915c13a2600000000000000000000000000000000001849195081a01516322516abf4aa2900000000000000000000000000000081728b690aa09c1ab3a96f4a9b9a329cfd00000000000000000000000000000000000f462ba74032150f4c24012a6f64330000000000000000000000000000003f78f9f459a66e96fd7f6c6d2d673a35b000000000000000000000000000000000001230208938fcfce3c289a1d3d0fc1a0000006b","aggregationObject":["0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000007fb5e90182eefd8cf68a443ae3b87cd3c2d2a17f1fb1f1de931c4d4","0x603b148f00000000000000000000000000000000000000000000000000000000","0x0000005100000000000000000000000000000000000000000000000f27e93aa8","0xf9f5793d00000000000000000000000000000000000000000000000c966e343e","0x22991cea00000000000000000000000000000000000000000000000791711bb5","0x366d52160000000000000000000000000000000000000000000000000000adea","0x866d3b6d00000000000000000000000000000000000000000000000e68551145","0x698c9313000000000000000000000000000000000000000000000004e05e5aed","0x11f5e94b000000000000000000000000000000000000000000000002ea7e5856","0xf13de8f300000000000000000000000000000000000000000000000000009369","0x6ddf1668000000000000000000000000000000000000000000000001c997c985","0x0518486b000000000000000000000000000000000000000000000000e2a8cd19","0x1cf203bf0000000000000000000000000000000000000000000000031a5e76d8","0x514c290100000000000000000000000000000000000000000000000000023d98","0xeeb792af0000000000000000000000000000000000000000000000079a9c6e32"]} \ No newline at end of file +{"proverId":"0x0000000000000000000000000000000000000000000000000000000000000051","vkTreeRoot":"0x07fb5e90182eefd8cf68a443ae3b87cd3c2d2a17f1fb1f1de931c4d4603b148f","block":"1e812b3df52749854266598c9ac051ad16abd2ccb23eb301552481adb298ef6500000009000000000000000000000000000000000000000000000000000000000000000200b46f4321fb295b47672e53d2df6674826a7dc26d0a8b47cd1f025ea64fc80100089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb14f44d672eb357739e42463497f9fdac46623af863eea4d947ca00a497dcdeb30000009003533f0756b096c2128003467ad6694209acf0dddd7c23db4c2563b6482f7929000004800a61b1e1e6a51ae92c76aa05722659a7fb4dc14444cd377106b0b63353c7ace4000005001a0e7078785d1a251a9a18e64224ee1e9914920933b13287314ed9957de39db2000005000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000130000000000000000000000000000000000000000000000000000000066d6d5fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000017db9c0a08fb2faa5f28f92d4ec55fabd85eaf856f362831a1d29850a8ef78791a1a44d40000000a0000000200000000000000000000000000000000000000000000000000000000000bec47b002039c7a317df8635cd038ce92519af7011d79bf518726cbabeedc559d38dc85b30fa6e781fa18d34a511f88df5c42237c69f3e0e24206daa534a3b4fd42a01e0a0204652cde1c31bf2d24fd90de0c1e39c9a6e3e2663bd494feb38b8c4223397ad41f8d6b83e24726b16d292e9f36315291f1b3a5a2b73f2ea33fa623ce83a8a60b00000000000000000000000000000000000000000000000000000000000000000408000000000000000000000000000000000000000000000000000000000000020400000000000000000000000000000000000000000000000000000000000000000000040c000004080000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a6e5ce5a42578d9e7dfbceb8c9c5c9b716544833413702601a8868d800789eb470e2bff676f7605255d020812dc33a17b5d3ea19373c4bca05fee5bd5055cee503df935668b8418510a8139442696d8841641431cf38613c6024214c3fe38c9a6c81eb31d74451c8ac3ddbdb75b8fd9e4b0142ff5fbb1faae7b51e09bfde59406b6ef2785240977ebbcbf5f246343b302685ab28b80d7ee291749f1dda3f3acf42827011eab539dd456d8ff08dce7da737c89a608fbe403aef9b60783be8ef3c07d5ee2a453bff345d193a62e9d9a281b3a852080eebf3438e82a20027073667b9c1e26edf28a3f767d78674a1a4ebd6e52d664710c5e6c5e0fdb8da18f17c9706573b9fcad6364b1bcbc4d1a22ed457062f4c4e2580ae3337de89def5adf646903b02ebea7736f5359785b5744c1eed7d1c980b8c9a0c312244f02ab6ed6ec9f22e4998e0d48ccbeb7bcbe649cb7e798d57870b8ddc40fa16eaee6b2e6f418d1fa817816ddbd560dcd8571074b039442eccc4059696e39ad016dec14782e0624a6b057c159ad46224e9628c4095a0e09178531ea2be02be5777677bd988a32412f90ff4901963b5b9cc6d1b73111770cdab2889d62a1ca2f98520626d3e60af0000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000945878ef5b770cf2caefc1fd14531c5348feb5e4c59d3be7d0f0790a80db4bc00c77e5c5e0eca399cb43bca872036feb14e1f26d11e928313b4f3e6aad3b9484d9a8661d4196dab130afae0e3b4a41e37b3a0aa2c10380449faeca518049678a2303953a74cb9f76bf1edf1807c4f34f755b8f8fc24bd6555bab35f6d3f1b1a3d109c099a2c28da06b59bb2b77bb2a1d2db5134c8e455c05a8ea78d7ea1f3e3722282939fbcac8917eb3d0dc0f264598073c480208f1041874fe31f69abc25b594628b286db5a05b4f670ab9f4c58c99fdfdd3643ceffbf8f91c6b87f910a2b2eee0c4e07b168a4dfc057e4635d2973830ee28239d96646ab35ea24cc69faa08107e0d1b6b4accbc109531607f976cf22bb01f85a0597c87afe9428bda539b62f9191e4aa89cf0c0d032473216d8ba087699774c72a7970407bfe6bab05f9ef54bce3c1917f60c923e87e7f7d0789ad66d4bf82dcc11d53c43b888af1883f4d702485ad81d9d0930ef944f33168ea0c6287b018537239650f05b3ffa83000448f729fa47e00420b4088f18bed5690d4f3771e336e66d337038ea6980b32d7eaf387a3035b61eeda77cde0276787534e9ee7db5dfbd0d6d7d58b0fec992b389a40000022800000224000002201d0a6498e4f1fd6716f7167e2589451ddd0c03d259fd64e251496141f69fd286000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ecb5c0e9ffa674918a8deee9e0e38f9aedefe08087198e22c77eaaac36c228a7fbfbcb32a36a603485d90f169dc5d213cd76e0e96500e4809c3a037e0709a964ee296022c4ea63174ad7faf26bbed544ab1cbbd48b88b1573207d40286463e74bf8d8dec263466062c0062629a6adddf33716876a8ec4661d26952b9510ef4957600e30dc12f706bc583d67ff75db2a84cb6eadc65bbc3e9e6eb09d9462d3d83ba791deb54c31d4456b0fc18e1622eff3245ccb187e0ef311ab7dec8d856090bb9beecd088b1e3a2dcd1b780f9a3a84ac36fd54d7977fe2effbc21beb1f192c048fb9e4d2b2b2628ec86a2496d3d5b998d86452db745d5f64d68cf7cbe5c2c0552862196341d91a35f8ffadeb57f0d2c463b26c11669a7facb82d2f71b5c8d0b5ee8b8b60b15a5fe55beafdb5000dd2647b38c90759b0bca00cee614a60ad01233eaeff9d08e8afe14ef5d8b5a1da23905c4cf2d4d1cd5a9c16beb377e50ba7bd0b1d9e5bc3319d0aa20d4961aa79a35f2c8c39eb063fe221298951a03815107730d6377e91b8d81d107e28f487ead6b6b8a52564ae9892b2c21ba0ecae53ec7bb4c45db0c0f3715efbf5d485f88a54300fdf576bc99a22beea6c9b790ce7cd000000040000000000000000000000000000000000000000000000000000000000000000000bef545a000114b7af4d07a22682d559ededc223bf2f9a785efa3aa8261a284985f65ebd0d2900021a074b13bbd403b409f06afaaa14bb1ffc718ec250d9f488d6019a42eec9463700000000000000000000000000000000000000000000000000000000000013882a73706978ef632308b80c8f27f8f234bcc9680f84fbe714e0b7bfbfbebdc5b9000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000400000000000000080000000000000000","proof":"00003e84000001f40000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000006b00000000000000000000000000000000000000000000000000000000000000011e812b3df52749854266598c9ac051ad16abd2ccb23eb301552481adb298ef65000000000000000000000000000000000000000000000000000000000000000908fb2faa5f28f92d4ec55fabd85eaf856f362831a1d29850a8ef78791a1a44d4000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000572c74822c20edab7f32c1eaa6cc5d6fbf35e2642f613fbad1fe675cb65b2490000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000130000000000000000000000000000000000000000000000000000000066d6d5fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000130000000000000000000000000000000000000000000000000000000066d6d5fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017db9c0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fb5e90182eefd8cf68a443ae3b87cd3c2d2a17f1fb1f1de931c4d4603b148f000000000000000000000000000000000000000000000000000000000000005100000000000000000000000000000000000000000000000667141da186fa2ee600000000000000000000000000000000000000000000000b604b01ef8f0d0cbf000000000000000000000000000000000000000000000004aa7261e91c2591c700000000000000000000000000000000000000000000000000022169bf4283ad00000000000000000000000000000000000000000000000da42aad5197c6fae700000000000000000000000000000000000000000000000df94cfc0977edd5b2000000000000000000000000000000000000000000000007c612055fec21ae22000000000000000000000000000000000000000000000000000230175557a7ad000000000000000000000000000000000000000000000001de0f097127c3548c00000000000000000000000000000000000000000000000c907f4f00a40d52dc000000000000000000000000000000000000000000000008101d8c6bd18462f100000000000000000000000000000000000000000000000000023015745a48e5000000000000000000000000000000000000000000000007a8046de88646c85d000000000000000000000000000000000000000000000007870e5c81c68314f700000000000000000000000000000000000000000000000e0abb05f5ec41457d00000000000000000000000000000000000000000000000000008a1d3a84de8a0000000000000000000000000000001f23fafa063b254a8c938bf73d0c2bb7f500000000000000000000000000000000002160241ec6448ef9b3dbc3490425700000000000000000000000000000003cb7ea1f50b4ab963661fcf722095ca6b500000000000000000000000000000000001d0f698346235ecefa3c5849d39f3800000000000000000000000000000008b2df2fcee85b292d3cc2497162b8e5460000000000000000000000000000000000041ced241611aa8b30b8768e7ee9ef000000000000000000000000000000f15d304041c9c10e532071fe58f28531110000000000000000000000000000000000040f11d5e49bf7151d589fce774d7c000000000000000000000000000000e8a3a26d6d023d9318c786305baa4736cf00000000000000000000000000000000000f65d2f8f9b4ece133c12f49c84b07000000000000000000000000000000cdf18fabfdb01dfe2c2cb4eb389e4b9d3800000000000000000000000000000000001443e085441ae71d27f780b0a43356000000000000000000000000000000c9df6dad369f2129e064b2164736947c4c0000000000000000000000000000000000044487a9cc727150abac573a3facee000000000000000000000000000000ba41d8227d0ec33f990c2e701bb5dab629000000000000000000000000000000000005886f8ffc752fc94a017a75a45fa300000000000000000000000000000049a4526224a61bb696cb36aae680434960000000000000000000000000000000000019561ec46d7cccb45c2b02aa5404d500000000000000000000000000000067cd0afd4e592538a5c418cfed003c0fe700000000000000000000000000000000001089aa72005765293614998b79cbda000000000000000000000000000000f2c1de9da0c658db79e6d5c56e83f4633f00000000000000000000000000000000001c93bd0bf50602d11738654de93779000000000000000000000000000000a1af1e36535d721316b00bba52ae988d6e00000000000000000000000000000000000b3a26657a58a697c05f01f4cee6a4000000000000000000000000000000151fea819284536d2b1a26c107d5c3a37e0000000000000000000000000000000000272cf9cdfada33e3e1616af9c5c8f40000000000000000000000000000006e0af12b8c79cc228fed340d6e90d5361900000000000000000000000000000000000b12a3c641fc797bab484aa549d6fb00000000000000000000000000000071dd80894db819246eeebcceed241778d8000000000000000000000000000000000024b77cbba26f503a8ab08989fc5972000000000000000000000000000000fd2372b33aaaccca5ada4259ccbde96ab600000000000000000000000000000000002375822e4a0cfe03e2c010aa3235ed10d078928845174878bc4971f90665fbef8cb9c0b7e8a5f9e9cb7615207dbf0d1f93d5e058ec88e13f93fc44887af26138a72e87c1d0ca975a167f7ecf8240f41fd39d410139af76ea93183e79aa803013a3149f0dcfb4615067a472154702332f6b6b9788e53c87b6e355bc71424f690ac4c70991a6f86b4addf727c5d90da21161e2a620a2af2dc7e07958ed6c0feb927b9b8e6d6e613fa98a20c8301f7029156b900b3be715336d257db43790fb19267e13ca675a2be47c0f9bc6275e76e1042c4f6249798278811a0bdd2b1c2294f067c1385040115303354538f9e497302e2968168f9c1e433eed468b5a5f3fe3574bcb65a90f84e2e90e804bc6d97bf40cc360bf406f6d0646eaa5d0ac510ea813147a1ddfdb7cdf65aac20c1228d73519e41abc9f3a9ae6f7a084714d2ed2d8183b43bd31b3d306c044c9dd1d39dc9e23af282f2d5352842738a29ff692411c6fa4f0756a6883c77939eff2a6548d7d10f1e082a3da4cde73fc119effcf5ded0a8f3b049a1f27569704d81e9929e3fd1579d400df48d4f0bea505cb9da1d4b18ed3182e258ee26f49e11c999ae1209c1d7f38654de7fc5f3cded01fa4a0d2f936267ac6ea04575bb13866932ee885390c104ba28ceb69874760886c9fb10b0dcc2055b356816acc672a71b83ec1f7762c4eb3703b2e910473c883c29ff3aaf276b252540dad8be93f828d4d1715aac31946fadb92b11283dd711be79967ad4f6404353510aebf5878acb2abbc84825528f9d482c445ab8a0c984654c2f3c39e8fb1035903dbd0c37723bb132402aa811bf5fc45985bf9fa715bb4c5f954cc50e78044450c737c0644745a8471a5e9811c4407ab143604db0ee21bf40328ff66ed6ccae51587c93ae03b4b9429c8172313fb7fabd1ee7e91e001e15f0bb25bf31283dc26f7d4615a1fa44c652d2fba3509ed3378489dd162016e6f2f905198b2416d2659d81f85b8864fdac20329f99904a1b00e39dd8bd0279c402f50776c0e5cf53ac6fe3a93dfd54da0bb22735e5313924eaff1067a2f31717cc12d08d351125d65f8d7b484afa715adb441f2125223334502d82e9ceeb0810569b3ad878ee8f618a5e967ebd9e068cf706ea9dcb128112cf143db03f332590540782b76ca2767111aacfadf9b81b1f77daf22728b207c825bd6df289460c5bf8f6203690635e1f2b01011352faf1b0e588489ec02240e33fe6f724d2e0ce3d79188f7a21c59bbab5d8b96c4c1b2beff121132c822283ff4f5e4940ff348ec92f7852e47572674cf532f5e475b2e1eea45505c93482677dfb213ed49d78f2945a77c5142ea7389f4c2cc19a109738d24717352eb3c0ede492407c3c6c41d11d3abc0bc8beda73359de14776c3c377572402389375b28334e116c628b033dfe5f5c85bb38461783d15e9f2110ca46ce6cc8ae7e213f2e325562375730aff4553280ad1c2c07695df662fedf961d52ccc4fae1edfe3a2acee76a358e36ad5b0effc188d069f8c381532cfa3bb3b01e4c494437165f8630106baf1d0d901811be719170898ecd81daaffdd423cbcd794abed6685f534b1d98de26f6ec1e8b639e47345a1b3b61e97c1dbd0cefe716ddc408974a8930cf1f2c00987e87951f8210b6ba84bb3440d7ecd36571c5670164f8060da3c665ed234f87f46164bdbe18fb36b0ddbcbff33ed93411e1e04aad2b2c6f477e91b4982fc446a067ceb109fca883a2b440577033018671b359ec3ca52f43de0ca0063a1eb769869f9f49fcd99e54db0e2154f6f986d25e4261e7e18eafaca02cfd7f242a821cbaedabd0a2de67f47951f85e445aed3a6c547e5cc9fc17f1856a4d3e8a2d673b81a74aa6392d2b34217a903550c6255fa4bc9b1e8d866eb079dc08776f2103f2fcd706df54116b74f66ad52a03188ec932dddc946419d9ff50fb4f18e716987a75c0c2190334ea7a824dfedcc64271d5ad717f06235e407e6499d362e600e02f05917fbb640884d1dde73e5b519830b0f15056f8395f800ffafee2128a03ae1f88e39293df5ec54655ba3e404ea522d81616019394e3bec843eb9a52b61a9c88edd13ae4207ad66d1a38baf46d6f5ddfd004e17d567a28f3a80bfc49b02f865be4360e4e15acd1e6e2fcb3e19dd8f6d462e2110169e35f4c33915ba42100b6ed0231a5483cb7f3d4f397a1d1af9e02a0d0778fb7eb9a765d7b432515b11b7ade835b451150a8f3976a6fdda92f9f6c1f838456769b9bd5ad33bbc641842153756338aa8ccb8c5a1dbb53a7161a3e2590871fab30aa68b3b8d23bff7ab527432369c72a3f1ee7b6fcb383a4128a7c097d29032e5142769237ece97e9f040b97558610eedb00574122cda08a43f1ba2af4cee462d6774e96ba87abd2744f293a3f6d171b4d1d62eb6855f8b8bcb73327998436bf3b4062e0522e81badad40f51880b43e04fc43488fb59d2c3e1f98c09272c2ef5cc8a35e6fedcad99cab313ef8eaa93afc3aacaf6b055637680a163c8ef3da49c7d2a3804b61690f1381f20d30af776051135f1e1467f87bc6898ee77715a6bd106f506ff2d8717b65f9a00881b5239007af56b833d7372bd2fdb07b7632bc1ea62e68a1dccfb2ea680f62bd5eee1e52c1165c480df83341f06c3683d9a07a4b51c9da8a7226820ad24ae160b6f5cc23749d593175d13ff0a313776ee26f07b301de69297600053f6e83c10e844b2d3981e581f3c808a9d18191087f526e1526bfaec04a5c405c05bd59d143d1da437aa44baf1eb5e8adc9baf39685fdc8a6e9637542a59004837954f5509882f9f56aae4aadddbd0a75407916f078ea3e52289c4498317ea77205946660f822bbd7fb2d903ab7a9be6a8bfb8219dc010cabb58da0ef69356d593e7301120603449292c7f6568bfd52c353e984a47829e1788eed3bace4f608c356bcc9101e0d119993b0f409cdee91e88472193da68809d9759d9c045633e1b1a696d0e29b8c5b666512554c931983d005148a5c0d35db645ed2b94f33c99fbe4e441462846f5eef01b770c6d5cdc484c4f9d6000a4237170982951daddbd998d2d4c25238f4392b6448cc3527e58567126c22a54b0770c0d3e16e925aef4a2dcd8d7e02d27ef72b946edea0fbf09256d4aeced9edfd37a75bb377a2ed8579b82f3a0b90fc92ba55a6abef345a93de418106ab9125f4ccb575e1e6fbac17cd05ca906a907f9778decc92b43dc2b9e02e1785720b825f9eb1bb8ed7aacd782d54ea643890f81a5ef3cfc1dbf61d853b88d957f9c727a2dcef200d434fad50c611697b5250fe55590819d6c0113f1ac0ecf0f06f01f17d509cc382d2aea8b8fc45a0a01f613a8d9bbe5d606bb3eb7903ce708efa3431a1aff7fce556daeb80c31a8d46d510b970198f084b08f4bab8f4e46e4bacc42da01e29e52a02322790773ab221aaa1b695e01d1b872dc0c499ce55d4675ebfd3a74a2611d55a9d3c19ceb4721788a1e0f5a77b4b5d2d2402d01337b270d2955d12f67a35df4b185ebb059540dd3fc0ee0f1756261836a278c1b420d1fae2091f0aa54562b85366e46952383671af40df80330e73fb1bb83361e1140ef3ad0c7a7f4b0fe7aecfc6301e84f450c65c21aa7983690d8ad510e9af1beb908d746f0013c8077b6bcd8186a4f9095ac4ccc2c7b5274b4f43ed06f8acf8e9ef04e4a8dbeb929b6dcd673526040c5ae58ab9418ba589f9c63410d1ecd39597b87a60b5ba7c722dd912f0c1d3f15f3ec08f2dc19967a9939d87964bf7b538a064c56afb08758b833b02da2c60fdcce9d91b58427616ea25a1102ce23a62c557944dcfeae2e3f63b8e1db13ce6db5ee56d38978301a80a0513a08387c9faef5243bc9f04761491b3b5c76b301f7a4b44224baf60ff2a1eb1af30f7c3f52f4f5316cb5471cd0fa74900c7b5e4c4b7ad61f0d77d208043494a7918b14a322fd401c14b9f0e0d8c5a76d21fbd756b2c096f5b196a20de1cce6847086f7c292236372303508aeaa1234a92a9d716c43f24128bcdfc519a424b9388429bbe75fbee7a9ed91286ea685801494e9a10218f9dd44c089da25e96ab3ba96e6ea6a9b908b8bdd5d9505b58fb14d979e5ee5559da9e38863f71a19c52af38f3a71c2d1b7b0c1e5a19c469bdf00dbe3f804fe39fbc42ab0951d206e0a9eaef931ae904b6b33ca40dba4e7ee23f6ab6ca6a76668e9c82f81a1ff1956d37364d37dc6faf37796304f89356e78f6882e54c11757018c18d4da1fd21a95a00c9fc2247a4303f9f1df4821d8f037308065ec120ea4c284ec9d6159df0d42b61c4b7595c2431fede96f22a5548291179523622c23ba5eaf08f08c6fb12e90859674c1b630f11c559820f8b65a32cd1ad78435f22dd0ae820c87544e790a1eb28e3ae17775fd8e19ad33e73d45a749347da52d1b7985546ab4dab457af250b9a086fcd04e8af09aa729725432a45ea67c39ab12788739aaa50182ee15830046b60fcc1c0c23a6a565fcd0dc7467f335c2f7a041537d5af1b7aab6ae0f821a22fb88a07117842f8d984c6ef6ff8326921794069c6d84a517acbd21b8b752d8331a7b0c060bd7b8f9ae7bf04cbb5cfc025dd1bb510c2e2f66f6451ec066d29973627aa69efe26e27c60bdd2aa5a0203d1daa2f2cb4fc426a031f80641d661231039abe534aa1d5cf64188e24d024a20566fe554e5a7c20197a8e3fe1ba2b129725cec1bdb56e78adde67262dcecb4b2ef7b46b68a64cff90f5aa9275a3272767ca462c15008124c8191c5327337832626d3fb676b58b7b25f0850702099e22290562e8e1d7eb08c0b5a70c9d2d8735c5e6f281af8b13468637116bec694a2daa79bc3fd180aaafbd7a6fbfa68b7978405558768c417481e4e0259117e95311e4c712eaa4f74d0e5ca6b6c3ce907244dba8c475705b12abdb1e8f6c45a9b10e031c7b7afb401e5acc66743bc10a34b59ff3a14baa5d1cdd56283c85b8be6a18cf3ed8d6888ec791addd0dfe10227d05d14f791ac4f9c04a550da132e39c2e08bdefce980dc6564e81252bb2b82aff55cd4d804c8fd5095c78b57819dc784a03b3b1f4ed79dbdbdfcad18db98779d44f2ec06d8f30de8e4efaa0d658ada7ca0503221e7ce843d6b3ab578075e340ac59db9b9eb148f4f085e838aad90139c104b84bb5a480b9d5af8efa5d6ea0476febeb2670b840608e5d91c3f4a6993767230cca072d23fd79f8d724fa71b878eb1905949c3f8aa6e04a91c1b9450303bd04170662b7a4d3594089a687d0f1e779d103167c1ff8f6443038b6959d8979860c8261f3311e1bf9e7b0c987c399dbed455ac22b5105ab1463caeac74b56b5642ad7241b21a547044079cce998b95e9b9ca56306b15cbf156cf0d294d42bd0fc258b8d45093d0457f467f702b3ff0c9be6aec6cccf5527dc00e466ba3c86687a2a3ebd80a90caed639c19b143170f383c55591ac206e5762ce6ef51ab0562a501f060480cedcfdaf1989fb04fabb4ca541e97c6f6dd4857e39d2ae7dbec100d908b923876c5bd193cc1c8f201da399dec5b5f61d336e81b1170118fbb66bcb160347028725e585e1fdd40e70961fdc9c7fb7cb34ca084aace4372a1f8903cda62c9391463411481770bce5d35b891b57b6657aaf564b55433a2622f51b452efe16860f3225d7ae19e372742fb84659be3e3f37c006305264599f835c0649b2f1052e6a41fd89dfa4726ac74d9244213ed2e0d0fc04be42a8452d75b45b42e42d0677daa913e4acdb6b00aa9cb0bdd698ce6c36259f57c36d5d2795797af649da2ae9f650ee64b782e3aa973a34cd6ce81ea0dcc56d36f53fed6db245e11ca0192d3ef69b4dddb040a25ac3626c2223f06677876e4d1d957c438a82b86ff7e5711bf14138bc4d00dd92f1ec7c66ae191f6cfe7ade089b7c23c82b3e8b80b336b414525731f3a3e0625d5b3d7f74bfcb82aefdbf5342a6b93685ac01e35617287f0f7f75479ba5753ee1484bd7cfe0568053e41f5db512d3c45c0833c12f73df4826797ba3e1c3244e0cd3a6f45f32ce3136088a01b186e33ca7f83cffcbc8f60b154b1e2127f7795ddb056d00b07762a65fe6b4dc70d8b7d7c2e3c87ab81193a3190cc1c42be59e868f650289b8ef15a5f499c9f4b03c4c45c4dd85452992a7e21513a661810eedc3ad332c50a5d9e01b215edaae5067e818f2eb2aa3e1a01f5410d3c4c15834b5ee5695bc3a8494e2180d0f5b2b66cf190ccda60dc0c270a682061b6f5b1c31ede459213b05b52583e59b3b26d2bad6da5f5f01882c56671b07034c9322ea72fb206caf70210d60cc0b8005f9e4e56b9b3bfe8bd48d42e944d11f56ef469176f0b4fa60a6e014c691deec1fdb0db6b76282f87f53dc5c2f5c64301d16dab5d730bab5de5360513f3591dd971178bd50bbde84eb62f27c9c0623047e36fd1607ddbfca8119d550bef9009a0f0c34e53f06e41c4550b8ed79a73b1bb265f84d3a366be954b8d53aaee05fab22fd6f5ed6faf793f2dc55d207fd94177b86f826190de68845795a7c6d11b88bd0bf2737bfe7542c060fa5d11f4a511f9d9e5374a3bdff6673fc46870414c3ce9b6c1d8b1dd6ebcee36cd0adbae05f10f8095807d8df48aff33485cf6b96a54e1df8f33064f3dd195d917197b65e231ca39d74c4a4d4a0d1646c41c651804ed80352f036cf83377f894642fb8475ec2fff1beb238076c0335237eddc67be6b8770f983a12108ab97eb8c6728424b78153858e8d23e7e458aa39d46da9e3feebf4888b3dec4cb65daf9444a0d889b402b5fd3d647985b05e62c203f8604074b23700be060ca80da87fefa8a389a9e060409771babfcf09e8daa783a185a43d463cf8f6f43d8c9820d5576d9ad2ac56b2293cdc311f1e09df5e9aec08553ec711d60b780e843f4b6e1ac8eaafa5b324b2bcdbc0b76162335e026b6a374aadcc096536e15c9ff2bd4d47cd7a280eb1b1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022df678d7df39449a632145842a2c9d2a84b2a8dee09477f98b6b082383d33ae1cb025706e0d92b6c5624f124aa3c7a06e77f6b093aed56ac0af4683e151709126d32131fa471c20acf40b6a0d66b008965e0676766cae62bb3b178438c100f209fc4fad21885046d27d03b566973d955f0265dd4711f58217d4644d6d379597227deff490125e37b303d0aa18d30977d448f89b23e1bf025a1ef4ad8375c454272f4a2b56e9090c13c27a0a6d4cef75a1ef8124545d2613af50604e78cee90216a65b031bd614613a0cd2a02a7621f6b3244e8e7da8b4a57e332a40be66d0db2d8c09e46ab777fc1f9523a657c9e886921c04c8c19b2d0c31255d36a6c9bf08247e8698791fc09ba3b9881a1745ae436b872eb92afac4a29005b340b1fd9e1217663070115f7c4b913c2e528b05e789930c42ec239731d34df59b3895ec36583030e3b66ff46aa33e4247036fa8065520544a6cfe6e01e0fc67eeadb84b462f19bc70fa4d5722c5f75656059b2c4e970ed7789afddb529f3fd6c185ba3efbb91e635c57d8ffd4c2f025169d426d99a6e0d8fb7550e5d7951b9b32ab15c17b590d88a842987278149be2e3a58d2126690fa9c764f6f0d4ec45f150e213be727817078f06b940e306d937eb03b80d8afec9eb5fad3e130739e8445ab24c8caad607b735f4b8dcb136683d7705507f5d6c12127e7b6c5a47ff1ebeabe8f748443710290695a88dd754ed720e3a9ec51703e85b18884fe7a3adda56421c95daaf6c06215bb0930b2369a3d3864a9eb86f51d7cdac587b916a650c7929f6380885d61cc5119679d4fc7e0465812edf339cf06bc38924c3141778ecbdb4a6aec7144815d347c81da3a5b14aba68f405bdf5a7d22a5e9ca8c877ae89cfde659a2eb85a1a261b3416e065370c87fe5472c133480011d8e69c8202451526e997fbcfeb902774a429176477a5030bbc0b1e1caed5338dde08737dbb9dbf0023dc1999a4f104f5d46cb776b641b2f829dde96c027cf8ec6447b001f517ca76acd240cddbbb19b3664dc72461e9a6e30f74121ea7b1afe2a583c43741474a716da6646e0a482c00a67b14e27ab1c832659d6804e698c227d65dfb6f81befc77cd5afe082ae20bf91fa9b2571261bf95227c60225fc1303dbd2cf6fdfbfcf2316aa22dae4f2701214afecbdb7e211538437ef6b4a352ad80633f89e29ad325e64f5fab8dc1162cfa4c0a55f6604c0752d5561fdaaaecbcad1a686081751b17944bcd6869816e1d45e1ab0bdc33786ccabda820aa0581cf65250c6cdad4844d29267bed208cb61607585280ef38ef99678a3418f9d13d79145aed7c3adbc7bd10321ab62d834a0351ed8637e5df4ae177b9131df7adeb3db98ed14e8ca7efbf1166cf2eb38c682330e1a1161091c2cd0b855467ab81c2e0cede50c25b9e65988708c2657cee082d2e8596ba2b2d8fa2db3a0a7c4cc1cb9526c11b6074b6858ec8adfcef8a41281ab2d5d7e7a5ca198ec9c64e6f0f2bb46baa4f40171b2487a50bcc50d56336940f5761ac402b1011ad1317904c78ed2e5c6ee3ec7d4556c28a136a3cf564d5ff1e92e5b18fb3ad4478d361be5fc85a1b815a30366160929569b5eae1b1d0a5cb1f19cbf922326dcaaa3616c481ab884b5fee576b39ff8ce37c538ae7543c3ff9045f72adbcd628d77c21cb9c8a5c26c3cdd6b4f87330c4bc640200d891cecda008860e8bf30d0ed0f4b99acfa187591a783b32191168afa017c924418c94c6b5150d737d8aadf8cb45dc2a0516dd9b95e2db4c06294d8d401e1e25ea80fc64e21f868e8fe90ab941a7ea8b57ffa7089a20d21ec42248d10e97110b4f08db6d1f02107457943693c74c4a7981cec70e624e814346ebff4c6e5d12b25c6d4f00c8000000000000000000000000000000287597af45536cb902ebf2d8d55e98a7e00000000000000000000000000000000000299ed570a926fba9ff15b1f026bf7e000000000000000000000000000000810d513449c91bc102818ebc44c20b43bf000000000000000000000000000000000001567389a8a8b2cfa6964da0e2d2a60000000000000000000000000000007bc08e5ff56bad55e91418536927a70ea50000000000000000000000000000000000002ebfae7ff41bd824e770395c2adf000000000000000000000000000000ccadaa8cac51b2775b4c583f954a3cd6cf000000000000000000000000000000000017f9742f19e461f1d74cd619bdbfb2000000000000000000000000000000e460e8ad60368c2420c0922e9df9ea38780000000000000000000000000000000000239df1eb63f39b379751ff17a84b18000000000000000000000000000000893e6d1649e77556f5ac73a6795f137197000000000000000000000000000000000029623c02d3c9addf874b23dc361b170000000000000000000000000000006a18a62ca37ac001c28c06476587c300790000000000000000000000000000000000236dc0b6e7fb8eb4d34b8db08984a1000000000000000000000000000000ea32e216fb7221a7b6f89d939f1a9d28d10000000000000000000000000000000000225b03864da60029d50701c264e624000000000000000000000000000000dd50e1dd547d444a9a4c9d209996d5e48400000000000000000000000000000000002b7ab5c36299c38c2c253329d8cea00000000000000000000000000000000cb9c800a4030940e66b0601a2510d2e5400000000000000000000000000000000002454af356b574f1933360793d518d30000000000000000000000000000006f93b6cccea3e5eef698b02a98ecc7a40a00000000000000000000000000000000002bac9db36de89e4e23b4dc38860f3800000000000000000000000000000061312e98fe6ff139acdb60888f8fc10b7f00000000000000000000000000000000002e87e2375017424cec063b6c3d36be000000000000000000000000000000e0df7f9e61b2eccea530b0390e9cc8b0a10000000000000000000000000000000000283b0d87bd82729f95c876767ba5210000000000000000000000000000006ccefa24d31abd3401ca53d5869a1a5d740000000000000000000000000000000000285db32d93396988f619dc365fa8e9000000000000000000000000000000444ba41c9eacb5ca7ecefa5b8b802d932500000000000000000000000000000000001a151b3210f6cf8694178825ffc6c500000000000000000000000000000050ccd2d83b5c62cdbde3a07f279984332800000000000000000000000000000000002dc59d99b1eced92ddddf155f11aff00000000000000000000000000000031de0724d942d75ad3d33313fe7031ae4300000000000000000000000000000000001510846c331f20b19cfaf99f97be9b00000000000000000000000000000079717742da29558faaebf3d15a0993325500000000000000000000000000000000002b82be8c0f0376dbd63daf1cd63158000000000000000000000000000000517a730d243357b21b3abf461cfc30a0ce00000000000000000000000000000000002e0e8bbaa223de23104e943705711a000000000000000000000000000000a98cc409fb1befb1fc984f73e41bf33757000000000000000000000000000000000021c385445c7209e4778ae6121b580c000000000000000000000000000000ab3d39ea2d24c26c1dd8d710aa3660e1f90000000000000000000000000000000000194aa61645beea76fd9f74433536560000000000000000000000000000000b1e0e06dfa8f2e957b294453b35e26de20000000000000000000000000000000000218f8069318cd9e406a90b6a782de7000000000000000000000000000000da837b8c56a0726eba730e17128c41f0b600000000000000000000000000000000000ebfd5fa7e9fe0d206eb8ed0c8aee6000000000000000000000000000000e3256a764f112b566e757b5e922fc433970000000000000000000000000000000000077cc1f0541bde33cd5e045b4d612e000000000000000000000000000000d7e1d0a569e9a3f54d3b9208004573b4480000000000000000000000000000000000107e5d65d9e6401793f384e3303f470000000000000000000000000000005c34c685fa73d0e612feff823019abf0c4000000000000000000000000000000000003af2bc76ff72c42f94baeafffc702000000000000000000000000000000d24a100002ca9d950a6d8d62c97472c6e8000000000000000000000000000000000016ea69f12cc1558e1c49ff610cfb85000000000000000000000000000000a292bdb84780232874310712faa2855a9000000000000000000000000000000000001a60176cc2f626a221609fa58343c500000000000000000000000000000065ab20d36a6edbb3635ae663f3e21e927a000000000000000000000000000000000007ccc956c13881a5ea506632ec290e00000000000000000000000000000072445a3cd121cce158639530e240d8fa3f000000000000000000000000000000000022f3f92c232dcf1c9c954f738700b90000000000000000000000000000000435a68a7adedc247edcb52389dfd70f4200000000000000000000000000000000001049a677170d1701ce16d9d6d58d2b0000000000000000000000000000000dccac93e31eaabe5d987dd3b70cf8fc2a00000000000000000000000000000000000a8076a640283be7a35acd9aaf9982000000000000000000000000000000a54bdbe26bec3cdbf46842ce86a4e0060600000000000000000000000000000000000f9d61d2c19166dd8c05f7dde542af000000000000000000000000000000842f827c933b85715050daee11dc7e00d0000000000000000000000000000000000007caa32a2b8d7a29211bf3519a84a1000000000000000000000000000000a77dd6fcdca4bf8e34421a52ed373a055a00000000000000000000000000000000001aa66599fe63272e2e39974ac44cf4000000000000000000000000000000f86dee0dc5993eda73e937732b844fad010000000000000000000000000000000000248046bb4258f3ec8042a1ce81f88a000000000000000000000000000000b8bfa0ffa025c34a880b56c9fcb0dc6d030000000000000000000000000000000000207bc01c1d93533f447b7ea4a631ac0000000000000000000000000000008c9c301ca78956e7398c1d56f0b3af2961000000000000000000000000000000000014bd6760d3d8e76c3471304d9e97130000000000000000000000000000007d2529c096c503b6fb6775eead5b7b63cb00000000000000000000000000000000002b6cd83a5eb3c0f478967410c13b5400000000000000000000000000000066290ec2d468c27172c77a30ae67cbeb460000000000000000000000000000000000192233b74f19e7c9d09774a461949c000000000000000000000000000000bef4315fbdc5c11b64e690590000fd639700000000000000000000000000000000001d2a497bcb2ebcdb792bb5b294dff5000000000000000000000000000000e3e8f17a00e241324f2e67fa86e65899f60000000000000000000000000000000000043d63eff2ab63ba64ef387552d7730000000000000000000000000000001fc99b5f4bbcffa61b42ad8e771bcb105900000000000000000000000000000000002e0b45b0fe21eea53131b8cab8bd9800000000000000000000000000000032374367a08c0354b55b4991571d09a57c000000000000000000000000000000000028fe0ae3d71303390266cf0c27aa700000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005312bea3ca85fc921dca0b5e44614872680000000000000000000000000000000000123dfc33b59282789c9cb090c827a900000000000000000000000000000024a9e8c02433f76ea44b6827b0093ccc9f000000000000000000000000000000000014ea46e331036de9a4caea00daec29000000000000000000000000000000d6e16003d17f7c871ee46a90b9f0c1ab7c00000000000000000000000000000000001067dbc835f593cd06985bed789d2100000000000000000000000000000046a2d0b3d95f5f96aa57be679de0957be6000000000000000000000000000000000002c142dceccd7e356679912a654c3d0000006b","aggregationObject":["0x00000000000000000000000000000000000000000000000667141da186fa2ee6","0x00000000000000000000000000000000000000000000000b604b01ef8f0d0cbf","0x000000000000000000000000000000000000000000000004aa7261e91c2591c7","0x00000000000000000000000000000000000000000000000000022169bf4283ad","0x00000000000000000000000000000000000000000000000da42aad5197c6fae7","0x00000000000000000000000000000000000000000000000df94cfc0977edd5b2","0x000000000000000000000000000000000000000000000007c612055fec21ae22","0x000000000000000000000000000000000000000000000000000230175557a7ad","0x000000000000000000000000000000000000000000000001de0f097127c3548c","0x00000000000000000000000000000000000000000000000c907f4f00a40d52dc","0x000000000000000000000000000000000000000000000008101d8c6bd18462f1","0x00000000000000000000000000000000000000000000000000023015745a48e5","0x000000000000000000000000000000000000000000000007a8046de88646c85d","0x000000000000000000000000000000000000000000000007870e5c81c68314f7","0x00000000000000000000000000000000000000000000000e0abb05f5ec41457d","0x00000000000000000000000000000000000000000000000000008a1d3a84de8a"]} \ No newline at end of file diff --git a/yarn-project/foundation/src/serialize/buffer_reader.ts b/yarn-project/foundation/src/serialize/buffer_reader.ts index caee2973dfc3..bf574a4eb5c4 100644 --- a/yarn-project/foundation/src/serialize/buffer_reader.ts +++ b/yarn-project/foundation/src/serialize/buffer_reader.ts @@ -18,7 +18,7 @@ import { type Tuple } from './types.js'; * const byteArray = reader.readBytes(4); */ export class BufferReader { - private index: number; + public index: number; constructor(private buffer: Buffer, offset = 0) { this.index = offset; }